Internet-Dedicated hinzugefügt + Docs erstellt.

This commit is contained in:
2026-03-18 13:06:46 +01:00
parent 8dad2637f8
commit 28b8ba3ac3
11 changed files with 297 additions and 68 deletions

View File

@@ -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

View File

@@ -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:<host-server-des-containers>` 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:<host-server-des-containers>/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>(<bereich>): <beschreibung>`
### 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 <Betreff des rückgängig gemachten Commits> <Hash>`)
### 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
---

View File

@@ -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/<password>SuperAdmin/<password>${SERVER_SA_PASSWORD}/" /opt/tmserver/GameData/Config/dedicated_cfg.txt
sed -i "s/<password>Admin/<password>${SERVER_ADM_PASSWORD}/" /opt/tmserver/GameData/Config/dedicated_cfg.txt
sed -i "s/<name></<name>${SERVER_NAME}</" /opt/tmserver/GameData/Config/dedicated_cfg.txt
sed -i "s/<comment></<comment>${SERVER_DESC}</" /opt/tmserver/GameData/Config/dedicated_cfg.txt
sed -i "s/<xmlrpc_allowremote>False/<xmlrpc_allowremote>True/" /opt/tmserver/GameData/Config/dedicated_cfg.txt
sed -i "s/<password>SuperAdmin/<password>${SERVER_SA_PASSWORD}/" "$CONFIG"
sed -i "s/<password>Admin/<password>${SERVER_ADM_PASSWORD}/" "$CONFIG"
sed -i "s/<name></<name>${SERVER_NAME}</" "$CONFIG"
sed -i "s/<comment></<comment>${SERVER_DESC}</" "$CONFIG"
sed -i "s/<xmlrpc_allowremote>False/<xmlrpc_allowremote>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|<login></login>|<login>${SERVER_LOGIN}</login>|" "$CONFIG"
sed -i "s|<validation_key></validation_key>|<validation_key>${SERVER_VALIDATION_KEY}</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}

View File

@@ -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=

12
docs/README.md Normal file
View File

@@ -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 |

29
docs/adminserv.md Normal file
View File

@@ -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://<host-server-des-containers>` 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://<host-server-des-containers>/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.

29
docs/commit-konvention.md Normal file
View File

@@ -0,0 +1,29 @@
# Commit-Konvention
Format: `<typ>(<bereich>): <beschreibung>`
## 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 <Betreff> <Hash>`) |
## Beschreibung
| Schlüsselwort | Bedeutung |
|---------------|-----------|
| `add` | Hinzufügen |
| `change` | Ändern |
| `update` | Aktualisieren |
| `remove` | Entfernen |
[Quelle](https://buzut.net/git-bien-nommer-ses-commits/)

23
docs/ports.md Normal file
View File

@@ -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.

44
docs/schnellstart.md Normal file
View File

@@ -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).

53
docs/server-modi.md Normal file
View File

@@ -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
```

View File

@@ -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
```