Files
omarandClaude Opus 4.8 b93d476903
Build and Publish Backend Image / build (push) Failing after 14s
fix(youtube): bake JS-challenge solver into backend image + Gitea CI
YouTube playback relied on manual changes inside the running container
(deno install + /etc/yt-dlp.conf) that would be lost on any recreate.
Make it permanent and reproducible:

- Dockerfile.backend: install pinned deno 2.8.3 as yt-dlp's JS runtime and
  write a system-wide /etc/yt-dlp.conf enabling the EJS challenge solver
  (--js-runtimes deno, --remote-components ejs:github, --force-ipv4).
  Replaces the unreliable node-based config.
- .gitea/workflows/build-backend.yml: build Dockerfile.backend and push
  git.qomar.pw/omar/ts6-manager/backend:latest (amd64). Needs REGISTRY_TOKEN.
- docker-compose.yml: pull backend from the Gitea registry; frontend/sidecar
  stay on upstream clusterzx images. Mount ./secrets read-only for optional
  YouTube cookies via YT_COOKIE_FILE.
- gitignore/dockerignore: never commit cookies (live Google session).
- DEPLOY.md: deployment + CI notes.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 07:27:57 +03:00

1.4 KiB

Deploy (omar fork)

This fork bakes the YouTube playback fix into the backend image so it survives container/host restarts. The fix: deno JS runtime + a system-wide /etc/yt-dlp.conf that enables yt-dlp's EJS challenge solver (--remote-components ejs:github, --js-runtimes deno, --force-ipv4). See Dockerfile.backend.

How images are built

Gitea Actions (.gitea/workflows/build-backend.yml) builds Dockerfile.backend on every push to main and pushes it to the Gitea registry:

git.qomar.pw/omar/ts6-manager/backend:latest

frontend and sidecar use the upstream clusterzx/ts6-manager:* public images unchanged.

Required repo secret: REGISTRY_TOKEN — a Gitea PAT with scope write:package (Settings → Applications → Generate New Token). Optional REGISTRY_USERNAME (defaults to omar).

Deploy on the server

cd /opt/ts6-manager
# 1. Provide config (JWT_SECRET etc.)
cp .env.example .env && $EDITOR .env

# 2. (Optional) YouTube cookies — a Netscape-format export. Skippable: playback
#    works without them via the EJS solver. NEVER commit this file.
mkdir -p secrets
cp /path/to/youtube-cookies.txt secrets/youtube-cookies.txt

# 3. Pull & run
docker login git.qomar.pw          # once, with a read:package token
docker compose pull
docker compose up -d

Update to a fresh build later with docker compose pull && docker compose up -d.