Configuration
All settings are environment variables, usually set in .env.
| Variable | Default | Description |
|---|---|---|
TS3CLIENT_LICENSE |
(required) | Set to accept to accept the TeamSpeak client license. The client is downloaded on first start. |
TS3_HOST |
(required) | Server address: host name, IP or host:port |
TS3_PORT |
9987 |
Voice port |
TS3_SERVER_PASSWORD |
Server password | |
TS3_CHANNEL |
Channel to join, by name or path (Games/Music). Empty means the default channel. |
|
TS3_CHANNEL_PASSWORD |
Channel password | |
BOT_NICKNAME |
Mendil |
Nickname |
BOT_LANGUAGE |
en |
Chat language: en, tr |
COMMAND_PREFIX |
! |
Command prefix |
ADMIN_UIDS |
Comma-separated TeamSpeak unique IDs of admins. !whoami shows yours. |
|
ADMIN_GROUPS |
Comma-separated server group IDs of admins. If both admin lists are empty, everyone who may use the bot is an admin. | |
ALLOWED_UIDS |
Comma-separated unique IDs allowed to use the bot at all. | |
ALLOWED_GROUPS |
Comma-separated server group IDs allowed to use the bot at all. If both lists are empty, everyone can; !help and !whoami always work, and admins are always allowed. |
|
CHANNEL_HINTS |
true |
Post a hint when the channel’s codec or talk power is wrong for music |
ANNOUNCE_TRACKS |
true |
Post “Now playing” messages |
PAUSE_WHEN_ALONE |
true |
Pause while nobody else is in the bot’s channel (details) |
RADIO_STATIONS |
Radio stations, as name=stream address separated by commas (Radio) |
|
RADIO |
Station name or stream address that plays whenever the queue is empty, from the first start | |
DEFAULT_VOLUME |
70 |
Start-up volume, 0 to 100 |
NORMALIZE_AUDIO |
true |
Loudness-normalise tracks to -16 LUFS |
MAX_QUEUE |
100 |
Max queue length |
MAX_PLAYLIST_ITEMS |
50 |
Max tracks taken from one playlist |
MAX_QUEUE_PER_USER |
0 |
Songs one person may have waiting in the queue; 0 means no limit. Named admins are exempt. A playlist adds only as many songs as fit. |
MAX_TRACK_DURATION |
0 |
Max track length in seconds, live streams included. 0 means unlimited. |
PREFETCH |
true |
Download tracks before playing them, so there are no gaps and network hiccups don’t matter. false streams everything. |
PREFETCH_MAX_DURATION |
1800 |
Longer tracks (in seconds) and live streams are streamed instead of downloaded |
YTDLP_AUTO_UPDATE |
true |
Keep yt-dlp up to date in the background (daily, and when YouTube extraction breaks). A new version that fails a self-test is rolled back. |
YTDLP_COOKIES_FILE |
Cookies file for YouTube, see YouTube blocks | |
YTDLP_PROXY |
Proxy for YouTube traffic only, e.g. socks5://user:pass@host:1080 |
|
ALLOW_PRIVATE_URLS |
false |
Let !play open addresses on private networks (LAN, localhost), e.g. a media server at home. Off by default, see SECURITY.md. |
VOICE_BACKEND |
per image | classic (official TeamSpeak client) or native, see How it works. Each image sets its own; only set this to run the native engine inside the classic image. |
NATIVE_BITRATE |
128 |
Native engine only: Opus bitrate in kbit/s, 48 to 192 |
PANEL_PORT |
8080 |
Port of the web panel inside the container. 0 turns it off. |
PANEL_HOST |
0.0.0.0 |
Address the panel listens on inside the container. Keep the default in Docker and limit access with the published port instead. |
PANEL_TRUST_PROXY |
false |
Set to true when the panel is behind a reverse proxy, so the login limit applies per client instead of to the proxy |
PANEL_PASSWORD |
Admin password for the web panel. If empty, one is generated on first start and printed in the log. Everyone else signs in with their TeamSpeak nickname. | |
TS3_CLIENT_VERSION |
3.6.2 |
TeamSpeak client version to download |
TS3_CLIENT_SHA256 |
Expected SHA-256 of that download. Known for 3.6.2; set it if you change the version. | |
PUID / PGID |
1000 |
User and group IDs to run as when the container is started as root (--user 0), for example 99 / 100 on Unraid. Mendil hands its data folders to that user and never runs as root itself. Without --user 0 they have no effect. |
LOG_LEVEL |
info |
debug, info, warn or error |
