Operations

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; /data in the release container.
  • HEALTH_HOST — health listener address; keep it on loopback.
  • HEALTH_PORT — health listener port.
  • LOG_LEVEL — structured log verbosity such as info.
  • 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.