Loading...

Servers

Loading servers...

Players & Stats

Mods & Resources

Mods, plugins, modpacks, resource packs, data packs and Bedrock packs for a server.

Search Results

Search for mods above to see results

Installed Mods/Plugins

Select a server to view installed mods

Mods & Resources

Backups

Server Backup Settings

Loading server configurations...

All Backups

Loading backups...

Nodes

Machines that run game servers. Players always connect through this controller's address, so nodes on this network need no port forwarding or DNS records of their own. A node elsewhere (a VPS, another site) only lets this panel in. Nodes are kept on this panel's agent version automatically.

Loading nodes...

Users

Loading users...

System Settings

System Information

Version: -

Appearance

The panel's design for everyone, the login page included.

Games

Every game comes with GHS. Add a game to show it in the menu and when making servers (its files are downloaded when a server of it is made); hide it when you no longer host it.

Security

Admins without it set up are taken to set it up when they next sign in or reload the panel, and can do nothing else until they have. It cannot be turned off while this is on. Server managers can be required to use it one by one on the Users page.

Updates

Install a new GHS version from an update package (ghs-update-….zip, made by the "Build update package" workflow). The package is checked before anything changes. Installing saves the database, restarts the panel on the new version (about a minute) and goes back to the current version if the new one does not start. Game servers keep running; other nodes update their agent automatically afterwards.

Network & Domains

