Guides
Remote servers
One control plane can deploy apps to many servers. Each extra VPS runs a small Go agent that connects outbound to the control plane over WebSocket — no inbound control ports, all commands signed.
Connecting a VPS
- Servers → Connect server. The dialog shows the control-plane address the VPS will dial back to, with detected candidates (public IP, LAN) and a loud warning if the address is local-only — including a ready-made SSH tunnel command for laptop testing.
- Run the generated one-line install command on the VPS as root. The token inside it is single-use and expires in 30 minutes.
- The agent installs Docker and the build tooling, registers, and appears online within seconds.
curl -fsSL https://panel.example.com/install.sh | sudo bash -s -- \ --url https://panel.example.com --token hri_…
What runs where
| Workload | Host |
|---|---|
| Apps / workers / cron | Control-plane host or any connected server (chosen at service creation). |
| Databases | Control-plane host (co-located with the panel). |
| Dashboard, builds for local services | Control-plane host. |
Managing agents
The server page shows live CPU/memory/disk/network metrics, agent and Docker versions, recent signed commands, and agent logs. From there you can inspect the host, update the agent binary, rotate or revoke its credential, and mint a fresh install command.
Running the panel on your laptop? A cloud VPS cannot reach
127.0.0.1 —
the Connect dialog explains this and offers an SSH reverse-tunnel one-liner for quick tests.
For anything permanent, host the panel on a server (see Install).