docker-compose.yml
Rama main · réplica de lectura del repositorio original.
services:
louis:
image: stuartromanek/louis:latest
# Equivalent: ghcr.io/stuartromanek/louis:latest
build:
context: .
args:
# Change on rebuild to pull latest yt-dlp nightly (CI sets this automatically).
YTDLP_CACHE_BUST: ${YTDLP_CACHE_BUST:-}
# Bridge networking keeps this file working with Coolify and Docker Desktop.
# On a Linux NAS/homelab, prefer deploy/portainer/docker-compose.yml, which
# uses host networking so yt-dlp can reach YouTube over IPv6 (see docs/HOSTING.md).
ports:
- "4000:4000"
environment:
NODE_ENV: production
HOST: 0.0.0.0
PORT: 4000
LOUIS_AUDIO_WORK_DIR: /data/audio
# Image default is false (LAN HTTP). Set true behind HTTPS.
LOUIS_COOKIE_SECURE: ${LOUIS_COOKIE_SECURE:-false}
LOUIS_YOTO_CLIENT_ID: ${LOUIS_YOTO_CLIENT_ID:-}
LOUIS_YOUTUBE_API_KEY: ${LOUIS_YOUTUBE_API_KEY:-}
# Optional pin. Unset = OAuth callback uses the Host the browser actually used.
LOUIS_YOTO_REDIRECT_URI: ${LOUIS_YOTO_REDIRECT_URI:-}
LOUIS_YOTO_CLIENT_SECRET: ${LOUIS_YOTO_CLIENT_SECRET:-}
volumes:
- louis-audio:/data/audio
restart: unless-stopped
healthcheck:
test: ["CMD", "node", "-e", "fetch('http://127.0.0.1:4000/api/health').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
volumes:
louis-audio: