ARCANUM
self-host

Run Rune

One image for a single node or a cluster. Configuration is environment variables.

Single node

On Docker Desktop or Rosetta, add -e RUNE_IO_BACKEND=portable.

docker run --rm --shm-size=256m \ -e RUNE_NODE_ID=0 \ -e RUNE_PEERS='0@127.0.0.1:40111' \ -e RUNE_CLIENT_ENDPOINT='0.0.0.0:40200' \ -e RUNE_DATA_DIR=/var/lib/rune -v rune-data:/var/lib/rune \ -p 40200:40200/udp rune-broker:latest

3-node cluster

Same image on every node; only RUNE_NODE_ID differs. Use 1 node, or an odd count of 3 or more.

docker compose -f docker/docker-compose.yml up -d rune-1 rune-2 rune-3 docker compose -f docker/docker-compose.yml down -v

one node in docker/docker-compose.custom.yml

rune-1: image: rune-broker:latest shm_size: 256m environment: RUNE_NODE_ID: "0" RUNE_PEERS: "0@rune-1:40111:40200,1@rune-2:40111:40200,2@rune-3:40111:40200" RUNE_CLIENT_ENDPOINT: "0.0.0.0:40200" RUNE_DATA_DIR: /var/lib/rune RUNE_TOPICS: "player:8:compact,match_events:8,kills:1" volumes: ["./rune-data/node0:/var/lib/rune"] ports: ["40201:40200/udp"]

Environment

Everything else has a default derived from the host.

Ports

All UDP. Pass --shm-size=256m and a high nofile ulimit.