Log-Rotation fuer Apache-, PHP- und XAseco-Logs eingerichtet

This commit is contained in:
Patrick Asmus (scriptos)
2026-03-23 22:14:38 +01:00
parent 7710a032d9
commit cbb918d6b2
7 changed files with 115 additions and 0 deletions
+6
View File
@@ -15,6 +15,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
php-mysql \
php-curl \
default-mysql-client \
logrotate \
&& rm -rf /var/lib/apt/lists/*
# Apache mod_rewrite aktivieren und AllowOverride fuer .htaccess (RemoteCP-Sicherheit)
@@ -148,6 +149,11 @@ RUN cp -a /opt/tmserver/xaseco /opt/tmserver/default-xaseco
# PHP-Debug-Konfiguration: wird zur Laufzeit vom Startup-Script gesetzt
# (kein Rebuild noetig nur Container neustarten)
# Log-Rotation: logrotate-Konfiguration ins Image kopieren
# Wird zur Laufzeit stuendlich per Background-Loop ausgefuehrt (kein cron noetig).
COPY assets/config/logrotate.conf /etc/logrotate.d/tmserver
RUN chmod 644 /etc/logrotate.d/tmserver
# --- Umgebungsvariablen ---
# Sensible Werte (Passwoerter, Keys) werden NICHT im Image hinterlegt,
# sondern muessen zur Laufzeit uebergeben werden (z.B. via .env-Datei).
+18
View File
@@ -1101,5 +1101,23 @@ elif [ "$XMLRPC_READY" = "true" ]; then
echo "==> Forced Mods: Keine FORCE_MOD_*-Variablen gesetzt. Ueberspringe."
fi
# ============================================================
# Log-Rotation: Hintergrundprozess starten
# ============================================================
# logrotate wird stuendlich ausgefuehrt, um Apache-, PHP- und
# XAseco-Logs groessenbasiert zu rotieren (max. 10 MB pro Datei,
# 5 rotierte Dateien). Da im Container kein cron laeuft, wird
# ein einfacher Background-Loop verwendet.
# ============================================================
echo "==> Starte Log-Rotation (stuendlich, groessenbasiert 10 MB)..."
(
while true; do
sleep 3600
/usr/sbin/logrotate /etc/logrotate.d/tmserver --state /tmp/logrotate.state
done
) &
LOGROTATE_PID=$!
echo " Log-Rotation gestartet (PID: ${LOGROTATE_PID})"
# Auf TrackmaniaServer warten (Hauptprozess)
wait $TM_PID
+55
View File
@@ -0,0 +1,55 @@
# ============================================================
# Log-Rotation fuer tmserver-docker
# ============================================================
# Wird stuendlich per Background-Loop ausgefuehrt.
# Rotation: groessenbasiert (10 MB), max. 5 rotierte Dateien.
# ============================================================
# Apache Access- und Error-Log
/var/log/apache2/access.log
/var/log/apache2/error.log
{
size 10M
rotate 5
missingok
notifempty
compress
delaycompress
copytruncate
}
# PHP Error-Log
/var/log/php_errors.log
{
size 10M
rotate 5
missingok
notifempty
compress
delaycompress
copytruncate
}
# XAseco-Log (liegt im persistenten Volume)
/opt/tmserver/xaseco/aseco.log
{
size 10M
rotate 5
missingok
notifempty
compress
delaycompress
copytruncate
}
# AdminServ-Logs (liegen im persistenten Volume)
/var/www/html/logs/*.log
{
size 10M
rotate 5
missingok
notifempty
compress
delaycompress
copytruncate
}
+1
View File
@@ -33,6 +33,7 @@
│ │ │ └── maps-creatematchset.php # MatchSet-Erstellung Script
│ │ ├── custom_game_settings.txt # MatchSettings (Spielmodus, Map-Rotation)
│ │ ├── dedicated_cfg.txt # Server-Config-Template (mit Platzhaltern)
│ │ ├── logrotate.conf # Log-Rotation-Konfiguration (groessenbasiert)
│ │ ├── remotecp/
│ │ │ └── plugins/
│ │ │ ├── CustomPoints/
+2
View File
@@ -59,6 +59,8 @@ Alternativ können die PHP-Logs eingesehen werden:
docker exec tmserver cat /var/log/php_errors.log
```
> **Hinweis:** Alle Logs (Apache, PHP, AdminServ) werden automatisch per logrotate rotiert (max. 10 MB pro Datei, 5 rotierte Dateien). Siehe [Konfiguration Log-Rotation](konfiguration.md#log-rotation).
### AdminServ komplett zurücksetzen
Falls AdminServ in einen inkonsistenten Zustand geraten ist:
+31
View File
@@ -106,6 +106,37 @@ Der Ordner `GameData/Config/` enthält:
| `Default.SystemConfig.Gbx` | System-Konfiguration |
| `AdminServ/ServerOptions/` | Von AdminServ exportierte Server-Einstellungen |
## Log-Rotation
Alle Log-Dateien im Container werden automatisch per `logrotate` rotiert, damit sie nicht unbegrenzt wachsen. Die Rotation läuft **größenbasiert** als Hintergrundprozess (stündliche Prüfung, kein Cron nötig).
### Einstellungen
| Parameter | Wert |
|-----------|------|
| Maximale Dateigröße | 10 MB |
| Rotierte Dateien behalten | 5 |
| Komprimierung | Ja (gzip, verzögert) |
| Leere Logs überspringen | Ja |
### Rotierte Log-Dateien
| Log | Pfad im Container | Persistenz |
|-----|--------------------|------------|
| Apache Access | `/var/log/apache2/access.log` | Nur im Container |
| Apache Error | `/var/log/apache2/error.log` | Nur im Container |
| PHP Errors | `/var/log/php_errors.log` | Nur im Container |
| XAseco | `/opt/tmserver/xaseco/aseco.log` | Volume (`./data/xaseco/`) |
| AdminServ | `/var/www/html/logs/*.log` | Volume (`./data/controlpanel/logs/`) |
Rotierte Dateien werden als `*.1` (vorherige), `*.2.gz`, `*.3.gz` usw. aufbewahrt.
### Konfigurationsdatei
Die logrotate-Konfiguration liegt im Image unter `/etc/logrotate.d/tmserver` (Quelle: `assets/config/logrotate.conf`). Sie wird beim Bau des Images fest eingebettet und erfordert keine manuelle Anpassung.
> **Hinweis:** Die Log-Rotation ist nach einem Image-Update automatisch aktiv auch bei bestehenden Installationen. Es sind keine manuellen Schritte nötig.
## AdminServ ServerOptions-Import
Wenn über AdminServ Änderungen an den Server-Optionen vorgenommen und als Export gespeichert werden (z.B. Servername, Beschreibung, Spielerzahl), werden diese beim nächsten Container-Start **automatisch** in die `dedicated_cfg.txt` übernommen.
+2
View File
@@ -190,6 +190,8 @@ Die XAseco-Logdatei befindet sich unter:
Bei Problemen ist dies die erste Anlaufstelle für die Fehlersuche.
> **Hinweis:** Die XAseco-Logdatei wird automatisch per logrotate rotiert (max. 10 MB pro Datei, 5 rotierte Dateien). Alte Logs werden komprimiert als `aseco.log.1.gz`, `aseco.log.2.gz` usw. aufbewahrt. Siehe [Konfiguration Log-Rotation](konfiguration.md#log-rotation).
## Chat-Befehle
Nachfolgend eine Übersicht der wichtigsten Befehle, die im Spielchat verfügbar sind. Eine vollständige Liste aller Befehle findest du in der offiziellen Dokumentation unter: https://docs.xaseco.org/commands.php