Skip to content

Configuration

ReplayVOD has two configuration files.

server/.env

Credentials, database selection, public URLs, local paths, Connect relay URLs. Treat as secret.

server/config.toml

Operational behaviour: download policy, scheduler intervals, logging, storage backend, health endpoint, title-tracking mode.

  • Directoryreplayvod/
    • Directoryserver/
      • .env secrets, paths, network
      • .env.example committed template — every supported var is listed and commented here
      • config.toml tuning
    • docker-compose.yml
    • Directorydata/

server/.env always wins. The Go process reads the env file first, then the TOML file. For live/title behavior, a complete SERVER_MODE env config also wins over app-managed server settings and skips onboarding. If SERVER_MODE is empty, the owner dashboard stores server mode setup in the database, and mode or URL changes are applied on the next server start.

The Docker Compose file reads server/.env directly. A few PUBLIC_* variables are Compose-only — they shape what gets passed into the container without changing the stored values.

TWITCH_CLIENT_ID=...
TWITCH_SECRET=...
SESSION_SECRET=...
OWNER_TWITCH_ID=... # optional; empty = first login becomes owner

The installer generates SESSION_SECRET; for manual installs, generate it with openssl rand -hex 32. OWNER_TWITCH_ID is optional and only preassigns a numeric Twitch user ID as owner; when empty, the first successful login becomes owner. The EventSub HMAC secret is optional: leave it unset and the server generates and stores one in the database on first run, or set HMAC_SECRET to seed a specific value the first time.

For normal deployments, set PUBLIC_BASE_URL and let the server derive the OAuth callback, frontend redirect URL, and trusted browser origin:

PUBLIC_BASE_URL=https://replayvod.example

If the dashboard is hosted on a different origin from the API, add it with TRUSTED_ORIGINS:

TRUSTED_ORIGINS=https://dashboard.example

Direct EventSub env setup is optional; leaving SERVER_MODE empty lets the owner configure live/title behavior in the dashboard.

Storage

Local filesystem or S3-compatible — see Storage.

Recording

Quality, codecs, retries, gap tolerance — see Recording.

Schedules & title tracking

Recording rules and server modes — see Schedules.

EventSub

Direct EventSub setup — see EventSub.

Connect relay

Pointing the recorder at a hosted relay — see Connect relay.

For a flat lookup of every variable or TOML key, see the reference: