From 28b8ba3ac32de13612018aa908845fece5e869f3 Mon Sep 17 00:00:00 2001 From: scriptos Date: Wed, 18 Mar 2026 13:06:46 +0100 Subject: [PATCH] =?UTF-8?q?Internet-Dedicated=20hinzugef=C3=BCgt=20+=20Doc?= =?UTF-8?q?s=20erstellt.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 6 +++ README.md | 90 +++++++++++++------------------------- RunTrackmaniaServer.sh | 36 +++++++++++---- docker-compose.yml | 3 ++ docs/README.md | 12 +++++ docs/adminserv.md | 29 ++++++++++++ docs/commit-konvention.md | 29 ++++++++++++ docs/ports.md | 23 ++++++++++ docs/schnellstart.md | 44 +++++++++++++++++++ docs/server-modi.md | 53 ++++++++++++++++++++++ docs/umgebungsvariablen.md | 40 +++++++++++++++++ 11 files changed, 297 insertions(+), 68 deletions(-) create mode 100644 docs/README.md create mode 100644 docs/adminserv.md create mode 100644 docs/commit-konvention.md create mode 100644 docs/ports.md create mode 100644 docs/schnellstart.md create mode 100644 docs/server-modi.md create mode 100644 docs/umgebungsvariablen.md diff --git a/Dockerfile b/Dockerfile index 89409b9..38082b7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -20,10 +20,16 @@ ARG SERVER_NAME='Trackmania Server' ARG SERVER_DESC='This is a Trackmania Server' ARG SERVER_SA_PASSWORD='SuperAdmin' ARG SERVER_ADM_PASSWORD='Admin' +ARG SERVER_MODE='internet' +ARG SERVER_LOGIN='' +ARG SERVER_VALIDATION_KEY='' ENV SERVER_NAME $SERVER_NAME ENV SERVER_DESC $SERVER_DESC ENV SERVER_SA_PASSWORD $SERVER_SA_PASSWORD ENV SERVER_ADM_PASSWORD $SERVER_ADM_PASSWORD +ENV SERVER_MODE $SERVER_MODE +ENV SERVER_LOGIN $SERVER_LOGIN +ENV SERVER_VALIDATION_KEY $SERVER_VALIDATION_KEY EXPOSE 5000/tcp EXPOSE 2350/tcp diff --git a/README.md b/README.md index 93756f0..a941d84 100644 --- a/README.md +++ b/README.md @@ -6,77 +6,47 @@ Trackmania Nations Forever Docker Server Das Docker-Image ist auf Docker Hub verfügbar: [lduriez/tmserver](https://hub.docker.com/r/lduriez/tmserver) -Derzeit ist nur der LAN-Dedicated-Modus aktiviert (Internet-Dedicated wird in einer zukünftigen Version hinzugefügt). +Der Server unterstützt sowohl den **Internet-Dedicated-Modus** (Standard) als auch den **LAN-Dedicated-Modus**. -Die Server-Verwaltungsoberfläche basiert auf [AdminServ](https://github.com/Chris92de/AdminServ). +## Schnellstart -## Starten +### Internet-Modus (Standard) -In einer Docker-Umgebung einfach folgenden Befehl ausführen: +Voraussetzung: Ein Server-Account auf [players.trackmaniaforever.com](https://players.trackmaniaforever.com). ```bash -docker run -d -p 2350:2350 -p 3450:3450 -p 80:80 --name tm-server lduriez/tmserver +docker run -d \ + -p 2350:2350/tcp \ + -p 2350:2350/udp \ + -p 3450:3450/tcp \ + -p 80:80/tcp \ + -e SERVER_LOGIN=dein_login \ + -e SERVER_VALIDATION_KEY=dein_key \ + --name tm-server lduriez/tmserver ``` -Über Umgebungsvariablen können die Standardwerte angepasst werden: [Umgebungsvariablen](#umgebungsvariablen) +### LAN-Modus -### Server-Verwaltungsoberfläche einrichten +```bash +docker run -d \ + -p 2350:2350/tcp \ + -p 2350:2350/udp \ + -p 3450:3450/tcp \ + -p 80:80/tcp \ + -e SERVER_MODE=lan \ + --name tm-server lduriez/tmserver +``` -Rufe `http:` auf und starte die Konfiguration, indem du ein Passwort deiner Wahl festlegst. -Dieses Passwort wird als AdminServ-Passwort für die Konfiguration (TM-Server hinzufügen) verwendet. +## Dokumentation -Trage anschließend die TM-Server-Informationen ein (die Standardwerte können beibehalten werden). Stelle sicher, dass `Address` auf `localhost` gesetzt ist, um den eingebetteten Server zu verwalten. +Die vollständige Dokumentation befindet sich im Ordner [`docs/`](docs/README.md): -Nach dem Speichern kannst du über den Button „Servers" zur Serverliste navigieren und über den Button „Back" zur Verwaltungsübersicht gelangen. - -Du solltest den hinzugefügten Server sehen. Im oberen Banner kannst du zur Verwaltungsumgebung wechseln. -Wähle den Server aus, den du verwalten möchtest, die gewünschte Admin-Stufe und gib das zugehörige Passwort ein. - -Standardmäßig ist das `SuperAdmin`-Passwort `SuperAdmin`, das `Admin`-Passwort `Admin` und das `User`-Passwort `User`. (Die Admin-Stufen können in den Konfigurationseinstellungen unter `http:/config` geändert werden.) - -Herzlichen Glückwunsch – du kannst jetzt deinen TM-Server verwalten. - -Viel Spaß beim Spielen! - -## Freigegebene Ports - -* 2350/tcp – Gameserver-Port -* 2350/udp – Gameserver-Port -* 3450/tcp – P2P-Gameserver-Port -* 80/tcp – Port der Server-Verwaltungsoberfläche - -## Umgebungsvariablen - -* `SERVER_NAME` – Name deines Servers (Standard: `Trackmania Server`) -* `SERVER_DESC` – Beschreibung deines Servers (Standard: `This is a Trackmania Server`) -* `SERVER_SA_PASSWORD` – SuperAdmin-Verwaltungspasswort (Standard: `SuperAdmin`) -* `SERVER_ADM_PASSWORD` – Admin-Verwaltungspasswort (Standard: `Admin`) - -## Commit-Konvention - -Format: `(): ` - -### Typ - -* `build` – Änderungen am Build-System oder an externen Abhängigkeiten (npm, make …) -* `ci` – Änderungen an CI-Konfigurationsdateien und -Skripten (Travis, Ansible, BrowserStack …) -* `feat` – Hinzufügen eines neuen Features -* `fix` – Behebung eines Fehlers -* `perf` – Verbesserung der Performance -* `refactor` – Änderung, die weder ein neues Feature noch eine Performance-Verbesserung bringt -* `style` – Änderung ohne funktionale oder semantische Auswirkung (Einrückung, Formatierung, Leerzeichen, Umbenennung einer Variable …) -* `docs` – Erstellung oder Aktualisierung von Dokumentation -* `test` – Hinzufügen oder Ändern von Tests -* `revert` – Einen vorherigen Commit rückgängig machen (Format: `revert `) - -### Beschreibung - -* `add` – Hinzufügen -* `change` – Ändern -* `update` – Aktualisieren -* `remove` – Entfernen - -[Quelle](https://buzut.net/git-bien-nommer-ses-commits/) +- [Schnellstart](docs/schnellstart.md) – Erste Schritte und minimale Konfiguration +- [Umgebungsvariablen](docs/umgebungsvariablen.md) – Alle verfügbaren Umgebungsvariablen +- [Server-Modi](docs/server-modi.md) – LAN- und Internet-Dedicated-Modus +- [AdminServ](docs/adminserv.md) – Einrichtung der Server-Verwaltungsoberfläche +- [Ports](docs/ports.md) – Freigegebene Ports und deren Verwendung +- [Commit-Konvention](docs/commit-konvention.md) – Regeln für Commit-Nachrichten --- diff --git a/RunTrackmaniaServer.sh b/RunTrackmaniaServer.sh index 8e87c8a..065fdbc 100755 --- a/RunTrackmaniaServer.sh +++ b/RunTrackmaniaServer.sh @@ -3,15 +3,35 @@ echo "Starting apache server" service apache2 start +CONFIG="/opt/tmserver/GameData/Config/dedicated_cfg.txt" + echo "Setting ENV/ARG variables" -sed -i "s/SuperAdmin/${SERVER_SA_PASSWORD}/" /opt/tmserver/GameData/Config/dedicated_cfg.txt -sed -i "s/Admin/${SERVER_ADM_PASSWORD}/" /opt/tmserver/GameData/Config/dedicated_cfg.txt -sed -i "s/${SERVER_NAME}${SERVER_DESC}False/True/" /opt/tmserver/GameData/Config/dedicated_cfg.txt +sed -i "s/SuperAdmin/${SERVER_SA_PASSWORD}/" "$CONFIG" +sed -i "s/Admin/${SERVER_ADM_PASSWORD}/" "$CONFIG" +sed -i "s/${SERVER_NAME}${SERVER_DESC}False/True/" "$CONFIG" + +# Bestimme Server-Modus (Standard: internet) +SERVER_MODE="${SERVER_MODE:-internet}" + +if [ "$SERVER_MODE" = "internet" ]; then + echo "Configuring Internet-Dedicated mode" + if [ -z "$SERVER_LOGIN" ] || [ -z "$SERVER_VALIDATION_KEY" ]; then + echo "ERROR: SERVER_LOGIN and SERVER_VALIDATION_KEY are required for Internet-Dedicated mode." + echo "Set SERVER_MODE=lan to start in LAN mode, or provide the required variables." + exit 1 + fi + sed -i "s||${SERVER_LOGIN}|" "$CONFIG" + sed -i "s||${SERVER_VALIDATION_KEY}|" "$CONFIG" + LAUNCH_MODE="/internet" +else + echo "Configuring LAN-Dedicated mode" + LAUNCH_MODE="/lan" +fi echo "Server config dedicated_cfg.txt is" -cat /opt/tmserver/GameData/Config/dedicated_cfg.txt +cat "$CONFIG" -echo "Launching Server" -exec ./TrackmaniaServer /dedicated_cfg=dedicated_cfg.txt /game_settings=MatchSettings/custom_game_settings.txt /nodaemon /lan +echo "Launching Server in ${SERVER_MODE} mode" +exec ./TrackmaniaServer /dedicated_cfg=dedicated_cfg.txt /game_settings=MatchSettings/custom_game_settings.txt /nodaemon ${LAUNCH_MODE} diff --git a/docker-compose.yml b/docker-compose.yml index 40e3913..6100c0c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -20,3 +20,6 @@ services: - SERVER_DESC=This is a Trackmania Server - SERVER_SA_PASSWORD=SuperAdmin - SERVER_ADM_PASSWORD=Admin + - SERVER_MODE=internet + - SERVER_LOGIN= + - SERVER_VALIDATION_KEY= diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..f31c956 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,12 @@ +# Dokumentation + +Übersicht aller verfügbaren Dokumentationen für den Trackmania Nations Forever Docker Server. + +| Dokument | Beschreibung | +|----------|-------------| +| [Schnellstart](schnellstart.md) | Erste Schritte und minimale Konfiguration | +| [Umgebungsvariablen](umgebungsvariablen.md) | Alle verfügbaren Umgebungsvariablen | +| [Server-Modi](server-modi.md) | LAN- und Internet-Dedicated-Modus | +| [AdminServ](adminserv.md) | Einrichtung der Server-Verwaltungsoberfläche | +| [Ports](ports.md) | Freigegebene Ports und deren Verwendung | +| [Commit-Konvention](commit-konvention.md) | Regeln für Commit-Nachrichten | diff --git a/docs/adminserv.md b/docs/adminserv.md new file mode 100644 index 0000000..da5ac06 --- /dev/null +++ b/docs/adminserv.md @@ -0,0 +1,29 @@ +# AdminServ – Server-Verwaltungsoberfläche + +Die Server-Verwaltungsoberfläche basiert auf [AdminServ](https://github.com/Chris92de/AdminServ) und ist über Port 80 erreichbar. + +## 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 + +## 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 + +## Standard-Passwörter + +| Stufe | Standard-Passwort | +|-------|-------------------| +| SuperAdmin | `SuperAdmin` | +| Admin | `Admin` | +| User | `User` | + +Die Admin-Stufen können unter `http:///config` geändert werden. + +> **Hinweis:** Es wird empfohlen, die Standard-Passwörter über die [Umgebungsvariablen](umgebungsvariablen.md) `SERVER_SA_PASSWORD` und `SERVER_ADM_PASSWORD` zu ändern. diff --git a/docs/commit-konvention.md b/docs/commit-konvention.md new file mode 100644 index 0000000..909bfff --- /dev/null +++ b/docs/commit-konvention.md @@ -0,0 +1,29 @@ +# Commit-Konvention + +Format: `(): ` + +## Typ + +| Typ | Beschreibung | +|-----|-------------| +| `build` | Änderungen am Build-System oder an externen Abhängigkeiten (npm, make …) | +| `ci` | Änderungen an CI-Konfigurationsdateien und -Skripten (Travis, Ansible, BrowserStack …) | +| `feat` | Hinzufügen eines neuen Features | +| `fix` | Behebung eines Fehlers | +| `perf` | Verbesserung der Performance | +| `refactor` | Änderung, die weder ein neues Feature noch eine Performance-Verbesserung bringt | +| `style` | Änderung ohne funktionale oder semantische Auswirkung (Einrückung, Formatierung, Leerzeichen …) | +| `docs` | Erstellung oder Aktualisierung von Dokumentation | +| `test` | Hinzufügen oder Ändern von Tests | +| `revert` | Einen vorherigen Commit rückgängig machen (Format: `revert `) | + +## Beschreibung + +| Schlüsselwort | Bedeutung | +|---------------|-----------| +| `add` | Hinzufügen | +| `change` | Ändern | +| `update` | Aktualisieren | +| `remove` | Entfernen | + +[Quelle](https://buzut.net/git-bien-nommer-ses-commits/) diff --git a/docs/ports.md b/docs/ports.md new file mode 100644 index 0000000..d1a6b6a --- /dev/null +++ b/docs/ports.md @@ -0,0 +1,23 @@ +# Freigegebene Ports + +| Port | Protokoll | Beschreibung | +|------|-----------|-------------| +| 2350 | TCP | Gameserver-Port | +| 2350 | UDP | Gameserver-Port | +| 3450 | TCP | P2P-Gameserver-Port | +| 5000 | TCP | XML-RPC-Port (interne Kommunikation) | +| 80 | TCP | Server-Verwaltungsoberfläche (AdminServ) | + +## Minimale Port-Freigabe + +Für den reinen Spielbetrieb ohne Verwaltungsoberfläche reichen die Ports 2350 und 3450: + +```bash +docker run -d \ + -p 2350:2350/tcp \ + -p 2350:2350/udp \ + -p 3450:3450/tcp \ + --name tm-server lduriez/tmserver +``` + +> **Hinweis:** Port 5000 (XML-RPC) wird intern von AdminServ verwendet und muss in der Regel nicht nach außen freigegeben werden. diff --git a/docs/schnellstart.md b/docs/schnellstart.md new file mode 100644 index 0000000..6711ce1 --- /dev/null +++ b/docs/schnellstart.md @@ -0,0 +1,44 @@ +# Schnellstart + +## Voraussetzungen + +- Docker muss installiert sein + +## Internet-Dedicated-Modus (Standard) + +Für den Internet-Modus wird ein Server-Account benötigt. Dieser kann auf der [Trackmania Players-Seite](https://players.trackmaniaforever.com) erstellt werden. + +```bash +docker run -d \ + -p 2350:2350/tcp \ + -p 2350:2350/udp \ + -p 3450:3450/tcp \ + -p 80:80/tcp \ + -e SERVER_LOGIN=dein_login \ + -e SERVER_VALIDATION_KEY=dein_key \ + --name tm-server lduriez/tmserver +``` + +## LAN-Modus + +Für den LAN-Modus werden keine Masterserver-Zugangsdaten benötigt: + +```bash +docker run -d \ + -p 2350:2350/tcp \ + -p 2350:2350/udp \ + -p 3450:3450/tcp \ + -p 80:80/tcp \ + -e SERVER_MODE=lan \ + --name tm-server lduriez/tmserver +``` + +## Docker Compose + +Alternativ kann der Server mit Docker Compose gestartet werden: + +```bash +docker compose up -d +``` + +Passe dazu die Werte in der `docker-compose.yml` an. Weitere Details unter [Umgebungsvariablen](umgebungsvariablen.md). diff --git a/docs/server-modi.md b/docs/server-modi.md new file mode 100644 index 0000000..420c6af --- /dev/null +++ b/docs/server-modi.md @@ -0,0 +1,53 @@ +# Server-Modi + +Der Trackmania-Server kann in zwei Modi betrieben werden. + +## Internet-Dedicated (Standard) + +Im Internet-Modus ist der Server über das Trackmania-Masterserver-Netzwerk erreichbar und in der öffentlichen Serverliste sichtbar. + +### Voraussetzungen + +- Ein Server-Account auf der [Trackmania Players-Seite](https://players.trackmaniaforever.com) +- Die Umgebungsvariablen `SERVER_LOGIN` und `SERVER_VALIDATION_KEY` müssen gesetzt sein + +### Konfiguration + +```yaml +environment: + - SERVER_MODE=internet + - SERVER_LOGIN=dein_login + - SERVER_VALIDATION_KEY=dein_key +``` + +Wenn `SERVER_LOGIN` oder `SERVER_VALIDATION_KEY` nicht gesetzt sind, bricht der Server mit einer Fehlermeldung ab. + +### Server-Account erstellen + +1. [players.trackmaniaforever.com](https://players.trackmaniaforever.com) aufrufen +2. Einloggen oder einen neuen Account erstellen +3. Unter „Dedicated Server" einen neuen Server-Account anlegen +4. Login und Validation Key notieren und als Umgebungsvariablen setzen + +## LAN-Dedicated + +Im LAN-Modus ist der Server nur im lokalen Netzwerk erreichbar. Es werden keine Masterserver-Zugangsdaten benötigt. + +### Konfiguration + +```yaml +environment: + - SERVER_MODE=lan +``` + +Oder per Docker-Run: + +```bash +docker run -d \ + -e SERVER_MODE=lan \ + -p 2350:2350/tcp \ + -p 2350:2350/udp \ + -p 3450:3450/tcp \ + -p 80:80/tcp \ + --name tm-server lduriez/tmserver +``` diff --git a/docs/umgebungsvariablen.md b/docs/umgebungsvariablen.md new file mode 100644 index 0000000..d2d32e4 --- /dev/null +++ b/docs/umgebungsvariablen.md @@ -0,0 +1,40 @@ +# Umgebungsvariablen + +Alle Umgebungsvariablen können beim Start des Containers über `-e` oder in der `docker-compose.yml` gesetzt werden. + +## Allgemeine Einstellungen + +| Variable | Beschreibung | Standard | +|----------|-------------|----------| +| `SERVER_NAME` | Name des Servers | `Trackmania Server` | +| `SERVER_DESC` | Beschreibung des Servers | `This is a Trackmania Server` | +| `SERVER_SA_PASSWORD` | SuperAdmin-Verwaltungspasswort | `SuperAdmin` | +| `SERVER_ADM_PASSWORD` | Admin-Verwaltungspasswort | `Admin` | + +## Server-Modus + +| Variable | Beschreibung | Standard | +|----------|-------------|----------| +| `SERVER_MODE` | Server-Modus (`internet` oder `lan`) | `internet` | +| `SERVER_LOGIN` | Masterserver-Login (nur Internet-Modus) | *(leer)* | +| `SERVER_VALIDATION_KEY` | Masterserver-Validierungsschlüssel (nur Internet-Modus) | *(leer)* | + +> **Wichtig:** Im Internet-Modus müssen `SERVER_LOGIN` und `SERVER_VALIDATION_KEY` gesetzt sein, andernfalls startet der Server nicht. + +## Beispiel + +```bash +docker run -d \ + -e SERVER_NAME="Mein Server" \ + -e SERVER_DESC="Ein toller Server" \ + -e SERVER_SA_PASSWORD="GeheimSA" \ + -e SERVER_ADM_PASSWORD="GeheimAdmin" \ + -e SERVER_MODE=internet \ + -e SERVER_LOGIN=mein_login \ + -e SERVER_VALIDATION_KEY=mein_key \ + -p 2350:2350/tcp \ + -p 2350:2350/udp \ + -p 3450:3450/tcp \ + -p 80:80/tcp \ + --name tm-server lduriez/tmserver +```