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:/app:ro # mount entire backend dir (server + lib/) - ${MUSIC_PATH}:${MUSIC_PATH} # exact path from .env, no remapping ports: - "3700:3700" # route this port through your reverse proxy environment: - PORT=3700 - MUSIC_PATH=${MUSIC_PATH} # same path inside the container - AUDIO_FMT=${AUDIO_FMT:-mp3} - AUDIO_QUALITY=${AUDIO_QUALITY:-0} - MAX_PARALLEL=${MAX_PARALLEL:-2} - DOWNLOAD_BACKEND=${DOWNLOAD_BACKEND:-auto} - SQUID_QUALITY=${SQUID_QUALITY:-mp3} - SPOTIFY_CLIENT_ID=${SPOTIFY_CLIENT_ID:-} - SPOTIFY_CLIENT_SECRET=${SPOTIFY_CLIENT_SECRET:-} command: > sh -c " apk add --no-cache yt-dlp ffmpeg python3 py3-pip py3-requests git gcc musl-dev python3-dev libffi-dev && pip install --break-system-packages 'git+https://github.com/TzurSoffer/spotify-downloader' && mkdir -p /deps && cd /deps && npm install express && cd /app && NODE_PATH=/deps/node_modules node novasonic-server.js "