Configuration
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). |
MUSICBRAINZ_URL | https://musicbrainz.org/ws/2 | Override for the MusicBrainz service address. |
MUSICBRAINZ_USER_AGENT | syllogi/0.1.0 (https://github.com/jeraldlyh/syllogi) | Identifier sent to MusicBrainz with requests. |
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. |
Single sign-on
Authentik can be used as an OIDC provider, see Authentik OIDC.