Skip to content

Nodes

A node is a machine with Docker that runs game servers. The agent on it connects out to the panel, so the node needs no open management port.

  1. In the panel, go to Nodes → Add node. Enter a name, the address players use, and the ports for game servers (e.g. 27000-27100, on all of the node’s addresses).
  2. The panel shows a docker run … command with a one-time token, valid for 24 hours. Run it on the node. It contains the panel’s public URL (Admin → Settings); without one, it uses the address you opened the panel with, and the dialog says so.
  3. The node turns online. More ports can be added on the node’s page, e.g. 25565, 2302-2310, 27016 (TCP, UDP or both). Servers get one port per role from these.

Instead of the command, deploy/compose.agent.yml runs the agent with AGENT_PANEL_URL and AGENT_ENROLLMENT_TOKEN.

/var/lib/panel-agent holds the server files, backups, console logs and the node’s identity (agent.json).

It must be mounted at the same path inside the agent container, because game containers bind-mount their folders from it.

The agent serves SFTP on port 2022, so players can use FileZilla, WinSCP and the like. Players need to reach it: open or forward it like the game ports.

  • AGENT_SFTP_PORT changes the port. Use the same number inside and outside the container, because the panel shows it.
  • AGENT_SFTP_PORT=off turns SFTP off.
  • The host key is created on first start in the data directory; its fingerprint is shown in the panel.
  • When the router forwards another port, set the address users see on the node’s page.

How people sign in: Files and SFTP.

  • A node pulls an image when it is missing.
  • Installs, reinstalls and updates also check the game’s, the install script’s and the Steam image for a newer version, so a moved :latest arrives. If the registry is unreachable then, the copy on the node is used.
  • A plain start never waits for a registry.

Add a login in Admin → Settings → Registries: the host as in image names, a user, and a password or a read-only token.

Nodes get it over their panel connection, keep it in memory only, and use it for pulls. Containers never see it.

Pull the new image and recreate the container; it keeps its identity.

If a node is lost or compromised, New enrollment token on the node’s page replaces its identity: the old agent can no longer connect.

Move to another node on a server’s Settings tab (operators). The server stays the same: its id, settings, members’ access, schedules and backups.

  1. It stops (if it runs) and is backed up.
  2. Every backup is copied to the new node.
  3. It gets ports on the new node, with the same numbers where they are free there. Without enough free ports, the move is refused and says which are missing.
  4. It is removed from the old node, restored on the new one and started again if it ran.

The console shows each step. Until the switch, a failure leaves the server where it was. Players need the new node’s address.

Move files and backups off: for a node that is gone. The server is installed fresh on the new node; its files and backups are lost.

Removing a node: move its servers first; a node with servers can’t be deleted.