Anleitungen

Satisfactory Server mieten und einrichten: Dedicated Server unter Linux (Ports 7777 und 8888, RAM)

Satisfactory Server mieten und selbst betreiben: Dedicated Server unter Linux mit SteamCMD-App 1690800, Ports 7777 und 8888, RAM fürs Late Game und systemd.

Veröffentlicht ~10 Min. Lesezeit
Auf dieser Seite

Kurz gesagt: Ein Satisfactory Dedicated Server ist das kostenlose Tool Satisfactory Dedicated Server, SteamCMD-App 1690800, das deine Fabrik weiterlaufen lässt, ohne dass der PC eines Mitspielers laufen muss. Wer einen Satisfactory-Server mieten und selbst betreiben will, lädt ihn unter Linux mit SteamCMD herunter, öffnet 7777 über TCP und UDP plus 8888 über TCP, gibt ihm mindestens 8 GB RAM (16 GB für einen Spielstand im Late Game), startet FactoryServer.sh unter systemd mit SIGINT als Stoppsignal und beansprucht ihn dann im Server Manager des Spiels. Diese Anleitung geht jeden Schritt unter Ubuntu 24.04 und Debian 12/13 durch.

PunktWertHinweis
SteamCMD-App-ID1690800Anonymer Login klappt; -beta experimental für den Experimental-Zweig
Spielport7777 TCP + UDPSpieltraffic und die HTTPS-API des Servers
Reliable Messaging8888 TCPNötig seit Patch 1.1
RAMmindestens 8 GB16 GB für große Spielstände oder mehr als vier Spieler
StartskriptFactoryServer.shMit SIGINT stoppen, damit er sauber herunterfährt
Spielerlimitstandardmäßig 4Mit MaxPlayers in der Game.ini erhöhen

Welche Hardware braucht ein Satisfactory-Server?

Das offizielle Wiki nennt 8 GB RAM als Minimum und 16 GB für größere Spielstände oder mehr als vier Spieler. Es nennt außerdem einen Mindestwert für die Single-Thread-Leistung der CPU, und das zeigt, worauf es ankommt: Leistung pro Kern, nicht viele Kerne. Der Server läuft nur auf x86-64; einen ARM-Build gibt es nicht. Die Linux-Serverdateien belegen etwa 8 GB, bemiss den Speicherplatz also dafür plus Spielstände und ein paar Backup-Archive.

  • Frische Welt, zwei oder drei Freunde: 8 GB reichen. Der Server braucht wenig, solange die Fabrik klein ist.
  • Late Game: Der RAM-Bedarf wächst mit dem Spielstand. Tausende Maschinen, Förderbänder und Züge auf der Karte treiben den Verbrauch weit über den Startwert, also plane für eine Welt, die du zu Ende spielen willst, von Anfang an die 16 GB ein, die das Wiki empfiehlt.
  • Lass dem Betriebssystem Luft. Nimmt sich der Server jedes letzte Megabyte, beendet ihn der OOM-Killer des Kernels mitten in der Sitzung. Halte 1 bis 2 GB für das Betriebssystem frei und leg eine kleine Swap-Datei als Sicherheitsnetz an.

Wenn du dafür einen Server mietest, ist bei VMHeaven Hi-CPU KVM die Linie für genau diese Last: AMD EPYC mit ECC-Speicher, weniger vCores pro Tarif, gedacht für Last, die auf einem oder zwei Threads liegt. Willst du auf derselben Maschine noch anderes hosten, bietet Standard KVM mehr Intel-Kerne zu denselben Preisen. Wie viel Satisfactory im Vergleich zu zehn anderen Spielen auf beiden Linien braucht, zeigt die Seite Gaming VPS.

Wie installiere ich den Server mit SteamCMD?

  1. 1Einen Benutzer für den Server anlegen

    Betreibe einen Gameserver nie als root. Gib ihm ein eigenes Konto mit eigenem Home-Verzeichnis:

    Debian · Ubuntu
    sudo useradd --system --create-home --home-dir /opt/satisfactory \
      --shell /usr/sbin/nologin satisfactory
  2. 2SteamCMD installieren

    SteamCMD ist ein 32-Bit-Programm, deshalb brauchen beide Distributionen die Architektur i386. Ubuntu liefert es in multiverse aus, Debian in non-free. Der Installer zeigt einmal die Steam-Lizenz; akzeptiere sie, um weiterzumachen.

    Ubuntu 24.04
    sudo add-apt-repository -y multiverse
    sudo dpkg --add-architecture i386
    sudo apt update
    sudo apt install -y steamcmd
    Debian 12 · 13
    sudo dpkg --add-architecture i386
    # fügt nur die Komponente non-free hinzu; überspringen, wenn deine Quellen sie schon enthalten
    sudo tee /etc/apt/sources.list.d/non-free.sources >/dev/null <<EOF
    Types: deb
    URIs: http://deb.debian.org/debian
    Suites: $(. /etc/os-release && echo "$VERSION_CODENAME")
    Components: non-free
    Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
    EOF
    sudo apt update
    sudo apt install -y steamcmd
  3. 3Den Dedicated Server herunterladen

    Führe SteamCMD als Dienstbenutzer aus, damit jede Datei ihm gehört. Das Installationsverzeichnis muss vor dem Login stehen:

    Debian · Ubuntu
    sudo -u satisfactory -H /usr/games/steamcmd \
      +force_install_dir /opt/satisfactory/server \
      +login anonymous +app_update 1690800 validate +quit
    
    # stattdessen der Experimental-Zweig (die Spieler müssen auch auf Experimental sein):
    #   +app_update 1690800 -beta experimental validate

    Der Lauf endet mit Success! App '1690800' fully installed. Für spätere Updates wiederholst du denselben Befehl.

