↓ Zum Hauptinhalt springen
  1. Anleitungen/

LinuxGSM mit Docker: Dein eigener Gameserver

Patrick Adams
Autor
Patrick Adams
Linux-Administrator und IT-Specialist. Ich schreibe über Server, Self-Hosting und Open-Source-Software, praxisnah und selbst getestet. Mehr über mich →
Inhaltsverzeichnis

Ein Satisfactory-Server läuft mit dem offiziellen LinuxGSM-Image ghcr.io/gameservermanagers/gameserver:sf. Für jedes andere Spiel tauschst du nur das Kürzel hinter dem Doppelpunkt aus. Die vollständige Liste findest du am Ende.

Überblick
#

So funktioniert das Image (docker-gameserver auf GitHub):

  • Ein Image pro Spiel: ghcr.io/gameservermanagers/gameserver:<kürzel> oder gleichwertig von Docker Hub gameservermanagers/gameserver:<kürzel>.
  • Installation beim ersten Start: LinuxGSM lädt den Spielserver beim ersten Start herunter und startet ihn danach automatisch.
  • Automatische Updates: Standardmäßig prüft der Container alle 60 Minuten und bei jedem Start auf Server-Updates.
  • Ein Datenordner: /data im Container ist das Home-Verzeichnis des Benutzers linuxgsm. Dort liegen Serverdateien, Konfiguration, Spielstände und Backups. Diesen Ordner musst du dauerhaft auf dem Host speichern.
  • Kein Root: Der Spielserver läuft als Benutzer linuxgsm, nicht als root.

Voraussetzungen
#

Du brauchst einen Linux-Server (z. B. Ubuntu oder Debian) mit Docker und dem Compose-Plugin. Satisfactory braucht viel Arbeitsspeicher: Plane mindestens 8 GB RAM ein, bei großen Fabriken eher mehr (Richtwert, kein offizieller Wert).

  1. Docker mit dem offiziellen Skript installieren:

    curl -fsSL https://get.docker.com | sudo sh
  2. Deinen Benutzer zur Docker-Gruppe hinzufügen, damit du kein sudo brauchst. Danach einmal ab- und wieder anmelden:

    sudo usermod -aG docker $USER
  3. Prüfen, ob alles da ist:

    docker --version
    docker compose version

Satisfactory-Server einrichten
#

Satisfactory nutzt laut LinuxGSM-Standardkonfiguration Port 7777 (UDP fürs Spiel, TCP für die Server-API) und Port 8888 (TCP, Reliable Port). Diese drei Ports gibst du im Container frei.

  1. Projektordner anlegen:

    mkdir -p ~/gameserver/satisfactory
    cd ~/gameserver/satisfactory
  2. Die Datei docker-compose.yml mit diesem Inhalt anlegen:

    services:
      sfserver:
        image: ghcr.io/gameservermanagers/gameserver:sf
        container_name: sfserver
        volumes:
          - ./data:/data
        ports:
          - "7777:7777/udp"
          - "7777:7777/tcp"
          - "8888:8888/tcp"
        environment:
          - UPDATE_CHECK=60
        restart: unless-stopped
  3. Container starten und die Installation verfolgen. Der erste Start dauert einige Minuten, weil der komplette Server heruntergeladen wird. Mit Strg + C verlässt du nur die Log-Ansicht, der Server läuft weiter:

    docker compose up -d
    docker compose logs -f
  4. Ports in der Firewall öffnen (Beispiel mit ufw) und im Router dieselben Ports an den Server weiterleiten, wenn Freunde von außen spielen sollen:

    sudo ufw allow 7777/udp
    sudo ufw allow 7777/tcp
    sudo ufw allow 8888/tcp
  5. Im Spiel den Server Manager öffnen, den Server mit IP-ADRESSE:7777 hinzufügen, ihn beanspruchen und ein Admin-Passwort vergeben.

Bei Berechtigungsfehlern im Ordner data die Benutzer-ID im Container prüfen und den Ordner dieser ID übergeben:

docker exec sfserver id linuxgsm
sudo chown -R <UID>:<GID> ./data

Server verwalten
#

Alle LinuxGSM-Befehle laufen über docker exec als Benutzer linuxgsm. Der Skriptname ist bei Satisfactory sfserver.

