Production installation
ReaperCI production runs on Linux amd64 or arm64 with Docker Engine and Docker Compose. Windows is supported as a development client, not as a production runtime.
Install
Verify the downloaded bundle or image using the release verification procedure, then run:
sudo bash scripts/install.sh \
--external-url https://ci.example.com \
--image ghcr.io/clow99/reaperci:v0.1.0
The installer creates an isolated directory under /opt/reaperci, writes a
mode-0600 environment file, generates a mode-0400 master key owned only by the
non-root container UID, validates the
Compose bundle, starts the hub and BuildKit, waits for health, prepares an nginx
configuration, and enables a nightly backup timer when systemd is available.
BuildKit is never given the host Docker socket.
Complete TLS before signing in. Keep the generated master key outside the data backup and test a restore on every release candidate.
Upgrade and rollback
Use an immutable image tag:
sudo /opt/reaperci/upgrade.sh --image ghcr.io/clow99/reaperci:v0.2.0
The upgrade tool writes a pre-upgrade backup, preserves the current image under a local rollback tag, pulls and starts the requested image, and waits for the health endpoint. A failed health check automatically restores the preserved image. Database migrations are forward-only, so a full data rollback uses the matching pre-upgrade backup plus the separately retained master key.
Recovery drill
Copy a backup and the matching master key to an isolated Linux host, install the same release, stop the hub, and run:
REAPERCI_COMPOSE_FILE=/opt/reaperci/compose.yaml \
/opt/reaperci/restore.sh /path/to/reaperci-backup.tar.gz /data --force
Start the stack and verify login, repositories, registry pulls, build history, server inventory, and a non-production deployment before declaring the drill successful.