Welche Ports nutzt ein Satisfactory-Server?

Seit Patch 1.1 braucht der Server zwei Ports. Über Port 7777 laufen der Spieltraffic per UDP und die HTTPS-API des Servers per TCP, öffne ihn also für beide Protokolle. Port 8888 über TCP ist der Kanal für Reliable Messaging. Die Query-Ports 15000 und 15777 aus der Early-Access-Zeit werden seit 1.0 nicht mehr genutzt, entferne alte Regeln dafür also. Port 7777 lässt sich nicht auf einen anderen Port umleiten: Der Port, mit dem sich Spieler verbinden, muss der sein, auf dem der Server lauscht.

ufw · Debian, Ubuntu
sudo ufw allow 7777 comment 'Satisfactory game + API'
sudo ufw allow 8888/tcp comment 'Satisfactory reliable messaging'
sudo ufw status

# nachdem der Server gestartet ist: lauscht er auf beiden?
sudo ss -tulpn | grep -E ':(7777|8888)\b'

ufw allow 7777 ohne Protokoll öffnet TCP und UDP zusammen. Nur 7777 zu öffnen ist der Fehler, den ältere Anleitungen noch machen: Sie entstanden, bevor 1.1 den zweiten Port einführte. Ist ufw noch nicht aktiv, erlaube SSH, bevor du es einschaltest, wie die Anleitung zur UFW-Einrichtung erklärt.

Wie betreibe ich ihn als systemd-Dienst?

Eine systemd-Unit startet den Server nach einem Absturz neu, startet ihn beim Booten und kann ihn vor jedem Start aktualisieren. Eine Zeile ist wichtiger als alle anderen: KillSignal=SIGINT. systemd stoppt Dienste standardmäßig mit SIGTERM; die Unit aus dem offiziellen Wiki schickt stattdessen SIGINT, das Signal, das das Wiki für ein sauberes Herunterfahren nennt.

/etc/systemd/system/satisfactory.service
[Unit]
Description=Satisfactory dedicated server
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
User=satisfactory
Group=satisfactory
WorkingDirectory=/opt/satisfactory/server
# vor jedem Start aktualisieren; diese Zeile löschen, um beim installierten Build zu bleiben
ExecStartPre=/usr/games/steamcmd +force_install_dir /opt/satisfactory/server +login anonymous +app_update 1690800 +quit
ExecStart=/opt/satisfactory/server/FactoryServer.sh
# die Unit aus dem Wiki stoppt den Server mit SIGINT, damit er sauber herunterfährt
KillSignal=SIGINT
# Zeit für ein großes Update in ExecStartPre
TimeoutStartSec=900
TimeoutStopSec=120
Restart=on-failure
RestartSec=60

[Install]
WantedBy=multi-user.target
aktivieren und beobachten
sudo systemctl daemon-reload
sudo systemctl enable --now satisfactory
sudo systemctl status satisfactory
sudo journalctl -u satisfactory -f

Für mehr Spieler hängst du -ini:Game:[/Script/Engine.GameSession]:MaxPlayers=8 an die Zeile ExecStart an. Derselbe Schlüssel funktioniert auch in der Game.ini (siehe unten), aber der Schalter ist hier die robustere Wahl: Diese Unit aktualisiert den Server bei jedem Start, und ein Spielupdate kann Änderungen an den INI-Dateien zurücksetzen. Mehr zu Units, Neustartregeln und Logs steht in der Anleitung systemd-Dienst erstellen (engl.).

Wie beanspruche ich den Server im Spiel?

