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).
  • Your numeric Twitch user ID (for OWNER_TWITCH_ID).
  • 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. Clones the latest release tag into ~/replayvod/ (falls back to main before the first release).
  2. Writes server/.env from the example and generates SESSION_SECRET locally.
  3. Prompts for TWITCH_CLIENT_ID, TWITCH_SECRET, and OWNER_TWITCH_ID if a terminal is available. The secret prompt is hidden.
  4. Starts ReplayVOD with docker compose up -d, which pulls the prebuilt image.

Overrides

Pick a different directory or database profile:

Terminal window
curl -fsSL https://replayvod.com/install.sh | \
REPLAYVOD_DIR=/srv/replayvod REPLAYVOD_PROFILE=postgres sh

Pin a specific version (tag or branch) instead of the latest release tag:

Terminal window
curl -fsSL https://replayvod.com/install.sh | REPLAYVOD_REF=v1.2.3 sh

Configure without starting containers:

Terminal window
curl -fsSL https://replayvod.com/install.sh | REPLAYVOD_NO_START=1 sh

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, TWITCH_SECRET, and OWNER_TWITCH_ID in server/.env before starting, and generate SESSION_SECRET (any 32-byte hex string, e.g. openssl rand -hex 32). 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=...
OWNER_TWITCH_ID=...
SESSION_SECRET=... # installer generates this, or: openssl rand -hex 32

For a public deployment also set:

PUBLIC_BASE_URL=https://your-domain.example

The Compose file derives CALLBACK_URL and FRONTEND_URL 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.