Configuration#
Copy .env.example to .env, protect it as a secret-bearing file, and set explicit values appropriate to your host. Never expose it through the web server.
Discord credentials#
DISCORD_TOKEN— private bot token.DISCORD_CLIENT_ID— Discord application/client ID.DISCORD_CLIENT_SECRET— private OAuth client secret.ALLOWED_GUILD_IDS— required comma-separated server allowlist.DISCORD_DEV_GUILD_ID— optional development server for fast command registration.
Runtime and network#
DATA_DIR— persistent application data root;/datain the release container.HEALTH_HOST— health listener address; keep it on loopback.HEALTH_PORT— health listener port.LOG_LEVEL— structured log verbosity such asinfo.YT_DLP_PATH— path to the yt-dlp executable.FFMPEG_PATH— path to FFmpeg.FFPROBE_PATH— path to ffprobe.PUBLIC_BASE_URL— canonical HTTPS origin used for OAuth and origin checks.WEB_HOST— dashboard listener address inside the container.WEB_PORT— dashboard listener port inside the container.VTUNE_BIND_PORT— Docker Compose host-loopback port; not read by the process.
Storage and limits#
DEFAULT_USER_QUOTA_BYTES— initial per-user library allowance.MAX_UPLOAD_BYTES— largest accepted source file.MAX_LIBRARY_TRACK_DURATION_SECONDS— largest accepted uploaded track duration.MIN_FREE_STORAGE_BYTES— protected free-space reserve.INVITE_TTL_HOURS— instance and group invitation lifetime.SESSION_TTL_DAYS— authenticated browser session lifetime.MAX_QUEUE_SIZE— maximum items in one server queue.MAX_PLAYLIST_ITEMS— maximum entries accepted from one playlist URL.MAX_TRACK_DURATION_SECONDS— largest accepted external playback duration.PLAY_REQUESTS_PER_MINUTE— per-user playback request limit.EMPTY_CHANNEL_TIMEOUT_MS— wait before leaving an empty voice channel.IDLE_TIMEOUT_MS— wait before closing an inactive session.METADATA_TIMEOUT_MS— timeout for external metadata extraction.
Validation#
The site build checks that every variable in .env.example appears on this page. A configuration change must update both files in the same commit.