Installation¶
Relay is distributed as a container image and as a standalone server binary. Current packages and the stable version are listed on the Relay Download page; use a versioned image tag for reproducible deployments.
Docker¶
The examples use the 0.11 stable release channel, which follows patch
releases such as 0.11.2. Pin an exact patch tag when reproducibility is required.
The latest tag is a direct master build: bleeding-edge and less tested, not
the stable channel.
Relay stores its data in /var/opt/relay and runs as UID 1000 in the container.
mkdir -p data
sudo chown -R 1000:1000 data
docker pull git.thc420.dev/ouch/relay:0.11
docker run -d \
--name relay \
-p 9000:9000 \
-v "$PWD/data:/var/opt/relay" \
--restart unless-stopped \
git.thc420.dev/ouch/relay:0.11
The ownership command assumes a rootful Docker installation with direct UID mapping. For rootless or user-namespaced Docker, provision the bind mount for the container's effective UID, use an ACL, or choose a named volume.
For an existing installation, set RELAY_HOME explicitly and mount that directory. Standalone fallback checks for legacy config.yaml; the audited container entrypoint still checks legacy config.js. Do not rely on automatic detection to migrate data. Convert legacy JavaScript configuration using migrate-config, then review the YAML before starting.
Docker Compose¶
Create docker-compose.yml:
services:
relay:
image: ${RELAY_IMAGE:-git.thc420.dev/ouch/relay:0.11}
container_name: relay
ports:
- "9000:9000"
volumes:
- ./data:/var/opt/relay
restart: unless-stopped
healthcheck:
test: ["CMD", "wget", "-q", "-O", "/dev/null", "http://127.0.0.1:9000/"]
interval: 30s
timeout: 5s
retries: 3
start_period: 15s
Then validate and start it:
mkdir -p data
docker compose config
docker compose up -d
To use another release, set RELAY_IMAGE to the complete image and version before starting Compose.
Named volume alternative¶
Replace the bind mount with relay-data:/var/opt/relay and add:
volumes:
relay-data:
Switching mount types does not copy data. Back up and migrate it explicitly, and avoid docker compose down -v unless you intend to delete the named volume.
Verify the server¶
For Linux x86-64 without Docker, the
0.11.2 server archive
includes the binary and production client assets. Extract it, enter
relay-linux-amd64, and run ./relay start. Keep public/ beside the binary
and run from that directory, including when configuring a service.
Container startup¶
Follow the container logs until Relay is ready:
docker logs -f relay
Open http://localhost:9000 locally, or put Relay behind an HTTPS reverse proxy before exposing it publicly. Continue with First administrator.
For PostgreSQL and retention, see Storage and retention. To compile Relay yourself, see Development.
Follow Backup, restore, and upgrades for subsequent releases.