Satisfactory Updated May 1, 2026

Running Satisfactory Server as a systemd Service

Configure a Satisfactory dedicated server as a systemd service for automatic startup on boot and crash recovery. Includes a complete unit file with the correct launch argument order.

Satisfactorysystemdserviceauto-startLinuxdaemonFactoryServer

Satisfactory Server as a systemd Service

Running the server as a systemd service ensures it starts automatically on boot and recovers from crashes.


Prerequisites

Create a dedicated system user:

sudo useradd -m -s /bin/bash satisfactory
sudo su - satisfactory

Install SteamCMD and the server files as this user to /home/satisfactory/satisfactory/.


Unit File

Create /etc/systemd/system/satisfactory.service:

[Unit]
Description=Satisfactory Dedicated Server
After=network.target

[Service]
Type=simple
User=satisfactory
Group=satisfactory
WorkingDirectory=/home/satisfactory/satisfactory

# IMPORTANT: port args must come BEFORE -log -unattended
ExecStart=/home/satisfactory/satisfactory/FactoryServer.sh \
    -Port=7777 \
    -BeaconPort=15000 \
    -ServerQueryPort=15777 \
    -log \
    -unattended

Restart=on-failure
RestartSec=15
StandardOutput=journal
StandardError=journal
SyslogIdentifier=satisfactory

# Allow time for world autosave on shutdown
TimeoutStopSec=120

[Install]
WantedBy=multi-user.target

Enabling and Starting

sudo systemctl daemon-reload
sudo systemctl enable satisfactory
sudo systemctl start satisfactory
sudo systemctl status satisfactory

Viewing Logs

# Live log stream
sudo journalctl -u satisfactory -f

# Last 100 lines
sudo journalctl -u satisfactory -n 100

# Filter for errors
sudo journalctl -u satisfactory -p err

Managing the Service

sudo systemctl stop satisfactory       # Graceful stop (waits up to 120s for save)
sudo systemctl restart satisfactory    # Stop and start
sudo systemctl status satisfactory     # Check current state

Automatic Updates

Use a wrapper script to update before each start:

# /home/satisfactory/start-satisfactory.sh
#!/bin/bash
/home/satisfactory/steamcmd/steamcmd.sh \
  +force_install_dir /home/satisfactory/satisfactory \
  +login anonymous \
  +app_update 1690800 \
  +quit

exec /home/satisfactory/satisfactory/FactoryServer.sh \
  -Port=7777 \
  -BeaconPort=15000 \
  -ServerQueryPort=15777 \
  -log \
  -unattended
chmod +x /home/satisfactory/start-satisfactory.sh

Update ExecStart in the service file to point to this script instead of FactoryServer.sh.


Save on Shutdown

When systemd sends a stop signal, Satisfactory performs a final autosave before exiting. The TimeoutStopSec=120 gives it up to 2 minutes to complete the save. Reduce to 60 seconds if your factory is small; increase for very large factories that take longer to save.