Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
592f047274 | ||
|
|
d550e814e2 | ||
|
|
9ac5c997a2 | ||
|
|
49bc08129a | ||
|
|
7325400175 |
No files matched your search
@@ -5,3 +5,6 @@
|
|||||||
data/
|
data/
|
||||||
|
|
||||||
.ki-workspace/
|
.ki-workspace/
|
||||||
|
backups/
|
||||||
|
dockernet-inspector.v1.sh
|
||||||
|
script.sh
|
||||||
@@ -5,6 +5,11 @@ RUN mkdir /opt/tmserver
|
|||||||
WORKDIR /opt/tmserver
|
WORKDIR /opt/tmserver
|
||||||
|
|
||||||
# Alle benoetigten Pakete in einem Layer installieren und Cache aufraeumen
|
# Alle benoetigten Pakete in einem Layer installieren und Cache aufraeumen
|
||||||
|
# Debian Bullseye Archive-Repositories konfigurieren (Bullseye ist archiviert)
|
||||||
|
RUN echo "deb http://archive.debian.org/debian bullseye main" > /etc/apt/sources.list \
|
||||||
|
&& echo "deb http://archive.debian.org/debian-security bullseye-security main" >> /etc/apt/sources.list \
|
||||||
|
&& echo "Acquire::Check-Valid-Until false;" > /etc/apt/apt.conf.d/99no-check-valid-until
|
||||||
|
|
||||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||||
unzip \
|
unzip \
|
||||||
apache2 \
|
apache2 \
|
||||||
|
|||||||
@@ -1,6 +1,27 @@
|
|||||||
# tmserver-docker
|
<p align="center">
|
||||||
|
<a href="https://techniverse.net">
|
||||||
|
<img src="https://assets.techniverse.net/f1/git/graphics/repo-techniverse-logo.png" alt="Techniverse Community" height="70" />
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
Ein vollständiges Docker-Setup für einen **TrackMania Nations Forever**-Server – inklusive Web-Verwaltung und Server-Controller:
|
<h1 align="center">TM-Server Docker</h1>
|
||||||
|
|
||||||
|
<h4 align="center">
|
||||||
|
Ein vollständiges Docker-Setup für einen TrackMania Nations Forever-Server – inklusive Web-Verwaltung und Server-Controller
|
||||||
|
</h4>
|
||||||
|
|
||||||
|
<h6 align="center">
|
||||||
|
<a href="https://www.cleveradmin.de">🏰 Website</a>
|
||||||
|
·
|
||||||
|
<a href="https://techniverse.net">📰 Community</a>
|
||||||
|
·
|
||||||
|
<a href="https://social.techniverse.net/@donnerwolke">🐘 Mastodon</a>
|
||||||
|
·
|
||||||
|
<a href="https://matrix.to/#/#support:techniverse.net">💬 Support</a>
|
||||||
|
</h6>
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
## ✨ Übersicht
|
||||||
|
|
||||||
- **TrackMania Dedicated Server** – der eigentliche Spielserver für Internet- oder LAN-Betrieb
|
- **TrackMania Dedicated Server** – der eigentliche Spielserver für Internet- oder LAN-Betrieb
|
||||||
- **[XAseco](docs/xaseco.md)** – Server-Controller, der lokale Rekorde, Dedimania-Weltrekorde, Karma/Votes und eine Track-Jukebox direkt im Spielchat verwaltet
|
- **[XAseco](docs/xaseco.md)** – Server-Controller, der lokale Rekorde, Dedimania-Weltrekorde, Karma/Votes und eine Track-Jukebox direkt im Spielchat verwaltet
|
||||||
@@ -13,7 +34,7 @@ Alle Komponenten laufen in einem einzigen Container und werden über Umgebungsva
|
|||||||
|
|
||||||
Der Server unterstützt sowohl den **Internet-Dedicated-Modus** (Standard) als auch den **LAN-Dedicated-Modus**.
|
Der Server unterstützt sowohl den **Internet-Dedicated-Modus** (Standard) als auch den **LAN-Dedicated-Modus**.
|
||||||
|
|
||||||
## Schnellstart
|
## 🚀 Schnellstart
|
||||||
|
|
||||||
### 1. Umgebungsvariablen einrichten
|
### 1. Umgebungsvariablen einrichten
|
||||||
|
|
||||||
@@ -48,7 +69,7 @@ git.techniverse.net/scriptos/trackmania-server:latest
|
|||||||
|
|
||||||
> **Hinweis:** Für den Internet-Modus müssen `SERVER_LOGIN` und `SERVER_VALIDATION_KEY` in der `.env`-Datei gesetzt sein. Einen Server-Account kannst du auf [players.trackmaniaforever.com](https://players.trackmaniaforever.com) erstellen. Für den LAN-Modus setze `SERVER_MODE=lan`.
|
> **Hinweis:** Für den Internet-Modus müssen `SERVER_LOGIN` und `SERVER_VALIDATION_KEY` in der `.env`-Datei gesetzt sein. Einen Server-Account kannst du auf [players.trackmaniaforever.com](https://players.trackmaniaforever.com) erstellen. Für den LAN-Modus setze `SERVER_MODE=lan`.
|
||||||
|
|
||||||
## Dokumentation
|
## 📚 Dokumentation
|
||||||
|
|
||||||
Die vollständige Dokumentation befindet sich im Ordner [`docs/`](docs/README.md):
|
Die vollständige Dokumentation befindet sich im Ordner [`docs/`](docs/README.md):
|
||||||
|
|
||||||
@@ -63,27 +84,25 @@ Die vollständige Dokumentation befindet sich im Ordner [`docs/`](docs/README.md
|
|||||||
- [Ports](docs/ports.md) – Freigegebene Ports und deren Verwendung
|
- [Ports](docs/ports.md) – Freigegebene Ports und deren Verwendung
|
||||||
- [Update](docs/update.md) – Bestehende Installation aktualisieren
|
- [Update](docs/update.md) – Bestehende Installation aktualisieren
|
||||||
|
|
||||||
## Danksagung
|
## 🙏 Danksagung
|
||||||
|
|
||||||
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!
|
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
|
## 🔄 Spiegelung
|
||||||
|
|
||||||
Dieses Repository wird von **Gitea** auf **GitHub** gespiegelt. Das Master-Repository befindet sich auf Gitea:
|
Dieses Repository wird von **Gitea** auf **GitHub** gespiegelt. Das Master-Repository befindet sich auf Gitea:
|
||||||
|
|
||||||
- **Gitea (Master):** [git.techniverse.net/scriptos/tmserver-docker](https://git.techniverse.net/scriptos/tmserver-docker.git)
|
- **Gitea (Master):** [git.techniverse.net/scriptos/tmserver-docker](https://git.techniverse.net/scriptos/tmserver-docker.git)
|
||||||
- **GitHub (Spiegel):** [github.com/pscriptos/tmserver-docker](https://github.com/pscriptos/tmserver-docker.git)
|
- **GitHub (Spiegel):** [github.com/pscriptos/tmserver-docker](https://github.com/pscriptos/tmserver-docker.git)
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
📝 **Blog:** [www.cleveradmin.de](https://www.cleveradmin.de)
|
|
||||||
🌐 **Webseite:** [www.patrick-asmus.de](https://www.patrick-asmus.de)
|
|
||||||
📧 **E-Mail:** [support@techniverse.net](mailto:support@techniverse.net)
|
|
||||||
|
|
||||||
|
<br><br>
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<img src="https://assets.techniverse.net/f1/git/graphics/gray0-catonline.svg" alt="">
|
<img src="https://assets.techniverse.net/f1/git/graphics/gray0-catonline.svg" alt="">
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<img src="https://assets.techniverse.net/f1/logos/small/license.png" alt="License" width="15" height="15"> <a href="./LICENSE">License</a> | <img src="https://assets.techniverse.net/f1/logos/small/matrix2.svg" alt="Matrix" width="15" height="15"> <a href="https://matrix.to/#/#community:techniverse.net">Matrix</a> | <img src="https://assets.techniverse.net/f1/logos/small/mastodon2.svg" alt="Mastodon" width="15" height="15"> <a href="https://social.techniverse.net/@donnerwolke">Mastodon</a>
|
<sub>
|
||||||
</p>
|
© Patrick Asmus · Techniverse Network · <a href="./LICENSE">Lizenz</a>
|
||||||
|
</sub>
|
||||||
|
</p>
|
||||||
@@ -39,7 +39,7 @@ DEFAULT_CONTROLPANEL="/opt/tmserver/default-controlpanel"
|
|||||||
if [ ! -f "$ADMINSERV_DIR/index.php" ]; then
|
if [ ! -f "$ADMINSERV_DIR/index.php" ]; then
|
||||||
echo "==> Erster Start erkannt: Kopiere AdminServ-Dateien ins Volume..."
|
echo "==> Erster Start erkannt: Kopiere AdminServ-Dateien ins Volume..."
|
||||||
cp -a "$DEFAULT_CONTROLPANEL"/* "$ADMINSERV_DIR/"
|
cp -a "$DEFAULT_CONTROLPANEL"/* "$ADMINSERV_DIR/"
|
||||||
chmod 755 "$ADMINSERV_DIR/logs/"
|
chmod 777 "$ADMINSERV_DIR/logs/"
|
||||||
chmod 666 "$ADMINSERV_DIR/config/adminlevel.cfg.php"
|
chmod 666 "$ADMINSERV_DIR/config/adminlevel.cfg.php"
|
||||||
chmod 666 "$ADMINSERV_DIR/config/servers.cfg.php"
|
chmod 666 "$ADMINSERV_DIR/config/servers.cfg.php"
|
||||||
chmod 666 "$ADMINSERV_DIR/config/adminserv.cfg.php"
|
chmod 666 "$ADMINSERV_DIR/config/adminserv.cfg.php"
|
||||||
@@ -493,22 +493,21 @@ if [ -f "$ADMINSERV_CFG_VOL" ] && grep -q "0b28a5799a32c687dad2c5183718ceac" "$A
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# ============================================================
|
# ============================================================
|
||||||
# AdminServ: Logs-Verzeichnis-Berechtigungen korrigieren (fuer bestehende Volumes)
|
# AdminServ: Berechtigungen fuer Logs und Configs sicherstellen
|
||||||
# ============================================================
|
# ============================================================
|
||||||
# In aelteren Versionen wurde /var/www/html/logs/ mit chmod 777
|
# AdminServ verlangt Schreibrechte (777 fuer ./logs/ und 666 fuer Configs).
|
||||||
# (world-writable) angelegt. logrotate verweigert die Rotation von
|
# Beim Containerstart stellen wir sicher, dass das Verzeichnis existiert,
|
||||||
# Log-Dateien in world-writable Verzeichnissen aus Sicherheitsgruenden.
|
# www-data gehoert und die noetigen Berechtigungen gesetzt sind.
|
||||||
# Die korrekte Berechtigung ist 755: www-data (Owner) behaelt
|
|
||||||
# Schreibzugriff, anderen Nutzern wird Write entzogen.
|
|
||||||
# ============================================================
|
# ============================================================
|
||||||
ADMINSERV_LOGS_DIR="/var/www/html/logs"
|
ADMINSERV_LOGS_DIR="/var/www/html/logs"
|
||||||
if [ -d "$ADMINSERV_LOGS_DIR" ]; then
|
mkdir -p "$ADMINSERV_LOGS_DIR"
|
||||||
CURRENT_PERMS=$(stat -c '%a' "$ADMINSERV_LOGS_DIR")
|
chmod 777 "$ADMINSERV_LOGS_DIR"
|
||||||
if [ "$CURRENT_PERMS" != "755" ]; then
|
chown -R www-data:www-data "$ADMINSERV_LOGS_DIR" 2>/dev/null || true
|
||||||
echo "==> Korrigiere Berechtigungen fuer AdminServ-Logs-Verzeichnis (${CURRENT_PERMS} -> 755)..."
|
|
||||||
chmod 755 "$ADMINSERV_LOGS_DIR"
|
ADMINSERV_CONFIG_DIR="/var/www/html/config"
|
||||||
echo " Berechtigungen erfolgreich korrigiert."
|
if [ -d "$ADMINSERV_CONFIG_DIR" ]; then
|
||||||
fi
|
chmod 666 "$ADMINSERV_CONFIG_DIR"/*.cfg.php 2>/dev/null || true
|
||||||
|
chown -R www-data:www-data "$ADMINSERV_CONFIG_DIR" 2>/dev/null || true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Starting apache server"
|
echo "Starting apache server"
|
||||||
|
|||||||
+12
-9
@@ -1,6 +1,6 @@
|
|||||||
services:
|
services:
|
||||||
tmserver:
|
tmserver:
|
||||||
image: git.techniverse.net/scriptos/trackmania-server:1.3.2
|
image: git.techniverse.net/scriptos/trackmania-server:1.3.3
|
||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
container_name: tmserver
|
container_name: tmserver
|
||||||
@@ -13,16 +13,19 @@ services:
|
|||||||
- "${SERVER_PORT:-2350}:${SERVER_PORT:-2350}/tcp"
|
- "${SERVER_PORT:-2350}:${SERVER_PORT:-2350}/tcp"
|
||||||
- "${SERVER_PORT:-2350}:${SERVER_PORT:-2350}/udp"
|
- "${SERVER_PORT:-2350}:${SERVER_PORT:-2350}/udp"
|
||||||
- "${SERVER_P2P_PORT:-3450}:${SERVER_P2P_PORT:-3450}/tcp"
|
- "${SERVER_P2P_PORT:-3450}:${SERVER_P2P_PORT:-3450}/tcp"
|
||||||
- "80:80/tcp"
|
- "16080:80/tcp"
|
||||||
|
- "3450:3450/udp"
|
||||||
env_file:
|
env_file:
|
||||||
- .env
|
- .env
|
||||||
|
dns:
|
||||||
|
- 1.1.1.1
|
||||||
volumes:
|
volumes:
|
||||||
- ./data/gamedata:/opt/tmserver/GameData
|
- ./data/gamedata:/opt/tmserver/GameData
|
||||||
- ./data/controlpanel:/var/www/html
|
- ./data/controlpanel:/var/www/html
|
||||||
- ./data/xaseco:/opt/tmserver/xaseco
|
- ./data/xaseco:/opt/tmserver/xaseco
|
||||||
networks:
|
networks:
|
||||||
tmserver_net:
|
tmserver_net:
|
||||||
ipv4_address: 172.20.60.10
|
ipv4_address: 172.20.72.10
|
||||||
|
|
||||||
mariadb:
|
mariadb:
|
||||||
image: mariadb:11.4
|
image: mariadb:11.4
|
||||||
@@ -51,10 +54,10 @@ services:
|
|||||||
start_period: 30s
|
start_period: 30s
|
||||||
networks:
|
networks:
|
||||||
tmserver_net:
|
tmserver_net:
|
||||||
ipv4_address: 172.20.60.11
|
ipv4_address: 172.20.72.11
|
||||||
|
|
||||||
ip-watcher:
|
ip-watcher:
|
||||||
image: alpine:3.21
|
image: alpine:3.24
|
||||||
container_name: tmserver-ip-watcher
|
container_name: tmserver-ip-watcher
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
depends_on:
|
depends_on:
|
||||||
@@ -67,7 +70,7 @@ services:
|
|||||||
- ./assets/bin/WatchPublicIP.sh:/opt/WatchPublicIP.sh:ro
|
- ./assets/bin/WatchPublicIP.sh:/opt/WatchPublicIP.sh:ro
|
||||||
networks:
|
networks:
|
||||||
tmserver_net:
|
tmserver_net:
|
||||||
ipv4_address: 172.20.60.12
|
ipv4_address: 172.20.72.12
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
tmserver_net:
|
tmserver_net:
|
||||||
@@ -75,6 +78,6 @@ networks:
|
|||||||
driver: bridge
|
driver: bridge
|
||||||
ipam:
|
ipam:
|
||||||
config:
|
config:
|
||||||
- subnet: 172.20.60.0/25
|
- subnet: 172.20.72.0/25
|
||||||
gateway: 172.20.60.1
|
gateway: 172.20.72.1
|
||||||
ip_range: 172.20.60.64/26
|
ip_range: 172.20.72.64/26
|
||||||
Reference in new issue
Block a user