Install on Linux
Rabtly bundles its own WireGuard implementation. You do not need to install wireguard-tools or the kernel module.
Quick install (recommended)
One command installs the binary, registers the systemd service, and starts it:
curl -fsSL https://dl.rabtly.cloud/install.sh | shThe script:
- Downloads the correct binary for your arch (amd64 or arm64)
- Verifies the SHA256 checksum
- Installs to
/usr/local/bin/rabtly - Runs
sudo rabtly service installto register and start the systemd unit
Then sign in and connect:
rabtly login # sign in (browser, password, or token)
sudo rabtly up --token enrt_... # connect to your network
rabtly status # verify connectionGet your enrollment token from app.rabtly.cloud → Settings → Access Tokens.
Step-by-step install
Install the binary
curl -fsSL https://dl.rabtly.cloud/install.sh | shTo install a specific version:
curl -fsSL https://dl.rabtly.cloud/install.sh | sh -s -- --version 0.3.0To install without registering a service (e.g. containers):
curl -fsSL https://dl.rabtly.cloud/install.sh | sh -s -- --no-serviceSign in
rabtly loginThis opens an interactive menu — choose browser (recommended), password, or paste a personal access token.
Connect
sudo rabtly up --token enrt_...The daemon starts in the background, registers with Rabtly, and brings up the VPN interface. Status is printed on success:
✓ Connected
Node my-linux-box
IP 100.64.0.3
Control https://api.rabtly.cloudVerify
rabtly status # show connection + peer table
rabtly ip # print your VPN IPService management
The installer registers a systemd service that starts automatically at boot:
sudo rabtly service install # register + start (done by install script)
sudo rabtly service uninstall # stop + remove service
sudo rabtly service start # start manually
sudo rabtly service stop # stop manuallyView logs:
journalctl -u rabtly -fOne-command device enrollment
If you already have an enrollment token, you can install and connect in a single command:
curl -fsSL https://dl.rabtly.cloud/install.sh | sh -s -- \
--token enrt_... \
--control https://api.rabtly.cloudManual binary download
amd64
curl -fsSL https://dl.rabtly.cloud/latest/rabtly_linux_amd64 -o /usr/local/bin/rabtly
chmod +x /usr/local/bin/rabtlyAfter a manual install, register the service manually:
sudo rabtly service installUpdate
Re-run the install script — it fetches the latest binary, verifies its checksum, and replaces the existing one in place. The systemd service restarts automatically:
curl -fsSL https://dl.rabtly.cloud/install.sh | shTo pin a specific version:
curl -fsSL https://dl.rabtly.cloud/install.sh | sh -s -- --version 1.4.10Your keys, config, and enrollment under /var/lib/rabtly stay intact across updates. Confirm the new version with rabtly version.
Uninstall
curl -fsSL https://dl.rabtly.cloud/install.sh | sh -s -- --uninstallOr step by step:
sudo rabtly service uninstall # stop + remove systemd unit
sudo rm -f /usr/local/bin/rabtly
sudo rm -rf /var/lib/rabtly # removes keys, config, state — skip to keep dataSubnet routing (optional)
To expose a local subnet (e.g. 192.168.1.0/24) to all VPN peers, pass the routes when connecting:
sudo rabtly up --token enrt_... --advertise-routes 192.168.1.0/24Advertise multiple subnets with a comma-separated list, and stop advertising with an empty value:
sudo rabtly up --advertise-routes 192.168.1.0/24,10.0.0.0/24 # advertise
sudo rabtly up --advertise-routes "" # stop advertisingThe routes are stored in the daemon’s config, so the systemd service re-advertises them automatically on every restart — no env vars or unit edits needed.
Troubleshooting
Permission denied when running rabtly up
The daemon needs root to create network interfaces. Use sudo rabtly up.
rabtly up says “not logged in”
Run rabtly login first, or pass --token enrt_... directly.
Daemon starts but node shows offline
Check logs: journalctl -u rabtly -f. Confirm you have internet access and the enrollment token is valid.