4
Docker Betrieb
SPP User edited this page 2026-11-01 18:31:45 +01:00
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.

Docker-Betrieb

Mit SERVER_ADAPTER=docker startet die Anwendung pro Match einen Container mit dem Image joedwards32/cs2. Das Image lädt CS2 über SteamCMD. Alle Container teilen sich ein Volume.

Grundlagen

  • Container: Namen cs2mv-<matchId> (Messer-Server cs2mv-knife1 usw.), Label cs2-mapveto=1.
  • Ports: Der Spielport kommt zuerst aus den LAN-Ports 27015–27020, danach aus CS2_PORT_RANGE_START bis CS2_PORT_RANGE_END. Der CSTV-Port liegt immer 100 darüber (CS2_TV_PORT_OFFSET). Details unter Steam-LAN-Browser.
  • Netz: Server auf LAN-Ports laufen im Netz des Hosts (--network host), alle anderen mit Port-Weiterleitung. Ist ein Port von einem fremden Dienst belegt, nimmt die Anwendung den nächsten.
  • Servername: Maxlan | Team A vs. Team B (Anfang über CS2_SERVERNAME_PREFIX).
  • Spieleranzahl: CS2_MAXPLAYERS ist 6 bei Wingman und 12 bei Competitive. CSTV belegt einen Slot.
  • Volume: CS2_DOCKER_VOLUME (Standard cs2-mapveto-gamefiles), rund 60 bis 73 GB. So lädt nicht jeder Container neu.
  • Start-Warteschlange: Die Container starten nacheinander, damit SteamCMD nicht parallel auf das Volume schreibt. Ein Container gilt als bereit, sobald der Update-Check beendet ist oder RCON antwortet.
  • Startzeit: CS2_START_TIMEOUT_MINUTES (Standard 20). Der erste Start auf einem neuen Host lädt rund 73 GB und braucht oft länger. Dann die Startzeit im Admin-Bereich erhöhen oder danach „Server neu starten / wiederholen“, der Download macht an der Stelle weiter.
  • Volume auf einer anderen Platte: Ist auf der Systemplatte zu wenig Platz, legt man das Volume per Bind-Mount auf eine größere Platte:
    sudo mkdir -p /mnt/daten/cs2-mapveto
    docker volume create --driver local --opt type=none --opt o=bind --opt device=/mnt/daten/cs2-mapveto cs2-mapveto-gamefiles
    
    Für die Anwendung ändert sich nichts. Der Admin-Bereich zeigt den freien Platz dieser Platte an.

LAN oder Internet

  • Ohne CS2_GSLT läuft der Server im LAN-Modus (sv_lan 1). Spieler im selben Netz verbinden sich direkt.
  • Mit CS2_GSLT (Game Server Login Token für App 730) ist der Server öffentlich erreichbar.

Voraussetzungen auf dem Docker-Host

  • Docker erreichbar über DOCKER_HOST, bei SSH etwa ssh://USER@HOST.
  • CS2_PUBLIC_HOST ist die Adresse, unter der Spieler den Host erreichen.
  • CS2_RCON_HOST ist die Adresse, unter der das Backend die RCON-Ports erreicht.
  • Passwörter bestehen nur aus Buchstaben und Ziffern. Die Anwendung erzeugt sie selbst.

Betrieb als Container

Ein Container mit Webseite, Backend und Datenbank startet die CS2-Container auf demselben Host. Dafür gibt es deploy/compose.yml mit deploy/.env. Details im Repository unter docs/container.md.

Image aktualisieren

Im Admin-Bereich unter Einstellungen → Image aktualisieren lädt die Anwendung das Image auf allen Hosts gleichzeitig neu. Laufende Server laufen weiter. Die CS2-Spieldateien aktualisiert jeder Container beim Start selbst.

Spieldateien aktualisieren

Im Admin-Bereich unter Einstellungen → Spieldateien aktualisieren. Holt das neueste CS2-Update per SteamCMD in das Spieldateien-Volume jedes Hosts, in einem kurzlebigen Container (cs2mv-update-<host>). Das Image-Update allein bringt keine neuen Spieldateien. Der Knopf zeigt den Fortschritt („Update läuft 43 %“), darunter steht pro Host das Ergebnis, z. B. „bereits aktuell (Build 26334290)“. Hosts mit laufenden Servern (Matches oder Messer-Server) werden ausgelassen, außer man setzt den Haken „auch Hosts mit laufenden Servern“. Laufende Server nutzen die neuen Dateien erst nach einem Neustart.

Bekannte Grenzen

  • Der Static-Adapter ist bislang nicht gegen einen echten Server im Dauerbetrieb geprüft.
  • Ein laufendes Match lässt sich nicht auf einen anderen Host verschieben.