diff --git a/Dockerfile b/Dockerfile index 5333114b..68f59d74 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,7 @@ # syntax=docker/dockerfile:1 # check=error=true +ARG BGUTIL_YTDLP_POT_PROVIDER_VERSION="1.2.2" ARG FFMPEG_VERSION="N" ARG ASFALD_VERSION="0.6.0" @@ -414,6 +415,14 @@ RUN --mount=type=bind,source=fontawesome-free,target=/fontawesome-free \ rm -v /app/tubesync/local_settings.py.example && \ mv -v /app/tubesync/local_settings.py.container /app/tubesync/local_settings.py +ARG BGUTIL_YTDLP_POT_PROVIDER_VERSION +ADD "https://github.com/Brainicism/bgutil-ytdlp-pot-provider/archive/refs/tags/${BGUTIL_YTDLP_POT_PROVIDER_VERSION}.tar.gz" /tmp/ +RUN mkdir -v /tmp/extracted && \ + tar -C /tmp/extracted/ -xvvpf "/tmp/${BGUTIL_YTDLP_POT_PROVIDER_VERSION}.tar.gz" && \ + mv -v /tmp/extracted/*/server /app/bgutil-ytdlp-pot-provider/ && \ + ls -alR /app/bgutil-ytdlp-pot-provider && \ + rm -rf /tmp/extracted + FROM scratch AS tubesync-app COPY --from=tubesync-prepare-app /app /app @@ -649,6 +658,18 @@ COPY patches/yt_dlp/ \ # Copy app COPY --from=tubesync-app /app /app +# Build the bgutil-ytdlp-pot-provider server when deno is bundled +RUN --mount=type=tmpfs,target=/cache \ + --mount=type=cache,id=deno-cache,sharing=locked,target=/cache/deno \ + command -v deno || exit 0 ; \ + set -x && \ + DENO_DIR=/cache/deno && export DENO_DIR && \ + cd /app/bgutil-ytdlp-pot-provider/server && \ + install -v -t /usr/local/bin ../node && \ + DENO_COMPAT=1 deno run -A npm:npm ci --no-fund && \ + DENO_COMPAT=1 deno run -A npm:npm audit fix && \ + node typescript:/tsc + # Build app RUN set -x && \ # Record the bundled deno version when it was included diff --git a/config/root/etc/nginx/token_server.conf b/config/root/etc/nginx/token_server.conf index 6c0c4e3a..1c985ab8 100644 --- a/config/root/etc/nginx/token_server.conf +++ b/config/root/etc/nginx/token_server.conf @@ -1,5 +1,5 @@ upstream token_server { - server 127.0.0.2:4416 down; + server 127.0.0.1:4406 max_fails=0; } server { diff --git a/config/root/etc/s6-overlay/s6-rc.d/bgutil-ytdlp-pot-provider-build/dependencies b/config/root/etc/s6-overlay/s6-rc.d/bgutil-ytdlp-pot-provider-build/dependencies new file mode 100644 index 00000000..b1248844 --- /dev/null +++ b/config/root/etc/s6-overlay/s6-rc.d/bgutil-ytdlp-pot-provider-build/dependencies @@ -0,0 +1,2 @@ +base +tubesync-init diff --git a/config/root/etc/s6-overlay/s6-rc.d/bgutil-ytdlp-pot-provider-build/run b/config/root/etc/s6-overlay/s6-rc.d/bgutil-ytdlp-pot-provider-build/run new file mode 100755 index 00000000..7609ba0f --- /dev/null +++ b/config/root/etc/s6-overlay/s6-rc.d/bgutil-ytdlp-pot-provider-build/run @@ -0,0 +1,28 @@ +#!/command/with-contenv bash + +set -eu +cd /app/bgutil-ytdlp-pot-provider/server + +command -v deno >/dev/null || \ + /app/install_deno.sh + +test '!' -d build || \ + test '!' -f build/main.js || \ + test '!' -d node_modules || \ + exit 0 # nothing needs to be built + +command -v node > /dev/null || \ + install -v -t /usr/local/bin ../node + +chown -R app:app . + +s6-setuidgid app \ + env DENO_COMPAT=1 deno run -A npm:npm ci --no-fund + +s6-setuidgid app \ + env DENO_COMPAT=1 deno run -A npm:npm audit fix + +s6-setuidgid app \ + ../node typescript:/tsc + +chown -R root:app . diff --git a/config/root/etc/s6-overlay/s6-rc.d/bgutil-ytdlp-pot-provider-build/type b/config/root/etc/s6-overlay/s6-rc.d/bgutil-ytdlp-pot-provider-build/type new file mode 100644 index 00000000..bdd22a18 --- /dev/null +++ b/config/root/etc/s6-overlay/s6-rc.d/bgutil-ytdlp-pot-provider-build/type @@ -0,0 +1 @@ +oneshot diff --git a/config/root/etc/s6-overlay/s6-rc.d/bgutil-ytdlp-pot-provider-build/up b/config/root/etc/s6-overlay/s6-rc.d/bgutil-ytdlp-pot-provider-build/up new file mode 100755 index 00000000..67732022 --- /dev/null +++ b/config/root/etc/s6-overlay/s6-rc.d/bgutil-ytdlp-pot-provider-build/up @@ -0,0 +1,3 @@ +#!/command/execlineb -P + +/etc/s6-overlay/s6-rc.d/bgutil-ytdlp-pot-provider-build/run diff --git a/config/root/etc/s6-overlay/s6-rc.d/bgutil-ytdlp-pot-provider/dependencies b/config/root/etc/s6-overlay/s6-rc.d/bgutil-ytdlp-pot-provider/dependencies new file mode 100644 index 00000000..c15ef0c0 --- /dev/null +++ b/config/root/etc/s6-overlay/s6-rc.d/bgutil-ytdlp-pot-provider/dependencies @@ -0,0 +1,2 @@ +base +bgutil-ytdlp-pot-provider-build diff --git a/config/root/etc/s6-overlay/s6-rc.d/bgutil-ytdlp-pot-provider/run b/config/root/etc/s6-overlay/s6-rc.d/bgutil-ytdlp-pot-provider/run new file mode 100755 index 00000000..48c52dcf --- /dev/null +++ b/config/root/etc/s6-overlay/s6-rc.d/bgutil-ytdlp-pot-provider/run @@ -0,0 +1,7 @@ +#!/command/with-contenv bash + +set -e +cd /app/bgutil-ytdlp-pot-provider + +exec s6-setuidgid app \ + ./node server/build/main.js -p 4406 diff --git a/config/root/etc/s6-overlay/s6-rc.d/bgutil-ytdlp-pot-provider/type b/config/root/etc/s6-overlay/s6-rc.d/bgutil-ytdlp-pot-provider/type new file mode 100644 index 00000000..5883cff0 --- /dev/null +++ b/config/root/etc/s6-overlay/s6-rc.d/bgutil-ytdlp-pot-provider/type @@ -0,0 +1 @@ +longrun diff --git a/config/root/etc/s6-overlay/s6-rc.d/gunicorn/dependencies b/config/root/etc/s6-overlay/s6-rc.d/gunicorn/dependencies index fe757c20..b1248844 100644 --- a/config/root/etc/s6-overlay/s6-rc.d/gunicorn/dependencies +++ b/config/root/etc/s6-overlay/s6-rc.d/gunicorn/dependencies @@ -1 +1,2 @@ -tubesync-init \ No newline at end of file +base +tubesync-init diff --git a/config/root/etc/s6-overlay/s6-rc.d/huey-database/run b/config/root/etc/s6-overlay/s6-rc.d/huey-database/run old mode 100644 new mode 100755 diff --git a/config/root/etc/s6-overlay/s6-rc.d/huey-filesystem/run b/config/root/etc/s6-overlay/s6-rc.d/huey-filesystem/run old mode 100644 new mode 100755 diff --git a/config/root/etc/s6-overlay/s6-rc.d/huey-net-limited/run b/config/root/etc/s6-overlay/s6-rc.d/huey-net-limited/run old mode 100644 new mode 100755 diff --git a/config/root/etc/s6-overlay/s6-rc.d/huey-network/run b/config/root/etc/s6-overlay/s6-rc.d/huey-network/run old mode 100644 new mode 100755 diff --git a/config/root/etc/s6-overlay/s6-rc.d/nginx/dependencies b/config/root/etc/s6-overlay/s6-rc.d/nginx/dependencies index 283e1305..c4f03c23 100644 --- a/config/root/etc/s6-overlay/s6-rc.d/nginx/dependencies +++ b/config/root/etc/s6-overlay/s6-rc.d/nginx/dependencies @@ -1 +1,2 @@ -gunicorn \ No newline at end of file +base +gunicorn diff --git a/config/root/etc/s6-overlay/s6-rc.d/tubesync-init/dependancies b/config/root/etc/s6-overlay/s6-rc.d/tubesync-init/dependancies deleted file mode 100644 index e69de29b..00000000 diff --git a/config/root/etc/s6-overlay/s6-rc.d/tubesync-init/dependencies b/config/root/etc/s6-overlay/s6-rc.d/tubesync-init/dependencies new file mode 100644 index 00000000..df967b96 --- /dev/null +++ b/config/root/etc/s6-overlay/s6-rc.d/tubesync-init/dependencies @@ -0,0 +1 @@ +base diff --git a/tubesync/bgutil-ytdlp-pot-provider/node b/tubesync/bgutil-ytdlp-pot-provider/node new file mode 100755 index 00000000..a3b440aa --- /dev/null +++ b/tubesync/bgutil-ytdlp-pot-provider/node @@ -0,0 +1,14 @@ +#!/usr/bin/env sh + +command -v deno >/dev/null || \ + sleep 24h + +case "${1}%${#}" in + (--version%1) printf -- '%s\n' 'v24.12.0' ; exit ;; +esac + +DENO_COMPAT=1 exec deno run --allow-env --allow-net --allow-sys \ + --allow-ffi="${HOME}" \ + --allow-read=. --allow-read="${HOME}" --allow-read="${XDG_CACHE_HOME}" \ + --allow-write=. --allow-write="${HOME}" --allow-write="${XDG_CACHE_HOME}" \ + "$@"