Add presenter view, stats, lyrics worker, watch party with voice chat, timestamp sharing, soundbites, notes, transcript search, PiP, EQ, sleep fade, gestures and external players; fix the crossfade end-of-song race

This commit is contained in:
Jonathan Sykes
2026-09-20 00:07:12 +08:00
parent ca07e1fdf1
commit 9c1ec4ac51
17 changed files with 2912 additions and 111 deletions

View File

@@ -15,6 +15,9 @@ services:
# Phone remote: "1" = a phone may only pair with a screen on the same
# network (same public IP as seen by the server). Off by default.
REMOTE_SAME_NETWORK: "${REMOTE_SAME_NETWORK:-0}"
# Shared secret the lyrics-worker uses to list songs and upload lyrics.
# Set in Dokploy's Environment tab (same value feeds both services).
LYRICS_WORKER_TOKEN: "${LYRICS_WORKER_TOKEN:-}"
# Optional: override yt-dlp binary path if you mount a custom one
# YTDLP_PATH: "/usr/local/bin/yt-dlp"
# Server media cache (server/media-cache.js) — defaults shown.
@@ -36,6 +39,7 @@ services:
start_period: 15s
networks:
- dokploy-network
- lyrics
labels:
- "traefik.enable=true"
- "traefik.http.routers.ytplayer-http.rule=Host(`worship.hesed.sbs`)"
@@ -46,10 +50,39 @@ services:
- "traefik.http.routers.ytplayer-https.tls.certresolver=letsencrypt"
- "traefik.http.services.ytplayer-svc.loadbalancer.server.port=3000"
# Transcribes saved songs that have no lyrics yet, one at a time, with
# faster-whisper on CPU (no API keys, no credits). Separate container so it
# never competes with playback/downloads: capped CPU + memory, low priority,
# and it fetches audio from the ytplayer service over the private network.
lyrics-worker:
build: ./scripts/lyrics
restart: unless-stopped
depends_on:
- ytplayer
environment:
YTP_BASE: "http://ytplayer:3000"
YTP_TOKEN: "${LYRICS_WORKER_TOKEN:-}"
WHISPER_MODEL: "large-v3-turbo" # ~1.6 GB download on first start
WHISPER_THREADS: "2"
WATCH_SECONDS: "300"
volumes:
- lyrics-models:/models
- lyrics-state:/data
cpus: "2"
mem_limit: 3g
networks:
- lyrics
volumes:
ytplayer-data:
driver: local
lyrics-models:
driver: local
lyrics-state:
driver: local
networks:
dokploy-network:
external: true
lyrics:
driver: bridge