Files
tmserver-docker/Dockerfile
2026-03-20 19:21:09 +01:00

120 lines
4.2 KiB
Docker
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
FROM debian:bullseye-slim
RUN mkdir /opt/tmserver
WORKDIR /opt/tmserver
# Alle benoetigten Pakete in einem Layer installieren und Cache aufraeumen
RUN apt-get update && apt-get install -y --no-install-recommends \
unzip \
apache2 \
php \
php-zip \
php-xml \
php-mbstring \
php-mysql \
default-mysql-client \
&& rm -rf /var/lib/apt/lists/*
# Apache mod_rewrite aktivieren und AllowOverride fuer .htaccess (RemoteCP-Sicherheit)
RUN a2enmod rewrite \
&& sed -i '/<Directory \/var\/www\/>/,/<\/Directory>/ s/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf
COPY assets/bin/TrackmaniaServer_2011-02-21.zip /opt/tmserver
RUN unzip /opt/tmserver/TrackmaniaServer_2011-02-21.zip -d /opt/tmserver \
&& rm -f /opt/tmserver/TrackmaniaServer_2011-02-21.zip
# Custom-Konfiguration ueber die Standard-Config aus dem ZIP kopieren
COPY assets/config/dedicated_cfg.txt /opt/tmserver/GameData/Config/dedicated_cfg.txt
COPY assets/config/custom_game_settings.txt /opt/tmserver/GameData/Tracks/MatchSettings/
# Config-Verzeichnis rekursiv beschreibbar machen (Server benoetigt Schreibzugriff)
RUN chmod -R 777 /opt/tmserver/GameData/Config/
# Tracks-Verzeichnis fuer AdminServ beschreibbar machen (Maps-Upload/Download)
RUN chown -R www-data:www-data /opt/tmserver/GameData/Tracks/ \
&& chmod -R 755 /opt/tmserver/GameData/Tracks/
# AdminServ-Verzeichnisse im Config-Ordner anlegen
RUN mkdir -p /opt/tmserver/GameData/Config/AdminServ/ServerOptions \
&& chown -R www-data:www-data /opt/tmserver/GameData/Config/AdminServ
# Gesamtes GameData als Default-Template sichern (wird beim ersten Start ins Volume kopiert)
RUN cp -r /opt/tmserver/GameData /opt/tmserver/default-gamedata
COPY assets/bin/RunTrackmaniaServer.sh /opt/tmserver/
RUN sed -i 's/\r$//' /opt/tmserver/RunTrackmaniaServer.sh \
&& chmod +x /opt/tmserver/RunTrackmaniaServer.sh
COPY assets/bin/AdminServ_v2.1.1.zip /var/www/html
RUN unzip /var/www/html/AdminServ_v2.1.1.zip -d /var/www/html \
&& rm -f /var/www/html/AdminServ_v2.1.1.zip \
&& rm -f /var/www/html/index.html \
&& mkdir -p /var/www/html/logs \
&& chmod -R 777 /var/www/html/logs \
&& chmod 666 /var/www/html/config/adminlevel.cfg.php \
&& chmod 666 /var/www/html/config/servers.cfg.php \
&& chmod 666 /var/www/html/config/adminserv.cfg.php \
&& chown -R www-data:www-data /var/www/html/
# RemoteCP installieren (als Subpath /remotecp/)
COPY assets/bin/remoteCP_v4.0.3.5.zip /var/www/html
RUN unzip /var/www/html/remoteCP_v4.0.3.5.zip -d /var/www/html \
&& mv /var/www/html/remoteCP_4.0.3.5-1 /var/www/html/remotecp \
&& rm -f /var/www/html/remoteCP_v4.0.3.5.zip \
&& mkdir -p /var/www/html/remotecp/cache \
&& chmod -R 777 /var/www/html/remotecp/cache \
&& chmod -R 666 /var/www/html/remotecp/xml/*.xml \
&& chmod -R 777 /var/www/html/remotecp/xml \
&& chmod -R 777 /var/www/html/remotecp/xml/settings \
&& chown -R www-data:www-data /var/www/html/remotecp/
# AdminServ- und RemoteCP-Dateien als Default-Template sichern (wird beim ersten Start ins Volume kopiert)
RUN cp -r /var/www/html /opt/tmserver/default-controlpanel
# PHP-Debug-Konfiguration: wird zur Laufzeit vom Startup-Script gesetzt
# (kein Rebuild noetig nur Container neustarten)
# --- Umgebungsvariablen ---
# Sensible Werte (Passwoerter, Keys) werden NICHT im Image hinterlegt,
# sondern muessen zur Laufzeit uebergeben werden (z.B. via .env-Datei).
# Server-Optionen (nicht-sensible Standardwerte)
ENV SERVER_NAME="Trackmania Server"
ENV SERVER_DESC="Powered by tmserver-docker"
ENV SERVER_HIDE=0
ENV SERVER_MAX_PLAYERS=32
ENV SERVER_MAX_SPECTATORS=32
ENV SERVER_LADDER_MODE=forced
# Netzwerk
ENV SERVER_PORT=2350
ENV SERVER_P2P_PORT=3450
ENV SERVER_XMLRPC_PORT=5000
ENV SERVER_UPLOAD_RATE=512
ENV SERVER_DOWNLOAD_RATE=8192
# Server-Modus und Config-Steuerung
ENV SERVER_MODE=internet
ENV FORCE_CONFIG_UPDATE=false
# RemoteCP
ENV REMOTECP_DB_HOST=mariadb
ENV REMOTECP_DB_NAME=remotecp
ENV REMOTECP_DB_USER=remotecp
# Debugging
ENV PHP_DISPLAY_ERRORS=false
# Volumes fuer persistente Daten
VOLUME /opt/tmserver/GameData
VOLUME /var/www/html
EXPOSE 5000/tcp
EXPOSE 2350/tcp
EXPOSE 2350/udp
EXPOSE 3450/tcp
EXPOSE 80/tcp
CMD ["/opt/tmserver/RunTrackmaniaServer.sh"]