web and worker, plus a migrate container that applies schema migrations and exits. It needs Postgres, Redis, and an S3-compatible bucket, either bundled alongside it or running elsewhere.
Requirements
- Docker Compose v2.20+. Podman works too:
podman compose(Podman 4.7+) or podman-compose 1.3.0+. - CPU and memory scale with concurrent captures, not total build volume. Each capture group in flight runs its own browser instance.
OVR_CAPTURE_GROUP_CONCURRENCY(default2) caps how many a worker runs at once, anddocker compose up -d --scale worker=3adds more workers.
Quick start
Runs everything in containers, including Postgres, Valkey, and object storage. No external accounts. Createdocker-compose.yml:
.env next to it:
BASE_URL (http://localhost:3000 by default). First run creates your organization and admin account.
If
docker compose up fails with service_completed_successfully is an invalid type, it should be a service_started, or a service_healthy, your Compose is older than v2.20, see Requirements above.Environment variables
Required
Database
Redis
Object storage
Any S3-compatible service works: AWS S3, Cloudflare R2, Backblaze B2, RustFS, MinIO, and others.Optional tuning
Ports
Add any of these to
.env if a default collides with something else on your machine.
Using external services
To use a dependency you already run, remove its container fromdocker-compose.yml and point the matching variable at it:
Also drop the removed service from
depends_on on migrate, web, and worker, and drop its volume.
createbuckets works against any S3-compatible endpoint. Point its --endpoint-url and credentials at your provider to keep it, or remove it and create the bucket yourself.
Ready-made Compose files for each combination:
fully-self-hosted— matches the quick start aboveexternal-postgresexternal-redisexternal-storagefully-external— onlywebandworkerrun
Update
IMAGE_TAG in .env to pin a release instead of tracking latest.
Back up your data
State lives in named volumes:pgdata, valkeydata, rustfsdata. Back them up like any container volume.