Ein neuer Server hat keinen Besitzer und keine Welt. Der erste Spieler, der sich über den Server Manager verbindet, beansprucht ihn (im Englischen „claim“) und setzt das Admin-Passwort, also erledige das direkt nach dem ersten Start, bevor jemand anderes die Adresse findet.

  1. 1Den Server hinzufügen

    Starte Satisfactory, öffne im Hauptmenü den Server Manager und klick auf Add Server. Gib die IP-Adresse des VPS und Port 7777 ein.

  2. 2Den Server beanspruchen

    Der Server erscheint als nicht beansprucht. Gib ihm einen Namen und ein starkes Administratorpasswort. Mit diesem Passwort änderst du später Einstellungen, lädst Spielstände und fährst den Server herunter.

  3. 3Eine Welt anlegen oder hochladen

    Leg eine neue Sitzung an und wähl ein Startgebiet, oder öffne Manage Saves, lade einen Spielstand von deinem PC hoch und öffne ihn. Setz Auto-Load Session Name, damit nach einem Neustart dieselbe Welt zurückkommt.

  4. 4Festlegen, wer beitreten darf

    Ein Spielerpasswort ist standardmäßig aus. Setz eines in den Servereinstellungen, außer du willst, dass jeder mit der IP einfach hereinspaziert.

Freunde treten ebenfalls über den Server Manager bei. Bekommt jemand Encryption token missing, hat er stattdessen Join Game benutzt. Abhilfe: den Server im Server Manager hinzufügen und sich von dort verbinden.

Wo liegen Spielstände und Konfigurationsdateien?

Spielstände liegen im Home-Verzeichnis des Benutzers, der den Server ausführt, unter .config/Epic/FactoryGame/Saved/SaveGames/server/. Mit dem oben angelegten Benutzer ist das /opt/satisfactory/.config/Epic/FactoryGame/Saved/SaveGames/server/. Die Einstellungen, die du im Server Manager gewählt hast, liegen eine Ebene höher in ServerSettings.7777.sav.

Die INI-Dateien liegen in /opt/satisfactory/server/FactoryGame/Saved/Config/LinuxServer/. Bearbeite sie nur bei gestopptem Server: Bei einem sauberen Herunterfahren werden sie neu geschrieben, Änderungen im laufenden Betrieb werden also überschrieben.

Zwei Schlüssel solltest du kennen: MaxPlayers in der Game.ini (Standard 4) und die Anzahl rotierender Autosaves in der Engine.ini (Standard 3).

Game.ini
[/Script/Engine.GameSession]
MaxPlayers=8
Engine.ini
[/Script/FactoryGame.FGSaveSession]
mNumRotatingAutosaves=6

Das Autosave-Intervall und das automatische Speichern beim Trennen stellst du im Server Manager ein. Für eine Kopie außerhalb der Maschine archivierst du den Spielstandordner nach Zeitplan. Es gibt immer mehrere rotierende Autosaves, deshalb enthält ein Archiv auch dann vollständige Spielstände, wenn gerade einer davon geschrieben wird:

/opt/satisfactory/backup.sh
#!/bin/bash
set -euo pipefail
SRC=/opt/satisfactory/.config/Epic/FactoryGame/Saved/SaveGames
DEST=/opt/satisfactory/backups
mkdir -p "$DEST"
# Exit-Code 1 heißt nur, dass sich beim Lesen eine Datei geändert hat; das Archiv ist trotzdem brauchbar
tar -czf "$DEST/saves-$(date +%F-%H%M).tar.gz" -C "$SRC" . || [ $? -eq 1 ]
# Archive 14 Tage lang behalten
find "$DEST" -name 'saves-*.tar.gz' -mtime +14 -delete
einrichten und planen
sudo nano /opt/satisfactory/backup.sh     # das Skript oben einfügen
sudo chown satisfactory:satisfactory /opt/satisfactory/backup.sh
sudo chmod 750 /opt/satisfactory/backup.sh
sudo crontab -u satisfactory -e
# hinzufügen:  15 */6 * * * /opt/satisfactory/backup.sh

Kopier die Archive zusätzlich woandershin. Ein Backup auf derselben Platte überlebt keine Neuinstallation. Auf einem VPS von VMHeaven kann das Panel auch Backups des ganzen Servers anlegen, von Hand oder nach Zeitplan; das ist der schnelle Weg zurück, wenn ein Update schiefgeht.

Warum können sich Spieler nicht verbinden? Häufige Fehler, die wahrscheinlichsten zuerst

1. Der Server ist gar nicht erreichbar

Prüf zuerst die Firewall (sudo ufw status), dann, ob der Server lauscht (sudo ss -tulpn | grep 7777). Um zu sehen, ob die Pakete der Spieler ankommen, beobachte den Port, während sich jemand verbindet. Kommt nichts an, wird der Traffic blockiert, bevor er den Server erreicht, meist durch eine Firewall-Regel oder eine falsche IP im Server Manager.

auf dem Server
sudo apt install -y tcpdump
sudo tcpdump -ni any 'udp port 7777 or tcp port 8888'

