Install the panel
The panel is installed by one command on a clean server. It brings up Master, Postgres, NATS (for nodes) and nginx with a Let's Encrypt certificate in /opt/game-panel.
1. Get the command
Open Downloads, enter the panel's domain and an e-mail for Let's Encrypt, and copy the command under Install on a new server. It looks like this:
curl -fsSL https://<portal>/dl/<your token>/1.2.3/install.sh | sudo bash -s -- \ --domain panel.example.com --email ops@example.com \ --image-url https://<portal>/dl/<your token>/1.2.3/game-master-1.2.3.tar \ --image-sha256 <checksum>
The links contain your personal token: they work while the account has an active license (a trial counts). Don't publish them; if a link leaks, press Reissue link on the same page — the old one stops working at once. The latest stable installer without a token is always at https://<portal>/install.sh.
2. Run it on the server
Run the command as root. The installer:
- installs Docker and the compose plugin if they are missing (Debian/Ubuntu);
- checks that the domain points to this server and that ports 80, 443 and 4222 are free;
- downloads the panel image and checks its SHA-256 before loading it;
- creates
/opt/game-panelwith generated secrets, the node certificate authority and configuration; - starts the stack and waits until the panel is healthy;
- prints the first sign-in link.
Options
--domain D— the panel's domain (required on the first install).--email E— e-mail for Let's Encrypt (not needed with--own-cert).--image-url URL/--image-archive FILE/--image REF— the panel image: a download link, a local archive, or an image from a Docker registry.--image-sha256 HEX— the archive's checksum; the portal fills it in.--own-cert— your own certificate instead of Let's Encrypt.--dir PATH— installation directory,/opt/game-panelby default.--yes— don't ask questions (fail instead);--skip-checks— skip the DNS and port checks.
Server without internet access
On Downloads download install.sh and the image archive, copy both to the server and run:
sudo bash install.sh --domain panel.example.com --email ops@example.com \ --image-archive ./game-master-1.2.3.tar --image-sha256 <checksum from Downloads>
The panel still needs outbound HTTPS to this portal to renew its license. A fully closed network needs an offline license file — see Licensing.
HTTPS certificate
By default the certificate comes from Let's Encrypt, usually a minute or two after the start. Until then the panel answers with a temporary self-signed certificate and the browser warns — that's expected. Attempts repeat every 15 minutes and renewal is automatic.
Your own certificate: install with --own-cert and put the files in place — nginx picks them up within seconds:
sudo cp fullchain.pem privkey.pem /opt/game-panel/tls/
Renew your own certificate the same way, by replacing the files.
3. Save the installation secrets
Right after installing, copy these to a safe place outside the server:
/opt/game-panel/.env— passwords and encryption keys;/opt/game-panel/certs/— the node certificate authority.
They are not part of the panel's own backups. Without them encrypted settings can't be restored and the nodes can't reconnect. More in Backups.
Next: First sign-in.
Day-to-day commands
From the installation directory:
cd /opt/game-panel docker compose ps # service status docker compose logs -f master # panel logs docker compose restart master # restart the panel docker compose down # stop everything (data is kept) docker compose up -d # start everything
Updates overwrite docker-compose.yml, nginx.conf and nats-server.conf — don't edit them. Put your changes (ports, resource limits, Master environment variables) in docker-compose.override.yml; compose loads it automatically. To run the built-in MinIO, add minio to COMPOSE_PROFILES in .env and run docker compose up -d.