Files
tmserver-docker/docs/xaseco.md

16 KiB
Raw Permalink Blame History

XAseco

XAseco ist ein Server-Controller für TrackMania Nations Forever. Er verwaltet lokale Rekorde, Dedimania-Weltrekorde, Karma/Votes, eine Track-Jukebox und vieles mehr direkt im Spielchat.

Im Container wird die modifizierte Version XAseco 1.16 verwendet, die für PHP 7.x angepasst wurde (Patches von Bueddel, Xymph, undef.de und reaby).

Funktionsweise

XAseco verbindet sich über XML-RPC mit dem TrackMania-Server und reagiert auf Spielereignisse (neue Rekorde, Spieler-Connects, Chat-Befehle usw.). Die Daten werden in einer eigenen MySQL-Datenbank gespeichert.

TeamSpeak 3 Integration

XAseco enthält ein Plugin (plugin.teamspeak3.php), das im Spiel ein Widget mit den aktuell verbundenen TeamSpeak-3-Nutzern anzeigt. Das Plugin ist standardmäßig aktiviert und verwendet ein eigenes Gateway, das im Container mitgeliefert wird (das Original-Gateway des Plugin-Entwicklers ist nicht mehr verfügbar).

TS3-Server konfigurieren

Die Konfiguration erfolgt über die Datei data/xaseco/teamspeak3.xml. Dort kann der eigene TeamSpeak-3-Server eingetragen werden:

<?xml version="1.0" encoding="utf-8"?>
<settings>
        <!-- Server Configuration, can be address or ip -->
        <server>ts3.techniverse.net</server>
        <serverid>1</serverid>
        <serverport>9987</serverport>
        <queryport>10011</queryport>

        <!-- Channel & Update Settings -->
        <defaultchannel></defaultchannel>
        <subchannel></subchannel>
        <channelpassword></channelpassword>
        <update_interval>30</update_interval>

        <!-- Helpers and images -->
        <helperURL>http://assets.techniverse.net/tm/ts3gateway/gateway3.html</helperURL>
        <logoURL>http://assets.techniverse.net/tm/ts3gateway/ts3logo.jpg</logoURL>

        <!-- Widget position -->
        <posx>-64</posx>
        <posy>45</posy>
</settings>
Feld Beschreibung
server Hostname oder IP des TS3-Servers
serverid Virtuelle-Server-ID (meist 1)
serverport Voice-Port des TS3-Servers (Standard: 9987)
queryport ServerQuery-Port (Standard: 10011)
defaultchannel Standard-Channel (leer = Server-Default)
subchannel Sub-Channel (optional)
channelpassword Channel-Passwort (optional)
update_interval Aktualisierungsintervall in Sekunden
helperURL URL zur Gateway-HTML-Seite (nicht ändern)
logoURL URL zum TS3-Logo im Widget (nicht ändern)
posx / posy Widget-Position im Spiel

Hinweis: Standardmäßig ist der TS3-Server ts3.techniverse.net vorkonfiguriert. Zum Anpassen einfach nach dem ersten Start die Datei data/xaseco/teamspeak3.xml bearbeiten. Die Felder helperURL und logoURL verweisen auf das mitgelieferte Gateway und sollten nicht geändert werden.

Konfiguration

Die Konfiguration erfolgt ausschließlich über Umgebungsvariablen in der .env-Datei. Beim ersten Start (leeres XAseco-Volume) werden die Werte automatisch in die XML-Konfigurationsdateien eingetragen.

Erforderliche Variablen

Variable Beschreibung Standard
XASECO_MASTERADMIN_LOGIN Dein Spieler-Login (MasterAdmin mit allen Rechten) (muss gesetzt werden)
XASECO_DB_PASSWORD Passwort für die XAseco-Datenbank (muss gesetzt werden)

Optionale Variablen

Variable Beschreibung Standard
XASECO_ENABLED XAseco aktivieren/deaktivieren true
XASECO_DB_HOST Hostname des Datenbankservers mariadb
XASECO_DB_NAME Name der XAseco-Datenbank xaseco
XASECO_DB_USER Datenbank-Benutzername xaseco
XASECO_DEDIMANIA_NATION Dedimania-Nation (IOC-Code, z.B. DEU, AUT, CHE) DEU
XASECO_HEALTHCHECK Automatische Überwachung und Neustart bei Absturz true
XASECO_HEALTHCHECK_INTERVAL Prüfintervall des Healthchecks in Sekunden 60

Automatisch übernommene Variablen

Diese Werte werden aus der bestehenden Server-Konfiguration übernommen und müssen nicht separat gesetzt werden:

Quelle Verwendung in XAseco
SERVER_SA_PASSWORD SuperAdmin-Passwort für die XML-RPC-Verbindung
SERVER_XMLRPC_PORT XML-RPC-Port für die Verbindung zum TM-Server
SERVER_LOGIN Dedimania Server-Login
SERVER_LOGIN_PASSWORD Dedimania Server-Passwort

Datenbank

XAseco verwendet eine eigene Datenbank im selben MariaDB-Container. Die Datenbank und der Benutzer werden beim ersten Start des MariaDB-Containers automatisch erstellt (über ein Init-Script).

Das Datenbankschema (drei Tabellen-Dateien) wird beim ersten Start des tmserver-Containers automatisch importiert.

Manueller Zugriff

Falls nötig, kann die XAseco-Datenbank über den MariaDB-Root-Zugang administriert werden:

docker exec -it tmserver-mariadb mysql -u root -p

Nachträgliche Installation (bestehende MariaDB)

Das Init-Script (assets/db/init-xaseco-db.sh) wird von MariaDB nur beim allerersten Start (leeres data/mariadb/-Volume) ausgeführt. Wenn der MariaDB-Container bereits Daten enthält (z.B. weil er zuvor ohne XAseco lief), muss die Datenbank einmalig manuell erstellt werden:

docker exec -it tmserver-mariadb mysql -u root -p -e "
  CREATE DATABASE IF NOT EXISTS xaseco CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  CREATE USER IF NOT EXISTS 'xaseco'@'%' IDENTIFIED BY 'DEIN_XASECO_DB_PASSWORT';
  GRANT ALL PRIVILEGES ON xaseco.* TO 'xaseco'@'%';
  FLUSH PRIVILEGES;"

Ersetze DEIN_XASECO_DB_PASSWORT durch den Wert von XASECO_DB_PASSWORD aus der .env-Datei. Das Tabellen-Schema wird anschließend beim nächsten Container-Start automatisch importiert, sofern das XAseco-Volume noch leer ist.

Admin-System

XAseco kennt drei Berechtigungsstufen:

Stufe Beschreibung
MasterAdmin Volle Kontrolle (wird über XASECO_MASTERADMIN_LOGIN gesetzt)
Admin Erweiterte Befehle (ebenfalls über XASECO_MASTERADMIN_LOGIN gesetzt)
Operator Eingeschränkte Moderationsbefehle

Weitere Admins/Operatoren können nach dem ersten Start manuell in data/xaseco/adminops.xml eingetragen werden.

Persistente Daten

Alle XAseco-Daten werden im Volume ./data/xaseco/ gespeichert:

  • Konfigurationsdateien (config.xml, localdatabase.xml, dedimania.xml, ...)
  • Log-Datei (aseco.log)
  • Admin-/Operator-Listen (adminops.xml)

Deaktivieren

XAseco kann über die .env-Datei deaktiviert werden:

XASECO_ENABLED=false

Der TrackMania-Server läuft dann ohne Server-Controller.

Healthcheck / Watchdog

XAseco wird automatisch durch einen Watchdog-Prozess überwacht. Dieser erkennt Abstürze und verlorene Verbindungen (z.B. wenn das Overlay im Spiel verschwindet) und startet XAseco selbstständig neu.

Funktionsweise

Der Watchdog prüft regelmäßig (Standard: alle 60 Sekunden):

  1. PID-Check: Läuft der XAseco-PHP-Prozess noch?
  2. Log-Check: Enthält das XAseco-Log fatale Fehler oder Verbindungsabbrüche?
  3. XMLRPC-Check: Ist der TM-Server noch erreichbar?

Bei erkannten Problemen wird XAseco automatisch beendet und neu gestartet. Crash-Logs werden zur Fehleranalyse unter data/xaseco/aseco_crash_<TIMESTAMP>.log gesichert (max. 5 Dateien).

Konfiguration

Variable Beschreibung Standard
XASECO_HEALTHCHECK Watchdog aktivieren/deaktivieren true
XASECO_HEALTHCHECK_INTERVAL Prüfintervall in Sekunden 60
# Healthcheck deaktivieren
XASECO_HEALTHCHECK=false

# Prüfintervall auf 30 Sekunden verkürzen
XASECO_HEALTHCHECK_INTERVAL=30

Hinweis: Der Watchdog ist standardmäßig aktiviert und erfordert keine zusätzliche Konfiguration. Bei bestehenden Installationen wird er nach dem nächsten Image-Update automatisch aktiv.

Logs

Die XAseco-Logdatei befindet sich unter:

./data/xaseco/aseco.log

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.

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

Hilfe & Info

Befehl Beschreibung
/help Zeigt alle verfügbaren Befehle
/helpall Zeigt ausführliche Hilfe zu allen Befehlen
/xaseco Zeigt Infos über die XAseco-Version
/server Zeigt Infos über den Server
/plugins Zeigt Liste der aktiven Plugins
/time Zeigt aktuelle Serverzeit und Datum

Rekorde & Statistiken

Befehl Beschreibung
/recs Zeigt alle lokalen Rekorde auf der aktuellen Strecke
/recs pb Zeigt deine persönliche Bestzeit
/recs new Zeigt neu gefahrene Rekorde
/recs live Zeigt Rekorde der Online-Spieler
/pb Zeigt deine persönliche Bestzeit auf der aktuellen Strecke
/dedirecs Zeigt Dedimania-Rekorde auf der aktuellen Strecke
/dedipb Zeigt deine persönliche Dedimania-Bestzeit
/dedistats Zeigt Dedimania-Streckenstatistiken
/best Zeigt deine besten Rekorde
/worst Zeigt deine schlechtesten Rekorde
/summary Zeigt eine Zusammenfassung aller deiner Rekorde
/stats Zeigt Statistiken des aktuellen Spielers
/wins Zeigt Siege des aktuellen Spielers

Rankings & Toplisten

Befehl Beschreibung
/rank Zeigt deinen aktuellen Serverrang
/nextrank Zeigt den nächst besser platzierten Spieler
/top10 Zeigt die 10 bestplatzierten Spieler
/top100 Zeigt die 100 bestplatzierten Spieler
/topwins Zeigt die 100 siegreichsten Spieler
/toprecs Zeigt Top 100 der Rekord-Halter
/topsums Zeigt Top 100 der Top-3-Rekord-Halter
/active Zeigt die 100 aktivsten Spieler
/topclans Zeigt die 10 bestplatzierten Clans

Strecken & Jukebox

Befehl Beschreibung
/track Zeigt Infos über die aktuelle Strecke
/nextmap Zeigt den Namen der nächsten Strecke
/playtime Zeigt, wie lange die aktuelle Strecke läuft
/list Listet Strecken auf dem Server (siehe /list help)
/list nofinish Strecken, auf denen du keinen Rang hast
/list newest Die neuesten Strecken
/list <name> Suche nach Strecken- oder Autorennamen
/jukebox Track-Jukebox (siehe /jukebox help)
/jukebox list Zeigt kommende Strecken
/jukebox <#> Fügt Strecke Nr. <#> aus /list hinzu
/jukebox drop Entfernt deine hinzugefügte Strecke
/add <ID> Fügt eine Strecke direkt von TMX hinzu
/history Zeigt die 10 zuletzt gespielten Strecken

Karma & Voting

Befehl Beschreibung
/karma Zeigt Karma der aktuellen Strecke
/++ Positive Bewertung für die aktuelle Strecke
/-- Negative Bewertung für die aktuelle Strecke
/helpvote Zeigt Infos zum Chat-Voting-System
/endround Startet Vote zum Beenden der aktuellen Runde
/replay Startet Vote zum Wiederholen der Strecke
/skip Startet Vote zum Überspringen der Strecke
/kick Startet Vote zum Kicken eines Spielers
/y Stimmt mit Ja bei einem laufenden Vote
/cancel Bricht deinen aktuellen Vote ab

Kommunikation

Befehl Beschreibung
/pm <login> <msg> Sendet eine private Nachricht
/pmlog Zeigt Verlauf deiner privaten Nachrichten
/chatlog Zeigt Verlauf der letzten Chat-Nachrichten
/me Drückt eine Aktion/Emotion aus
/hi Sendet eine Hallo-Nachricht an alle
/bye Sendet eine Tschüss-Nachricht an alle
/gg Sendet "Good Game" an alle
/n1 Sendet "Nice One" an alle
/brb Sendet "Be Right Back" an alle
/afk Sendet "Away From Keyboard" an alle

Spieleroptionen

Befehl Beschreibung
/settings Zeigt deine persönlichen Einstellungen
/cps Setzt Checkpoint-Tracking für lokale Rekorde
/dedicps Setzt Checkpoint-Tracking für Dedimania-Rekorde
/mute <login> Chat eines Spielers stummschalten
/unmute <login> Stummschaltung aufheben
/mutelist Zeigt Liste der stummgeschalteten Spieler
/players Zeigt aktuelle Spieler-Liste (Nicks/Logins)
/ranks Zeigt Liste der Online-Ränge
/bootme Kickt dich selbst vom Server

Admin-Befehle (/admin)

Diese Befehle sind nur für Admins und MasterAdmins verfügbar.

Befehl Beschreibung
/admin help Zeigt alle Admin-Befehle
/admin helpall Zeigt ausführliche Hilfe zu allen Admin-Befehlen

Server-Einstellungen:

Befehl Beschreibung
/admin setservername <name> Ändert den Servernamen
/admin setpwd <pwd> Ändert das Spieler-Passwort
/admin setspecpwd <pwd> Ändert das Zuschauer-Passwort
/admin setmaxplayers <#> Setzt maximale Spieleranzahl
/admin setmaxspecs <#> Setzt maximale Zuschauerzahl
/admin setgamemode <mode> Setzt Spielmodus (ta/rounds/team/laps/stunts/cup)

Strecken-Verwaltung:

Befehl Beschreibung
/admin nextmap Erzwingt nächste Strecke
/admin restartmap Startet aktuelle Strecke neu
/admin replaymap Wiederholt aktuelle Strecke (via Jukebox)
/admin endround Erzwingt Ende der aktuellen Runde
/admin add <ID> Fügt Strecke von TMX hinzu
/admin addlocal <datei> Fügt lokale Strecke hinzu
/admin remove <#> Entfernt Strecke aus der Rotation
/admin erasethis Entfernt aktuelle Strecke und löscht Datei
/admin shuffle Mischt die Streckenliste zufällig
/admin writetracklist Speichert aktuelle Streckenliste
/admin readtracklist Lädt Streckenliste aus Datei

Jukebox:

Befehl Beschreibung
/admin dropjukebox <#> Entfernt eine Strecke aus der Jukebox
/admin clearjukebox Leert die gesamte Jukebox
/admin pass Genehmigt einen laufenden Vote
/admin cancel Bricht einen laufenden Vote ab

Spieler-Moderation:

Befehl Beschreibung
/admin warn <login> Sendet eine Warnung an einen Spieler
/admin kick <login> Kickt einen Spieler vom Server
/admin kickghost <login> Kickt einen Ghost-Spieler
/admin ban <login> Bannt einen Spieler
/admin unban <login> Entbannt einen Spieler
/admin black <login> Setzt einen Spieler auf die Blacklist
/admin unblack <login> Entfernt einen Spieler von der Blacklist
/admin mute <login> Schaltet einen Spieler global stumm
/admin unmute <login> Hebt globale Stummschaltung auf
/admin forcespec <login> Erzwingt Zuschauer-Modus
/admin forceteam <login> Erzwingt Team-Zuordnung (Blue/Red)

Admin-Verwaltung:

Befehl Beschreibung
/admin addadmin <login> Fügt einen neuen Admin hinzu
/admin removeadmin <login> Entfernt einen Admin
/admin addop <login> Fügt einen neuen Operator hinzu
/admin removeop <login> Entfernt einen Operator
/admin listmasters Zeigt MasterAdmin-Liste
/admin listadmins Zeigt Admin-Liste
/admin listops Zeigt Operator-Liste

Rekorde & System:

Befehl Beschreibung
/admin delrec <#> Löscht einen bestimmten Rekord auf der aktuellen Strecke
/admin wall <msg> Zeigt Popup-Nachricht für alle Spieler
/admin pm <msg> Sendet private Nachricht an alle Admins
/admin server Zeigt detaillierte Server-Einstellungen
/admin shutdown Fährt XAseco herunter
/admin shutdownall Fährt Server und XAseco herunter

Tipp: Eine vollständige Referenz aller Befehle (inkl. /jfreu-Befehle für erweiterte Moderation) findest du unter: https://docs.xaseco.org/commands.php