Install on Linux
Install WireGuard
Rabtly uses WireGuard underneath. Most Linux kernels ≥ 5.6 include it built-in.
Ubuntu / Debian
sudo apt update && sudo apt install wireguardInstall the Rabtly daemon
Download the binary
# amd64 (most servers and desktops)
curl -Lo rabtlyd \
https://github.com/rabtly/rabtly/releases/latest/download/rabtlyd-linux-amd64
chmod +x rabtlyd
sudo mv rabtlyd /usr/local/bin/
# ARM64 (Raspberry Pi 4+, ARM servers)
curl -Lo rabtlyd \
https://github.com/rabtly/rabtly/releases/latest/download/rabtlyd-linux-arm64Run the daemon
sudo RABTLY_CONTROL_URL=https://your-server:8080 \
RABTLY_NODE_NAME=my-linux-box \
RABTLY_STATE_DIR=/var/lib/rabtly \
rabtlydVerify it’s connected
Open the dashboard → Nodes — your device should appear with an Online badge.
Run as a systemd service (recommended)
Running as a systemd service means the daemon starts automatically on boot and restarts if it crashes.
sudo mkdir -p /etc/rabtly
# Create the env file (keep it root-readable only)
sudo tee /etc/rabtly/env > /dev/null <<'EOF'
RABTLY_CONTROL_URL=https://your-server:8080
RABTLY_NODE_NAME=my-linux-box
RABTLY_STATE_DIR=/var/lib/rabtly
RABTLY_NETWORK_ID=default
# RABTLY_ENROLL_TOKEN=your-secret-token
# RABTLY_RELAY_ADDR=relay.example.com:7777
EOF
sudo chmod 600 /etc/rabtly/env
# Create the service unit
sudo tee /etc/systemd/system/rabtly.service > /dev/null <<'EOF'
[Unit]
Description=Rabtly Node Daemon
After=network-online.target
Wants=network-online.target
[Service]
EnvironmentFile=/etc/rabtly/env
ExecStart=/usr/local/bin/rabtlyd
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now rabtlyCheck status and logs:
sudo systemctl status rabtly
sudo journalctl -u rabtly -f # follow live logsSubnet routing (optional)
To expose a local network (e.g. 192.168.1.0/24) to all VPN peers:
# Add to /etc/rabtly/env:
RABTLY_ADVERTISE_ROUTES=192.168.1.0/24The daemon enables IP forwarding automatically when routes are advertised.
Environment variable reference
| Variable | Description | Default |
|---|---|---|
RABTLY_CONTROL_URL | Control plane URL (required) | http://localhost:8080 |
RABTLY_NODE_NAME | Name shown in dashboard | System hostname |
RABTLY_STATE_DIR | WireGuard keys and state directory | /tmp/rabtly |
RABTLY_NETWORK_ID | Tenant network to join | default |
RABTLY_ENROLL_TOKEN | Enrollment secret (if server requires one) | (empty) |
RABTLY_RELAY_ADDR | Relay server host:port (NAT fallback) | (empty) |
RABTLY_ADVERTISE_ROUTES | Comma-separated CIDRs to expose | (empty) |
Set LOG_LEVEL=debug and LOG_FORMAT=json to get structured debug logs — useful when diagnosing connection issues.