- 🔍 Syntax-Checks für alle Bash-Skripte - 🛠️ Installation Tests ohne root-Rechte - 📦 Abhängigkeiten-Tests für verschiedene OS - 🎮 Module Tests und Syntax-Validation - 🔒 Security Checks für gefährliche Befehle - 🚀 Integration Tests für gameadm Funktionen - 📊 Umfassender Test-Report Testet die komplette gameadm Installation Pipeline mit Podman Backend. |
||
|---|---|---|
| bin | ||
| modules | ||
| .woodpecker.yml | ||
| README.md | ||
| install.sh | ||
| live-test.md | ||
| minecraft-server.conf | ||
| webhook-test.md | ||
README.md
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)
curl -fsSL http://localhost:3000/pp1l/gameadm/raw/branch/main/install.sh | sudo bash
Oder mit gameadm selbst
# Lade gameadm herunter
curl -fsSL http://localhost:3000/pp1l/gameadm/raw/branch/main/bin/gameadm -o gameadm
chmod +x gameadm
# Installiere mit integrierter Funktion
sudo ./gameadm install
Manuelle Installation
git clone http://localhost:3000/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
gameadm <spiel> <befehl> [optionen]
Verfügbare Spiele
- rust - Rust Game Server (vollständig funktional)
- mc - Minecraft Server (Beispiel-Modul)
Verfügbare Befehle (pro Spiel)
start- Startet den Serverstop- Stoppt den Serverrestart- Startet Server neustatus- Zeigt Server-Statuslogs- Zeigt Server-Logsfollow- Folgt Logs in Echtzeitupdate- Aktualisiert Server-Imagehelp- Zeigt Hilfe für das Spiel
Beispiele
# 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
- Modul-Datei erstellen:
sudo nano /etc/gameadm/modules/neuespiel.sh
- Grundstruktur implementieren:
#!/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...
- Ausführbar machen:
sudo chmod +x /etc/gameadm/modules/neuespiel.sh
Erforderliche Funktionen
Jedes Modul muss folgende Funktionen implementieren:
cmd_start()- Server startencmd_stop()- Server stoppencmd_status()- Status anzeigencmd_logs()- Logs anzeigencmd_help()- Hilfe anzeigen
Optionale Funktionen:
cmd_restart()- Server neu startencmd_follow()- Logs folgencmd_update()- Image aktualisieren
Konfiguration
Rust Server
- Datei:
/etc/rust-server.conf - Beispiel:
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:
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
# 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
# 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
- Modularität - Einfaches Hinzufügen neuer Spiele
- Wartbarkeit - Zentrale Logik im Hauptskript
- Konsistenz - Einheitliche Befehle für alle Spiele
- Erweiterbarkeit - Neue Befehle pro Spiel möglich
- Farbige Ausgabe - Bessere Benutzerfreundlichkeit
- Fehlerbehandlung - Robuste Fehlerbehandlung
- Dokumentation - Integrierte Hilfe für alle Module
Troubleshooting
Modul wird nicht gefunden
# 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
# Syntax prüfen
bash -n /etc/gameadm/modules/meinspiel.sh
# Debug-Ausgabe aktivieren
bash -x /etc/gameadm/modules/meinspiel.sh
Container-Probleme
# Podman-Status prüfen
podman ps -a
# Container-Logs direkt anzeigen
podman logs meinspiel-server
Entwicklung
Neue Befehle hinzufügen
- Im Modul neue Funktion erstellen:
cmd_neuerbefehl() {
log "INFO" "Führe neuen Befehl aus..."
# Implementierung hier
}
- Hilfe aktualisieren:
cmd_help() {
cat <<EOF
...
neuerbefehl - Beschreibung des neuen Befehls
...
EOF
}
Gemeinsame Funktionen
Das Hauptskript stellt folgende Funktionen zur Verfügung:
log(level, message)- Logging mit Farbenshow_help()- Globale Hilfeload_game_module(game)- Modul laden
Lizenz
Dieses Projekt folgt den gleichen Lizenzbedingungen wie das ursprüngliche System.