Install the Control Plane
The control plane is the central server that manages your Rabtly network. You only need one — it runs on any Linux server.
A cheap $5/month VPS (1 vCPU, 512 MB RAM) is more than enough for dozens of nodes.
Option A: Docker (easiest)
Create a Docker Compose file
# docker-compose.yml
services:
rabtly:
image: ghcr.io/rabtly/rabtly:latest
ports:
- "8080:8080" # API
- "3000:3000" # Dashboard
environment:
RABTLY_ADMIN_EMAIL: you@example.com
RABTLY_ADMIN_PASS: change-me-please
RABTLY_JWT_SECRET: a-long-random-string
volumes:
- rabtly-data:/var/lib/rabtly
volumes:
rabtly-data:Start it
docker compose up -dOpen the dashboard
Go to http://your-server:3000 and sign in with the email and password you set above.
Option B: Binary
Download the server binary
curl -Lo rabtly-server https://github.com/rabtly/rabtly/releases/latest/download/rabtly-server-linux-amd64
chmod +x rabtly-server
sudo mv rabtly-server /usr/local/bin/Start the control plane
RABTLY_ADMIN_EMAIL=you@example.com \
RABTLY_ADMIN_PASS=change-me-please \
RABTLY_JWT_SECRET=a-long-random-string \
rabtly-serverOption C: With PostgreSQL (recommended for teams)
By default, Rabtly stores data in a local JSON file. For teams, using PostgreSQL is more reliable.
DATABASE_URL=postgres://user:pass@localhost/rabtly \
RABTLY_ADMIN_EMAIL=you@example.com \
RABTLY_ADMIN_PASS=change-me-please \
rabtly-serverRabtly runs its own database migrations automatically on startup.
Open your firewall
Make sure these ports are accessible from your devices:
| Port | Protocol | Purpose |
|---|---|---|
| 8080 | TCP | API (nodes connect here) |
| 3000 | TCP | Dashboard (browser access) |
For production, put a reverse proxy (nginx, Caddy) in front to add HTTPS. Caddy does this automatically with a single line config.