All checks were successful
Deploy GSM / deploy (push) Successful in 1m25s
- 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>
225 lines
5.9 KiB
Markdown
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"
|
|
```
|