7.7 KiB
GameServer Panel Admin Guide
This document mirrors the internal WDS wiki entry so it can be viewed directly from the repository, packaged with releases, or imported into another wiki. It explains how we deploy, operate, and extend the GameServer Panel (GSP) fork of Open Game Panel.
Overview
- Project scope – PHP web panel + billing, Linux and Windows agents, 100+ XML driven game templates.
- Audience – Administrators and integrators who maintain commercial hosting fleets.
- Companion repos –
GSP-Agent-LinuxandGSP-Agent-Windows. - Color coding – We keep the “rust + charcoal” palette across documentation so screenshots match the UX.
Quick Install (deploy_gsp.sh)
The repository ships deploy_gsp.sh, a bash helper that stages the latest commit and syncs it to your web root. Always read the script before running it and override variables via the environment when necessary.
curl -fsSL https://raw.githubusercontent.com/GameServerPanel/GSP/main/deploy_gsp.sh \
-o /tmp/deploy_gsp.sh
bash /tmp/deploy_gsp.sh
Key behaviors:
- Clones/updates the repo in
~/gsp_stage(configurable viaSTAGE_DIR). - Uses
rsyncto copy files toWEB_ROOTwhile preservingincludes/config.inc.phpand billing configs. - Applies safe permissions (directories 755, files 644, writable directories such as
templates_cset to 2775). - Leaves MySQL credentials untouched—only you should rotate them.
Architecture
GSP is still built around the classic OGP topology:
- Web Panel – PHP application with billing, coupons, invoicing, and customer UI enhancements.
- Agents – Lightweight Perl daemons (
ogp_agent.pl) installed on every game host. Default port 12679/TCP. - Game Servers – Processes defined in
modules/config_games/server_configs/*.xml. Agents launch them inside detached GNU screen sessions, capture PIDs, and stream console logs back to the panel.
All provisioning logic flows through XML definition files, so keep IDs, attributes, and order compliant with modules/config_games/schema_server_config.xml.
Agent Management
Linux Agent
- Install dependencies:
sudo apt install git curl rsync perl libxml2-utils screen(Ubuntu 24.04+). - Clone and install:
sudo git clone https://github.com/GameServerPanel/GSP-Agent-Linux.git /opt/gsp-agent cd /opt/gsp-agent sudo bash install.sh sudo bash agent_conf.sh -s "yourRootPassword" -u ogp_agent - Edit
/home/ogp_agent/Cfg/Config.pmto match the panel entry (listen ip/port,key,web_api_url). - Enable the service:
sudo systemctl enable --now ogp_agent(installs fromsystemd/ogp_agent.service). - Confirm heartbeats from the panel → Administration → Game Servers.
Windows Agent (Cygwin bundle)
git clone https://github.com/GameServerPanel/GSP-Agent-Windows.git C:\\gsp-agent.- Run
Install\onceinstall_agent.batas Administrator to install Cygwin, create thegameserverservice user, and copy files. - Launch the bundled Cygwin terminal and execute:
cd /OGP bash agent_conf.sh -p "gameserverPassword" - Update
C:\\OGP\\Cfg\\Config.pm(same structure as Linux) with the panel’s key, API URL, and listen port. - Ensure the “OGP Agent” Windows service is set to Automatic (Delayed Start) and the firewall allows the agent port plus expected game ports.
XML Deep Dive
Game definitions live under modules/config_games/server_configs. They must respect the schema order and content. Keep one tag per line so diffs remain clean.
<?xml version="1.0" encoding="UTF-8"?>
<game_config>
<game_key>valheim_linux64</game_key>
<protocol>lgsl</protocol>
<lgsl_query_name>valheim</lgsl_query_name>
<installer>steamcmd</installer>
<game_name>Valheim</game_name>
<server_exec_name>start_server.sh</server_exec_name>
<query_port type="add">1</query_port>
<cli_template>%HOME_PATH%/start_server.sh -name "%HOSTNAME%" -port %PORT% -world %MAP% %VAR_ALL%</cli_template>
<cli_params>
<cli_param id="HOSTNAME" cli_string="-name=" options="q" />
<cli_param id="PORT" cli_string="-port=" options="sq" />
<cli_param id="MAP" cli_string="-world=" options="q" />
</cli_params>
<reserve_ports>
<port type="add" id="QUERY_PORT">1</port>
<port type="add" id="RCON_PORT" cli_string="+rcon.port" options="sq">10</port>
</reserve_ports>
<cli_allow_chars>:-_\</cli_allow_chars>
<maps_location>saves/worlds</maps_location>
<max_user_amount>10</max_user_amount>
<control_protocol>rcon2</control_protocol>
<mods>
<mod key="default">
<name>Dedicated</name>
<installer_name>896660</installer_name>
</mod>
</mods>
<server_params>
<param key="+server.identity" type="text" id="IDENTITY">
<default>my_server_identity</default>
<desc>Sets the Rust identity folder.</desc>
</param>
</server_params>
<commands>
<command>
<name>Start</name>
<execute>./RustDedicated -port {PORT} -ip {IP} {VAR_ALL}</execute>
</command>
</commands>
<environment_variables>
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:{OGP_HOME_DIR}/RustDedicated_Data/Plugins/x86_64
</environment_variables>
</game_config>
Schema Tag Reference (abridged)
The full human-readable version is provided in documentation/xml-notes.md. Highlights:
game_config– Root node, one per file.game_key– Unique identifier plus OS suffix (_linux64,_win32, etc.).protocol,lgsl_query_name,gameq_query_name– Control how the panel queries live status.installer–steamcmd,rsync,manual, or custom.cli_template– Command string appended after the executable; supports%VARIABLE%placeholders and{VAR_ALL}macros.cli_param– Defines formatting rules for each variable (space/quote behaviors via theoptionsattribute).reserve_ports– Offsets additional ports relative to%PORT%(query, Steam, RCON, etc.).server_params/param– Form inputs shown in the panel UI.replace_texts– Declarative config edits (search/replace values inside cfg files).commands– Start/stop/console actions executed by the agent.environment_variables– Prepend exports before the command runs.
Adding a New Game
- Research – Identify the executable, required CLI flags, optional parameters, config paths, and ports.
- Copy a template – Duplicate a similar XML file from
server_configs/and modify it in-place. - Wire up parameters – Use
server_paramsfor every knob you want exposed, and map those IDs insidecli_params. - Validate – Run
xmllint --schema modules/config_games/schema_server_config.xml mygame.xml --noout. - Test – Upload through the panel, click “Update Games List,” provision a server, and watch
ogp_agent.logfor errors. - Document – Update this guide or the wiki with any quirks, Steam app IDs, or non-standard install notes.
Operational Notes
- No panelStart wrapper – The agent handles PID tracking, console logs, and restart logic. Keep commands clean.
- Logging – Agents write
ogp_agent.log,ogp_agent.pid,ogp_agent_run.pid, and individualconsole.logfiles. - Stats database – Optional MySQL credentials in
Cfg/Config.pmfeed resource monitoring cron jobs. - Password rotation – Update credentials in
content/staff-passwords.txton the WDS website and regenerate secrets in the panel/agents at the same time.
For deeper schema commentary, consult documentation/xml-notes.md or import the Markdown into your preferred wiki.