5.7 KiB
AdminServ – Server-Verwaltungsoberfläche
Die Server-Verwaltungsoberfläche basiert auf AdminServ und ist über Port 80 erreichbar.
Einrichtung
AdminServ wird beim ersten Container-Start vollständig automatisch konfiguriert:
- Serververbindung (Adresse
127.0.0.1, XML-RPC-Port) - Server-Eintrag (Name, DisplayServ-Passwort)
- Konfigurationspasswort (siehe Konfigurationsseite (
/config))
Es ist kein manuelles Setup nötig.
Verbindung zum Server
http://<host-server-des-containers>im Browser aufrufen- Den Server aus der Liste auswählen
- Admin-Stufe wählen (SuperAdmin, Admin oder User) und das zugehörige Passwort eingeben
Standard-Passwörter
| Stufe | Standard-Passwort |
|---|---|
| SuperAdmin | SuperAdmin |
| Admin | Admin |
| User | User |
Diese Passwörter werden über die .env-Datei gesetzt (SERVER_SA_PASSWORD, SERVER_ADM_PASSWORD, SERVER_USER_PASSWORD) und beim ersten Start in die dedicated_cfg.txt geschrieben. AdminServ liest die Passwörter über die XML-RPC-Verbindung direkt vom TM-Server.
Die Admin-Stufen können unter http://<host-server-des-containers>/config geändert werden.
Hinweis: Die Standard-Passwörter in der
.env.examplesind öffentlich einsehbar. Ändere sie unbedingt, bevor du den Server produktiv einsetzt. Siehe Umgebungsvariablen.
Persistente Speicherung
Alle AdminServ-Daten (Passwort, Server-Einträge, Konfiguration, Logs) werden über einen Bind-Mount (./data/controlpanel) persistent auf dem Host gespeichert. Beim ersten Start werden die Dateien automatisch aus dem Image ins Volume kopiert.
| Host-Pfad | Container-Pfad | Beschreibung |
|---|---|---|
./data/controlpanel |
/var/www/html |
AdminServ- und RemoteCP-Installation |
Hinweis: Im selben Volume befindet sich auch RemoteCP unter
./data/controlpanel/remotecp/.
Fehlerbehebung
Login funktioniert nicht nach dem Anlegen eines Servers
Falls der Login nicht funktioniert oder ein Authentifizierungsfehler angezeigt wird, können die PHP-Logs Aufschluss geben:
- In der
.env-DateiPHP_DISPLAY_ERRORS=truesetzen - Container neu starten:
docker compose up -d - AdminServ im Browser öffnen und den Fehler reproduzieren
- Die PHP-Fehlermeldung wird direkt auf der Seite angezeigt
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.
AdminServ komplett zurücksetzen
Falls AdminServ in einen inkonsistenten Zustand geraten ist:
# AdminServ-Daten auf dem Host löschen
rm -rf ./data/controlpanel/*
# Container neu starten – AdminServ wird frisch initialisiert
docker compose up -d
Konfigurationsseite (/config)
AdminServ bringt unter http://<host-ip>/config eine eigene Konfigurationsseite mit, über die Server-Einträge hinzugefügt, geändert oder gelöscht werden können. Diese Seite ist durch ein separates Passwort geschützt (OnlineConfig::PASSWORD in adminserv.cfg.php, MD5-gehasht).
Da dieser Container als Standalone-Setup läuft und ausschließlich den einen lokalen TrackMania-Server bedient, wird die /config-Seite nicht benötigt – der Server-Eintrag wird beim ersten Start automatisch angelegt (Adresse, XML-RPC-Port, Passwörter).
Zur Absicherung wird das Konfigurationspasswort beim ersten Container-Start automatisch durch einen zufällig generierten MD5-Hash ersetzt. Damit ist die /config-Seite vor unbefugtem Zugriff geschützt, ohne dass ein Benutzer ein Passwort vergeben oder sich merken muss.
Hinweis: Falls du dennoch Zugriff auf die
/config-Seite benötigst (z.B. für Debugging), kannst du den MD5-Hash indata/controlpanel/config/adminserv.cfg.phpmanuell auf ein bekanntes Passwort setzen. Beispiel:const PASSWORD = '5f4dcc3b5aa765d61d8327deb882cf99';entspricht dem Passwortpassword.
Gepatchte AdminServ-Bugs (TmForever)
AdminServ (v2.1.1) enthält zwei Bugs, die speziell im Zusammenspiel mit TmForever auftreten. Diese werden beim Container-Start automatisch gepatcht – auch bei bestehenden Volumes.
Falscher Pfad in MatchSettings-Dateien
Beim Erstellen einer neuen MatchSettings-Datei über AdminServ wurden die Track-Pfade falsch geschrieben. Statt des tatsächlichen Ordners (z.B. Challenges/Downloaded/) wurde immer der Speicherort der MatchSettings (MatchSettings/) als Pfad-Präfix verwendet:
<!-- Fehlerhaft (Original) -->
<file>MatchSettings/speed vs. fullspeed.Challenge.Gbx</file>
<!-- Korrekt (nach Patch) -->
<file>Challenges/Downloaded/speed vs. fullspeed.Challenge.Gbx</file>
Ursache: Die AJAX-Funktion get_matchset_mapimport.php hat den URL-Parameter d (= MatchSettings-Speicherordner) als relativen Pfad für die Map-Dateinamen verwendet, anstatt den tatsächlichen Ordner aus der Dropdown-Auswahl zu berechnen.
Betroffene Datei: resources/ajax/get_matchset_mapimport.php
GetModeScriptInfo-Fehler (-506)
Beim Speichern einer MatchSettings-Datei erschien die Fehlermeldung:
[-506] Method 'GetModeScriptInfo' not defined
Ursache: GetModeScriptInfo ist eine XML-RPC-Methode, die nur in ManiaPlanet/TM2 existiert. AdminServ hat sie ohne Versionsprüfung aufgerufen. An anderen Stellen im Code wurde korrekt mit SERVER_VERSION_NAME != 'TmForever' unterschieden – nur hier fehlte die Prüfung.
Betroffene Datei: resources/process/maps-creatematchset.php