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

  1. 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.
  2. Run the generated one-line install command on the VPS as root. The token inside it is single-use and expires in 30 minutes.
  3. 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

WorkloadHost
Apps / workers / cronControl-plane host or any connected server (chosen at service creation).
DatabasesControl-plane host (co-located with the panel).
Dashboard, builds for local servicesControl-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).