Internet-Dedicated hinzugefügt + Docs erstellt.

This commit is contained in:
scriptos
2026-03-18 13:06:46 +01:00
parent 8dad2637f8
commit 28b8ba3ac3
11 changed files with 297 additions and 68 deletions
+6
View File
@@ -20,10 +20,16 @@ ARG SERVER_NAME='Trackmania Server'
ARG SERVER_DESC='This is a Trackmania Server' ARG SERVER_DESC='This is a Trackmania Server'
ARG SERVER_SA_PASSWORD='SuperAdmin' ARG SERVER_SA_PASSWORD='SuperAdmin'
ARG SERVER_ADM_PASSWORD='Admin' ARG SERVER_ADM_PASSWORD='Admin'
ARG SERVER_MODE='internet'
ARG SERVER_LOGIN=''
ARG SERVER_VALIDATION_KEY=''
ENV SERVER_NAME $SERVER_NAME ENV SERVER_NAME $SERVER_NAME
ENV SERVER_DESC $SERVER_DESC ENV SERVER_DESC $SERVER_DESC
ENV SERVER_SA_PASSWORD $SERVER_SA_PASSWORD ENV SERVER_SA_PASSWORD $SERVER_SA_PASSWORD
ENV SERVER_ADM_PASSWORD $SERVER_ADM_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 5000/tcp
EXPOSE 2350/tcp EXPOSE 2350/tcp
+30 -60
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) 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 ```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. ## Dokumentation
Dieses Passwort wird als AdminServ-Passwort für die Konfiguration (TM-Server hinzufügen) verwendet.
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. - [Schnellstart](docs/schnellstart.md) Erste Schritte und minimale Konfiguration
- [Umgebungsvariablen](docs/umgebungsvariablen.md) Alle verfügbaren Umgebungsvariablen
Du solltest den hinzugefügten Server sehen. Im oberen Banner kannst du zur Verwaltungsumgebung wechseln. - [Server-Modi](docs/server-modi.md) LAN- und Internet-Dedicated-Modus
Wähle den Server aus, den du verwalten möchtest, die gewünschte Admin-Stufe und gib das zugehörige Passwort ein. - [AdminServ](docs/adminserv.md) Einrichtung der Server-Verwaltungsoberfläche
- [Ports](docs/ports.md) Freigegebene Ports und deren Verwendung
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.) - [Commit-Konvention](docs/commit-konvention.md) Regeln für Commit-Nachrichten
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/)
--- ---
+28 -8
View File
@@ -3,15 +3,35 @@
echo "Starting apache server" echo "Starting apache server"
service apache2 start service apache2 start
CONFIG="/opt/tmserver/GameData/Config/dedicated_cfg.txt"
echo "Setting ENV/ARG variables" 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>SuperAdmin/<password>${SERVER_SA_PASSWORD}/" "$CONFIG"
sed -i "s/<password>Admin/<password>${SERVER_ADM_PASSWORD}/" /opt/tmserver/GameData/Config/dedicated_cfg.txt sed -i "s/<password>Admin/<password>${SERVER_ADM_PASSWORD}/" "$CONFIG"
sed -i "s/<name></<name>${SERVER_NAME}</" /opt/tmserver/GameData/Config/dedicated_cfg.txt sed -i "s/<name></<name>${SERVER_NAME}</" "$CONFIG"
sed -i "s/<comment></<comment>${SERVER_DESC}</" /opt/tmserver/GameData/Config/dedicated_cfg.txt sed -i "s/<comment></<comment>${SERVER_DESC}</" "$CONFIG"
sed -i "s/<xmlrpc_allowremote>False/<xmlrpc_allowremote>True/" /opt/tmserver/GameData/Config/dedicated_cfg.txt 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" echo "Server config dedicated_cfg.txt is"
cat /opt/tmserver/GameData/Config/dedicated_cfg.txt cat "$CONFIG"
echo "Launching Server" echo "Launching Server in ${SERVER_MODE} mode"
exec ./TrackmaniaServer /dedicated_cfg=dedicated_cfg.txt /game_settings=MatchSettings/custom_game_settings.txt /nodaemon /lan exec ./TrackmaniaServer /dedicated_cfg=dedicated_cfg.txt /game_settings=MatchSettings/custom_game_settings.txt /nodaemon ${LAUNCH_MODE}
+3
View File
@@ -20,3 +20,6 @@ services:
- SERVER_DESC=This is a Trackmania Server - SERVER_DESC=This is a Trackmania Server
- SERVER_SA_PASSWORD=SuperAdmin - SERVER_SA_PASSWORD=SuperAdmin
- SERVER_ADM_PASSWORD=Admin - SERVER_ADM_PASSWORD=Admin
- SERVER_MODE=internet
- SERVER_LOGIN=
- SERVER_VALIDATION_KEY=
+12
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
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
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
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
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
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
```
+40
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
```