Files
GSM/docs/infrastructure.md
Alexander Zielonka 2d9a5910fa
All checks were successful
Deploy GSM / deploy (push) Successful in 1m25s
Cleanup repo, add Gitea CI/CD workflow, improve error handling
- Remove temp files and reorganize docs
- Add .gitea/workflows/deploy.yml for automated deployment
- Add unreachable host checks to server routes (/:id, logs, start/stop/restart)
- Add unreachable checks to config routes (zomboid, terraria, openttd)
- Return HTTP 503 with unreachable flag instead of crashing

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 12:15:32 +01:00

225 lines
5.9 KiB
Markdown

# Homelab Infrastructure
## Netzwerktopologie
```
Internet
|
v
+------------------+
| Router/Modem | 62.155.227.77 (dynamisch, Telekom)
| 192.168.2.1 |
+--------+---------+
|
v
+-------------------------------------------------------------+
| LAN 192.168.2.0/24 |
+-------------------------------------------------------------+
| |
| +--------------+ +--------------+ +--------------+ |
| | Raspberry | | Proxmox | | Windows | |
| | Pi (Himbeer)| | Server | | PC | |
| | .10 | | .20 | | | |
| +------+-------+ +------+-------+ +--------------+ |
| | | |
| | +-------+-------+-------+ |
| | | | | | |
| | v v v v |
| | +-----+ +-----+ +-----+ +-----+ |
| | | .30 | | .50 | | .51 | | .52 | |
| | | LXC | | LXC | | VM | | VM | |
| | |Monit| |Facto| | MC | |VRis | |
| | +-----+ +-----+ +-----+ +-----+ |
| | |
+---------+---------------------------------------------------+
|
v
+-----------+
| Docker |
| Services |
+-----------+
```
---
## Server-Uebersicht
### Raspberry Pi (alex@Himbeer) - 192.168.2.10
**Rolle:** Reverse Proxy & DNS Management
| Service | Container | Funktion |
|---------|-----------|----------|
| Nginx Proxy Manager | nginx-proxy-manager | Reverse Proxy + SSL (Let's Encrypt) |
| Cloudflare DDNS | cloudflare-ddns | Dynamische DNS-Updates |
| Nextcloud | nextcloud | Cloud Storage |
| MariaDB | nextcloud-db | Nextcloud Datenbank |
**NPM Admin-UI:** http://192.168.2.10:81
**Cloudflare DDNS Domains:**
- home.dimension47.de
- factorio.dimension47.de
- minecraft.dimension47.de
- monitor.dimension47.de
- grafana.dimension47.de
---
### Proxmox Server - 192.168.2.20
**Rolle:** Virtualisierungshost
| VMID | Name | Typ | IP | Cores | RAM | Funktion |
|------|------|-----|-----|-------|-----|----------|
| 100 | atm10 | VM (QEMU) | .51 | 4 | 12 GB | Minecraft ATM 10 |
| 101 | factorio | LXC | .50 | 2 | 4 GB | Factorio Server |
| 102 | gameserver-monitor | LXC | .30 | 2 | 4 GB | Monitoring Webapp |
| 103 | vrising | VM (QEMU) | .52 | 4 | 12 GB | V Rising Server |
---
### Gameserver Monitor (root@192.168.2.30) - LXC 102
**Rolle:** Gameserver Ueberwachung & Administration
**URL:** https://monitor.dimension47.de
**Default Login:** admin / admin (Passwort aendern nach erstem Login!)
**Tech Stack:**
- OS: Debian 13 (Trixie)
- Frontend: React + Vite + TailwindCSS 4 + recharts
- Backend: Node.js + Express
- Auth: JWT + bcrypt + SQLite
- Monitoring: Prometheus + Grafana
- Reverse Proxy: nginx
**Features:**
- Oeffentliches Dashboard (ohne Login sichtbar)
- Live CPU/RAM Metriken (via SSH)
- Gameserver-Uptime (Prozess-Uptime statt Host-Uptime)
- Metrics History via Prometheus (15m/1h/6h/24h)
- Player Count + Spielerliste via RCON
- Game-Logos neben Servernamen
- Interaktives Navbar-Logo (Hover-Effekt, Link zu zeasy.software)
- Start/Stop/Restart Server (Moderator+)
- Console Logs (live, Moderator+)
- RCON Console (Moderator+)
- Minecraft Whitelist-Verwaltung mit serverseitigem Caching
- Rollensystem: user, moderator, superadmin
**Todos:**
- Auto-Shutdown: Gameserver automatisch abschalten wenn zu lange kein Spieler online war
**Prometheus Targets:**
- localhost:9100 (monitor)
- 192.168.2.50:9100 (factorio)
- 192.168.2.51:9100 (minecraft)
- 192.168.2.52:9100 (vrising)
**Grafana:** https://grafana.dimension47.de
---
### Factorio Server (root@192.168.2.50) - LXC 101
| Eigenschaft | Wert |
|-------------|------|
| Runtime | Docker |
| Container | factorio |
| Game Port | 34197/udp |
| RCON Port | 27015 |
| RCON Password | jieTig6IkixaKuu |
---
### Minecraft Server (root@192.168.2.51) - VM 100
| Eigenschaft | Wert |
|-------------|------|
| Modpack | All The Mods 10 (ATM10) |
| Runtime | screen |
| Screen Name | minecraft |
| Game Port | 25565 |
| RCON Port | 25575 |
| RCON Password | gsm-mc-2026 |
| Pfad | /opt/minecraft |
---
### V Rising Server (root@192.168.2.52) - VM 103
| Eigenschaft | Wert |
|-------------|------|
| Runtime | systemd |
| Service Name | vrising |
| Game Port | 9876/udp, 9877/udp |
| Pfad | /home/steam/vrising |
---
### Project Zomboid Server (pzuser@10.0.30.66) - Extern via WireGuard
| Eigenschaft | Wert |
|-------------|------|
| Runtime | screen |
| Screen Name | zomboid |
| RCON Port | 27015 |
| Pfad | /opt/pzserver |
| Log | /home/pzuser/Zomboid/server-console.txt |
| Netzwerk | Erreichbar via WireGuard-Tunnel "melih" |
---
## WireGuard VPN
Der Gameserver-Monitor (.30) nutzt einen WireGuard-Tunnel um externe Server (z.B. Zomboid auf 10.0.30.66) zu erreichen.
**Interface:** melih
**Lokale IP:** 10.0.200.201/32
### WireGuard Watchdog
Ein Cronjob prueft alle 2 Minuten ob der Tunnel aktiv ist und startet ihn bei Bedarf neu.
| Komponente | Wert |
|------------|------|
| Script | /usr/local/bin/wg-watchdog.sh |
| Cronjob | */2 * * * * |
| Timeout | 5 Minuten ohne Handshake |
| Log | /var/log/wg-watchdog.log |
---
## SSH-Zugang
Der Gameserver-Monitor (.30) hat SSH-Key-Zugang zu:
- 192.168.2.20 (Proxmox)
- 192.168.2.50 (Factorio)
- 192.168.2.51 (Minecraft)
- 192.168.2.52 (V Rising)
Key: /root/.ssh/id_ed25519
---
## Wartung
### Backend (PM2)
```bash
# Status pruefen
ssh root@192.168.2.30 "pm2 status"
# Logs anschauen
ssh root@192.168.2.30 "pm2 logs gameserver-backend --lines 50"
# Neu starten
ssh root@192.168.2.30 "pm2 restart gameserver-backend"
```
### Frontend neu bauen
```bash
ssh root@192.168.2.30 "cd /opt/gameserver-monitor/frontend && npm run build && nginx -s reload"
```