Files
GSM/CLAUDE.md
Alexander Zielonka 0b5e573d45
All checks were successful
Deploy GSM / deploy (push) Successful in 24s
Fix Terraria log parsing for player leave detection
Changed detection pattern from "hat das Spiel verlassen" to "ist weg"
to match actual Terraria server log format.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 09:59:36 +01:00

4.0 KiB

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Repository Purpose

This is a documentation repository for a homelab infrastructure. It contains technical documentation for servers, services, and network configuration - no application code.

Infrastructure Overview

The homelab consists of:

  • Raspberry Pi (192.168.2.10): Runs Nginx Proxy Manager, Cloudflare DDNS, and Nextcloud via Docker
  • Proxmox Server (192.168.2.20): Virtualization host running LXC containers and VMs
  • Gameserver Monitor (192.168.2.30): React/Node.js webapp for monitoring game servers (LXC)
  • Factorio Server (192.168.2.50): Docker-based game server (LXC)
  • Minecraft Server (192.168.2.51): ATM10 modded server running via screen (VM)
  • V Rising Server (192.168.2.52): Dedicated server (LXC)
  • Palworld Server (192.168.2.53): Dedicated server with systemd (LXC)
  • Project Zomboid Server (10.0.30.66): Dedicated server (external VM)
  • Terraria Server (10.0.30.202): tModLoader mit Calamity Mod, PM2 (external VM, VPN)
  • Hytale Server (10.0.30.204): Dedicated server mit tmux (external VM, VPN)

Key Technical Details

Gameserver Monitor Stack: React + Vite + TailwindCSS frontend, Node.js + Express backend, SQLite for auth, nginx as reverse proxy. Located at /opt/gameserver-monitor/ on the monitor LXC.

Gameserver Monitor Rollensystem:

  • user: Kann nur Server-Metriken sehen (CPU, RAM, Players, Uptime)
  • moderator: Zusätzlich Konsole, RCON, Server Start/Stop/Restart, Auto-Shutdown, Config-Editoren
  • superadmin: Zusätzlich Nutzerverwaltung, Activity Log, Anzeigeeinstellungen (Verbindungsadresse/Hinweis pro Server)

GSM Features:

  • Dashboard mit Server-Karten (Status, Metriken, Spieleranzahl)
  • Server-Detailansicht mit Tabs (Übersicht, Metriken, Konsole, Einstellungen, etc.)
  • Auto-Shutdown: Server stoppt automatisch wenn keine Spieler online sind
  • Config-Editoren: Palworld (INI), Project Zomboid (INI/Lua)
  • Factorio Weltverwaltung: Spielstände erstellen/löschen/laden
  • Minecraft Whitelist-Verwaltung via RCON
  • Anzeigeeinstellungen: Superadmins können Verbindungsadresse und Hinweis pro Server anpassen
  • Activity Log: Protokolliert alle Aktionen mit Discord-Avatar

Domain: zeasy.dev with subdomains managed via Cloudflare DDNS (gsm.zeasy.dev, factorio.zeasy.dev, palworld.zeasy.dev, pz.zeasy.dev, hytale.zeasy.dev)

SSH Access: Zugriff auf Server erfolgt über den Pi als Jump-Host:

ssh alex@192.168.2.10  # Erst auf den Pi
ssh root@192.168.2.XX  # Dann zum Zielserver (z.B. .53 für Palworld)

Oder in einem Befehl: ssh alex@192.168.2.10 "ssh root@192.168.2.53 'befehl'"

GSM API - Wichtige interne Routes

Discord Update senden (nur von localhost):

ssh root@192.168.2.30 'curl -X POST http://localhost:3000/api/servers/discord/internal-update \
  -H "Content-Type: application/json" \
  -d "{\"title\": \"Titel\", \"description\": \"Beschreibung\", \"serverType\": \"hytale\", \"color\": 65535}"'
  • serverType: minecraft, factorio, zomboid, vrising, palworld, terraria, openttd, hytale (für Icon)
  • color: Dezimal-Farbwert (z.B. 0x00BFFF = 49151)

Server ohne RCON (Spielererkennung via Log-Parsing):

  • Hytale: Spieler werden über Server-Logs erkannt ([World|*] Player joined / [PlayerSystems] Removing player)
  • Terraria: Spieler werden über PM2-Logs erkannt (ist beigetreten / ist weg)
  • Bei neuen Servern ohne RCON: server.type === 'serverid' zu folgenden Dateien hinzufügen:
    • services/autoshutdown.js (Zeile ~50)
    • services/discordBot.js (fetchServerStatuses, Zeile ~379)
    • routes/servers.js (zwei Stellen, suche nach rconPassword || server.type)

Deployment

WICHTIG: NIEMALS per SCP deployen! Alle Änderungen am GSM-Code müssen:

  1. Lokal committed werden
  2. Auf GitHub gepusht werden
  3. Das CI/CD-System deployt automatisch auf den Server

Kein manuelles Kopieren von Dateien per SCP, rsync oder ähnlichem!

Language Note

Documentation is written in German.