FROM debian:bookworm-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 \ && rm -rf /var/lib/apt/lists/* 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/ # 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 \ && chmod -R 777 /var/www/html/ \ && rm -f /var/www/html/index.html \ && mkdir -p /var/www/html/logs \ && chmod 777 /var/www/html/logs # PHP 8 Kompatibilitaets-Patches fuer AdminServ # stristr() akzeptiert seit PHP 8 keine Arrays mehr – is_string()-Check hinzufuegen RUN sed -i \ 's|if(stristr($value, "../"))|if(is_string($value) \&\& stristr($value, "../"))|g' \ /var/www/html/index.php # 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 # Debugging ENV PHP_DISPLAY_ERRORS=false # Volume fuer persistente GameData (Config, Tracks, Skins, Scores, etc.) VOLUME /opt/tmserver/GameData EXPOSE 5000/tcp EXPOSE 2350/tcp EXPOSE 2350/udp EXPOSE 3450/tcp EXPOSE 80/tcp CMD ["/opt/tmserver/RunTrackmaniaServer.sh"]