Server-Setup & Bots
Alle Deployments und Änderungen unbedingt im Server-Change-Template dokumentieren.
Architektur-Überblick
- Panel (Webserver): Pterodactyl Panel läuft bereits auf dem bestehenden Webserver (Debian 13). Wartung & Updates erfolgen nach Release Notes von Pterodactyl (Panel + Daemon getrennt planen).
- Wings Nodes: Dedizierte Gameserver (node01, später node02, node03 …) hosten die eigentlichen Instanzen. Jeder Node nutzt Debian 13 + Docker.
- Backbone: Tailscale/ WireGuard (optional) oder direkte Firewall-Regeln (Ports 22/2022, 8080, Game-Ports). Monitoring via UptimeRobot/Prometheus.
- Bots & Automation: Discord-/TS-Bots laufen getrennt auf kleinen VMs oder im Panel als „bot-servers“.
Node01 – Dedicated Game Server
Zweck: Primärer Host für Fokus-Games + Testserver.
- Hardware / OS: Dedicated Machine, Debian 13, Docker Engine + docker-compose installiert.
- Vorbereitung:
- Pterodactyl Wings Setup:
- Panel → Admin → Locations →
LOC-DE-01. - Node hinzufügen: Name
node01, FQDNnode01.gg-n.de, HTTP/HTTPS Ports setzen, Daemon-Secret kopieren. - Auf node01:
Wings installieren:curl -sSL https://get.docker.com/ | bash apt install -y curl tar unzip
Config aus dem Panel speichern (cd /etc/pterodactyl curl -Lo wings.tar.gz https://github.com/pterodactyl/wings/releases/latest/download/wings_linux_amd64/etc/pterodactyl/config.yml), Service anlegen:useradd -r -m -d /var/lib/pterodactyl -s /bin/false pterodactyl chown -R pterodactyl:pterodactyl /etc/pterodactyl /var/lib/pterodactyl systemctl enable --now wings- Verbindung prüfen: Panel → Nodes →
node01→ Status = Grün.
- Panel → Admin → Locations →
- Game Deployment Workflow:
Weitere Nodes hinzufügen (node02, node03 …)
Ziel: horizontale Skalierung bereit halten, sobald neue Games oder Load benötigt werden.
- Hardware bereitstellen: Dedizierter Server oder vServer mit Debian 13.
- Netzwerk/ DNS:
- Subdomain
node0X.gg-n.de, Reverse DNS anpassen. - Firewall-Template von node01 übernehmen (nur benötigte Ports öffnen).
- Subdomain
- Panel-Konfiguration:
- Neue Location falls anderes Rechenzentrum, sonst
LOC-DE-01. - Node-Name, Memory/Disk Limits definieren, Upload/Download-Limits setzen.
- Neue Location falls anderes Rechenzentrum, sonst
- Wings-Installation: Gleich wie node01 (Script + config.yml). Service starten und Panel-Status kontrollieren.
- Tagging: Nodes im Panel taggen (z. B.
prod,test,event) → hilft Scheduling. - Capacity Planning:
- Sheet pflegen: RAM, CPU, Storage, belegte Slots.
- Alert, wenn Auslastung > 75 % → nächste Node vorbereiten.
- Dokumentation: Für jeden Node eigenständige Notiz im Obsidian oder Pterodactyl Panel (z. B.
Notes/node02.md) mit Hardware, Wartungsfenster, Ansprechpartner.
Node03+ Roadmap & IaC
- Node03 (Events/IRL Pods): Geplant für Phase 9 Expansion – dedizierter Event/Pop-Up Node mit burst capacity, Deploy via Terraform Module (Pterodactyl + Docker Host). Owner: Server Pilot + Tech Lead.
- IaC Plan: Terraform für DNS, Proxmox, Pterodactyl Nodes; Ansible Playbooks für Bot-VMs + Monitoring Agents. Ziel: Reprovision < 60 Min.
- Observability Upgrade: Prometheus + Loki + Grafana Tempo Stack (Phase 6) → vollständige Logs, Traces und Alerts. Alertmanager routet On-Call (Discord #ops-alerts + SMS).
- Incident Response: Neue Note „Incident Playbook“ (TODO) + Postmortem Template (Anhang ans Meeting-Template) – Owner: Ops Captain.
- Siehe 04_Infrastruktur/Incident Playbook für Escalation Tree, Postmortem und On-Call Rotation.
Wartung & Backups
- Backups (Proxmox Backup Client): Alle Nodes werden mittels
proxmox-backup-clientgesichert. Beispielskript (/usr/local/bin/ggn-backup.sh):#!/bin/bash export PBS_PASSWORD='{{env:PBS_PASS}}' TIMESTAMP=$(date +%F-%H%M) proxmox-backup-client backup \ etc.pxar:/etc \ pterodactyl.pxar:/var/lib/pterodactyl \ docker-volumes.pxar:/var/lib/docker/volumes \ --repository pbs@ssl://backup.gg-n.de:8007/pbs1 \ --backup-id node01 \ --backup-time "$TIMESTAMP" \ --encrypt backupkey.pxar \ --notes "node01 nightly"- Cronjob:
0 3 * * * root /usr/local/bin/ggn-backup.sh >> /var/log/ggn-backup.log 2>&1 - Restores monatlich testen (
proxmox-backup-client mount ...→ Test-Restore). - Backups werden zusätzlich über S3/Wasabi mit Panel-internen per-Server Snapshots kombiniert (kritische Gameserver: nightly; generische: 3x/Woche).
- Cronjob:
- Updates: Quartalsweise Panel/Wings Updates (Staging Node zuerst). Changelog dokumentieren.
- Monitoring: Node Exporter + Prometheus/Grafana oder einfache UptimeRobot Checks. Alerts ins Ops Discord Channel.
- Security: SSH nur via Keys, Fail2ban aktivieren, automatisierte Security-Updates (unattended-upgrades).
Server Monitoring Stack
- Prometheus Node Exporter auf jedem Node (Port 9100), optional Pterodactyl Stats Exporter.
- Prometheus Server (kann auf Webserver oder dedizierter VM laufen) + Grafana Dashboard
GGN-Ops. - Alertmanager: Alerts → Discord Webhook
#ops-alerts(CPU > 85 %, RAM > 90 %, Wings down, Docker service down). - Game-specific Monitoring: use gamedig exporter for Minecraft/Valheim to check player count.
- External Uptime (Layer 7): UptimeRobot or BetterStack hitting
panel.gg-n.de,api.gg-n.de, each Gameserver port to catch firewall issues.
Bot-Infra
- Discord Moderation Bot: Läuft als Service im Panel (separater Nest) oder auf Webserver. Document tokens/secrets im Vault (nicht in Repo). Empfehlung:
Guardian.GG(Eigenentwicklung) oder etablierte Bots (z. B.Dynofür Automod). - Ticket Bot:
Ticket Tool(self-hosted Premium Version) oderHelper.gg. Vorteil: Web-Dashboard + Discord UI, API-Webhook zu Website Formularen. Self-host-Container auf node01 (ticket-botNest). - Website ↔ Discord Tickets: Landingpage-Formular sendet POST → Cloud Function (e.g. Cloudflare Worker) → Ticket Tool API → erstellt Ticket + sendet Bestätigungsmail.
- Logging & Analytics Bot:
StatbotoderApollo(für Events). Alternativ eigener Bot, der Discord Metrics → InfluxDB/Grafana schreibt (Weekly WAU & Message Count = KPI feed). - Role Management Reactions:
Carl-bot/Seshfür Events, Reaction Roles, Auto-Guardian. - TS3 Bot (SinusBot o. Ä.): Auf node01 oder dedizierter VM, Ports + Firewall anpassen.
To-Do & Tracking
Verzahnung mit Phase 2 Infrastructure Build (Stabilität), Phase 5 Public Launch (Kapazität) und IT & Staff Division sicherstellen.
↩ Home