Skip to content

Configuration

ReplayVOD uses environment variables for credentials, paths, and connection details, and config.toml for recording and storage settings. The owner manages live detection, playback caching, and recording webhooks in the dashboard.

File Purpose
server/.env Twitch credentials, session secret, database connection, public URL, and paths.
server/.env.example Template with supported environment variables and comments.
server/config.toml Download limits, retries, storage backend, background tasks, and logging.

For a source install, run the server from server/ so it can find these files. Restart it after changing them.

The supplied Compose file loads server/.env. Environment values set in the Compose service, such as container paths, take precedence over values from that file.

The Docker image includes its own config.toml. To use your edited copy, add a read-only bind mount to the recorder service in a Compose override file. For SQLite, create docker-compose.override.yml beside docker-compose.yml:

services:
replayvod-sqlite:
volumes:
- ./server/config.toml:/app/config.toml:ro

For PostgreSQL, use replayvod-postgres as the service name. Apply the override with the same Compose profile you installed:

Terminal window
docker compose --env-file server/.env --profile sqlite up -d

Restart the recorder after subsequent TOML edits. After editing environment variables, run up -d again so Compose recreates the container with the new values.

Set these in server/.env before starting:

TWITCH_CLIENT_ID=...
TWITCH_SECRET=...
SESSION_SECRET=...
OWNER_TWITCH_ID=...

OWNER_TWITCH_ID is optional. Set it to your numeric Twitch user ID to reserve ownership for your account, or leave it empty so the first successful sign-in becomes owner.

The installer generates SESSION_SECRET. For a manual install, generate it with openssl rand -hex 32. Back up this secret with the database: ReplayVOD uses it to encrypt account tokens and the connected Twitch playback session.

The EventSub signing secret is generated and saved in the database on first start. HMAC_SECRET can supply its initial value; changing that environment variable later doesn’t replace the saved secret.

Set PUBLIC_BASE_URL to the address you use to access ReplayVOD:

PUBLIC_BASE_URL=https://replayvod.example

The server uses this address for Twitch sign-in callbacks, dashboard redirects, and signed recording download links.

If you host the dashboard at a different origin from the API, add that origin:

TRUSTED_ORIGINS=https://dashboard.example

Leave SERVER_MODE empty to configure live detection in System → EventSub. Restart when the dashboard reports that a mode or URL change requires it.

You can also set SERVER_MODE and its required URLs in the environment. A complete environment configuration takes precedence over settings saved in the dashboard. See EventSub for direct mode or Connect relay for relay mode. SERVER_MODE=poll enables polling without a callback URL.