Opening WattRoom…
Open source · AGPL-3.0
WattRoom is free software. The whole stack — server, web app, voice — runs from one Docker Compose file on one small VM, and your riders’ data never leaves it.
The stack
One Go binary with the web app built in. It serves the pages, the API and the live sessions, and migrates its own database at boot.
Everything that has to last: accounts, crews, channels, workouts, rides. Live session state lives in the server’s memory, never here.
The self-hosted media server that carries voice and camera. Nothing is recorded — it forwards, it does not store.
TLS and the reverse proxy, in the same Compose file. Swap it for your own edge if you already have one.
First deploy
The deploy directory in the repository is the reference; .env.example explains every value, and what happens when an optional one stays empty.
mkdir -p /opt/wattroom && cd /opt/wattroom
# copy the repository's deploy/ directory here
cp .env.example .env # fill it in
cp livekit.yaml.example livekit.yaml # same keys as .env
docker compose -f docker-compose.prod.yml up -d Then curl https://your.host/api/healthz answers ok. The full guide, including how LiveKit reaches the server
and what to back up, is in deploy/README.md.
One VM with Docker and Compose. Two vCPUs and 4 GB of memory is plenty for a club. Open 80 and 443, plus LiveKit’s ports and its UDP range for voice.
Every release is a tagged image on the GitHub Container Registry. Set the new tag in .env, pull, and bring the server up again. A rollback is the same with the previous tag — releases only ever add to the database, so the older image still runs.
With Google, GitHub or Strava — you register your own OAuth apps — and with a passkey once a rider has an account. Any provider you leave unset simply does not show a button.
Run it as it is and nothing. If you change the code and let other people use your changed version over the network, you share those changes under the same license.
wattroom.ch is the same code, run for anyone who wants it. Start a crew there tonight, and run your own whenever you like.