Gameserver Monitor (GSM) - Dokumentation
Uebersicht
Der Gameserver Monitor ist eine Web-Applikation zur Ueberwachung und Verwaltung von Gameservern.
URL: https://monitor.dimension47.de
Server: 192.168.2.30 (LXC Container)
Architektur
Tech Stack
| Komponente |
Technologie |
| Frontend |
React 18 + Vite + TailwindCSS 4 + recharts |
| Backend |
Node.js 20 + Express |
| Datenbank |
SQLite (better-sqlite3) |
| Auth |
JWT + bcrypt |
| Metrics |
Prometheus + Node Exporter |
| Dashboards |
Grafana |
| Reverse Proxy |
nginx |
Verzeichnisstruktur
API Endpoints
Authentifizierung
| Method |
Endpoint |
Auth |
Beschreibung |
| POST |
/api/auth/login |
- |
Login, gibt JWT zurueck |
| GET |
/api/auth/me |
JWT |
Aktueller User + Rolle |
| POST |
/api/auth/change-password |
JWT |
Eigenes Passwort aendern |
| GET |
/api/auth/users |
superadmin |
Alle User auflisten |
| POST |
/api/auth/users |
superadmin |
Neuen User erstellen |
| PATCH |
/api/auth/users/:id/role |
superadmin |
Rolle aendern |
| PATCH |
/api/auth/users/:id/password |
superadmin |
Passwort setzen |
| DELETE |
/api/auth/users/:id |
superadmin |
User loeschen |
Server
| Method |
Endpoint |
Auth |
Beschreibung |
| GET |
/api/servers |
optional |
Alle Server mit Status/Metrics |
| GET |
/api/servers/:id |
optional |
Einzelner Server |
| POST |
/api/servers/:id/start |
moderator |
Server starten (body: {save: "name"} fuer Factorio) |
| POST |
/api/servers/:id/stop |
moderator |
Server stoppen |
| POST |
/api/servers/:id/restart |
moderator |
Server neustarten |
| GET |
/api/servers/:id/logs |
moderator |
Console Logs |
| POST |
/api/servers/:id/rcon |
moderator |
RCON Befehl senden |
| GET |
/api/servers/:id/whitelist |
optional |
Whitelist (gecached) |
| GET |
/api/servers/:id/metrics/history |
optional |
Prometheus History |
Factorio World Management
| Method |
Endpoint |
Auth |
Beschreibung |
| GET |
/api/servers/factorio/saves |
moderator |
Liste aller Saves |
| GET |
/api/servers/factorio/current-save |
JWT |
Aktuell geladener Save |
| GET |
/api/servers/factorio/presets |
moderator |
Map-Gen Presets + Defaults |
| GET |
/api/servers/factorio/presets/:name |
moderator |
Einzelnes Preset |
| GET |
/api/servers/factorio/templates |
moderator |
Gespeicherte Templates |
| POST |
/api/servers/factorio/templates |
moderator |
Template speichern |
| DELETE |
/api/servers/factorio/templates/:id |
moderator |
Template loeschen |
| POST |
/api/servers/factorio/create-world |
moderator |
Neue Welt erstellen |
| DELETE |
/api/servers/factorio/saves/:name |
moderator |
Save loeschen |
| GET |
/api/servers/factorio/saves/:name/settings |
moderator |
Erstellungs-Settings einer Welt |
Rollensystem
| Rolle |
Rechte |
| (kein Login) |
Dashboard ansehen, Metriken sehen |
| user |
Wie ohne Login |
| moderator |
+ Server starten/stoppen, Logs, RCON, Whitelist |
| superadmin |
+ Nutzerverwaltung |
Server-Konfiguration
/opt/gameserver-monitor/backend/config.json:
Runtime-Typen
| Runtime |
Status-Check |
Start |
Stop |
Uptime |
| docker |
docker inspect |
docker start |
docker stop |
Container StartedAt |
| screen |
screen -ls |
screen -dmS |
screen -X quit |
ps -o etimes |
| systemd |
systemctl is-active |
systemctl start |
systemctl stop |
ActiveEnterTimestamp |
Features
Oeffentliches Dashboard
- Dashboard ist ohne Login sichtbar
- Login-Modal fuer Admins ueber "Sign in" Button
- Alle Server-Karten sichtbar, aber ohne Admin-Hints
Gameserver-Uptime
- Zeigt Prozess-Uptime statt Host-Uptime
- Docker: Container-Laufzeit
- Screen: Session-Laufzeit
- Systemd: Service-Aktivzeit
Whitelist-Caching (Minecraft)
- Whitelist wird serverseitig in SQLite gecached
- Anzeige auch wenn Server offline
- Bearbeitung nur wenn Server online
- Cache wird bei jeder Aenderung aktualisiert
Factorio World Management
- Worlds-Tab in Server-Detail fuer Factorio-Server
- Gesperrte Verwaltung wenn Server laeuft/startet/stoppt
- Save-Auswahl beim Start: Klick auf "Start" bei einem Save startet den Server mit diesem Save
- Current-Save-Anzeige: Im Overview-Tab wird angezeigt, welcher Save beim Starten geladen wird
- Neue Welt erstellen:
- Vollstaendiges Map-Generation-Formular (Terrain, Ressourcen, Gegner, Evolution)
- Presets (Default, Rich Resources, Marathon, Death World, etc.)
- Templates speichern und laden
- Seed-Eingabe (optional)
- World Settings anzeigen:
- Info-Button bei jeder Welt zeigt Erstellungs-Einstellungen
- Legacy-Fallback fuer Welten vor diesem Feature
Navbar-Logo
- Grau (navbarlogograuer.png) im Normalzustand
- Weiss (navbarlogoweiss.png) bei Hover
- Weiche CSS-Transition (300ms)
- Link zu https://zeasy.software
Game-Logos
- Automatische Erkennung anhand Server-Name
- minecraft.png, factorio.png, vrising.png
- Angezeigt in ServerCard und ServerDetail
Wartung
Backend neustarten
Frontend neu bauen
Logs pruefen
Neuen Server hinzufuegen
- config.json bearbeiten (siehe oben)
- SSH-Key auf neuem Server hinterlegen
- Node Exporter installieren (fuer Prometheus)
- Backend neustarten
User verwalten
- Ueber UI: Settings > Users (nur superadmin)
- Direkt in DB:
/opt/gameserver-monitor/backend/db/users.sqlite
Troubleshooting
502 Bad Gateway
- Backend laeuft nicht
- Loesung: Backend manuell starten
Server zeigt "offline" obwohl online
- SSH-Verbindung fehlgeschlagen
- Loesung: SSH-Key pruefen, Firewall pruefen
Whitelist leer
- RCON-Verbindung fehlgeschlagen
- Loesung: RCON-Port und Passwort pruefen
Metrics zeigen 0
- Prometheus Target nicht erreichbar
- Loesung: Node Exporter auf Gameserver pruefen