# Copy to .env next to your docker-compose file and fill in. cp .env.example .env # Used by docker-compose.yml (build-on-host) AND docker-compose.prod.yml (pulls images). # ── URLs pre-filled on the frontend setup screen ───────────────────────────── NAVIDROME_URL=https://music.example.com BACKEND_URL=https://backend.example.com SCROBBLE_URL=https://scrobble.example.com # ── Library / downloads (backend) ──────────────────────────────────────────── # Absolute music path — mounted 1:1 into the backend (no remapping), same value inside the container. MUSIC_PATH=/opt/navidrome/music AUDIO_FMT=mp3 AUDIO_QUALITY=0 MAX_PARALLEL=2 DOWNLOAD_BACKEND=ytdlp TICKETMASTER_API_KEY= # ── Android APK download button + in-app updater ───────────────────────────── # The backend proxies the fixed Gitea release ("apk-latest") over the LAN, so Gitea can stay internal. GITEA_URL=http://192.168.2.51:3000 # internal Gitea base reachable from the backend container GITEA_REPO=Docker/NovaSonic GITEA_TOKEN= # read token (only needed for a private repo) GITEA_APK_TAG=apk-latest # ── Pre-built images (docker-compose.prod.yml only) ────────────────────────── # REGISTRY = where `npm run push-images` pushed to and where the host pulls from. # Gitea container registry (lowercase owner): gitea.honeyy.duckdns.org/docker # Docker Hub: docker.io/youruser # Plain-HTTP internal registries need the host's Docker daemon to allow it # (/etc/docker/daemon.json → {"insecure-registries":["192.168.2.51:3000"]}). REGISTRY=gitea.honeyy.duckdns.org/docker TAG=latest