Players connect with subdomain.primary-domain:port (or a game's own domain, below). Add one wildcard DNS record (*.primary-domain → your public IP) and forward both port ranges (TCP and UDP) on your router once; new servers then need no DNS or router changes. Without a domain, set the players' address instead: players then connect with address:port. Servers in a proxy network are only reachable through their proxy.

Let's Encrypt contact for HTTPS certificate expiry notices
Each game's domain

A game's servers can have a domain of their own, e.g. minecraft.example.com for Minecraft and terraria.example.com for Terraria. Each needs its own wildcard DNS record (*.terraria.example.com → your public IP). Left empty, a game uses the primary domain. Servers' addresses change at once.

With no primary domain, players connect with this and the server's port: this machine's network address (e.g. 192.168.1.20) for the local network only, or your public IP or a dynamic DNS name with the port ranges forwarded on your router.
Ports inside the ranges that are already used elsewhere on your network

Player Guard

Firewall rules on this machine in front of every game port (the port ranges above): servers here and the relay to servers on other nodes alike. It turns away addresses that open too many connections or open them too fast (join floods, bots), and keeps banned addresses out of every server. Players banned by name are under Global Bans.

More are turned away. 0: no limit. A household behind one router counts as one address.
0: no limit
How many it may open in one go before the rate applies
One address or range a line (anything after it is a note). They skip every limit and ban. This machine's own networks always do.

Banned addresses

Game Servers and the Local Network

Firewall rules on every node stop game servers opening connections to this network and other private addresses: routers, NAS boxes, databases, the machines' own services and cloud metadata. A server's plugins and mods can then only reach the internet. Players on the local network still join, and proxies still reach their servers on other nodes.

One IPv4 address or range a line (anything after it is a note), e.g. a database on your network that servers' plugins use. Every server can reach these.

Addresses Without a Port

A Java server can also be reached as survival.example.com, without its port: GHS keeps an SRV record for it at the DNS host of your domain. Turn it on per server in its Settings. Bedrock players always need the port.

Where your domain's DNS records are kept (its nameservers), not necessarily where it was bought. Not listed (e.g. Namecheap)? Move the domain's DNS to Cloudflare for free and keep it registered where it is.

    HTTPS for the Panel

    Reach the panel at https:// with a free Let's Encrypt certificate, renewed automatically. It keeps working over plain HTTP on this network as before. Servers' BlueMap web maps get HTTPS too, at https:// and the server's address (the wildcard record covers them).

    1. A DNS record for the hostname below pointing at your public IP address (or a wildcard record for the primary domain, which already covers it)
    2. Ports 80 and 443 (TCP) forwarded on your router to this machine
    3. Optionally the ACME email above, for Let's Encrypt's notices

    License Information

    Loading license info...

    Controllers

    Standby controllers on other machines keep a live copy of this panel's database, ready to take its place. With them, game servers run on nodes only, not on the controllers.

    Public API

    Let your own website or billing system create and run servers, with its own accounts and payments: it calls this panel's API with a key. API documentation · API tester

    Backup Storage

    Network storage for backups (SMB shares such as a UniFi UNAS, SFTP or FTP servers). Each server picks where its backups go in its backup settings; servers that don't choose use the default. Backups are zipped on this server, then stored on the target.

    Backups for New Servers

    Your backup plan, as most hosts have one: servers made through the public API always get it, and their customers cannot change it (they can make, restore and download backups).

    Applies to servers made from now on; existing servers keep their own backup settings.

    Panel Backups

    Backs up the panel itself - its database (servers, users, settings, schedules) and its secret key - to a storage target on another machine, so the panel can be restored if this machine fails. A full backup also has the files of the servers on this machine, so everything comes back in one go: a new panel's first screen offers "Restore from a backup".

    Encryption

    Encrypts the backups that leave this machine (panel backups, and server backups kept on backup storage) with a recovery key, so someone who gets into the storage cannot read them. Local backups stay plain zips, and downloads from the panel are always decrypted.

    Restoring the panel

    On a new machine: install GHS, open the panel and choose Restore from a backup on its first screen. Connect it to the same storage, pick a backup and it brings back the panel and, from a full backup, the servers' files; then sign in with your usual account.

    Or, on the command line: download a backup's panel file here and, in the install's directory, run sudo ./ghs.sh restore panel.tar (on a new machine sudo ./ghs.sh restore --keys panel.tar, which puts this panel's secret key back too). A backup holds the secret key: keep its storage somewhere only you can reach.

    An encrypted backup (with encryption on, below) needs its recovery key: the first screen asks for it, and so does ghs.sh restore panel.tar.enc. "Download panel file" gives it decrypted.

    Email Notifications (SMTP)

    Configure SMTP to receive email notifications for server events.

    Discord Notifications

    Send notifications to a Discord channel via webhook.

    Setup Guide

    1. Open Discord and go to your server
    2. Right-click on the channel you want notifications in
    3. Click Edit Channel → Integrations
    4. Click Webhooks → New Webhook
    5. Name it "GHS Bot" and copy the Webhook URL
    6. Paste the URL below and save
    Used for all notifications unless overridden below

    Per-Event Webhooks (Optional)

    Set different Discord channels for different notification types. Leave blank to use the default webhook above.

    CurseForge API Configuration

    Configure your CurseForge API key to enable mod and modpack downloads from CurseForge.

    How to Get Your API Key

    1. Visit CurseForge Developer Console
    2. Sign in to your CurseForge account (or create one)
    3. Click "Create Token"
    4. Enter a name (e.g., "GHS Server")
    5. Copy the generated token
    6. Paste it below and click Save

    Your API key is stored securely in the .env file and never exposed.

    Steam Workshop

    A Steam Web API key lets the panel search the Steam Workshop: tModLoader servers' Mods tab and Mods & Resources page get a Workshop browser, and adding a mod adds the mods it needs too. Without one, mods are still added by their Workshop ID or link.

    How to get a key

    1. Open steamcommunity.com/dev/apikey and sign in with your Steam account.
    2. Enter a domain (your panel's address, for example panel.example.com) and register. Steam shows your key.
    3. Copy the key, paste it below and click Save key. The panel checks it with Steam before saving it.

    Kept encrypted in the panel's database and only ever sent to Steam. Steam's terms say to keep a key to yourself, so use one key per panel. Steam allows 100,000 calls a day; searches are kept for five minutes, so a panel stays far below that.

    Notification Events

    Choose which events trigger notifications.

    Global Ban List

    Players on this list are banned from all servers. Only admins can manage global bans.

    Loading global bans...

    Activity Logs

    View all user actions and system events. Logs are preserved even after users or servers are deleted.

    Loading activity logs...

    Page 1

    User Settings

    Account Information

    Username:

    Role:

    Email Address

    You can sign in with it instead of your username; password resets and alerts go to it.

    Change Password

    Minimum 6 characters

    Changing it signs you out everywhere else.

    Where You're Signed In

    Sign out of a device you no longer use, or everywhere but here if you think someone else has your password (then change it).

    Loading...

    Version History

    Loading...

    Legacy Windows edition