199 lines
5.8 KiB
Markdown
199 lines
5.8 KiB
Markdown
# Linux Agent Operations Guide
|
|
|
|
This guide covers installation, configuration, service management, and troubleshooting for the GSP Linux Agent.
|
|
|
|
## Purpose
|
|
|
|
The Linux agent exposes the RPC endpoint that allows GameServer Panel to install, start, stop, update, and monitor game servers on Linux hosts.
|
|
|
|
## Supported Platforms
|
|
|
|
- Ubuntu 20.04, 22.04, and 24.04 LTS
|
|
- Debian 11 and 12
|
|
- other modern Linux distributions with Perl, GNU Screen, rsync, sudo, and systemd or compatible service management
|
|
|
|
## Prerequisites
|
|
|
|
For Debian and Ubuntu hosts:
|
|
|
|
```bash
|
|
chmod +x install_agent_prereqs.sh
|
|
sudo ./install_agent_prereqs.sh
|
|
```
|
|
|
|
The prerequisite script installs required Perl modules, `screen`, `rsync`, `sudo`, `unzip`, `git`, `curl`, PureFTPd, and related utilities. It no longer attempts obsolete Ubuntu packages such as `libgcc1:i386`, `lib32gcc1`, `libcrypt-xxtea-perl`, or `libfile-basename-perl`.
|
|
|
|
The script may show normal `needrestart` output about services, kernels, or VM guests. That output comes from the OS package manager and does not mean the GSP agent installer failed.
|
|
|
|
## Guided Installation
|
|
|
|
```bash
|
|
chmod +x install.sh agent_conf.sh gsp_agent_run ogp_agent_run
|
|
sudo ./install.sh
|
|
```
|
|
|
|
Default choices:
|
|
|
|
- install directory: `/home/gameserver/GSP`
|
|
- Linux user: `gameserver`
|
|
- service name: `gsp_agent`
|
|
- log file: `/home/gameserver/GSP/gsp_agent.log`
|
|
|
|
The installer runs as root from the start. If launched without root and `sudo` is available, it re-executes itself through `sudo` before creating users, copying files, or installing systemd units.
|
|
|
|
## Configuration Prompts
|
|
|
|
The installer calls `agent_conf.sh --guided`. The guided configuration asks for the agent key/shared secret, listen IP, listen port, Panel API URL, Panel event receiver URL, remote server ID, FTP management setting, FTP method, game-server autorestart setting, and restart-time agent auto-update setting.
|
|
|
|
The agent key/shared secret must match the remote-server record in the GSP Panel.
|
|
|
|
## Configuration Files
|
|
|
|
Runtime config lives in:
|
|
|
|
- `/home/gameserver/GSP/Cfg/Config.pm`
|
|
- `/home/gameserver/GSP/Cfg/Preferences.pm`
|
|
- `/home/gameserver/GSP/Cfg/bash_prefs.cfg`
|
|
|
|
Important `Config.pm` keys:
|
|
|
|
- `logfile`
|
|
- `listen_ip`
|
|
- `listen_port`
|
|
- `key`
|
|
- `web_api_url`
|
|
- `agent_event_url`
|
|
- `remote_server_id`
|
|
|
|
Important `Preferences.pm` keys:
|
|
|
|
- `gsp_manages_ftp`
|
|
- `gsp_autorestart_server`
|
|
- `ftp_method`
|
|
- `PortValidationEnabled`
|
|
- `StartupValidationTimeoutSeconds`
|
|
- `PortCheckIntervalSeconds`
|
|
|
|
Compatibility aliases are still written for older panel/agent paths:
|
|
|
|
- `ogp_manages_ftp`
|
|
- `ogp_autorestart_server`
|
|
|
|
## Folder Layout
|
|
|
|
Default runtime folders:
|
|
|
|
- `Cfg/`
|
|
- `logs/`
|
|
- `tmp/`
|
|
- `screenlogs/`
|
|
- `runtime_status/`
|
|
- `events/`
|
|
- `_gsp_content/hooks/`
|
|
- `_gsp_content/generated/`
|
|
- `_gsp_content/runtime/`
|
|
|
|
The `_gsp_content/runtime/server_content.pids` file is reserved for generated server-content hook processes. During stop/restart cleanup, hook watchdog PIDs are stopped before hook application PIDs. The main game server watchdog PID should not be stored in this file.
|
|
|
|
## systemd Service
|
|
|
|
New installs use:
|
|
|
|
- `gsp_agent.service`
|
|
|
|
Useful commands:
|
|
|
|
```bash
|
|
sudo systemctl status gsp_agent
|
|
sudo systemctl restart gsp_agent
|
|
sudo systemctl stop gsp_agent
|
|
sudo journalctl -u gsp_agent -f
|
|
```
|
|
|
|
The generated unit runs as the selected agent user, sets `WorkingDirectory` to the selected install directory, and starts `gsp_agent_run`.
|
|
|
|
## Logs
|
|
|
|
- main agent log: `/home/gameserver/GSP/gsp_agent.log`
|
|
- systemd journal: `sudo journalctl -u gsp_agent -f`
|
|
- screen logs: `/home/gameserver/GSP/screenlogs/`
|
|
- activity event offline queue: `/home/gameserver/GSP/events/pending-events.jsonl`
|
|
|
|
## Manual Reconfiguration
|
|
|
|
```bash
|
|
cd /home/gameserver/GSP
|
|
./agent_conf.sh --guided --install-dir /home/gameserver/GSP --agent-user gameserver
|
|
sudo systemctl restart gsp_agent
|
|
```
|
|
|
|
Use noninteractive flags when automating:
|
|
|
|
```bash
|
|
./agent_conf.sh \
|
|
--install-dir /home/gameserver/GSP \
|
|
--agent-user gameserver \
|
|
--key CHANGE_ME \
|
|
--listen-ip 0.0.0.0 \
|
|
--listen-port 12679 \
|
|
--web-api-url https://panel.example.com/ogp_api.php \
|
|
--agent-event-url https://panel.example.com/agent_event_receiver.php \
|
|
--remote-server-id 1
|
|
```
|
|
|
|
## FTP Configuration
|
|
|
|
Default FTP mode is PureFTPd-compatible account management:
|
|
|
|
- `gsp_manages_ftp => '1'`
|
|
- `ftp_method => 'PureFTPd'`
|
|
|
|
Set `gsp_manages_ftp` to `0` if FTP accounts are managed outside the agent.
|
|
|
|
## Troubleshooting
|
|
|
|
Authentication failed or Panel shows agent offline:
|
|
|
|
- confirm `key` in `Cfg/Config.pm` matches the Panel remote-server key
|
|
- confirm `listen_port` is reachable from the Panel host
|
|
- check firewall rules
|
|
|
|
Polkit or systemctl authentication failure:
|
|
|
|
- run `sudo ./install.sh`
|
|
- do not start with a non-root partial install
|
|
- inspect `sudo journalctl -u gsp_agent -f`
|
|
|
|
Wrong install path or old `/home/gameserver/OGP` log path:
|
|
|
|
- rerun `./agent_conf.sh --guided --install-dir /home/gameserver/GSP`
|
|
- confirm `Cfg/Config.pm` has `logfile => '/home/gameserver/GSP/gsp_agent.log'`
|
|
- confirm the systemd unit `WorkingDirectory` points to `/home/gameserver/GSP`
|
|
|
|
Missing packages:
|
|
|
|
- rerun `sudo ./install_agent_prereqs.sh`
|
|
- confirm `screen`, `rsync`, `perl`, `git`, `curl`, and required Perl modules are installed
|
|
|
|
Service failed:
|
|
|
|
- run `sudo systemctl status gsp_agent`
|
|
- run `sudo journalctl -u gsp_agent -f`
|
|
- run `perl -c /home/gameserver/GSP/ogp_agent.pl`
|
|
|
|
Config missing or invalid:
|
|
|
|
- run `./agent_conf.sh --guided`
|
|
- replace placeholder `CHANGE_ME_PANEL_AGENT_KEY`
|
|
- verify `Cfg/Config.pm` is readable by the agent user
|
|
|
|
## Clean Reinstall
|
|
|
|
```bash
|
|
sudo systemctl stop gsp_agent || true
|
|
sudo systemctl disable gsp_agent || true
|
|
sudo rm -f /etc/systemd/system/gsp_agent.service
|
|
sudo systemctl daemon-reload
|
|
```
|
|
|
|
Only remove `/home/gameserver/GSP` after confirming it does not contain customer server data, logs, SteamCMD data, or local configuration that must be preserved.
|