Install
Use the installer on macOS or Linux, or run Docker Compose manually on any supported platform. For a local setup with your first recording schedule, follow the Quickstart.
Requirements
Section titled “Requirements”For a Docker install, you need:
- Docker with Compose. On Windows, use Docker Desktop.
- A Twitch developer application and its Client ID and Client Secret. See Register a Twitch app.
- Storage for recordings and temporary download files.
The Docker image includes ffmpeg, ffprobe, and the dashboard.
Installer (macOS / Linux)
Section titled “Installer (macOS / Linux)”curl -fsSL https://replayvod.com/install.sh | shThe installer asks for an install directory, version, database profile, public URL, and Twitch app credentials. It creates server/.env, generates a session secret, and offers to start the containers.
The defaults are ~/replayvod, the latest release tag, SQLite, and http://localhost:8080. Choose the PostgreSQL profile if you want Compose to run a separate database container. Enter an HTTPS URL if you’ll access ReplayVOD through a public domain.
Manual Docker
Section titled “Manual Docker”Clone the repository and open the environment file:
git clone https://github.com/befabri/replayvod.gitcd replayvodcp server/.env.example server/.env$EDITOR server/.envgit clone https://github.com/befabri/replayvod.gitSet-Location replayvodCopy-Item server/.env.example server/.envnotepad server/.envSet the required values before starting:
TWITCH_CLIENT_ID=...TWITCH_SECRET=...SESSION_SECRET=...OWNER_TWITCH_ID=...Generate SESSION_SECRET with openssl rand -hex 32, or use the PowerShell example in Quickstart.
OWNER_TWITCH_ID is optional. Set your numeric Twitch user ID to reserve ownership for your account. If you leave it empty, the first successful sign-in becomes owner.
Start the SQLite profile:
docker compose --env-file server/.env --profile sqlite up -dUse --profile postgres to start ReplayVOD with PostgreSQL. Compose pulls the published ghcr.io/befabri/replayvod:latest image for Linux AMD64 or ARM64. Add --build to build the image from your local source.
Build from source
Section titled “Build from source”You need Go 1.26.8+, Node 22.19+, Task, and ffmpeg and ffprobe on PATH.
git clone https://github.com/befabri/replayvod.gitcd replayvodcp server/.env.example server/.envtask setupFill in the required values in server/.env, then run:
task dev # server on port 8080, dashboard on port 3000task build # build the server and dashboard for productionThe build writes server/bin/replayvod and dashboard/dist/client/. For a manual production install, run the server from server/, set DASHBOARD_DIR to the built dashboard directory, and set DEVELOPMENT=false. See Development for development tasks and tests.
Install layout
Section titled “Install layout”The checkout contains your configuration and Compose file:
replayvod/├── server/│ ├── .env│ └── config.toml└── docker-compose.ymlDocker stores recordings and SQLite in a named volume mounted at /app/data. Logs use a separate volume; PostgreSQL uses its own database volume. Source installs default to server/data/ when run from server/.
The storage root contains .replayvod-storage, which identifies the storage belonging to this installation. Keep that file with the media when moving or restoring it. See Storage and Backup & restore.
The Docker image includes config.toml. To use local edits, add the bind mount described in Configuration.
Public URL
Section titled “Public URL”For a public server, set:
PUBLIC_BASE_URL=https://your-domain.exampleRegister ${PUBLIC_BASE_URL}/api/v1/auth/twitch/callback as your Twitch app’s OAuth redirect URL. The address must match the one users access.
Next steps
Section titled “Next steps”- Open the dashboard and sign in with Twitch.
- Configure live detection in System → EventSub. Polling works without a public callback; direct EventSub and Connect receive Twitch notifications.
- Create a recording schedule.
- Invite other users and set up backups.