services: # ── Frontend (nginx) ────────────────────────────────────────────────────────── novasonic-frontend: build: . container_name: novasonic-frontend restart: unless-stopped ports: - "8080:80" # route this port through your reverse proxy environment: - NAVIDROME_URL=${NAVIDROME_URL} # pre-filled on the setup screen - BACKEND_URL=${BACKEND_URL} # pre-filled on the setup screen # ── Backend (yt-dlp download server) ───────────────────────────────────────── novasonic-backend: image: node:20-alpine container_name: novasonic-backend restart: unless-stopped working_dir: /app volumes: - ./backend/novasonic-server.js:/app/novasonic-server.js:ro - ${MUSIC_PATH:-/music}:/music # your Navidrome music library ports: - "3700:3700" # route this port through your reverse proxy environment: - PORT=3700 - MUSIC_PATH=/music - AUDIO_FMT=${AUDIO_FMT:-mp3} - AUDIO_QUALITY=${AUDIO_QUALITY:-0} - MAX_PARALLEL=${MAX_PARALLEL:-2} command: > sh -c " apk add --no-cache yt-dlp ffmpeg python3 && npm install express cors && node novasonic-server.js "