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.
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.