NGCP Game server control panel
Documentation
Contents

Linux

Adding a Linux node

A node is a machine that runs game servers. It runs the NGCP agent, which connects out to the controller over mutual TLS. Adding a Linux node takes one command. What is the same on every system (tokens, agent.yaml, managing nodes) is in Adding a node.

Before you start

  • The node needs Debian / Ubuntu or the RHEL family, amd64 or arm64, with systemd.

  • The node must reach the controller’s public URL (port 8080 or your HTTPS port) and the AgentLink address (port 8443). Check from the node:

    curl -fsS https://panel.example.com/healthz
    nc -vz panel.example.com 8443
    
  • You need root rights on the node.

  • Nodes that will run SteamCMD games (ArmA 3, CS2, Valheim) need SteamCMD’s 32-bit libraries. On Debian or Ubuntu install them once:

    sudo dpkg --add-architecture i386
    sudo apt update
    sudo apt install lib32gcc-s1 lib32stdc++6
    

1. Create an enrollment token

  1. In the panel open Nodes and choose Add a node.
  2. Pick the datacenter (or create one inline) and type the node’s name.
  3. Keep the default validity of one hour (at most seven days).

The panel shows the token once, together with the CA hash (sha256:...) and a ready-made command for Linux. The token works one time only. More about tokens and the CA hash: Create an enrollment token.

2. Run the one-line installer

The panel serves an installer script that downloads the agent package from the panel, checks its SHA-256, installs it and enrolls the node. As root:

curl -fsSL https://panel.example.com/install/agent.sh | sudo bash -s -- \
  --token ngcpe_... --ca-hash sha256:...

Optional: --services-dir /srv/games puts game servers somewhere other than the default.

The script is only as trustworthy as the connection to the panel: serve the panel over HTTPS.

3. Check

The node appears as Online within a few seconds and shows CPU, memory and disks.

If it does not come online, see If the node does not come online.

With the appliance

The Linux appliance with the role Game servers only: paste the Linux command from Add a node into its first-boot setup (or later: server menu, Join a panel). On an appliance with Panel and game servers, the panel’s setup offers This server runs game servers too and the agent joins by itself; no token needed.

With the agent package

Install the package, then enroll with the command the panel showed:

sudo apt install ./ngcp-agent_X.Y.Z_amd64.deb      # or: sudo dnf install ./ngcp-agent-X.Y.Z-1.x86_64.rpm
sudo ngcp-agent enroll --controller https://panel.example.com --token ngcpe_... --ca-hash sha256:...
sudo systemctl restart ngcp-agent

The packaged service waits until the node is enrolled, so the order does not matter.

With the bare binary

As root:

sudo install -m 0755 ngcp-agent /usr/local/bin/ngcp-agent
sudo ngcp-agent enroll --controller https://panel.example.com --token ngcpe_... --ca-hash sha256:...
sudo ngcp-agent service install

service install registers and starts the systemd unit. Use ngcp-agent service status|stop|start|uninstall to manage it. To replace an existing enrollment, add --force to enroll.

What the agent creates

What On Linux
Service ngcp-agent.service, root, Restart=always, Delegate=yes
Data folder (agent.yaml, certificate, private key, log, stored specs) /var/lib/ngcp, mode 0700
Game servers /opt/ngcp/services/svc-<id>
SteamCMD /opt/ngcp/steamcmd (owned by ngcp_steam)
Accounts ngcp_s<id> per service, ngcp_steam for SteamCMD, as system users
Firewall ufw / firewalld rules when one is active
Log journalctl -u ngcp-agent, also /var/lib/ngcp/agent.log (UTC)

ufw and firewalld

Port From Opened by
Game ports of each service Players The agent, per service (ufw or firewalld, when active)
2022/tcp (SFTP) Your users The agent (NGCP svc-0)
Outbound 8080 or 443, and 8443 The node to the controller Your network

Rules are managed through ufw or firewalld when one of them is active. Without either, the agent changes nothing and you open the ports yourself; direct nftables / iptables management is not implemented. Switch firewall management off for a node in its settings if you manage the firewall yourself.

Next: your first game server. Running a Linux node day to day: Linux notes.