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.
Configuration files
Section titled “Configuration files”| 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.
Docker Compose
Section titled “Docker Compose”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:roFor PostgreSQL, use replayvod-postgres as the service name. Apply the override with the same Compose profile you installed:
docker compose --env-file server/.env --profile sqlite up -dRestart the recorder after subsequent TOML edits. After editing environment variables, run up -d again so Compose recreates the container with the new values.
Required values
Section titled “Required 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.
Public URLs
Section titled “Public URLs”Set PUBLIC_BASE_URL to the address you use to access ReplayVOD:
PUBLIC_BASE_URL=https://replayvod.exampleThe 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.exampleServer mode
Section titled “Server mode”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.
Other settings
Section titled “Other settings”- Recording: quality, download limits, codecs, and retries.
- Storage: local disk and S3 configuration.
- Schedules & title tracking: recording rules and title history.
- Environment variables: environment reference.
- config.toml: TOML reference.