Self-hosting
Docker quickstart
Bring up the full server unit locally over HTTP.
Requirements
- Docker Engine + Compose v2
- Ports 80 (and 443 for production)
Start the stack
cp deploy/.env.example deploy/.env
docker compose -f deploy/docker-compose.yml --env-file deploy/.env up --build -dVerify the health endpoint:
curl -fsS http://localhost/health # {"status":"ok",...}Then open http://localhost, register an account, and use Devices → “+ Add Storage Node”. Run the printed command on a Storage Node:
nodus node pair --relay http://localhost --code NODUS-XXXX-XXXXWhat comes up
The Compose file starts Caddy, the web app, the Relay, the documentation site, and Redis. The Relay stores durable state in SQLite; Redis is ephemeral. All services have health checks; migrations run automatically when the Relay starts.
Logs and teardown
docker compose -f deploy/docker-compose.yml logs -f relay web docs caddy
docker compose -f deploy/docker-compose.yml down # stop
docker compose -f deploy/docker-compose.yml down -v # wipe volumes (destructive)Verify routing by hand
# Relay-owned (proxied straight through):
curl -fsS http://localhost/health
curl -i http://localhost/nodes # 401 JSON when signed out
# Next-owned (pages):
curl -fsS http://localhost/api/health
curl -i http://localhost/devices # HTML; redirects to /authNext
For a real domain with TLS, continue to Production.