8.6 KiB
Neuen Gameserver zum GSM hinzufügen
Diese Anleitung beschreibt alle Schritte, um einen neuen Gameserver in das Gameserver Management (GSM) System zu integrieren.
Voraussetzungen
- Proxmox LXC Container oder VM für den Gameserver
- SSH-Zugang vom GSM Server (192.168.2.30) zum neuen Server
- Freie IP-Adresse im Netzwerk (192.168.2.x)
Schritt 1: Server aufsetzen
1.1 LXC Container / VM erstellen
Auf Proxmox (192.168.2.20) einen neuen Container oder VM erstellen:
- LXC für leichtgewichtige Server (Factorio, Palworld, etc.)
- VM für Server die spezielle Kernel-Features brauchen (Minecraft mit hohem RAM)
Empfohlene Ressourcen je nach Spiel:
| Spiel | CPU Cores | RAM | Speicher |
|---|---|---|---|
| Factorio | 2 | 2 GB | 20 GB |
| Minecraft (Modded) | 4-6 | 8-16 GB | 50 GB |
| Palworld | 4 | 16 GB | 30 GB |
| Project Zomboid | 4 | 8 GB | 30 GB |
| V Rising | 2 | 4 GB | 20 GB |
1.2 Basis-Setup
# System updaten
apt update && apt upgrade -y
# Grundlegende Pakete
apt install -y curl wget screen htop
1.3 SteamCMD installieren (für Steam-Spiele)
# 32-bit Bibliotheken
apt install -y lib32gcc-s1
# Steam User erstellen
useradd -m -s /bin/bash steam
# SteamCMD installieren
su - steam
mkdir steamcmd && cd steamcmd
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -xvzf steamcmd_linux.tar.gz
1.4 Dedicated Server installieren
# Als steam User
./steamcmd.sh +force_install_dir /opt/<spielname> +login anonymous +app_update <APP_ID> validate +quit
Steam App IDs:
- Palworld:
2394010 - Project Zomboid:
380870 - V Rising:
1829350 - Factorio:
427520(oder manuell von factorio.com)
Schritt 2: Systemd Service erstellen
Erstelle /etc/systemd/system/<spielname>.service:
[Unit]
Description=<Spielname> Dedicated Server
After=network.target
[Service]
Type=simple
User=steam
Group=steam
WorkingDirectory=/opt/<spielname>
ExecStart=/opt/<spielname>/start.sh
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
Aktivieren:
systemctl daemon-reload
systemctl enable <spielname>
Schritt 3: Node Exporter installieren
Für Metriken im GSM Dashboard:
apt install -y prometheus-node-exporter
systemctl enable prometheus-node-exporter
systemctl start prometheus-node-exporter
Prüfen ob Port 9100 erreichbar ist:
curl http://localhost:9100/metrics | head
Schritt 4: SSH-Zugang einrichten
Auf dem GSM Server (192.168.2.30):
# Public Key kopieren
ssh-copy-id -i /root/.ssh/id_ed25519.pub root@192.168.2.XX
Testen:
ssh root@192.168.2.XX "hostname"
Schritt 5: DNS Eintrag erstellen
5.1 Cloudflare DDNS Container aktualisieren
Auf dem Raspberry Pi (192.168.2.10):
cd /home/alex
nano docker-compose.yml
Neue Domain zur CF_DOMAINS Umgebungsvariable hinzufügen:
environment:
- CF_DOMAINS=gsm.zeasy.dev,factorio.zeasy.dev,<neuer-name>.zeasy.dev
Container neu starten:
docker-compose up -d cloudflare-ddns
5.2 Port Forwarding im Router
Benötigte Ports im Router freigeben:
| Spiel | Ports |
|---|---|
| Palworld | 8211/UDP, 27015/UDP |
| Minecraft | 25565/TCP |
| Factorio | 34197/UDP |
| Project Zomboid | 16261/UDP, 16262/UDP |
| V Rising | 9876/UDP, 9877/UDP |
Schritt 6: GSM Backend konfigurieren
6.1 config.json erweitern
Auf dem GSM Server /opt/gameserver-monitor/backend/config.json:
{
"id": "<spielname>",
"name": "<Anzeigename>",
"host": "192.168.2.XX",
"type": "<spielname>",
"runtime": "systemd",
"serviceName": "<service-name>",
"rconPort": XXXXX,
"rconPassword": "<passwort>",
"workDir": "/opt/<spielname>",
"configPath": "/pfad/zur/config"
}
6.2 SSH-Funktionen hinzufügen (optional)
Falls Config-Editor benötigt wird, in backend/services/ssh.js:
const <SPIELNAME>_CONFIG_PATH = "/pfad/zu/configs";
const <SPIELNAME>_ALLOWED_FILES = ["config1.ini", "config2.ini"];
export async function list<Spielname>Configs(server) {
// Implementation
}
export async function read<Spielname>Config(server, filename) {
// Implementation
}
export async function write<Spielname>Config(server, filename, content) {
// Implementation
}
6.3 Routes hinzufügen (optional)
In backend/routes/servers.js neue Endpoints für Config-Editor.
6.4 Backend neustarten
pm2 restart gameserver-backend
pm2 logs gameserver-backend --lines 20
Schritt 7: Prometheus konfigurieren
Auf dem GSM Server /etc/prometheus/prometheus.yml:
- job_name: "<spielname>"
static_configs:
- targets: ["192.168.2.XX:9100"]
Prometheus neustarten:
systemctl restart prometheus
Schritt 8: Frontend erweitern
8.1 Server-Info in ServerCard.jsx
const serverInfo = {
// ...bestehende Server
<spielname>: {
address: '<spielname>.zeasy.dev:<port>',
logo: '/<spielname>.png',
links: [
{ label: 'Steam', url: 'https://store.steampowered.com/app/XXXXXX' }
]
}
}
// In getServerInfo():
if (name.includes('<spielname>')) return serverInfo.<spielname>
8.2 Logo in ServerDetail.jsx
if (name.includes("<spielname>")) return "/<spielname>.png"
8.3 ActivityLog Labels
const serverLabels = {
// ...
<spielname>: '<Anzeigename>'
}
8.4 API-Funktionen (falls Config-Editor)
In frontend/src/api.js:
export async function get<Spielname>Configs(token) {
return fetchAPI('/servers/<spielname>/config', {
headers: { Authorization: `Bearer ${token}` },
})
}
// etc.
8.5 Config-Editor Komponente (optional)
Neue Datei frontend/src/components/<Spielname>ConfigEditor.jsx erstellen (basierend auf bestehenden Editoren).
8.6 Icon hinzufügen
PNG-Datei nach frontend/public/<spielname>.png kopieren (idealerweise 64x64 oder 128x128 Pixel).
8.7 Frontend bauen und deployen
cd /opt/gameserver-monitor/frontend
npm run build
Schritt 9: Anzeigeeinstellungen konfigurieren (optional)
Nach dem Hinzufügen eines Servers können Superadmins die Anzeigeeinstellungen direkt im Web-Interface bearbeiten.
9.1 Anzeigeeinstellungen im Frontend
- Als Superadmin einloggen
- Server-Detailansicht öffnen
- Tab "Anzeige" auswählen
- Folgende Felder können bearbeitet werden:
- Verbindungsadresse: Die Adresse die Spielern zum Verbinden angezeigt wird (z.B.
palworld.zeasy.dev:8211) - Hinweis: Zusätzliche Informationen wie Passwort, Version, etc. (z.B.
Passwort: geheim123)
- Verbindungsadresse: Die Adresse die Spielern zum Verbinden angezeigt wird (z.B.
- Speichern klicken
9.2 Verhalten der Anzeigeeinstellungen
- Datenbankwerte haben Priorität: Wenn Anzeigeeinstellungen in der Datenbank gesetzt sind, überschreiben diese die Standardwerte aus dem Code
- Fallback auf Standardwerte: Wenn keine Datenbankeinstellungen existieren, werden die hartkodierten Standardwerte aus
ServerCard.jsxverwendet - Minecraft Sonderfall: Der Standard-Hinweis "Whitelist erforderlich" wird nur angezeigt, wenn kein eigener Hinweis gesetzt wurde
9.3 Technische Details
Datenbank-Tabelle (users.sqlite):
CREATE TABLE server_display_settings (
server_id TEXT PRIMARY KEY,
address TEXT,
hint TEXT,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
API-Endpoints:
GET /api/servers/display-settings- Alle Einstellungen abrufen (für Dashboard)GET /api/servers/:id/display-settings- Einstellungen für einen Server (Superadmin)PUT /api/servers/:id/display-settings- Einstellungen speichern (Superadmin)
Dateien:
- Backend:
backend/routes/servers.js,backend/db/init.js - Frontend:
frontend/src/pages/ServerDetail.jsx,frontend/src/components/ServerCard.jsx,frontend/src/api.js
Checkliste
- Server aufgesetzt und Spiel installiert
- Systemd Service erstellt und aktiviert
- Node Exporter installiert
- SSH-Zugang vom GSM Server eingerichtet
- DNS Eintrag erstellt
- Port Forwarding konfiguriert
- Backend config.json erweitert
- Prometheus Target hinzugefügt
- Frontend ServerCard/ServerDetail erweitert
- Server-Icon hinzugefügt
- Frontend gebaut
- Backend neugestartet
- Anzeigeeinstellungen konfiguriert (Verbindungsadresse, Hinweis)
Aktuelle Server-Übersicht
| Server | IP | Typ | Ports |
|---|---|---|---|
| GSM Monitor | 192.168.2.30 | LXC | 3000, 9090 |
| Factorio | 192.168.2.50 | LXC | 34197/UDP |
| Minecraft | 192.168.2.51 | VM | 25565/TCP |
| V Rising | 192.168.2.52 | LXC | 9876-9877/UDP |
| Palworld | 192.168.2.53 | LXC | 8211/UDP, 27015/UDP |
| Project Zomboid | 10.0.30.66 | VM (extern) | 16261-16262/UDP |