Modulares Game Server Administration System
Go to file
Automation 9c24fa2304
ci/woodpecker/push/woodpecker Pipeline failed Details
Fix clone step with alpine/git image
- Use alpine/git image for clone step to resolve git issues
- This should fix the clone operation completely
- Keep pipeline steps focused on GameAdm testing
2025-08-14 23:31:21 +00:00
bin Fix: Correct repository URLs to pp1l/gameadm 2025-08-14 21:54:09 +00:00
modules feat: Vollständige Minecraft Server Implementation 2025-08-14 21:29:24 +00:00
.woodpecker.yml Fix clone step with alpine/git image 2025-08-14 23:31:21 +00:00
README.md Fix: Correct repository URLs to pp1l/gameadm 2025-08-14 21:54:09 +00:00
install.sh Fix: Correct repository URLs to pp1l/gameadm 2025-08-14 21:54:09 +00:00
minecraft-server.conf feat: Vollständige Minecraft Server Implementation 2025-08-14 21:29:24 +00:00
webhook-test.md Final webhook integration test Thu Aug 14 10:46:01 PM UTC 2025 2025-08-14 22:46:01 +00:00

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 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

# 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:
sudo nano /etc/gameadm/modules/neuespiel.sh
  1. 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...
  1. Ausführbar machen:
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:
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

  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

# 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

  1. Im Modul neue Funktion erstellen:
cmd_neuerbefehl() {
    log "INFO" "Führe neuen Befehl aus..."
    # Implementierung hier
}
  1. 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 Farben
  • show_help() - Globale Hilfe
  • load_game_module(game) - Modul laden

Lizenz

Dieses Projekt folgt den gleichen Lizenzbedingungen wie das ursprüngliche System.