NGCP Game server control panel
Documentation
Contents

Introduction

NGCP documentation

NGCP is a self-hosted control panel for game servers. You install it on your own hardware, add the machines that run your game servers, and manage those servers from a web panel, a REST API or the command line. It works like a classic game-hosting panel and runs on Windows and Linux.

NGCP is written by Mark V. Larson. It is pre-1.0 software: the features described here are built and tested, but some are still missing (see What is not there yet) and interfaces may change between versions.

What NGCP does

Area What you get
Nodes Windows and Linux machines that run game servers, added with a one-line installer. They connect out to the panel, so they can sit behind NAT.
Game servers (“services”) Install, start, stop, restart, kill, update and reinstall native game servers. Live console, CPU and memory charts, crash restarts with back-off.
Isolation Every service runs as its own operating-system account, in its own directory, with CPU and memory limits. One server cannot read another’s files.
Games Games are described in YAML (“game definitions”). ArmA 3 (with headless clients), Minecraft: Java Edition, Valheim and Counter-Strike 2 ship with NGCP; you can write your own.
Steam SteamCMD installs and updates, a vault for Steam logins, Steam Guard codes typed into the console, Workshop mods with load order.
Files Web file manager with resumable uploads of any size, a text editor, archives, search, quotas and deny rules. A built-in SFTP server that uses panel logins.
Config editors Forms generated from the game definition that change the real config file and keep comments and layout.
Automation Scheduled tasks that run on the node (even while the panel is down), backups to a local folder, SFTP or S3-compatible storage, RCON, player counts, a mod manager, webhooks, Discord and e-mail notifications.
Accounts Roles, per-service permissions, two-factor sign-in, lockout, an audit log of every change, API keys with scopes.
Hosting Packages, resellers with quotas and their own branding, sub-users per game server, a billing API and a WHMCS module. See resellers and packages and billing and WHMCS.

How it fits together

NGCP has two programs:

  • The controller is the panel. It serves the web interface and the REST API, keeps everything in a PostgreSQL database and talks to the nodes.
  • The agent runs on every node. It dials out to the controller over a mutually authenticated TLS connection (gRPC), receives what each game server should look like, and starts, watches and stops the game processes.
   Browsers, API clients, billing systems
                  |
                  |  HTTPS  (web UI, REST API, WebSocket)   port 8080 by default
                  v
   +-----------------------------------+        +--------------+
   |  ngcp-controller                  |------->|  PostgreSQL  |
   |  web UI + API + scheduler of work |        +--------------+
   +-----------------------------------+
                  ^
                  |  AgentLink: mTLS gRPC, opened BY THE NODE   port 8443 by default
       +----------+-----------+----------------------+
       |                      |                      |
 +-----------+          +-----------+          +-----------+
 | ngcp-agent|          | ngcp-agent|          | ngcp-agent|
 | Windows   |          | Linux     |          | Linux     |
 +-----------+          +-----------+          +-----------+
   |  |  |                 |  |                    |
  game servers, each as its own OS account, in its own directory

The controller and an agent can run on the same machine. Game servers keep running when the controller is stopped or restarted; the agents reconnect on their own and catch up.

How these docs are organised

If you are new to the terms node, service and game definition, read Concepts first.

What is not there yet

NGCP is built in phases. These parts are planned but not available in the current version:

  • Moving or cloning a service to another node, draining a node automatically, metrics retention and alerting (planned for the monitoring and hardening phase).
  • ACME (Let’s Encrypt) certificates; today the panel uses certificate files or a self-signed certificate.
  • Code-signed installers: Windows SmartScreen warns when you run NGCP Setup or an MSI.
  • The WHMCS module has been run through a test harness that drives it like WHMCS, not yet inside a real WHMCS installation.
  • Importing from other panels, more shipped games (TeamSpeak 3, Rust, DayZ and others), single sign-on (OIDC), Docker as a game-server runtime.