Skip to content

Configuration

Environment variables

The Docker image runs as uid 1000, so the three host folders mounted into it (SLSKD_DOWNLOAD_PATH, MUSIC_OUTPUT_PATH, DATA_PATH) must be writable by that uid.

Variable Required Default Description
TELEGRAM_BOT_TOKEN Yes — Telegram bot token from @BotFather
TELEGRAM_ALLOWED_USERS Yes (deny all) Comma-separated Telegram user IDs allowed to use the bot. Empty means the bot denies everyone (fail-closed) — the denial reply shows you your ID
SPOTIFY_CLIENT_ID Yes — Spotify Developer app Client ID
SPOTIFY_CLIENT_SECRET Yes — Spotify Developer app Client Secret
SLSKD_HOST Yes — slskd instance URL (e.g., http://192.168.1.100:5030)
SLSKD_API_KEY Yes — slskd API key (Settings > Security > API Keys)
DOWNLOAD_DIR No /downloads Where slskd stores completed downloads (container path)
OUTPUT_DIR No /music Where to place renamed FLAC files (container path)
DATA_DIR No /data Where the SQLite history and import state live (container path)
SLSKD_DOWNLOAD_PATH Compose only ./downloads Host folder mounted at /downloads: slskd's completed-downloads folder
MUSIC_OUTPUT_PATH Compose only ./music Host folder mounted at /music: your library
DATA_PATH Compose only ./data Host folder mounted at /data
AUTO_MODE No false Default auto-download state for chats that never toggled /auto: best match is downloaded and saved without asking
MAX_RESULTS No 10 Maximum search results shown to user
DURATION_TOLERANCE_SECS No 5 Duration match tolerance in seconds
SEARCH_TIMEOUT_SECS No 30 slskd search timeout
DOWNLOAD_TIMEOUT_SECS No 600 Download completion timeout
DOWNLOAD_CLEANUP_HOURS No 24 Hours before abandoned files in DOWNLOAD_DIR are auto-deleted (hourly sweep; 0 disables). In-flight transfers are never touched
EXCLUDE_KEYWORDS No live,remix,... Comma-separated keywords to filter out
FILENAME_TEMPLATE No {artist} - {title} Output filename template
LOG_LEVEL No INFO Logging level
HEALTH_PORT No 8080 Health check HTTP port