# Docker Compose configuration (deploy/docker/docker-compose.yml) # # Copy to .env (in this directory) and fill in your values. # For local dev without Docker, use the root .env.example instead. # # All service vars are optional here -- you can configure them via the web UI # instead. If all required vars are set, setup completes automatically on boot. # ============================================================================= # Database # ============================================================================= # Default: embedded PGlite (no config needed). Data lives in the `data` volume (DB_PATH=/app/data). # To use an external PostgreSQL instead, set DB_HOST (and DB_USER/DB_NAME/DB_PASS) or DATABASE_URL. # The default compose stack reads the external database password from # ./secrets/postgres_password. Use DB_PASS only with a custom env-var-only override. # DB_HOST=postgres # DB_USER=digarr # DB_NAME=digarr # DB_PASS= # DB_PASS_FILE=/run/secrets/postgres_password # DB_POOL_MAX=10 # DB_CONNECT_TIMEOUT_MS=10000 # DB_SSL_MODE=disable # disable, require, or no-verify # require = TLS with full certificate verification (stricter than libpq's # "require", which encrypts without verifying). # no-verify = TLS without certificate verification (self-signed setups). # ============================================================================= # Server # ============================================================================= PORT=3000 # ALLOWED_ORIGIN=http://localhost:3000 # ============================================================================= # Auth # ============================================================================= # DIGARR_AUTH_TOKEN= # shared bearer token (optional, legacy) # DIGARR_INITIAL_USERNAME= # auto-create admin user on first boot # DIGARR_INITIAL_PASSWORD= # min 8 chars # DIGARR_DISABLE_REGISTRATION=true # DIGARR_ENCRYPTION_KEY= # AES-256-GCM encryption for API keys at rest # ============================================================================= # Proxy auth (trusted reverse proxy header authentication) # ============================================================================= # PROXY_AUTH_ENABLED=false # PROXY_AUTH_TRUSTED_PROXIES= # comma-separated CIDRs, e.g. 10.0.0.0/8,172.16.0.0/12 # ============================================================================= # OIDC (OpenID Connect SSO) # ============================================================================= # OIDC_ISSUER_URL= # e.g. https://auth.example.com/realms/main # OIDC_CLIENT_ID= # OIDC_CLIENT_SECRET= # OIDC_SCOPES= # defaults to "openid profile email" if unset # ============================================================================= # Notifications # ============================================================================= # WEBHOOK_URL= # Discord, Slack, ntfy, Gotify, or any HTTP endpoint # ============================================================================= # Lidarr (optional -- without it, Digarr runs in discovery-only mode) # ============================================================================= # LIDARR_URL=http://lidarr:8686 # LIDARR_API_KEY= # SKIP_TLS_VERIFY=false # ============================================================================= # Listening sources (optional for setup, recommended before running discovery) # ============================================================================= # LISTENBRAINZ_USERNAME= # LISTENBRAINZ_TOKEN= # LASTFM_USERNAME= # LASTFM_API_KEY= # ============================================================================= # Deezer OAuth (optional -- enables Deezer favorites, followed, Flow, playlists) # ============================================================================= # DEEZER_APP_ID= # DEEZER_APP_SECRET= # ============================================================================= # AI provider # ============================================================================= # AI_PROVIDER=openai # openai, anthropic, gemini, ollama, or openai-compatible # AI_MODEL=gpt-4o-mini # AI_API_KEY= # AI_BASE_URL= # optional, for ollama or compatible APIs (threaded to Anthropic/OpenAI SDKs too) # DIGARR_AI_TIMEOUT_SECONDS= # optional, request timeout in seconds (Ollama defaults to 120, others 30)