All checks were successful
Deploy GSM / deploy (push) Successful in 24s
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>
82 lines
4.0 KiB
Markdown
82 lines
4.0 KiB
Markdown
# 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:
|
|
```bash
|
|
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):
|
|
```bash
|
|
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.
|