# gameadm - Modularer Game Server Administrator ## Übersicht `gameadm` ist ein modulares System zur Verwaltung verschiedener Game Server, das das ursprüngliche `rustadm` Skript ersetzt und für zukünftige Spiele erweiterbar ist. ## Schnell-Installation ### Eine-Zeile Installation (empfohlen) ```bash curl -fsSL https://git.pp1l.de/pp1l/gameadm/raw/branch/main/install.sh | sudo bash ``` ### Oder mit gameadm selbst ```bash # Lade gameadm herunter curl -fsSL https://git.pp1l.de/pp1l/gameadm/raw/branch/main/bin/gameadm -o gameadm chmod +x gameadm # Installiere mit integrierter Funktion sudo ./gameadm install ``` ### Manuelle Installation ```bash git clone https://git.pp1l.de/pp1l/gameadm.git cd gameadm sudo ./install.sh ``` ## Architektur ``` gameadm (Hauptskript) ├── /etc/gameadm/ │ ├── modules/ # Spielmodule │ │ ├── rust.sh # Rust Server Modul │ │ ├── mc.sh # Minecraft Server Modul │ │ └── ... # Weitere Module │ └── README.md # Diese Dokumentation └── /usr/local/bin/gameadm # Ausführbares Hauptskript ``` ## Verwendung ### Grundlegende Syntax ```bash gameadm [optionen] ``` ### Verfügbare Spiele - **rust** - Rust Game Server (vollständig funktional) - **mc** - Minecraft Server (Beispiel-Modul) ### Verfügbare Befehle (pro Spiel) - `start` - Startet den Server - `stop` - Stoppt den Server - `restart` - Startet Server neu - `status` - Zeigt Server-Status - `logs` - Zeigt Server-Logs - `follow` - Folgt Logs in Echtzeit - `update` - Aktualisiert Server-Image - `help` - Zeigt Hilfe für das Spiel ### Beispiele ```bash # Rust Server verwalten gameadm rust start gameadm rust status gameadm rust logs gameadm rust stop # Minecraft Server verwalten (zukünftig) gameadm mc start gameadm mc status # Hilfe anzeigen gameadm --help gameadm rust help gameadm list ``` ## Module erstellen ### Neues Spiel hinzufügen 1. **Modul-Datei erstellen:** ```bash sudo nano /etc/gameadm/modules/neuespiel.sh ``` 2. **Grundstruktur implementieren:** ```bash #!/bin/bash # Neues Spiel Modul für gameadm # Konfiguration laden CONFIG_FILE="/etc/neuespiel-server.conf" if [[ -f "$CONFIG_FILE" ]]; then source "$CONFIG_FILE" fi # Standardwerte CONTAINER_NAME=${CONTAINER_NAME:-neuespiel-server} IMAGE=${IMAGE:-docker.io/beispiel/neuespiel:latest} DATA_DIR=${DATA_DIR:-/srv/neuespiel} PORT=${PORT:-12345} # Hilfsfunktionen is_running() { podman inspect -f '{{.State.Running}}' "$CONTAINER_NAME" 2>/dev/null | grep -q true } # Befehle implementieren cmd_start() { # Start-Logik hier } cmd_stop() { # Stop-Logik hier } # Weitere Befehle... ``` 3. **Ausführbar machen:** ```bash sudo chmod +x /etc/gameadm/modules/neuespiel.sh ``` ### Erforderliche Funktionen Jedes Modul muss folgende Funktionen implementieren: - `cmd_start()` - Server starten - `cmd_stop()` - Server stoppen - `cmd_status()` - Status anzeigen - `cmd_logs()` - Logs anzeigen - `cmd_help()` - Hilfe anzeigen Optionale Funktionen: - `cmd_restart()` - Server neu starten - `cmd_follow()` - Logs folgen - `cmd_update()` - Image aktualisieren ## Konfiguration ### Rust Server - **Datei:** `/etc/rust-server.conf` - **Beispiel:** ```bash CONTAINER_NAME=rust-game IMAGE=docker.io/didstopia/rust-server:latest DATA_DIR=/srv/rust PORT=28015 RCON_PORT=28016 MAXPLAYERS=4 RUST_SERVER_NAME="Mein Rust Server" ``` ### Minecraft Server - **Datei:** `/etc/minecraft-server.conf` - **Beispiel:** ```bash CONTAINER_NAME=minecraft-server IMAGE=docker.io/itzg/minecraft-server:latest DATA_DIR=/srv/minecraft PORT=25565 MEMORY_LIMIT=2g VERSION=LATEST ``` ## Migration von rustadm ### Vor der Migration ```bash # Backup der alten Konfiguration sudo cp /etc/rust-server.conf /etc/rust-server.conf.backup # Backup des alten Skripts sudo cp /usr/local/bin/rustadm /usr/local/bin/rustadm.backup ``` ### Nach der Migration ```bash # Alte Befehle durch neue ersetzen rustadm start → gameadm rust start rustadm stop → gameadm rust stop rustadm status → gameadm rust status rustadm logs → gameadm rust logs ``` ## Vorteile der neuen Architektur 1. **Modularität** - Einfaches Hinzufügen neuer Spiele 2. **Wartbarkeit** - Zentrale Logik im Hauptskript 3. **Konsistenz** - Einheitliche Befehle für alle Spiele 4. **Erweiterbarkeit** - Neue Befehle pro Spiel möglich 5. **Farbige Ausgabe** - Bessere Benutzerfreundlichkeit 6. **Fehlerbehandlung** - Robuste Fehlerbehandlung 7. **Dokumentation** - Integrierte Hilfe für alle Module ## Troubleshooting ### Modul wird nicht gefunden ```bash # Berechtigungen prüfen ls -la /etc/gameadm/modules/ # Modul ausführbar machen sudo chmod +x /etc/gameadm/modules/meinspiel.sh ``` ### Fehler beim Laden des Moduls ```bash # Syntax prüfen bash -n /etc/gameadm/modules/meinspiel.sh # Debug-Ausgabe aktivieren bash -x /etc/gameadm/modules/meinspiel.sh ``` ### Container-Probleme ```bash # Podman-Status prüfen podman ps -a # Container-Logs direkt anzeigen podman logs meinspiel-server ``` ## Entwicklung ### Neue Befehle hinzufügen 1. **Im Modul neue Funktion erstellen:** ```bash cmd_neuerbefehl() { log "INFO" "Führe neuen Befehl aus..." # Implementierung hier } ``` 2. **Hilfe aktualisieren:** ```bash cmd_help() { cat <