From f7d3a9ce839fe6c22823b60da5f567b8e4956cd4 Mon Sep 17 00:00:00 2001 From: scriptos Date: Mon, 23 Mar 2026 09:25:48 +0100 Subject: [PATCH 1/4] docs: Doku an Code anpassen, AdminServ-Konfigurationspasswort automatisch absichern --- .env.example | 5 ++++- README.md | 3 +-- assets/bin/RunTrackmaniaServer.sh | 12 ++++++++++++ docs/README.md | 29 ++++++++++++++++++---------- docs/adminserv.md | 32 ++++++++++++++++++++++--------- docs/konfiguration.md | 1 + docs/schnellstart.md | 4 ++-- 7 files changed, 62 insertions(+), 24 deletions(-) diff --git a/.env.example b/.env.example index cd5a740..0ef78a0 100644 --- a/.env.example +++ b/.env.example @@ -69,12 +69,15 @@ FORCE_MOD_SPEED= FORCE_MOD_ALPINE= FORCE_MOD_RALLY= -# --- MatchSettings --- +# --- Spieleinstellungen (MatchSettings) --- # Steuert, welche MatchSettings-Datei beim Serverstart geladen wird. # "auto" = die neueste .txt-Datei in data/gamedata/Tracks/MatchSettings/ wird automatisch erkannt. # Alternativ kann ein expliziter Dateiname angegeben werden (z.B. "turnier_settings.txt"). MATCHSETTINGS_FILE=auto +# Warmup-Dauer für alle Runden (0 = deaktiviert, 1 = eine Runde Warmup) +ALLWARMUPDURATION=0 + # --- Debugging --- # Setze diesen Wert auf true, um PHP-Fehlermeldungen anzuzeigen. Dies kann bei der Fehlersuche hilfreich sein, sollte aber in einer Produktionsumgebung auf false belassen werden. PHP_DISPLAY_ERRORS=false diff --git a/README.md b/README.md index cafe7d4..75a694f 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,6 @@ Ein vollständiges Docker-Setup für einen **TrackMania Nations Forever**-Server - **[XAseco](docs/xaseco.md)** – Server-Controller, der lokale Rekorde, Dedimania-Weltrekorde, Karma/Votes und eine Track-Jukebox direkt im Spielchat verwaltet - **[AdminServ](docs/adminserv.md)** – Web-Oberfläche zur komfortablen Verwaltung und Konfiguration des Servers - **[RemoteCP](docs/remotecp.md)** – alternative Web-Verwaltungsoberfläche mit eigenem Login- und Benutzersystem -- **[Mods / Skins](docs/remotecp.md#mods--skins)** – über 50 vorkonfigurierte Stadium-Skins (gehostet auf [assets.techniverse.net](https://assets.techniverse.net/tm/skins/)), automatisch beim Start forcierbar Alle Komponenten laufen in einem einzigen Container und werden über Umgebungsvariablen konfiguriert. @@ -64,7 +63,7 @@ Die vollständige Dokumentation befindet sich im Ordner [`docs/`](docs/README.md ## Danksagung -Danke an **Thomas** ([retronerd.at](https://retronerd.at)), dass er mir sein Wissen zur Verfügung gestellt hat und dass er hier im Projekt mitgewirkt hat. +Ein herzliches Dankeschön an **[Thomas](https://retronerd.at)** – für seine tatkräftige Unterstützung, sein wertvolles Wissen und seine Mitwirkung an diesem Projekt. Ohne ihn wäre dieses Projekt nicht das, was es heute ist! ## Spiegelung diff --git a/assets/bin/RunTrackmaniaServer.sh b/assets/bin/RunTrackmaniaServer.sh index 54dfd89..e09a225 100644 --- a/assets/bin/RunTrackmaniaServer.sh +++ b/assets/bin/RunTrackmaniaServer.sh @@ -71,6 +71,18 @@ EOPHP chown www-data:www-data "$ADMINSERV_DIR/config/servers.cfg.php" echo " AdminServ-Server-Eintrag automatisch konfiguriert (Port: ${XMLRPC_PORT})." + # AdminServ-Konfigurationspasswort automatisch sichern + # OnlineConfig::PASSWORD in adminserv.cfg.php schuetzt die /config-Seite + # (Server hinzufuegen/aendern/loeschen). Da der Server-Eintrag bereits + # automatisch konfiguriert wird, ist kein manueller Zugriff noetig. + # Der Standard-Hash aus dem ZIP wird durch einen zufaelligen ersetzt. + ADMINSERV_CFG="$ADMINSERV_DIR/config/adminserv.cfg.php" + if [ -f "$ADMINSERV_CFG" ]; then + RANDOM_HASH=$(head -c 32 /dev/urandom | md5sum | cut -d' ' -f1) + sed -i "s|const PASSWORD = '[^']*';|const PASSWORD = '${RANDOM_HASH}';|" "$ADMINSERV_CFG" + echo " AdminServ-Konfigurationspasswort automatisch gesichert." + fi + echo " AdminServ-Dateien erfolgreich kopiert." # ============================================================ diff --git a/docs/README.md b/docs/README.md index bb10a03..0a38fa9 100644 --- a/docs/README.md +++ b/docs/README.md @@ -22,27 +22,36 @@ ``` ├── assets/ │ ├── bin/ # Binaries und Startscript -│ │ ├── AdminServ_v2.1.1.zip # AdminServ Web-UI -│ │ ├── remoteCP_v4.0.3.5.zip # RemoteCP Web-UI -│ │ ├── xaseco_v1.16.zip # XAseco Server-Controller +│ │ ├── AdminServ_v2.1.1.zip # AdminServ Web-UI +│ │ ├── remoteCP_v4.0.3.5.zip # RemoteCP Web-UI │ │ ├── RunTrackmaniaServer.sh # Container-Startscript -│ │ └── TrackmaniaServer_*.zip # Trackmania Server Binary +│ │ ├── TrackmaniaServer_2011-02-21.zip # Trackmania Server Binary +│ │ └── xaseco_v1.16.zip # XAseco Server-Controller │ ├── config/ +│ │ ├── adminserv/ # AdminServ-Konfiguration +│ │ │ ├── get_matchset_mapimport.php # MatchSet Map-Import Script +│ │ │ └── maps-creatematchset.php # MatchSet-Erstellung Script │ │ ├── custom_game_settings.txt # MatchSettings (Spielmodus, Map-Rotation) │ │ ├── dedicated_cfg.txt # Server-Config-Template (mit Platzhaltern) -│ │ └── remotecp/ -│ │ └── plugins/ -│ │ ├── CustomPoints/ -│ │ │ └── index.php # CustomPoints-Plugin fuer RemoteCP -│ │ └── Mods/ -│ │ └── settings.xml # Skin-Bibliothek (techniverse.net) +│ │ ├── remotecp/ +│ │ │ └── plugins/ +│ │ │ ├── CustomPoints/ +│ │ │ │ └── index.php # CustomPoints-Plugin fuer RemoteCP +│ │ │ └── Mods/ +│ │ │ ├── index.php # Mods-Plugin fuer RemoteCP +│ │ │ └── settings.xml # Skin-Bibliothek (techniverse.net) +│ │ └── xaseco/ +│ │ └── teamspeak3.xml # TeamSpeak3-Konfiguration fuer XAseco │ └── db/ │ └── init-xaseco-db.sh # MariaDB Init-Script fuer XAseco-DB ├── docs/ # Dokumentation ├── docker-compose.yml # Docker Compose Konfiguration ├── Dockerfile # Docker Build-Definition +├── .dockerignore # Docker-Ignore-Regeln ├── .env.example # Vorlage fuer Umgebungsvariablen ├── .env # Lokale Umgebungsvariablen (nicht im Git!) +├── .gitattributes # Git-Attribut-Konfiguration +├── .gitignore # Git-Ignore-Regeln ├── LICENSE # Lizenz ├── README.md # Projektbeschreibung └── data/ # Persistente Daten (zur Laufzeit) diff --git a/docs/adminserv.md b/docs/adminserv.md index ed5a726..364ab89 100644 --- a/docs/adminserv.md +++ b/docs/adminserv.md @@ -4,17 +4,19 @@ Die Server-Verwaltungsoberfläche basiert auf [AdminServ](https://github.com/Chr ## Einrichtung -1. `http://` im Browser aufrufen -2. Ein Passwort festlegen – dieses wird als AdminServ-Passwort verwendet -3. TM-Server-Informationen eintragen (Standardwerte können beibehalten werden) -4. `Address` auf `localhost` setzen, um den eingebetteten Server zu verwalten -5. Speichern +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`)](#konfigurationsseite-config)) + +Es ist kein manuelles Setup nötig. ## Verbindung zum Server -1. Über den Button „Servers" zur Serverliste navigieren -2. Den gewünschten Server auswählen -3. Admin-Stufe wählen und zugehöriges Passwort eingeben +1. `http://` im Browser aufrufen +2. Den Server aus der Liste auswählen +3. Admin-Stufe wählen (SuperAdmin, Admin oder User) und das zugehörige Passwort eingeben ## Standard-Passwörter @@ -24,9 +26,11 @@ Die Server-Verwaltungsoberfläche basiert auf [AdminServ](https://github.com/Chr | 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:///config` geändert werden. -> **Hinweis:** Es wird empfohlen, die Standard-Passwörter über die `.env`-Datei (`SERVER_SA_PASSWORD`, `SERVER_ADM_PASSWORD`) zu ändern. Siehe [Umgebungsvariablen](umgebungsvariablen.md). +> **Hinweis:** Die Standard-Passwörter in der `.env.example` sind öffentlich einsehbar. Ändere sie unbedingt, bevor du den Server produktiv einsetzt. Siehe [Umgebungsvariablen](umgebungsvariablen.md). ## Persistente Speicherung @@ -67,6 +71,16 @@ rm -rf ./data/controlpanel/* docker compose up -d ``` +## Konfigurationsseite (`/config`) + +AdminServ bringt unter `http:///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 in `data/controlpanel/config/adminserv.cfg.php` manuell auf ein bekanntes Passwort setzen. Beispiel: `const PASSWORD = '5f4dcc3b5aa765d61d8327deb882cf99';` entspricht dem Passwort `password`. + ## 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. diff --git a/docs/konfiguration.md b/docs/konfiguration.md index 26dd20a..72e0d49 100644 --- a/docs/konfiguration.md +++ b/docs/konfiguration.md @@ -18,6 +18,7 @@ Das gesamte **GameData-Verzeichnis** wird über ein Bind-Mount (`./data/gamedata |-----------|----------------|-------------| | `./data/gamedata` | `/opt/tmserver/GameData` | Gesamtes GameData-Verzeichnis | | `./data/controlpanel` | `/var/www/html` | AdminServ- und RemoteCP-Daten | +| `./data/xaseco` | `/opt/tmserver/xaseco` | XAseco-Konfiguration und Logs | | `./data/mariadb` | `/var/lib/mysql` | MariaDB-Datenbankdateien | ### Enthaltene Unterordner diff --git a/docs/schnellstart.md b/docs/schnellstart.md index 97d7a18..496b813 100644 --- a/docs/schnellstart.md +++ b/docs/schnellstart.md @@ -43,10 +43,10 @@ Die Konfiguration erfolgt über die `.env`-Datei, die automatisch eingelesen wir Alternativ kannst du das Image auch selbst bauen: ```bash -docker build -t tmserver:latest -t tmserver:1.1.1 . +docker build -t tmserver:latest -t tmserver:1.2.1 . ``` -Damit wird das Image mit zwei Tags erstellt: `tmserver:latest` und `tmserver:1.1.1`. +Damit wird das Image mit zwei Tags erstellt: `tmserver:latest` und `tmserver:1.2.1`. Anschließend den Server starten: -- 2.49.1 From daaace417b185323d4473e59fd94c7072cd80cfb Mon Sep 17 00:00:00 2001 From: scriptos Date: Mon, 23 Mar 2026 09:43:28 +0100 Subject: [PATCH 2/4] =?UTF-8?q?fix(security):=20AdminServ-Konfigurationspa?= =?UTF-8?q?sswort=20durch=20zuf=C3=A4lligen=20Hash=20ersetzen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/bin/RunTrackmaniaServer.sh | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/assets/bin/RunTrackmaniaServer.sh b/assets/bin/RunTrackmaniaServer.sh index e09a225..c186b21 100644 --- a/assets/bin/RunTrackmaniaServer.sh +++ b/assets/bin/RunTrackmaniaServer.sh @@ -459,6 +459,23 @@ if [ -f "$MODS_SETTINGS_FILE" ] && grep -q 'blacksunonline.com' "$MODS_SETTINGS_ echo " Mods/settings.xml erfolgreich aktualisiert." fi +# ============================================================ +# AdminServ: Konfigurationspasswort absichern (fuer bestehende Volumes) +# ============================================================ +# AdminServ wird mit einem oeffentlich bekannten Standard-Hash +# ausgeliefert (0b28a5799a32c687dad2c5183718ceac, aus dem +# AdminServ-GitHub-Repo). Dieser wird durch einen zufaelligen +# MD5-Hash ersetzt, damit die /config-Seite abgesichert ist. +# ============================================================ +ADMINSERV_CFG_VOL="/var/www/html/config/adminserv.cfg.php" +if [ -f "$ADMINSERV_CFG_VOL" ] && grep -q "0b28a5799a32c687dad2c5183718ceac" "$ADMINSERV_CFG_VOL"; then + echo "==> SICHERHEIT: AdminServ-Konfigurationspasswort wird ersetzt (Standard-Hash erkannt)..." + RANDOM_HASH=$(head -c 32 /dev/urandom | md5sum | cut -d' ' -f1) + sed -i "s|const PASSWORD = '0b28a5799a32c687dad2c5183718ceac';|const PASSWORD = '${RANDOM_HASH}';|" "$ADMINSERV_CFG_VOL" + echo " Standard-Hash durch zufaelligen Hash ersetzt." + echo " Die /config-Seite ist jetzt abgesichert." +fi + echo "Starting apache server" service apache2 start -- 2.49.1 From 634cd8c0a6638878b504be1368ccd76935745042 Mon Sep 17 00:00:00 2001 From: scriptos Date: Mon, 23 Mar 2026 09:47:52 +0100 Subject: [PATCH 3/4] =?UTF-8?q?docs(xaseco):=20umfassende=20Chat-Befehlsre?= =?UTF-8?q?ferenz=20erg=C3=A4nzt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bisherige Kurztabelle durch vollständige Befehlsübersicht ersetzt, gegliedert nach Kategorien: Hilfe, Rekorde, Rankings, Strecken, Karma/Voting, Kommunikation, Spieleroptionen und Admin-Befehle. Verweis auf offizielle Dokumentation (docs.xaseco.org) hinzugefügt. --- docs/xaseco.md | 198 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 191 insertions(+), 7 deletions(-) diff --git a/docs/xaseco.md b/docs/xaseco.md index 551e71c..3b82278 100644 --- a/docs/xaseco.md +++ b/docs/xaseco.md @@ -157,13 +157,197 @@ Die XAseco-Logdatei befindet sich unter: Bei Problemen ist dies die erste Anlaufstelle für die Fehlersuche. -## Wichtige Chat-Befehle +## 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 | |--------|-------------| -| `/helpadmin` | Admin-Befehle anzeigen | -| `/recs` | Lokale Rekorde anzeigen | -| `/dedirecs` | Dedimania-Rekorde anzeigen | -| `/jukebox` | Track-Jukebox öffnen | -| `/stats` | Spieler-Statistiken anzeigen | -| `/admin help` | Alle Admin-Befehle | +| `/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 ` | 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 ` | 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 ` | 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 ` | Chat eines Spielers stummschalten | +| `/unmute ` | 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 ` | Ändert den Servernamen | +| `/admin setpwd ` | Ändert das Spieler-Passwort | +| `/admin setspecpwd ` | Ändert das Zuschauer-Passwort | +| `/admin setmaxplayers <#>` | Setzt maximale Spieleranzahl | +| `/admin setmaxspecs <#>` | Setzt maximale Zuschauerzahl | +| `/admin setgamemode ` | 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 ` | Fügt Strecke von TMX hinzu | +| `/admin addlocal ` | 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 ` | Sendet eine Warnung an einen Spieler | +| `/admin kick ` | Kickt einen Spieler vom Server | +| `/admin kickghost ` | Kickt einen Ghost-Spieler | +| `/admin ban ` | Bannt einen Spieler | +| `/admin unban ` | Entbannt einen Spieler | +| `/admin black ` | Setzt einen Spieler auf die Blacklist | +| `/admin unblack ` | Entfernt einen Spieler von der Blacklist | +| `/admin mute ` | Schaltet einen Spieler global stumm | +| `/admin unmute ` | Hebt globale Stummschaltung auf | +| `/admin forcespec ` | Erzwingt Zuschauer-Modus | +| `/admin forceteam ` | Erzwingt Team-Zuordnung (Blue/Red) | + +**Admin-Verwaltung:** + +| Befehl | Beschreibung | +|--------|-------------| +| `/admin addadmin ` | Fügt einen neuen Admin hinzu | +| `/admin removeadmin ` | Entfernt einen Admin | +| `/admin addop ` | Fügt einen neuen Operator hinzu | +| `/admin removeop ` | 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 ` | Zeigt Popup-Nachricht für alle Spieler | +| `/admin pm ` | 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 -- 2.49.1 From 8a3ef5241e448e067bf8d58d38ed18071c7adb8f Mon Sep 17 00:00:00 2001 From: scriptos Date: Mon, 23 Mar 2026 09:50:21 +0100 Subject: [PATCH 4/4] Release: Docker Image Version 1.2.2 gepusht --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 731e6ac..5a78284 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,6 @@ services: tmserver: - image: git.techniverse.net/scriptos/trackmania-server:1.2.1 + image: git.techniverse.net/scriptos/trackmania-server:1.2.2 build: context: . container_name: tmserver -- 2.49.1