Compare commits

..
6 Commits
Author SHA1 Message Date
Patrick Asmus 592f047274 fix(docker): Debian Bullseye Archive-Repositories fuer Paketinstallation nutzen
Build & Push Docker Image / build-and-push (push) Successful in 1m18s
2026-10-31 11:36:15 +01:00
Patrick Asmus d550e814e2 fix: AdminServ Schreibrechte fuer ./logs/ und Configs bei Containerstart sicherstellen (Fixes #19)
Build & Push Docker Image / build-and-push (push) Failing after 20s
AdminServ erfordert zwingend Schreibrechte auf ./logs/ (777) und die Konfigurationsdateien (666). Das fruehere automatische Zuruecksetzen auf 755 fuehrte nach Reboots oder Wiederherstellung von Backups zum Fehler 'path was not required rights: ./logs/'. Bei jedem Start werden nun 777 und www-data Ownership fuer ./logs/ sichergestellt.
2026-10-31 11:27:30 +01:00
Patrick Asmus 9ac5c997a2 feat: Upgrade ip-watcher Image auf alpine:3.24 und Netzwerk-Ports aktualisiert
Upgrade des ip-watcher Hilfscontainers von alpine:3.21 auf alpine:3.24. Zudem Web-Port auf 16080 umgestellt, P2P UDP 3450 hinzugefügt und lokales Subnetz aktualisiert.
2026-10-31 11:06:48 +01:00
scriptos 49bc08129a Update Readme.md 2026-04-23 13:28:58 +02:00
scriptos 7325400175 Update Readme.md 2026-04-23 13:27:28 +02:00
scriptos 22733ce651 Merge pull request 'release-1.3.2' (#18) from release-1.3.2 into master
Build & Push Docker Image / build-and-push (push) Successful in 51s
Reviewed-on: #18
2026-03-26 22:08:33 +00:00
5 changed files with 65 additions and 36 deletions

No files matched your search

+3
View File
@@ -5,3 +5,6 @@
data/
.ki-workspace/
backups/
dockernet-inspector.v1.sh
script.sh
+5
View File
@@ -5,6 +5,11 @@ RUN mkdir /opt/tmserver
WORKDIR /opt/tmserver
# 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 \
unzip \
apache2 \
+32 -13
View File
@@ -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
- **[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**.
## Schnellstart
## 🚀 Schnellstart
### 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`.
## Dokumentation
## 📚 Dokumentation
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
- [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!
## Spiegelung
## 🔄 Spiegelung
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)
- **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">
<img src="https://assets.techniverse.net/f1/git/graphics/gray0-catonline.svg" alt="">
</p>
<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>
</p>
<sub>
© Patrick Asmus · Techniverse Network · <a href="./LICENSE">Lizenz</a>
</sub>
</p>
+13 -14
View File
@@ -39,7 +39,7 @@ DEFAULT_CONTROLPANEL="/opt/tmserver/default-controlpanel"
if [ ! -f "$ADMINSERV_DIR/index.php" ]; then
echo "==> Erster Start erkannt: Kopiere AdminServ-Dateien ins Volume..."
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/servers.cfg.php"
chmod 666 "$ADMINSERV_DIR/config/adminserv.cfg.php"
@@ -493,22 +493,21 @@ if [ -f "$ADMINSERV_CFG_VOL" ] && grep -q "0b28a5799a32c687dad2c5183718ceac" "$A
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
# (world-writable) angelegt. logrotate verweigert die Rotation von
# Log-Dateien in world-writable Verzeichnissen aus Sicherheitsgruenden.
# Die korrekte Berechtigung ist 755: www-data (Owner) behaelt
# Schreibzugriff, anderen Nutzern wird Write entzogen.
# AdminServ verlangt Schreibrechte (777 fuer ./logs/ und 666 fuer Configs).
# Beim Containerstart stellen wir sicher, dass das Verzeichnis existiert,
# www-data gehoert und die noetigen Berechtigungen gesetzt sind.
# ============================================================
ADMINSERV_LOGS_DIR="/var/www/html/logs"
if [ -d "$ADMINSERV_LOGS_DIR" ]; then
CURRENT_PERMS=$(stat -c '%a' "$ADMINSERV_LOGS_DIR")
if [ "$CURRENT_PERMS" != "755" ]; then
echo "==> Korrigiere Berechtigungen fuer AdminServ-Logs-Verzeichnis (${CURRENT_PERMS} -> 755)..."
chmod 755 "$ADMINSERV_LOGS_DIR"
echo " Berechtigungen erfolgreich korrigiert."
fi
mkdir -p "$ADMINSERV_LOGS_DIR"
chmod 777 "$ADMINSERV_LOGS_DIR"
chown -R www-data:www-data "$ADMINSERV_LOGS_DIR" 2>/dev/null || true
ADMINSERV_CONFIG_DIR="/var/www/html/config"
if [ -d "$ADMINSERV_CONFIG_DIR" ]; then
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
echo "Starting apache server"
+12 -9
View File
@@ -1,6 +1,6 @@
services:
tmserver:
image: git.techniverse.net/scriptos/trackmania-server:1.3.2
image: git.techniverse.net/scriptos/trackmania-server:1.3.3
build:
context: .
container_name: tmserver
@@ -13,16 +13,19 @@ services:
- "${SERVER_PORT:-2350}:${SERVER_PORT:-2350}/tcp"
- "${SERVER_PORT:-2350}:${SERVER_PORT:-2350}/udp"
- "${SERVER_P2P_PORT:-3450}:${SERVER_P2P_PORT:-3450}/tcp"
- "80:80/tcp"
- "16080:80/tcp"
- "3450:3450/udp"
env_file:
- .env
dns:
- 1.1.1.1
volumes:
- ./data/gamedata:/opt/tmserver/GameData
- ./data/controlpanel:/var/www/html
- ./data/xaseco:/opt/tmserver/xaseco
networks:
tmserver_net:
ipv4_address: 172.20.60.10
ipv4_address: 172.20.72.10
mariadb:
image: mariadb:11.4
@@ -51,10 +54,10 @@ services:
start_period: 30s
networks:
tmserver_net:
ipv4_address: 172.20.60.11
ipv4_address: 172.20.72.11
ip-watcher:
image: alpine:3.21
image: alpine:3.24
container_name: tmserver-ip-watcher
restart: unless-stopped
depends_on:
@@ -67,7 +70,7 @@ services:
- ./assets/bin/WatchPublicIP.sh:/opt/WatchPublicIP.sh:ro
networks:
tmserver_net:
ipv4_address: 172.20.60.12
ipv4_address: 172.20.72.12
networks:
tmserver_net:
@@ -75,6 +78,6 @@ networks:
driver: bridge
ipam:
config:
- subnet: 172.20.60.0/25
gateway: 172.20.60.1
ip_range: 172.20.60.64/26
- subnet: 172.20.72.0/25
gateway: 172.20.72.1
ip_range: 172.20.72.64/26