AufgabeBefehl
Status, Ports, Passwörter anzeigendocker exec -it --user linuxgsm sfserver ./sfserver details
Spielserver aktualisierendocker exec -it --user linuxgsm sfserver ./sfserver update
Backup erstellendocker exec -it --user linuxgsm sfserver ./sfserver backup
Spielserver neu startendocker exec -it --user linuxgsm sfserver ./sfserver restart
Live-Logs ansehendocker logs -f sfserver
Shell im Containerdocker exec -it --user linuxgsm sfserver bash
Container stoppen / startendocker compose stop / docker compose start

Image aktualisieren (neue LinuxGSM-Version), im Projektordner. Die Daten in ./data bleiben erhalten:

docker compose pull
docker compose up -d
docker image prune -f

Dateien finden: Weil /data das Home-Verzeichnis ist, liegt alles unter ./data auf dem Host. Die genauen Pfade findest du am schnellsten so:

find ./data -name "sfserver.cfg"     # LinuxGSM-Konfiguration
find ./data -type d -name SaveGames  # Satisfactory-Spielstände
find ./data -type d -name backup     # LinuxGSM-Backups

Update-Verhalten anpassen: UPDATE_CHECK auf 1 bis 59 setzt das Prüfintervall in Minuten, 0 schaltet die regelmäßige Prüfung ab. UPDATE_ON_START=false überspringt das Update beim Containerstart.

Ein anderes Spiel einrichten
#

Für ein anderes Spiel änderst du in der docker-compose.yml drei Dinge: das Kürzel im Image, den Containernamen und die Ports. Beispiel Valheim:

services:
  vhserver:
    image: ghcr.io/gameservermanagers/gameserver:vh
    container_name: vhserver
    volumes:
      - ./data:/data
    network_mode: host
    restart: unless-stopped
  • Ports herausfinden: Jedes Spiel nutzt andere Ports. LinuxGSM zeigt sie nach der Installation und bei jedem Start im Log an, oder mit ./<skriptname> details.
  • Bequeme Alternative: Mit network_mode: host (wie oben) nutzt der Container die Ports des Hosts direkt, und du musst keine einzelnen Ports eintragen. Das offizielle Beispiel verwendet genau diese Variante.
  • Mehrere Server auf einem Host: Jeder Server bekommt einen eigenen Projektordner mit eigenem data-Ordner. Mit network_mode: host dürfen sich die Ports der Spiele nicht überschneiden.

Häufige Probleme
#

ProblemLösung
Server nicht von außen erreichbarFirewall (ufw) und Portweiterleitung im Router prüfen, Ports mit details abgleichen
Permission denied im DatenordnerBenutzer-ID mit docker exec <container> id linuxgsm prüfen und ./data per chown übergeben
Container startet immer wieder neudocker logs <container> lesen; oft fehlt RAM oder Speicherplatz
Update beim Start dauert zu langeUPDATE_ON_START=false setzen

Alle Image-Kürzel
#

Das Image lautet immer ghcr.io/gameservermanagers/gameserver:<Image-Kürzel>. Der Skriptname ist der Befehl für docker exec und meist auch ein guter Containername. Stand: 8. November 2026, 150 Spielserver laut LinuxGSM-Serverliste.

