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-Servercs2mv-knife1usw.), Labelcs2-mapveto=1. - Ports: Der Spielport kommt zuerst aus den LAN-Ports 27015–27020, danach aus
CS2_PORT_RANGE_STARTbisCS2_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 überCS2_SERVERNAME_PREFIX). - Spieleranzahl:
CS2_MAXPLAYERSist 6 bei Wingman und 12 bei Competitive. CSTV belegt einen Slot. - Volume:
CS2_DOCKER_VOLUME(Standardcs2-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:
Für die Anwendung ändert sich nichts. Der Admin-Bereich zeigt den freien Platz dieser Platte an.
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
LAN oder Internet
- Ohne
CS2_GSLTlä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 etwassh://USER@HOST. CS2_PUBLIC_HOSTist die Adresse, unter der Spieler den Host erreichen.CS2_RCON_HOSTist 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.