Beiträge von Rauii

    Update: Docker & Wine - "The Long Haul" Patch (1.2.0.0.103720+103728)

    Ich habe die Docker- und Wine-Umgebung erfolgreich mit dem neuen "The Long Haul"-Patch getestet.

    Sollte das Update bei euch noch nicht installiert sein, geht bitte wie folgt vor:

    Führt einen Neustart des Containers durch:

    Code
    docker restart scum-server


    (Ersetzt "scum-server" ggf. durch euren Containernamen)

    Anschließend könnt ihr mit folgendem Befehl beobachten, wie SteamCMD das Update herunterlädt:

    Code
    docker logs -f scum-server

    Wichtiger Hinweis:
    Zur Stabilität des Servers kann ich aktuell noch keine verlässliche Aussage treffen, da ich das Update noch nicht ausführlich unter Last testen konnte.

    Alles klar. Entschuldige bitte, dass ich dir nicht weiterhelfen konnte. Ich teste gerade, wie sich das System verhält, wenn das Spiel im Docker-Container in den Swap-Speicher ausgelagert wird.

     CONTAINER ID   NAME              CPU %     MEM USAGE / LIMIT     MEM %     NET I/O   BLOCK I/O         PIDS
    91c0b48381cc   scum-server-2-t   9.31%     2.968GiB / 3GiB       98.94%    0B / 0B   19.9GB / 8.55GB   105
    082a33813413   scum-server       3.77%     9.814GiB / 62.79GiB   15.63%    0B / 0B   3.33GB / 831MB    107


    Ich kann mich zwar verbinden, aber ohne andere Spieler ist es schwer zu testen, weil mir das Feedback fehlt.

    ich weis nicht ob man hier ips rein schreiben darf

    Das ist eine kritische Situation. Bitte lies das hier genau durch, bevor du weitermachst.

    Es gibt zwei Punkte: Die Erklärung zu deinem Befehl (einfach) und das Problem mit dem Server-Absturz (dringend).


    1. Dringend: Warum deine Webseiten & der Server streiken

    Ja, das hängt zu 99% mit der Swap-Datei zusammen.

    Wenn du eine 25GB große Datei erstellst (fallocate -l 25G), nimmst du sofort 25GB von deinem Festplattenspeicher weg.

    Die Wahrscheinlichkeit ist extrem hoch, dass deine Festplatte jetzt zu 100% voll ist.

    • Wenn die Festplatte voll ist, können Webserver (Apache/Nginx) keine Logs mehr schreiben -> Webseiten gehen offline.
    • Datenbanken (MySQL) stoppen sofort -> Webseiten gehen offline.
    • Docker kann keine Status-Dateien mehr schreiben -> Container lassen sich nicht mehr steuern.

    Lösungsschritte (Sofort ausführen):

    Geh auf deinen Root-Server (via SSH, falls noch möglich) und gib diesen Befehl ein:

    Bash


    Code
    df -h

    Schau auf die Zeile, die auf / (Root) endet.

    • Steht dort bei Use% 100% (oder 99%)?

    Wenn JA, musst du die Swap-Datei sofort löschen, damit der Server wieder atmen kann:

    1. Swap deaktivieren: swapoff /swapfile
    2. Datei löschen: rm /swapfile
    3. Eintrag aus /etc/fstab wieder entfernen (damit er beim Neustart nicht meckert).

    Wichtig: Wenn deine Festplatte zu klein ist (z.B. wenn du nur 40-50GB insgesamt hast), kannst du keinen 25GB Swap anlegen. Du müsstest den Swap kleiner machen (z.B. 4GB oder 8GB), aber dann darfst du Docker auch nicht so viel Swap versprechen.


    2. Zu deiner Frage mit dem Docker-Befehl

    Wenn der Platz wieder da ist, zur Erklärung der Logik:

    Der Befehl --memory-swap gibt immer den GESAMTWERT an (RAM + Swap zusammen).

    • Deine aktuelle Einstellung: --memory 25g --memory-swap 50g Rechnung: 50GB Gesamt - 25GB RAM = 25GB Swap. 👉 Das ist KORREKT, wenn du willst, dass er 25GB auslagern darf.
    • Deine Idee: --memory 25g --memory-swap 25g Rechnung: 25GB Gesamt - 25GB RAM = 0GB Swap. 👉 Das ist FALSCH, wenn du Swap nutzen willst. Damit würdest du Swap für den Container komplett verbieten.

    Also: Lass den Befehl auf 50g, ABER das funktioniert nur, wenn deine Festplatte groß genug für die 25GB Swap-Datei ist (siehe Punkt 1).


    Zusammenfassung & Nächste Schritte

    1. Prüfe SOFORT den Speicherplatz mit df -h.
    2. Wenn voll: Lösche das Swapfile vorerst.
    3. Starten die Webseiten dann wieder? (Evtl. service apache2 restart oder service nginx restart nötig).
    4. Überlege: Wie viel Platz hast du wirklich frei? Wenn du nur noch 10GB frei hast, erstelle nur ein 8GB Swapfile.

    Wenn du mir sagst, was df -h ausgibt, kann ich dir sagen, wie groß dein Swap maximal sein darf.

    Das sind sehr nützliche Informationen. Anhand deines docker stats Outputs und deiner Beschreibung kann ich genau sehen, was los ist.

    Hier sind die wichtigsten Erkenntnisse und der entscheidende Tipp, warum dein Swap vermutlich "nicht funktioniert":

    1. Das RAM-Limit funktioniert (und rettet deinen Server)

    Dein Output zeigt: MEM USAGE / LIMIT: 15.23GiB / 25GiB

    Das bedeutet:

    • Docker begrenzt den Container erfolgreich auf 25 GB.
    • Dein Root-Server (32 GB) hat also noch ca. 7 GB für das System übrig.
    • Das ist genau richtig eingestellt. Würdest du das Limit entfernen, würde der SCUM-Server wahrscheinlich versuchen, 30GB+ zu ziehen, und Linux würde den gesamten Server (Host) abstürzen lassen, um sich zu retten. Lass die Begrenzung auf 25 GB also unbedingt drin!

    2. Der entscheidende Tipp: Warum Swap "nicht funktioniert"

    Du hast --memory-swap 50g eingestellt. Das bedeutet in der Docker-Logik:

    • 25 GB echter RAM
      • 25 GB Swap (Auslagerungsdatei auf der Festplatte)
    • = 50 GB Gesamtspeicher für den Container.

    Das Problem: Docker kann keinen Swap herbeizaubern. Docker nutzt den Swap des Host-Systems (deines Root-Servers). Viele Root-Server werden standardmäßig ohne Swap-Datei ausgeliefert. Wenn dein Linux-Host keinen Swap hat, ignoriert Docker den Befehl --memory-swap einfach (bzw. kann ihn nicht nutzen), und der Container stürzt ab, sobald er die 25 GB RAM voll hat, anstatt auf die Festplatte auszulagern.

    So prüfst und behebst du das:

    1. Gib auf deinem Root-Server (nicht im Container) folgenden Befehl ein: free -h
    2. Schau in die Zeile Swap. Steht dort 0B bei "Total"?
      • Falls ja (0B): Das ist der Fehler! Dein Server hat keinen Auslagerungsspeicher.
      • Lösung: Du musst eine Swap-Datei auf dem Host anlegen.

    Anleitung zum Anlegen von 25GB Swap auf dem Host: Führe diese Befehle nacheinander als Root auf dem Server aus:

    Bash


    Sobald du das gemacht hast, wird Docker die Swap-Einstellung tatsächlich nutzen können. Wenn der RAM (25GB) voll ist, schreibt der Server dann auf die Festplatte weiter, statt abzustürzen. Das Spiel wird dann zwar langsamer (weil Festplatte langsamer ist als RAM), aber der Server bleibt online.

    3. Zusatz-Tipp: Auto-Restart

    SCUM ist bekannt für "Memory Leaks" (es frisst Speicher und gibt ihn nicht zurück). Selbst mit Swap wird es irgendwann voll laufen. Wie in unserem früheren Tutorial besprochen, ist der sicherste Weg ein geplanter Neustart am frühen Morgen.

    Falls du es noch nicht eingerichtet hast, per crontab -e: 0 6 * * * docker restart scum-server

    Zusammenfassung:

    1. Lass das 25GB RAM-Limit aktiv (es schützt deinen Root-Server).
    2. Prüfe mit free -h, ob dein Host überhaupt Swap hat.
    3. Erstelle ggf. das Swapfile auf dem Host, damit --memory-swap überhaupt greifen kann.

    Entschuldige die späte Antwort, ich habe das gerade erst gesehen. Könntest du bitte mal docker stats ausführen und die Ausgabe hier posten? Das sollte so aussehen:

    Code
    CONTAINER ID   NAME          CPU %     MEM USAGE / LIMIT    MEM %     NET I/O   BLOCK I/O        PIDS
    082a33813413   scum-server   4.84%     9.84GiB / 62.79GiB   15.67%    0B / 0B   3.33GB / 726MB   107

    Damit können wir prüfen, ob dein Docker-Container überhaupt den vollen Arbeitsspeicher nutzen darf oder ob irgendwo ein Limit (Memory Limit) konfiguriert ist.

    🧟‍♂️ Der ultimative SCUM Server auf Linux (Docker + Wine)

    Dieses Setup nutzt Debian 12, Wine 10 (für Windows-Kompatibilität) und den Docker Host-Mode für maximale Performance und stabile Verbindungen ohne Port-Probleme.

    ✅ Voraussetzungen

    • Ein Linux Server (vServer oder Root) mit mind. 4 CPU-Kernen und 8-16 GB RAM.
    • Docker & Docker Compose installiert.
    • Ein FTP-Programm (z.B. WinSCP).
    • Putty Für die ssh Verbindung

    Schritt 1: Ordnerstruktur erstellen & Rechte setzen

    Wir erstellen einen Ordner, in dem alles liegt. Wichtig: Wir geben dem Daten-Ordner volle Rechte, damit du später mit WinSCP alles bearbeiten kannst und Docker keine "Permission Denied" Fehler wirft.

    Bash


    Code
    # 1. Hauptordner erstellen
    mkdir -p ~/scum-docker/data
    
    # 2. In den Ordner gehen
    cd ~/scum-docker
    
    # 3. WICHTIG: Schreibrechte für alle (Löst WinSCP & Docker Konflikte)
    chmod -R 777 data

    Schritt 2: Das Dockerfile (Das Herzstück)

    Erstelle die Datei Dockerfile:

    Bash


    Code
    nano Dockerfile

    Füge diesen Inhalt ein. Er installiert Wine, Vulkan Grafiktreiber und setzt den Symlink-Trick, damit SteamCMD die Dateien immer am richtigen Ort ablegt.

    Dockerfile



    Schritt 3: Das Start-Skript (start-server.sh)

    Erstelle die Datei start-server.sh:

    Bash


    Code
    nano start-server.sh

    Dieser Inhalt sorgt für das automatische Update bei jedem Start und nutzt die manuelle Xvfb-Methode für Stabilität.

    Bash



    Schritt 4: Die docker-compose.yml

    Erstelle die Datei docker-compose.yml:

    Bash


    Code
    nano docker-compose.yml

    Wir nutzen network_mode: "host", damit der Server direkt am Internet hängt (kein Port-Forwarding Stress).

    YAML



    Schritt 5: Server starten & Firewall

    Jetzt bauen wir den Container und starten ihn. Der erste Start dauert ca. 10-20 Minuten (Download von ~15 GB).

    Bash


    Code
    docker compose up -d --build

    Die Firewall (UFW) einstellen: Während der Server lädt, öffne die Ports. Das ist die komplette Liste:

    Bash


    Code
    sudo ufw allow 7777/udp   # Game
    sudo ufw allow 7778/udp   # Peer (WICHTIG!)
    sudo ufw allow 7779/udp   # Connection
    sudo ufw allow 7777/tcp   # Handshake
    sudo ufw allow 7779/tcp   # Handshake
    sudo ufw allow 27015:27017/udp # Steam Query wen schon 
    sudo ufw allow 8037/udp   # BattlEye
    sudo ufw reload

    Schritt 6: Admin werden & Konfiguration

    Sobald der Server einmal lief (prüfe mit docker logs -f scum-server), kannst du ihn konfigurieren.

    1. Admin werden (Gott-Modus): Führe diesen Befehl im Terminal aus (ersetze die ID durch deine SteamID64):

    Bash


    Code
    echo "76561steam64" > ~/scum-docker/data/SCUM/Saved/Config/WindowsServer/AdminUsers.ini
    docker restart scum-server

    2. Einstellungen ändern (ServerSettings.ini:( Verbinde dich mit WinSCP zum Ordner ~/scum-docker/data/SCUM/Saved/Config/WindowsServer/. Bearbeite die ServerSettings.ini.

    • Tipp: Setze scum.MaxPingCheckEnabled=0, damit Docker dich nicht kickt.

    Schritt 7: Automatischer Neustart & Updates (Cronjob)

    Damit der Server jeden Morgen um 06:00 Uhr Updates zieht und neu startet (mit Logbuch):

    1. crontab -e
    2. Zeile einfügen:

      Bash


      Code
      0 6 * * * docker restart scum-server && echo "$(date) - Server Update & Neustart erfolgreich" >> ~/server_status.log

    🎉 Fertig!

    Dein Server ist jetzt:

    • High Performance (Host Mode, Vulkan).
    • Wartungsarm (Auto-Updates jeden Morgen).
    • Sicher (Firewall konfiguriert).
    • Anpassbar (Voller Zugriff auf Configs via WinSCP).

    Viel Spaß auf der Insel! 🧟‍♂️🏝️

    ⚠️ Wichtiger Haftungsausschluss (Disclaimer)

    Bitte vor der Installation sorgfältig lesen:

    Die in dieser Anleitung bereitgestellten Informationen, Skripte und Konfigurationsdateien wurden nach bestem Wissen und Gewissen erstellt und getestet. Die Nutzung dieser Anleitung erfolgt jedoch ausschließlich auf eigene Gefahr.

    Ich (der Ersteller dieser Anleitung) übernehme keine Haftung für:

    1. Schäden an der Hardware:
      • Durch den Betrieb eines Game-Servers (insbesondere SCUM) entsteht eine hohe Last auf Prozessor (CPU), Arbeitsspeicher (RAM) und Festplatten (I/O). Ich hafte nicht für Überhitzung, Hardware-Defekte, verkürzte Lebensdauer von Komponenten oder Folgeschäden an der Server-Hardware.
    2. Datenverlust oder Software-Schäden:
      • Es wird keine Garantie für die Integrität der Spieldaten übernommen. Savegames können durch Updates, falsche Konfigurationen oder Abstürze korrupt werden. Regelmäßige Backups liegen in der alleinigen Verantwortung des Nutzers.
    3. Sicherheit und Netzwerk:
      • Das Öffnen von Ports und das Betreiben eines öffentlichen Servers birgt immer Sicherheitsrisiken. Für etwaige Sicherheitslücken, DDoS-Angriffe oder unbefugte Zugriffe auf den Server wird keine Haftung übernommen.
    4. Funktionalität:
      • Da sich Software (Docker, Linux, Wine, SCUM) ständig weiterentwickelt, kann keine Garantie dafür übernommen werden, dass diese Anleitung in Zukunft ohne Anpassungen funktioniert.

    Mit der Durchführung der hier beschriebenen Schritte bestätigst du, dass du über das nötige technische Verständnis verfügst und die alleinige Verantwortung für deinen Server trägst.