# ====================================================================== # mycoolmusicapp — combined env for docker compose (dev). # Copy to .env: cp .env.example .env (or: make env) # Compose injects this into api, worker and webui. Never commit real .env. # Per-repo .env.example files still exist for running a service standalone. # ====================================================================== # ---- Ports ----------------------------------------------------------- NGINX_PORT=8881 # main entrypoint (browser) API_PORT=8000 # direct backend access (debug / docs) WEBUI_PORT=3000 # rsbuild dev server (internal; proxied through nginx) POSTGRES_PORT=5432 REDIS_PORT=6379 # ---- Postgres (db service) ------------------------------------------- POSTGRES_USER=mcma POSTGRES_PASSWORD=mcma POSTGRES_DB=mcma # ---- Backend (api + worker) ------------------------------------------ ENVIRONMENT=dev # dev | test | prod LOG_LEVEL=INFO LOG_JSON=false # true in prod # DATABASE_URL / REDIS_URL are overridden in compose to point at the db/redis # services. These localhost values are the fallback for host-run processes. DATABASE_URL=postgresql+asyncpg://mcma:mcma@localhost:5432/mcma DB_ECHO=false REDIS_URL=redis://localhost:6379/0 # auth — GENERATE a strong secret for prod: `openssl rand -hex 32` JWT_SECRET=change-me-in-prod ACCESS_TOKEN_TTL_SECONDS=900 REFRESH_TOKEN_TTL_SECONDS=2592000 # media / storage (paths inside the container) MEDIA_PATH=/data/media TRANSCODE_CACHE_PATH=/data/transcode-cache MAX_PARALLEL_DOWNLOADS=2 # external services (all optional — backend degrades gracefully if unset) # ML_SERVICE_URL=http://ml:9000 # Metadata enrichment (§1D): without a key, only embedded-tag enrichment runs; # set it to enable AcoustID fingerprint → MusicBrainz identification. # Get a free key at https://acoustid.org/new-application ACOUSTID_API_KEY= # Sent to MusicBrainz/AcoustID — put a real contact so you don't get rate-limited. MUSICBRAINZ_USER_AGENT=mcma-backend/0.1.0 ( https://github.com/your/repo ) # YOUTUBE_COOKIES_PATH=/data/cookies.txt # ---- Frontend (webui) ------------------------------------------------ # Served same-origin behind nginx, so the default '/api/v1' just works. PUBLIC_API_BASE_URL=/api/v1