Linux Node Management
Nodes are the physical or virtual machines that run game servers. Each Linux node runs a daemon process (BadgerDaemon) that communicates with the panel over a persistent WebSocket connection to manage containers, report resource usage, and relay console output.
What Is a Daemon?
The daemon is a lightweight Go binary that runs on each node. It is responsible for:
- Creating and managing Docker containers for each game server.
- Executing egg install scripts during server provisioning.
- Streaming console output and accepting console input over WebSocket.
- Reporting system metrics (CPU, memory, disk) via periodic heartbeats.
- Serving SFTP connections for file management.
- Receiving and applying auto-updates from the panel.
Adding a Node
- Navigate to Admin > Nodes and click Add Node.
- Fill in the node details: name, description, FQDN or public IP, and daemon port (default 8443).
- Select Linux as the operating system.
- Click Create. The panel generates a one-line install script.
- SSH into your Linux server and run the install script as root. The script downloads the daemon binary, writes the configuration file, creates a systemd service, and starts the daemon.
- Once the daemon starts, it registers with the panel via its registration token. The node status changes from
pendingtoonline.
The install script requires curl and a systemd-based distribution (Ubuntu 20.04+, Debian 11+, Rocky Linux 8+, etc.). Docker must be installed on the node beforehand; the script does not install Docker.
Node Status Monitoring
Each node reports one of the following statuses:
- online -- Daemon is connected and sending heartbeats.
- offline -- No heartbeat received within the timeout window.
- maintenance -- Administrator has placed the node in maintenance mode.
- error -- Daemon reported an error condition.
- pending -- Node was created but the daemon has not registered yet.
The node detail page shows real-time resource usage, server count, daemon version, container runtime, kernel version, and uptime.
Allocations
Allocations are IP:port combinations assigned to a node. Each game server requires one primary allocation. To manage allocations:
- Open the node detail page and go to the Allocations tab.
- Click Add Allocation. Enter the IP address (use
0.0.0.0to bind all interfaces) and a port or port range (e.g.,25565-25575). - Allocations that are assigned to a server are shown as "in use" and cannot be deleted until the server is removed or reassigned.
Ensure that the ports you allocate are open in the node's firewall. The panel does not configure firewall rules automatically.
Resource Limits
On the node detail page, you can configure:
- Memory Limit -- Maximum memory available for game servers. Defaults to total system memory. Set a lower value to reserve memory for the OS and daemon.
- Disk Limit -- Maximum disk space available. Defaults to total disk.
- Overallocation -- A percentage (0-100) allowing the sum of server allocations to exceed the node's physical capacity. A value of 0 disables overallocation.
Daemon Auto-Updates
The daemon checks for updates from the panel periodically. When a new version is available, the daemon downloads the binary, verifies its checksum, replaces itself, and restarts. No manual intervention is required. The node detail page shows whether an update is available and whether it is a security update.
Maintenance Mode
Placing a node in maintenance mode prevents new servers from being deployed to it. Existing servers continue to run. To enable maintenance mode:
- Open the node detail page.
- Toggle Maintenance Mode on.
- Optionally set a scheduled maintenance window (start time, end time, reason).
Disable maintenance mode by toggling the switch off.
Removing a Node
Before removing a node, you must transfer or delete all servers assigned to it. Then, on the node detail page, click Delete Node. This removes the node record from the panel. The daemon process on the server is not automatically stopped; you should stop and uninstall it manually:
sudo systemctl stop badger-daemon
sudo systemctl disable badger-daemon
sudo rm /usr/local/bin/badger-daemon
sudo rm -rf /etc/badger-daemon