Skip to content

Environment variables

Use server/.env.example as a starting point. These tables describe its variables and the optional DEVELOPMENT override. Defaults below are for the server or example file; the supplied Compose file overrides some values for its containers.

Apply environment changes by restarting a source install or running docker compose up -d with your existing environment file and profile. See Configuration for details.

Variable Default Purpose
DATABASE_DRIVER postgres Database type: postgres or sqlite. Compose sets this from the selected profile.
POSTGRES_HOST 127.0.0.1 PostgreSQL hostname. Compose uses postgres.
POSTGRES_PORT 5432 PostgreSQL port.
POSTGRES_DATABASE replayvod Database name.
POSTGRES_USER postgres Database user.
POSTGRES_PASSWORD Empty Database password.
POSTGRES_SSL_MODE disable TLS mode: disable, require, verify-ca, or verify-full.
SQLITE_PATH ./data/replayvod.db SQLite file path. Compose uses /app/data/replayvod.db.
Variable Default Purpose
TWITCH_CLIENT_ID Empty Required Twitch app client ID from the developer console.
TWITCH_SECRET Empty Required Twitch app client secret.
HMAC_SECRET Generated Optional initial EventSub signing secret. Saved in the database on first start and ignored on later starts.
Variable Default Purpose
HOST 0.0.0.0 Address the HTTP server listens on.
PORT 8080 HTTP port.
DEVELOPMENT Unset Override development in config.toml with true or false. The Docker image sets false.
Variable Default Purpose
SESSION_SECRET Empty Required encryption secret, at least 32 characters. Generate a random value and keep it with your database backup.
WHITELIST_ENABLED false Restrict sign-in to accounts on the whitelist.
WHITELISTED_USER_IDS Empty Comma-separated numeric Twitch user IDs to add to the whitelist at each start.
OWNER_TWITCH_ID Empty Numeric Twitch user ID to assign as owner. Empty allows the first successful sign-in to become owner. Added to the whitelist at startup.

Admins manage access in the dashboard after setup. To remove an ID added through the environment, remove it from both the environment and the dashboard whitelist. See Users & invitations.

Variable Default Purpose
PUBLIC_BASE_URL Empty Public dashboard address, such as https://replayvod.example. Used for sign-in callbacks, redirects, trusted browser origin, and signed recording download links. Compose defaults to http://localhost:8080.
TRUSTED_ORIGINS Empty Comma-separated extra browser origins, for a dashboard hosted separately from the API.
WEBHOOK_CALLBACK_URL Empty Public HTTPS EventSub callback for SERVER_MODE=direct.
Variable Default Purpose
SERVER_MODE Empty Live detection mode: off, poll, direct, or relay. Leave empty to configure it in the owner dashboard.

A complete environment configuration takes precedence over dashboard settings. If SERVER_MODE is empty, leave EventSub and relay URL variables empty too.

Variable Default Purpose
RELAY_INGEST_URL Empty Public HTTPS relay URL where Twitch sends notifications. Required for relay mode.
RELAY_SUBSCRIBE_URL Empty Outbound WebSocket URL for receiving notifications. Required for relay mode. Must match the ingest URL’s host and token.
RELAY_LOCAL_CALLBACK_URL Empty Local destination for forwarded notifications. Defaults to http://127.0.0.1:${PORT}/api/v1/webhook/callback. Must use loopback and the callback path.
Variable Default Purpose
COMPOSE_PROFILES sqlite in the example Choose sqlite or postgres. Supply this or an explicit --profile flag to start the recorder services.
Variable Default Purpose
VIDEO_DIR ./data/videos Local recording directory. Compose uses /app/data/videos.
THUMBNAIL_DIR ./data/thumbnails Preview directory. Compose uses /app/data/thumbnails.
DASHBOARD_DIR Empty Built dashboard directory for manual installs. The Docker image serves /app/dashboard.
SCRATCH_DIR ./data/.scratch Temporary download files. Keep on the same filesystem as local recordings. Compose uses /app/data/.scratch.