Environment Variables
Comprehensive guide for configuring your application's environment with the `.env` file.
All configuration is supplied through environment variables on the syllogi container.
Required
| Name | Description |
|---|---|
DATABASE_URL | PostgreSQL host and port, e.g. syllogi-postgres:5432. |
DATABASE_USERNAME | PostgreSQL username. |
DATABASE_PASSWORD | PostgreSQL password. |
DATABASE_NAME | PostgreSQL database name. |
NEXT_PUBLIC_URL | Public URL of the syllogi web UI, e.g. http://localhost:8000. Used for OAuth redirect URIs. |
AUTH_SECRET_KEY | Secret used to secure sign-in sessions. Set to a long random string in production. |
Music server
Configure one of the following providers. If both are configured, set MUSIC_PROVIDER to disambiguate.
| Name | Description |
|---|---|
JELLYFIN_API_KEY | Jellyfin API key for the target user with permission to create and manage playlists. |
JELLYFIN_URL | Base URL of your Jellyfin server, e.g. https://jellyfin.example.com or http://localhost:8096. |
Optional
| Name | Default | Description |
|---|---|---|
DOWNLOAD_LIBRARY_NAME | Downloads | Name of the Jellyfin media folder that contains the downloads. Jellyfin-only; ignored for Navidrome. |
DOWNLOAD_DIR | /downloads | Filesystem path inside the container where downloaded tracks are written. Must be a path your music server scans. |
DISCORD_WEBHOOK_URL | (unset) | Discord webhook URL for sync summary notifications. Leave unset to disable. |
LOG_LEVEL | INFO | Python logging level (DEBUG, INFO, WARNING, ERROR). |
LOG_DIR | /logs | Directory inside the container where syllogi.log is written. Mount it as a volume so the Logs tab survives a restart. |
AUTHENTIK_CLIENT_ID | (unset) | Authentik OAuth application client ID. Required only if you want SSO via Authentik. |
AUTHENTIK_SECRET | (unset) | Authentik OAuth application client secret. |
AUTHENTIK_ISSUER | (unset) | Authentik OIDC issuer URL, e.g. https://auth.example.com/application/o/syllogi/. |
TZ | (unset) | Container timezone, e.g. Asia/Singapore. Affects cron scheduling. |
ENVIRONMENT | production | Set to development to enable debug features (raw API response dumps). |
BRAINZMASH_URL | https://api.brainzmash.cc/ws/2 | Primary MusicBrainz-compatible API. Set empty to go straight to MusicBrainz. |
MUSICBRAINZ_URL | https://musicbrainz.org/ws/2 | Fallback MusicBrainz service used when BrainzMash fails. |
MUSICBRAINZ_USER_AGENT | syllogi/<version> | Identifier sent to MusicBrainz with requests; <version> is the version of the running image. |
BRAINZMASH_USER_AGENT | syllogi/<version> | Identifier sent to BrainzMash with requests; <version> is the version of the running image. |
LASTFM_API_KEY | (unset) | Last.fm API key for recommendations and charts. See Last.fm API documentation. |
LASTFM_URL | https://ws.audioscrobbler.com/2.0 | Override for the Last.fm service address. |
LISTENBRAINZ_URL | https://api.listenbrainz.org | Override for the ListenBrainz service address. |
LISTENBRAINZ_API_KEY | (unset) | ListenBrainz API key, used to check ListenBrainz usernames on music-server users and to fetch recommendations. |
SLSKD_URL | (unset) | Address of your slskd instance. |
SLSKD_API_KEY | (unset) | API key for slskd, used for downloading audio when tracks are missing from the library. |
MUSIC_PROVIDER | (unset) | Required when both Jellyfin and Navidrome are configured: jellyfin or navidrome. |
Metadata API
Charts, track matching, and downloads fetch MusicBrainz data through BrainzMash by default, with the central MusicBrainz API as a fallback.
Running your own mirror
The public BrainzMash pool is shared, so throughput depends on how busy the pool is. Point BRAINZMASH_URL at your own MusicBrainz-compatible mirror to lift that shared ceiling: requests are served by your own instance, so Charts, track matching, and downloads stay responsive instead of queueing behind the pool or falling back to the rate-limited central API.
If you would rather help the pool on top of running your own instance, you can contribute a replica instead - see brainzmash.cc and brainzmash-hearing-aid for details.
Single sign-on
Authentik can be used as an OIDC provider, see Authentik OIDC.