2. Spieler verbinden sich und scheitern dann beim Laden

TCP 8888 ist zu. Öffne ihn wie im Abschnitt zu den Ports gezeigt und verbinde dich neu. Anleitungen von vor Patch 1.1 lassen diesen Port weg.

3. Encryption token missing

Der Spieler hat Join Game benutzt. Er sollte den Server stattdessen im Server Manager hinzufügen und sich von dort verbinden.

4. Der Server läuft, fühlt sich aber träge an

Frag den Server selbst. Seine HTTPS-API beantwortet einen Health-Check ohne Login; das -k steht da, weil der Server ein selbstsigniertes Zertifikat nutzt, solange du ihm kein eigenes gibst:

auf dem Server
curl -sk https://127.0.0.1:7777/api/v1 \
  -H 'Content-Type: application/json' \
  -d '{"function":"HealthCheck","data":{"ClientCustomData":""}}'

healthy ist in Ordnung. slow heißt, der Server ist auf zehn Ticks pro Sekunde oder weniger gefallen, die Simulation hinkt also hinterher. Starte top und drück 1: Ein Kern nahe 100 %, während die anderen kaum etwas tun, deutet auf den Haupt-Spielthread, was zum Single-Thread-Wert in den offiziellen Anforderungen passt. Mehr Kerne helfen da nicht, schnellere schon.

5. steamclient.so oder SDL2 fehlt im Log

Der Server sucht steamclient.so in ~/.steam/sdk64 seines Benutzers. Verlinke die Kopie, die SteamCMD heruntergeladen hat, in diesen Ordner, und installiere die 32-Bit-Bibliothek SDL2, falls das Log SDL nennt:

Debian · Ubuntu
# wo hat SteamCMD seine 64-Bit-steamclient.so abgelegt?
SC=$(sudo -u satisfactory find /opt/satisfactory -name steamclient.so -path '*linux64*' | head -n 1)
echo "$SC"     # muss einen Pfad ausgeben; ist die Ausgabe leer, das SteamCMD-Update noch einmal ausführen

sudo -u satisfactory mkdir -p /opt/satisfactory/.steam/sdk64
sudo -u satisfactory ln -sf "$SC" /opt/satisfactory/.steam/sdk64/steamclient.so

# nur, wenn sich das Log über SDL beschwert
sudo apt install -y libsdl2-2.0-0:i386
sudo systemctl restart satisfactory

6. Der Server stürzt im Late Game ab

Such mit sudo journalctl -k | grep -i 'killed process' nach dem OOM-Killer. Taucht er dort auf, ist der Spielstand zu groß für den RAM geworden; mehr dazu unter Prozesse, die bei vollem Speicher beendet werden (engl.).

7. Der Dienst scheitert beim Start mit einem Timeout

Ein großes Update in ExecStartPre hat länger gedauert als TimeoutStartSec. Erhöhe den Wert, oder führe das Update vor dem Start des Dienstes von Hand aus.

Gameserver ziehen Flood-Angriffe von Spielern an, die ein Match verloren haben. Bei VMHeaven ist die DDoS-Filterung in Amsterdam und Frankfurt immer an, und die VNC-Konsole im Browser erreicht den Server über das Panel auch dann, wenn sein Netzwerk ausfällt. Die Anleitung zu VPS-Hosting mit DDoS-Schutz (engl.) erklärt, was solche Filterung stoppen kann und was nicht.

Häufige Fragen

Welche Ports nutzt ein Satisfactory Dedicated Server?

Port 7777 über TCP und UDP für den Spieltraffic und die HTTPS-API des Servers, dazu Port 8888 über TCP für Reliable Messaging, den Patch 1.1 eingeführt hat. Die alten Query-Ports 15000 und 15777 werden seit 1.0 nicht mehr genutzt, und 7777 lässt sich nicht auf einen anderen externen Port umleiten.

Wie viel RAM braucht ein Satisfactory-Server, wenn ich ihn auf einem VPS miete?

Das offizielle Minimum sind 8 GB, empfohlen sind 16 GB für große Spielstände im Late Game oder mehr als vier Spieler. Halte 1 bis 2 GB für das Betriebssystem frei und achte eher auf schnelle Kerne als auf viele, denn die offiziellen Anforderungen nennen einen Mindestwert für die Single-Thread-Leistung.

Wie beanspruche ich einen Satisfactory Dedicated Server?

Starte das Spiel, öffne im Hauptmenü den Server Manager, klick auf Add Server und gib die IP-Adresse des Servers und Port 7777 ein. Ein nicht beanspruchter Server lässt den ersten Spieler, der sich verbindet, Namen und Administratorpasswort festlegen, also beanspruche ihn direkt nach dem ersten Start.