265 lines
5.6 KiB
Markdown
265 lines
5.6 KiB
Markdown
# 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 http://localhost:3000/pp1l/gameadm/raw/branch/main/install.sh | sudo bash
|
|
```
|
|
|
|
### Oder mit gameadm selbst
|
|
```bash
|
|
# 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
|
|
```bash
|
|
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
|
|
```bash
|
|
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
|
|
```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 <<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.
|
|
# Test Update
|