Skip to content

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.

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.

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

The 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.

Clone the repository and open the environment file:

Terminal window
git clone https://github.com/befabri/replayvod.git
cd replayvod
cp server/.env.example server/.env
$EDITOR server/.env

Set 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:

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

Use --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.

You need Go 1.26.8+, Node 22.19+, Task, and ffmpeg and ffprobe on PATH.

Terminal window
git clone https://github.com/befabri/replayvod.git
cd replayvod
cp server/.env.example server/.env
task setup

Fill in the required values in server/.env, then run:

Terminal window
task dev # server on port 8080, dashboard on port 3000
task build # build the server and dashboard for production

The 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.

The checkout contains your configuration and Compose file:

replayvod/
├── server/
│ ├── .env
│ └── config.toml
└── docker-compose.yml

Docker 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.

For a public server, set:

PUBLIC_BASE_URL=https://your-domain.example

Register ${PUBLIC_BASE_URL}/api/v1/auth/twitch/callback as your Twitch app’s OAuth redirect URL. The address must match the one users access.

  1. Open the dashboard and sign in with Twitch.
  2. Configure live detection in System → EventSub. Polling works without a public callback; direct EventSub and Connect receive Twitch notifications.
  3. Create a recording schedule.
  4. Invite other users and set up backups.