SpielImage-KürzelSkriptname
7 Days to Diesdtdsdtdserver
Action Half-Lifeahlahlserver
Action: Sourceahl2ahl2server
American Truck Simulatoratsatsserver
ARK: Survival Evolvedarkarkserver
ARMA 3arma3arma3server
Arma Reforgerarmararmarserver
Assetto Corsaacacserver
Avorionavavserver
Ballistic Overkillboboserver
Barotraumabtbtserver
Base Defensebdbdserver
BATTALION: Legacybtlbtlserver
Battlefield 1942bf1942bf1942server
Battlefield: Vietnambfvbfvserver
Battlefront Eternalbfebfeserver
Black Mesa: Deathmatchbmdmbmdmserver
Blade Symphonybsbsserver
BrainBreadbbbbserver
BrainBread 2bb2bb2server
Call of Dutycodcodserver
Call of Duty 2cod2cod2server
Call of Duty 4cod4cod4server
Call of Duty: United Offensivecoduocoduoserver
Call of Duty: World at Warcodwawcodwawserver
Chivalry: Medieval Warfarecmwcmwserver
Codename CUREccccserver
Colony Survivalcolcolserver
Conan Exilesceceserver
Core Keeperckckserver
Counter-Strike 1.6cscsserver
Counter-Strike 2cs2cs2server
Counter-Strike: Condition Zerocsczcsczserver
Counter-Strike: Global Offensivecsgocsgoserver
Counter-Strike: Sourcecsscssserver
Counter-Strike: WON2cswoncswonserver
Craftopiactctserver
Day of Defeatdoddodserver
Day of Defeat: Sourcedodsdodsserver
Day of Dragonsdodrdodrserver
Day of Infamydoidoiserver
DayZdayzdayzserver
Deathmatch Classicdmcdmcserver
Don’t Starve Togetherdstdstserver
Double Action: Boogaloodabdabserver
Dystopiadysdysserver
Ecoecoecoserver
Empires Modememserver
ET: Legacyetletlserver
Euro Truck Simulator 2ets2ets2server
Factoriofctrfctrserver
Fistful of Fragsfoffofserver
FiveMfivemfivemserver
Garrys Modgmodgmodserver
Half-Life 2: Deathmatchhl2dmhl2dmserver
Half-Life Deathmatch: Sourcehldmshldmsserver
Half-Life: Deathmatchhldmhldmserver
Half-Life: WON2hlwonhlwonserver
Humanitzhzhzserver
Hurtworldhwhwserver
HYPERCHARGE: Unboxedhcuhcuserver
Hytalehythytserver
Insurgencyinsinsserver
Insurgency: Sandstorminssinssserver
IOSocceriosiosserver
Jabroni Brawl: Episode 3jbep3jbep3server
Jedi Knight II: Jedi Outcastjk2jk2server
Jedi Knight: Jedi Academyjk3jk3server
Just Cause 2jc2jc2server
Just Cause 3jc3jc3server
Killing Floorkfkfserver
Killing Floor 2kf2kf2server
Left 4 Deadl4dl4dserver
Left 4 Dead 2l4d2l4d2server
Luantiluantiluantiserver
Medal of Honor: Allied Assaultmohaamohaaserver
Military Conflict: Vietnammcvmcvserver
Minecraftmcmcserver
Minecraft Bedrockmcbmcbserver
MORDHAUmhmhserver
Multi Theft Automtamtaserver
Natural Selectionnsnsserver
Natural Selection 2ns2ns2server
Necessenecnecserver
No More Room in Hellnmrihnmrihserver
NS2: Combatns2cns2cserver
Nuclear Dawnndndserver
Onsetonsetonsetserver
OpenRA: Red Alertorarorarserver
Operation: Harsh Doorstopohdohdserver
Opposing Forceopforopforserver
Palworldpwpwserver
PaperMCpmcpmcserver
Pavlov VRpvrpvrserver
Pirates Vikings & Knights IIpvkiipvkiiserver
Project Carspcpcserver
Project Cars 2pc2pc2server
Project Zomboidpzpzserver
Quake 2q2q2server
Quake 3: Arenaq3q3server
Quake 4q4q4server
Quake Liveqlqlserver
Quake Worldqwqwserver
Red Orchestra: Ostfront 41-45roroserver
Return to Castle Wolfensteinrtcwrtcwserver
Ricochetricochetricochetserver
Rising Worldrwrwserver
RuneScape: Dragonwildsrsdwrsdwserver
Running With Riflesrwrrwrserver
Rustrustrustserver
San Andreas Multiplayersampsampserver
Satisfactorysfsfserver
SCP: Secret Laboratoryscpslscpslserver
Soldatsolsolserver
Soldier Of Fortune 2: Gold Editionsof2sof2server
Soulmasksmsmserver
SourceForts Classicsfcsfcserver
Squadsquadsquadserver
Squad 44squad44squad44server
Starboundsbsbserver
Stationeersststserver
StickyBotssbotssbotsserver
Survive the Nightsstnstnserver
Sven Co-opsvensvenserver
Team Fortress 2tf2tf2server
Team Fortress 2 Classifiedtf2ctf2cserver
Team Fortress Classictfctfcserver
Teamspeak 3ts3ts3server
Teeworldstwtwserver
Terrariaterrariaterrariaserver
The Fronttftfserver
The Isletitiserver
The Specialistststsserver
Tower Unitetutuserver
Unreal Tournamentututserver
Unreal Tournament 2004ut2k4ut2k4server
Unreal Tournament 3ut3ut3server
Unreal Tournament 99ut99ut99server
Unturneduntuntserver
Valheimvhvhserver
Vampire Slayervsvsserver
Velocity Proxy MCvpmcvpmcserver
Vintage Storyvintsvintsserver
Warforkwfwfserver
WaterfallMCwmcwmcserver
Wolfenstein: Enemy Territorywetwetserver
Wurm Unlimitedwurmwurmserver
Xonoticxntxntserver
Zombie Master: Rebornzmrzmrserver
Zombie Panic! Sourcezpszpsserver

Quellen
#

Verwandte Artikel