Skip to content

Install

ReplayVOD ships as a Docker Compose stack. On macOS and Linux a one-line installer wraps the same steps; on Windows, clone the repo and run Docker Compose yourself.

  • A Twitch developer application (for TWITCH_CLIENT_ID and TWITCH_SECRET).
  • Docker (Docker Desktop on Windows).
  • ffmpeg is bundled in the Docker image.
Terminal window
curl -fsSL https://replayvod.com/install.sh | sh

The installer:

  1. Asks where to install ReplayVOD. The default is ~/replayvod/.
  2. Asks for a version tag or branch. Press Enter for the latest release tag.
  3. Asks for a database profile. The default is sqlite; choose postgres if you want Compose to start Postgres too.
  4. Asks for the public URL. Press Enter for local-only http://localhost:8080, or enter your HTTPS domain for a public server.
  5. Writes server/.env from the example and generates SESSION_SECRET locally.
  6. Prompts for TWITCH_CLIENT_ID and TWITCH_SECRET. The secret prompt is hidden.
  7. Asks whether to start containers now, then runs docker compose up -d if you say yes.

Clone the repo and run Docker Compose. This is the only path on Windows, and works on macOS and Linux if you want full control.

Terminal window
git clone https://github.com/befabri/replayvod.git
cd replayvod
cp server/.env.example server/.env
$EDITOR server/.env
docker compose --env-file server/.env --profile sqlite up -d

Fill TWITCH_CLIENT_ID and TWITCH_SECRET in server/.env before starting, and generate SESSION_SECRET (any 32-byte hex string, e.g. openssl rand -hex 32). OWNER_TWITCH_ID is optional; leave it empty and the first successful login becomes owner. The EventSub HMAC secret is generated and stored in the database automatically.

docker compose up -d pulls the prebuilt image ghcr.io/befabri/replayvod:latest (linux/amd64 and linux/arm64); add --build to build from the local source instead. Use --profile postgres to run against Postgres.

Requires Go 1.26+, Node 22+, Task, and ffmpeg on PATH.

Terminal window
git clone https://github.com/befabri/replayvod.git
cd replayvod
task setup # go mod download + npm install
task dev # server on :8080, dashboard on :3000
task build # production builds
  • Directory~/replayvod/
    • Directoryserver/
      • .env
      • config.toml
    • docker-compose.yml
    • Directorydata/

After install, fill these in server/.env:

TWITCH_CLIENT_ID=...
TWITCH_SECRET=...
SESSION_SECRET=... # installer generates this, or: openssl rand -hex 32
OWNER_TWITCH_ID=... # optional; empty = first login becomes owner

For a public deployment also set:

PUBLIC_BASE_URL=https://your-domain.example

The server derives its Twitch OAuth callback and dashboard redirects from PUBLIC_BASE_URL.

  1. Open http://localhost:8080 and sign in with Twitch.
  2. Tune recording behaviour and storage in server/config.toml.
  3. If you need EventSub but can't expose a public HTTPS endpoint, set up the Connect relay.