Dedicated servers

From Satisfactory Wiki
Jump to navigation Jump to search

This page provides basic instructions on setting up and operating a Satisfactory dedicated server.

Summary

Dedicated server binaries are available for 64bit Windows and Linux systems. It can be installed using the Steam client (where it is listed in the user's library as a "tool"), its command line sibling SteamCMD, or Epic Games. Game clients from both the Epic and Steam game stores can connect and play on dedicated servers regardless of where the server binaries were downloaded.

Who this page is for

If you intend to host the game by running a dedicated server instance, this page is for you.

If you are simply a player on someone else's server, you do NOT need to do anything shown on this page, they do.[1]

Requirements

These are community recommendations for minimum requirements. The server may or may not run with less powerful hardware, depending on player count and save file size.
It is highly recommended that servers exceed the minimum requirements, especially for CPU.

System requirements
Processor

A vaguely recent x86-64 compatible Intel (i5-3570 or better) or AMD (Ryzen 5 3600 or better) processor.
The server uses multiple cores, but heavily favors high single-core performance. Anything with a single-thread rating of 2000 or higher should work.
There is no 32-bit (x86) or ARM support.
If this is a VM (a VPS most definitely is), a kvm64 CPU won't work!

Memory 8GB. 16GB RAM may be recommended for larger saves or to host more than 4 players.
Storage (Windows) Server files of 12.4GB. The full game install is not required.
Storage (Linux) 8GB. Base install of typical server distros is up to 2GB in size, plus game server files of 2GB
Operating System Windows 10,11, Server 2016, Server 2019 or Server 2022, or a Linux distro like Debian or Ubuntu
Internet Connection Broadband internet connection. Hosting from home will require the ability to configure port forwarding or a VPN

Installation

Distribution

The dedicated server software is currently available via the SteamCMD command-line client, through the graphical Steam client as a tool, or as a free add-on in the Epic Games Store (available to all accounts).

SteamCMD

Usage of SteamCMD is preferred. The installation of SteamCMD is thoroughly documented for both Windows and Linux on the official SteamCMD wiki page.

If a GUI is desired, use the Steam client instead to download, install, and update the dedicated server.

Once SteamCMD has been downloaded/installed, see the following example commands on downloading or updating the server files:

Notes:

  • force_install_dir should preferably be an absolute path. On Linux, a tilde-prefixed directory is also acceptable. If force_install_dir is not specified, steamcmd may install it to ~/Steam/steamapps/common/SatisfactoryDedicatedServer, $HOME/.steam/debian-installation/steamapps/common/SatisfactoryDedicatedServer, or $HOME/.local/share/Steam/steamapps/common/SatisfactoryDedicatedServer.
  • If the installation directory contains spaces, remember to wrap it in quotation marks first.
  • The installation directory can be anywhere, but for convenience, probably close to either the root folder (C:\ on Windows, / on Linux) or a user's home folder.

Linux

A user without root privileges is recommended. If the SteamCMD wiki instructions were followed, the steam user may be used.

steamcmd +force_install_dir ~/SatisfactoryDedicatedServer +login anonymous +app_update 1690800 validate +quit

Windows

Open a Windows Command Prompt or PowerShell session.

.\steamcmd.exe +force_install_dir "C:\Game Servers\Satisfactory Server\Dont Blindly Copypaste This Line" +login anonymous +app_update 1690800 validate +quit

On Windows, SteamCMD uses Steam client files, so a faster initial download of SteamCMD may be done by copying steamcmd.exe into the Steam directory (typically C:\Program Files (x86)\Steam) and then using a command such as this one instead:

"C:\Program Files (x86)\Steam\steamcmd.exe" +force_install_dir "C:\Game Servers\Satisfactory Server\Dont Blindly Copypaste This Line" +login anonymous +app_update 1690800 validate +quit

Where the first path is the Steam directory, and the second is the desired dedicated server installation directory. Note: this is not a requirement. If SteamCMD is run with the command stated above (assuming the file path is where the executable is) and Steam is not installed, SteamCMD will update itself first and download the files that it requires. This is useful to not have to install a full Steam client on the server.

Experimental Branch Selection

To download the Experimental branch of the Dedicated Server, add -beta experimental to the end of the SteamCMD invocation. See the following example commands for Linux and Windows respectively:

Linux
steamcmd +force_install_dir ~/SatisfactoryDedicatedServer +login anonymous +app_update 1690800 -beta experimental validate +quit
Windows
steamcmd.exe +force_install_dir C:\GameServers\SatisfactoryServer +login anonymous +app_update 1690800 -beta experimental validate +quit

Steam GUI

You can install the server from your Steam library if the active Steam account owns the game. You will have to change your steam library filters to show tools.

Coffee Stain is currently working with Valve to make the Dedicated Server visible in the normal Steam client to accounts which do not currently have access to the Satisfactory game client. However, you can still use SteamCMD to download and install the files without needing a Steam account.

If you want to use the Experimental branch of the Dedicated Server rather than the mainline release, go to the Properties of the entry in your Library, go to the Betas tab, and ensure that the Experimental beta branch is selected. To revert to the mainline release, reverse this process.

Epic Games

You can install Dedicated Server Tool add-on by visiting the Satisfactory Store Page and adding Dedicated Server Tool to your library. Search your library for "Satisfactory Dedicated Server" and select install.

Docker

The server can be run in a Docker container.
A popular up-to-date one is Wolveix's.
There are many more such images available on GitHub and Docker Hub.
Please direct any questions about using or troubleshooting containers using these images to their respective maintainers.

Other

Common free ones include:

Third-Party Cloud Hosting Solutions

There are many game server hosting providers available for easy deployment of the game server.

Using a third-party service may make server management more complex, such as limiting server options or adding hidden options that can break the server or cause unexpected complications.
Community members may decline to help troubleshoot servers hosted by hosting providers, as they will not likely know specifics about how the server is run. Questions should be directed to the hosting provider instead.

Setting a Static IP on the Server

Remember to set a static LAN IP on the server, otherwise the DHCP server may eventually assign the server a different LAN IP, and the port forwarding will break.


Port Forwarding and Firewall Settings

For the server to be reachable from the internet, ensure that the router has the ports forwarded, and that the server running the game server process has its firewall rules set to allow listening on the ports.

Port redirection is not supported at the moment so the external/internal port numbers must match on the port forward rule(s) (eg: do not forward internal port number 7777 as external port number 7778 on the router). If multiple instances of the server are to be available on one public IP, override and set a unique port number per instance.

This port can be set using the -Port parameter upon server startup, e.g. -Port=10000 to run the game server on port number 10000. If the default port number is in use, the next higher one will be checked until an available port number is found, which will then be used.

Port Number Protocol Usage
7777 TCP Server traffic, HTTPS API
7777 UDP Game traffic, Lightweight Query API

As of Patch 1.0, port numbers 15000 and 15777 are no longer used. At all.

Server Setup

Linux

Whether or not the server needs its firewall configured depends on the Linux distribution used, and any custom configuration applied to it.

Debian's firewall accepts all traffic by default.[2]
Ubuntu uses UFW, but UFW is disabled by default.[3]

For a server with UFW enabled, the following is an example configuration file to put into applications.d:

[Satisfactory]
title=Satisfactory
description=An extremely satisfying experience
ports=7777/udp|7777/tcp

Windows

The following PowerShell command can be used on a Windows host to open the default ports used by the server:

New-NetFirewallRule -DisplayName "Allow Satisfactory default inbound port udp" -Direction Inbound -Action Allow -EdgeTraversalPolicy Allow -Protocol UDP -LocalPort 7777
New-NetFirewallRule -DisplayName "Allow Satisfactory default inbound port tcp" -Direction Inbound -Action Allow -EdgeTraversalPolicy Allow -Protocol TCP -LocalPort 7777

One can also specifically allow the FactoryServer-Win64-Shipping-Cmd.exe executable:

New-NetFirewallRule -DisplayName "Allow Satisfactory Process Inbound" -Direction Inbound -Action Allow -EdgeTraversalPolicy Allow -Program "C:\Game Servers\Satisfactory Server\Dont Blindly Copypaste This Line\Engine\Binaries\Win64\FactoryServer-Win64-Shipping-Cmd.exe"

Replace C:\Game Servers\Satisfactory Server\Dont Blindly Copypaste This Line\ with the base directory of the install location. The final path passed to -Program should be of the server executable.

Router Setup

Assuming the server's internet connection is not behind CGNAT[4], forward the game server's ports on the router.
See this TechSpot article for a list of common home router addresses.

OpenWRT

  1. Go to http://<router_ip>/cgi-bin/luci/admin/network/firewall/forwards and add a port forward rule.
  2. Name the port forward rule
  3. Set protocol to both TCP and UDP
  4. Set both external and internal port to the port number.
  5. Set internal IP address to the server's LAN IP
  6. Optionally enable NAT loopback in advanced settings if desired. This will allow accessing the game server from the LAN using the external IP address.
  7. Save and Apply

Other

Check the service provider or router manufacturer's documentation on port forwarding.

Verifying that the ports are open to the public

Only try this when the game server process is running. If the game server process is not running, these tools may show the port(s) as closed. See Starting the server.

nmap

If NAT loopback is enabled, one can run nmap from a device on the LAN: nmap -sT -sU <external_ip> -p 7777
It should show both ports open:

Starting Nmap 7.93 ( https://nmap.org ) at TIME
Nmap scan report for ADDRESS
Host is up (0.00069s latency).

PORT     STATE         SERVICE
7777/tcp open          cbt
7777/udp open|filtered cbt

Nmap done: 1 IP address (1 host up) scanned in 0.69 seconds

Port Check Websites

One can also use a port checker site like https://port.tools/nmap-online-port-scan/ or https://www.canyouseeme.org/ to check that the TCP port has been forwarded correctly, and that the game server process is listening on it.
Remember to type in the correct port number before clicking the "Check Port" button.
Note that this site only checks the TCP port, but as long as it shows the port as open, it should be fine.

Starting the server

NOTE! Starting the server manually will not automatically restart the server if it crashes or is terminated for other reasons. The server will stop running when the terminal is closed. To avoid these issues, it is strongly recommend to configure the server to run as a service. For more information, see: Running as a Service.

Manual - Steam GUI

Launch the Satisfactory Dedicated Server from Steam just like any other game. It will be found under the Tools category instead of Games. Running the server like this will open a terminal window in which the logs can be viewed in real time. Do not be alarmed if the window stops logging new information after a few moments. This usually means the server is up and simply idling, waiting for connections.

Manual - Command line

Windows

In either the Command Prompt or PowerShell, navigate to the directory where the dedicated server was installed, and use the following command, with any other options from the below table that are needed:

.\FactoryServer.exe -log -unattended

Linux

Navigate to the directory where the Satisfactory dedicated server is installed, and use the following command, with any other options from the below table that are needed:

./FactoryServer.sh

Command line options

The below table outlines the available options for use when starting the server, either from the command-line or through Steam (via editing the Properties of the Dedicated Server's entry in Tools):

Option Description
-Port=<portnum> Override the port the server uses. The default port is 7777 (UDP and TCP). This is the only port that is used. If the specified port is in use, the server will increment the port number and continue trying port numbers until an available one is found.
-DisablePacketRouting Startup argument for disabling the packet router (Automatically disabled with multihome).
-DisableSeasonalEvents Disables all seasonal events, such as FICSMAS.
-ini:<INIFILE>:[<SECTION>]:<KEY>=<VALUE> Run with an ini configuration value, e.g, -ini:Game:[/Script/Engine.GameSession]:MaxPlayers=8
Windows-only
-Log Forces the server to display logs in a window on Windows, or in the active terminal on Linux. This option is enabled by default when launching on Linux.
-NewConsole Run using the Satisfactory 1.0 Unreal console.[5]
-Unattended Makes it such that the Dedicated Server will not present any dialogs which might otherwise interrupt the server from running if not attended to. This option is enabled by default when launching on Linux.

NOTE: Options may also be set via INI files, for example:

CLI parameter INI file
-Port=<portnum> Engine.ini
[URL]
Port=<portnum>

Verifying that the server is running

Besides checking that the process is running, it is recommended to check that the server is actually listening on the expected port.

Browser

A quick check can be done by opening a browser tab to the server (eg, https://ip:port/) to check if the server is up and listening.
Replace ip with the server's LAN IP, and port with the port.
The https:// part of the url is required. Without it, Chrome will show "This page isn't working," and Firefox will show "The connection was reset."
Expect to see a certificate warning due to the self-signed certificate generated by the server, and after accepting the certificate, a errors.com.epicgames.httpserver.route_handler_not_found error.

Linux/Windows

On Windows, use Command Prompt instead of PowerShell.

curl -k https://ip:port
Running that should return

{"errorCode": "errors.com.epicgames.httpserver.route_handler_not_found", "errorMessage": ""}

Automatic - Running as a Service

Instead of running the server manually, the server can be configured to run as a background service. This way, the server will:

  • Automatically restart if it crashes or stops unexpectedly
  • Run in the background
  • Automatically update when the service restarts

For step-by-step instructions, see: Running as a Service.

Configuration

Claiming the Server and Starting a Game

Before the server can start a game, it must first be claimed:

  1. Start the game
  2. From the Server Manager in the main menu, add the server.
  3. Set a name for the server, then set the administrator password.

A new game can now be created. An existing game can also be imported to the server from the ingame server manager.

Player password protection is not enabled by default, but a player password can be set through the same UI.

Server Settings

When logged in as Admin via the ingame Server Manager, there are various server settings available.

Dedicated Server
Setting In-game Description Notes
Server Name Name of the Dedicated Server. Shown as the title of the Server in the Server Manager.
Admin Password The Password used to limit Administrator privileges (such as Save Game loading, Server Options and New Game creation) to a certain set of players on a Dedicated Server.
Player Password Protection A password that limits who can connect to the server and see information about the ongoing game session.
Auto-Load Session Name Name of the session the Dedicated Server should automatically load the most recent save of on startup
Auto Pause When the Server should automatically be paused when no players are connected. Whether the game should automatically pause when no players are connected. Checked for Yes Pause
Auto-Save on Player Disconnect When the Server should automatically save the game when a player disconnects. Whether the server should automatically save the game when a player disconnects. Checked for Yes Save
Gameplay
Setting In-game Description Notes Example
Server Restart Interval (hours) Sets the amount of time in hours for the automatic server restart interval. NOT AN INTERVAL. Hour at which the server automatically restarts daily. 06:00
Autosave Interval (minutes) Sets the amount of time in minutes for the autosave interval. Autosave every X minutes. 10
Send Gameplay Data Unchecking this box means you will not send data to Coffee Stain Studios while playing.
Network Quality Increasing network quality may improve client load times and network performance at the cost of server framerate. Experiment with these settings to see what works for you.

For settings not available in the UI or for more advanced configuration, see Dedicated servers/Configuration files.

Console commands

This article is incomplete. You can help Satisfactory Wiki by adding missing items.

Here are a list of known commands for dedicated servers, as of v5.0.4 the console tab in the server manager is the only way to execute commands

Command Info
quit
stop
exit
Shuts down the game server process.

If the game server is setup as a system service, it may automatically restart if these commands are used. Instead, stop the game server using the server's service manager.

server.SaveGame saveName
Creates a save of the current session named saveName.

For a saveName with one or more spaces, use quotation marks around the name.

Server File Locations

Server Settings File

This is not the location of configuration files. See Dedicated_servers/Configuration_files for that.

Platform Filepath Notes
Linux ~/.config/Epic/FactoryGame/Saved/SaveGames/ServerSettings.PORT.sav PORT is the port the server is configured to run on. See Dedicated Server Settings File
Windows (user) %AppData%\Local\FactoryGame\Saved\SaveGames\ServerSettings.PORT.sav
Windows (NSSM) %WINDIR%\System32\config\systemprofile\AppData\Local\FactoryGame\Saved\SaveGames\ServerSettings.PORT.sav
Windows Server (Service) %WINDIR%\ServiceProfiles\NetworkService\AppData\Local\FactoryGame\Saved\SaveGames\ServerSettings.PORT.sav

Save Files

Platform Path
Linux ~/.config/Epic/FactoryGame/Saved/SaveGames/server
Windows (user) %AppData%\Local\FactoryGame\Saved\SaveGames\server
Windows (NSSM) %WINDIR%\System32\config\systemprofile\AppData\Local\FactoryGame\Saved\SaveGames\server
Windows Server (Service) %WINDIR%\ServiceProfiles\NetworkService\AppData\Local\FactoryGame\Saved\SaveGames\server

Blueprint Files

This directory may not exist until at least one blueprint has been created ingame.

Platform Path
Linux ~/.config/Epic/FactoryGame/Saved/SaveGames/blueprints
Windows (user) %AppData%\Local\FactoryGame\Saved\SaveGames\blueprints
Windows (NSSM) %WINDIR%\System32\config\systemprofile\AppData\Local\FactoryGame\Saved\SaveGames\blueprints
Windows Server (Service) %WINDIR%\ServiceProfiles\NetworkService\AppData\Local\FactoryGame\Saved\SaveGames\blueprints

Configuration Files


Logs and crash dumps

Server logs may be found in the server's install directory in the FactoryGame/Saved/Logs directory. Note that depending on build and branch, not all of these may be present.

The server keeps a running log of all of the messages it prints to the console. Logs are rotated on server start, with the latest (current) log being named FactoryGame.log, with the others following a datetime filename pattern FactoryGame-backup-DATE-TIME.log. On Linux, up to 15 log files are kept on disk.

The server by default also uploads crash dump reports of every crashed server instance. A crash report directory with a randomly-generated UUID is created on server start, saved to the FactoryGame/Saved/Crashes directory.

The game client follows a similar pattern, but the logs and crash dumps are kept in the user's AppData directory alongside save files.

Loading a save file

Local saves can be uploaded from ingame to a server through the "Manage Saves" tab of a server in the Server Manager.

Common errors or problems

If you believe the server is running but are unable to connect to it, the most common cause is a networking issue. The vast majority of common problems with successfully connecting to the Dedicated Server can be resolved by working through these diagnostic questions:

Is the server actually running?

The simplest reason for not being able to connect to the server is that it is not running. Either it was not started, or it has crashed and not been subsequently restarted.

Linux

A simple way to check whether the server is running is with the command pgrep -f FactoryServer.sh. When running that command, either there will be no response (indicating no instances of the game server process are running), or one or more numbers (multiple indicating that multiple instances of the game server are running). Each number returned is the PID (Process ID) of that instance of the shell script which started the game server.

Windows

Use Task Manager, or run tasklist | find "FactoryServer.exe"

Is the server listening on the correct ports?

If multiple instances of the server were inadvertently started, the server may not be listening on the expected network ports. If the server is indeed running, the next step is to check to see which port the server is actually bound to (or "listening" on.)

Checking Listening Ports on Windows

On Windows, you can get a list of bound ports with the Get-NetUDPEndpoint and Get-NetTCPConnection commands. Adding some extra filters to it will restrict the output of that command to only show a list of IP addresses and ports to which an Unreal game server process (such as the Satisfactory Dedicated Server) is listening. Review that output for the expected port of 7777 or whatever port you have manually specified. The command and its typical output are shown below:

Get-NetUDPEndPoint | Select-Object LocalAddress, LocalPort, @{Name="Process";Expression={(Get-Process -Id $_.OwningProcess).ProcessName}} | Sort-Object -Property LocalPort,Process | Where-Object{$_.Process -like "FactoryServer-Win64-Shipping-Cmd"}

LocalAddress LocalPort Process
------------ --------- -------
0.0.0.0           7777 FactoryServer-Win64-Shipping-Cmd
::                7777 FactoryServer-Win64-Shipping-Cmd


Get-NetTCPConnection -State Listen | Select-Object LocalAddress, LocalPort, @{Name="Process";Expression={(Get-Process -Id $_.OwningProcess).ProcessName}} | Sort-Object -Property LocalPort,Process | Where-Object{$_.Process -like "FactoryServer-Win64-Shipping-Cmd"}

LocalAddress LocalPort Process
------------ --------- -------
0.0.0.0           7777 FactoryServer-Win64-Shipping-Cmd
::                7777 FactoryServer-Win64-Shipping-Cmd

Checking Listening Ports on Linux

On Linux, bound ports can be listed with the ss command. The command and its expected output are shown below (The header line has been added):

$ ss -plnut | grep FactoryServer
Netid      State       Recv-Q      Send-Q           Local Address:Port            Peer Address:Port     Process
udp        UNCONN      0           0                      0.0.0.0:7777                 0.0.0.0:*         users:(("FactoryServer-L",pid=9456,fd=14))
udp        UNCONN      0           0                            *:7778                       *:*         users:(("FactoryServer-L",pid=9456,fd=15))
tcp        LISTEN      0           16                     0.0.0.0:7777                 0.0.0.0:*         users:(("FactoryServer-L",pid=9456,fd=12))
tcp        LISTEN      0           16                           *:47647                      *:*         users:(("FactoryServer-L",pid=9456,fd=13))

Is the server bound to the correct interface?

While checking on the port bindings in the previous step, take a look at the IP address associated with the port in the output from ss or Get-NetUDPEndpoint. If the -multihome switch was not used when starting the game server, the associated address may appear as one of *, 0.0.0.0, or ::. Any of these are fine, indicating the server is listening on all interfaces. If a specific address is shown, such as 192.168.1.203, this is also fine, but be aware that only that internal (or LAN) IP address will work for connecting to or forwarding connections to the server.

Is the server firewall allowing ingress on the correct ports?

In short, did you follow the steps in the Port Forwarding and Firewall Settings section above? Verify your host's firewall settings are configured to allow inbound connections on the UDP ports the Dedicated Server is using.

Are the port forwarding settings at the NAT pointing to the correct address and all three correct ports?

On your router or other network ingress point, double-check that the Port Forwarding settings are correctly configured to direct traffic on all three of the UDP Ports that the Dedicated Server uses to the LAN IP address of the host running the Dedicated Server. Be sure you are forwarding UDP ports, not TCP ports (If you are forwarding both TCP and UDP ports, that is fine, the important thing is that the UDP ports must be forwarded).

Is the server accessible on the LAN?

From the same computer or another computer on the same LAN (i.e. generally in the same building), attempt to connect to the game server from the Server Manager in the game client.
If this works, the server is running and the firewall on the server is allowing incoming connections.
If not, verify that the server process is running, and double check the server's firewall settings.

Are you or anyone else able to connect to the server via the internet?

From a host which is not on the same LAN, attempt to connect to the public IP address of the host running the Dedicated Server from the Server Manager in the game client. If this works, then not only is the server clearly running and the server firewall allowing inbound connections, but the port forwarding settings are now confirmed to work as well-- you server is online and accessible! Have fun, and stay effective!

SDL Priority Manager

Loading Steam API...Failed to init SDL priority manager: SDL not found

Failed to set thread priority: per-thread setup failed

Failed to set thread priority: per-thread setup failed

This issue can be resolved by downloading the dependency. For example, on a Debian-derived Linux distribution:

sudo apt install libsdl2-2.0-0:i386

SteamAPI_Init(): Sys_LoadModule failed to load: /path/to/.steam/sdk64/steamclient.so

steamclient.so: cannot open shared object file: No such file or directory
/home/your_user/.steam/sdk64/steamclient.so
/home/your_user/.steam/sdk64/steamclient.so: cannot open shared object file: No such file or directory
[S_API] SteamAPI_Init(): Sys_LoadModule failed to load: /home/your_user/.steam/sdk64/steamclient.so

This issue can be resolved by creating a symbolic or hard link from the expected path to the location where the library actually exists, for example:

ln -s /usr/games/steamcmd/linux64/steamclient.so /home/your_user/.steam/sdk64/

Log output should change:

steamclient.so: cannot open shared object file: No such file or directory
[S_API] SteamAPI_Init(): Loaded '/home/your_user/.steam/sdk64/steamclient.so' OK.  (First tried local 'steamclient.so')

SteamCMD errors

state is 0x606 after update job

Error! App '1690800' state is 0x606 after update job.

SteamCMD error 0x606 is thrown when SteamCMD attempts to update a file and the operating system says that it cannot write to the file because it is in use by another process. The most common cause for this is attempting to update while the server is already running. If you have already stopped the server and are still getting this error, the issue can be resolved by rebooting the host.

Trains not loading or unloading

This issue can be resolved by loading the save file into the game locally, rebuilding the Train Station, saving and loading the save file back onto the server.

Running on ARM

user@totally_not_x86_64:~/SatisfactoryDedicatedServer$ ./Engine/Binaries/Linux/FactoryServer-Linux-Shipping FactoryGame
-bash: ./Engine/Binaries/Linux/FactoryServer-Linux-Shipping: No such file or directory

user@totally_not_x86_64:~/SatisfactoryDedicatedServer$ ./FactoryServer.sh
./FactoryServer.sh: 5: /home/user/SatisfactoryDedicatedServer/Engine/Binaries/Linux/FactoryServer-Linux-Shipping: not found

The server probably isn't x86_64. If running on ARM, install FEX or Box64 and read their documentation.

Running in a VM in Proxmox VE

The kvm64 CPU type is not compatible with the dedicated server binaries. The dedicated server may run at first, but will crash when creating a new game. Try using host instead.[6]
See Dedicated_servers#Requirements for other minimum system requirements.

The server becomes unreachable after disconnecting from the game

This may happen if the server is being hosted from the same machine a user is playing on.
Known issue, but yet to be officially acknowledged. You can contribute by upvoting this issue on the Q&A site.

FAQ

How do I set a join password?

Click the "Change Password" button next to "Player password protection" in the Server Settings tab ingame.
Yes, that's an interesting choice of name for that option, you're not alone.

My players can't join my server !!!

This is for users attempting to join a dedicated server but are encountering a Network Error: "Encryption token missing" error.

Have them add your server using the Server Manager, then join through there.
They should not use the 'Join Game' option.

My players are timing out !!!

How do I gracefully shut down the Dedicated Server?

Regardless of which operating system the server is running on, the best way to shut down the server is with the HTTPS (REST) API, using the Shutdown function. Failing that, it can be gracefully shut down by connecting to the server in the Server Manager in the game client and issuing the quit command in the Console tab. Shutting down the server without accessing it via the game client depends on the operating system it is running on.

Linux

The server process can be gracefully shut down by sending SIGINT to the process, or if the server is managed by systemd, with the command systemctl stop satisfactory, where "satisfactory" is the name of the service unit file.

Windows

If the server is running 'interactively' (ie, there is a window showing the server logs in real time), focus on that window by clicking on it, then hold down the Ctrl key and press C. Do not just close the window by clicking on the "X"; this will kill the server process instantly instead of allowing it to clean up after itself and finish writing files to disk. If it is running as a service, stop it from the Services tab in Task Manager.

How do I update the Dedicated Server?

Manually Updating

Steam client

If the game server was installed using the desktop Steam client, it should automatically update shortly after the update is released. The server instance may need to be shut down, and optionally have Steam verify the local files. Another option is to restart Steam to force an update check.

SteamCMD

If the server was installed using the SteamCMD command-line client, shut down the server instance, then use the same command used to install the server to check for and install an update.

One can also run SteamCMD as follows:

steamcmd +force_install_dir <game_server_directory_change_this> +login anonymous +app_update 1690800 validate +quit

<game_server_directory_change_this> should be the directory the game server was downloaded to.

Automatically

How do I reset the Administrator password?


Delete the ServerSettings.PORT.sav file, where PORT is the server port number (e.g. ServerSettings.7777.sav), which can be found just above the server savegame directory. Please note that doing this will also reset the server name, player password, auto load session name, and certificate. The next time the server is started, it can be claimed as a new server, and a new administrator password can be set.

certificate is not yet valid

  1. Stop the server
  2. Update the server's system time
  3. Delete the ServerSettings.PORT.sav file
  4. Restart the server

How can I have more than four players in my server?

I thought the Dedicated Server was multi-threaded- why am I only seeing one core being used?

While it is technically multi-threaded, the game and/or game engine's design means that most of the multi-threaded work still relies on the primary thread. According to a developer back in November 2021,

We never intended to say the server will evenly use all your cores. We meant more that the server spawns up to 26 threads (per work set). The game loop is still fundamentally single threaded though and all multi threaded work is happening on ticks. So one core will always work harder than others as a result.
~ Bogdan

I was running an Experimental server, but I want to move it to Stable, and it's not converting. What do I do?

Sometimes, Steam can helpfully remember which branch you have selected. If you were using -beta experimental to stay pinned on the Experimental branch, removing it from your update command may not roll you to Stable. To force this to happen, use -beta public to force the switch.

How can I get my friends to join my server?

In order for your friends to join your server, you will need to give them your Public IP Address (WAN IP) and the port if it differs from 15777. You can obtain this by searching for "what is my ip" in most search engines.

Please note however that this will require you setup port forwarding correctly and have the correct firewall entries in place to allow connections into the network where the server is hosted.

How can I have the server restart at a certain time?

Change the option labeled "Restart Interval" to the time the server should restart every day.
Yes, this one is also weirdly named.

The Dedicated Server stops after throwing two warnings; what do I do?

There are two common warnings that you will see once the server has finished its startup process. These are warnings, not errors, and in this case they can be ignored. If you see the two messages below there is nothing wrong, and the server is now just waiting for a client connection. Both messages related to the Epic Online Store (EOS), which the server has no interactions with, and so these warnings are completely innocuous.

LogOnline: Warning: OSS: EOSSDL-LogEOSP2P: NAT Detection Failed, unable to resolve host
LogOnline: Warning: OSS: EOSSDK-LogEOSAnalytics: EOS STA Analytics disabled for route

I added the server to the Server Browser via IPv6 and get a ping, but it says "Failed to Connect to the Server API", what do I do?

Connecting to a server via raw IPv6 seems to be bugged. Instead of connectig to a raw IPv6 address (like 1111:2222::8888), try using literal notation or putting brackets around the address.

Community Tools

Connection Testers

URL Description TCP UDP
https://github.com/dopeghoti/SF-Tools Toolkit for the Satisfactory Dedicated Server
https://gist.github.com/SparxySys/4e96f18c567a0e33cf37e95980dbfc74 Tests connection to a Satisfactory Server

CLI Tools

URL Description Notes API Calls Implemented
https://github.com/dopeghoti/SF-Tools/ Tools for the Satisfactory Dedicated Server including REST API endpoint calls and a Discord server status bot Requires editing and an existing auth token ApplyServerOptions, EnumerateSessions, GetServerOptions, HealthCheck, QueryServerState, Shutdown, VerifyAuthenticationToken
https://github.com/Feyr/satisfactory-python-cli a quick and dirty cli for the satisfactory dedicated server QueryServerState, SaveGame, Shutdown, EnumerateSessions, GetServerOptions
https://github.com/micah686/SatisfactoryAPI A C# Server Management utility and library No binaries, compile it yourself All, but only HealthCheck and QueryServerState are used by default.
https://github.com/terrordrone5nl/Satisfactory-HTTPS-API-Powershell Scripts to manage the Satisfactory Dedicated server via Powershell Requires editing DeleteSaveFile, DownloadSaveGame, SaveGame, Shutdown

Discord Bots

URL Description
https://github.com/inroma/Satisfactory-Bot Discord Bot to interact with the dedicated server API

GUI Tools

URL Description
https://github.com/asidsx/SatisfactoryPyServerInstaller one-click server installer for Windows

SDKs

URL Description Language Lightweight Query API HTTPS API
https://github.com/benjamin-lawson/SatisfactoryClient A C# NuGet package for interacting with the HTTPS API C#
https://github.com/oarko/SF-ToolsPHP Toolkit for the Satisfactory Dedicated Server using PHP PHP
https://github.com/idebeijer/satisfactory-client-go A Go (Golang) client for the Satisfactory Dedicated Server HTTP API Go
https://github.com/Jayy001/PyFactoryBridge A Python library for the Satisfactory 1.0 Dedicated Server API Python
https://github.com/micah686/SatisfactoryAPI A C# Server Management utility and library C#
https://github.com/Programmer-Timmy/satisfactory-dedicated-server-api-SDK A SDK for interacting with the Satisfactory Dedicated Server API Python
https://github.com/Shinigami92/satisfactory-server-api-client Universal Satisfactory Server API client for JavaScript JavaScript

API Documentation

URL Description
https://github.com/satisfactory-oas/spec OpenAPI (OAS) specification implementation for the Satisfactory Server HTTPS API

Docker Images

URL Description
https://github.com/wolveix/satisfactory-server A Dockerized version of the Satisfactory dedicated server

API

With the release of 1.0, there is now a Lightweight Query API and an HTTPS API.

Trivia

  • The console of the server (as of Patch 0.5.0.12) serializes boolean values with typos: "IsAwake newState = flase", "IsAwake newState = ture". This is considered a common typo.
  • When Patch 0.5.0.0 was released, Dedicated Servers were initially only available to those using Steam. On December 7, 2021, it was announced on Twitch Stream by Community Manager Snutt Treptow that Dedicated Servers were available on Epic Games.

See also

History

Dedicated server patches are being released in par with every game patch. This section only lists changes directly related to the dedicated server itself, changes to multiplayer in general are tracked here.

  • Patch 1.0:[7][8]
    • Now easier to install due to a decrease in the install size.
    • Now only uses one port: UDP/TCP 7777.
    • Introduced both a Windows application and an in-game console application.
    • Introduced support for both IPv4 and IPv6.
    • Introduced support for TLS end-to-end encryption for both server and game data/traffic.
    • Introduced support for Advanced Game Settings.
    • Introduced a way for server admins to download the save file directly from within the server manager.
    • Introduced support for HTTP API methods between the server and the client.
      • Future mod support will allow use of the HTTP API to perform functions from within game mods.
    • Improved the console screen.
    • Made it easier to create new game sessions.
    • Made it easier to set up server configuration settings.
    • Autosave and server status notifications are now sent to all clients.
  • Patch 0.8.2.8: Potential fix for foliage not being removed when playing as Client in both regular Multiplayer and Dedicated Server
  • Patch 0.8.2.7: Potential fix to some major log spam on Dedicated Server on Linux
  • Patch 0.8.2.6: Potential fix to leftover connectivity issues
  • Patch 0.8.2.5: Fixed a crash for Multiplayer / Dedicated Server Clients that sometimes occurred when trying to snap a Power Pole to a Power Line
  • Patch 0.8.2.4: Fixed Railway Block/Path Signal Visualization crashing for Multiplayer / Dedicated Servers Clients
  • Patch 0.8.2.0
    • Potential fix for bug where item stacks can not be split in the inventory for Clients
    • Fixed Dedicated Servers Clients not continuing to have Flight Mode enabled after logging in and out of a session
  • Patch 0.8.1.2: Fixed crash when joining a Dedicated Server related to signs
  • Patch 0.8.1.1: Fixed Dedicated Server not working on Linux
  • Patch 0.8.0.4:
    • Fixed a crash on startup for Dedicated Server when the server query port was set to a value that exceeded the maximum value of an int16
    • Temporary fix for audio log spam on Dedicated Servers when using vehicles which would lead into clients being kicked out of the Server
  • Patch 0.7.1.1: Fixed Multiplayer and Dedicated Server Clients not being able to place Power Poles off a Power Cable in the Blueprint Designer
  • Patch 0.7.0.5:
    • Fixed deletion of Blueprints not properly propagating from Host to Clients
    • Fixed holograms temporarily staying stuck in the Blueprint designer after being built by Clients
    • Fixed a crash for Clients when using the Jetpack
  • Patch 0.7.0.4: Fixed invisible buildings built from Blueprints when reconnecting to Dedicated Servers
  • Patch 0.7.0.3: Fixed Crash when joining Multiplayer or Dedicated Servers
  • Patch 0.7.0.1
    • Fixed a crash for Multiplayer Clients or Dedicated Server Clients when placing a Blueprint that has the AWESOME Sink
    • Fixed a crash for Multiplayer Clients or Dedicated Server Clients when loading a blueprint before data is properly synced with host
    • Fixed Multiplayer Clients or Dedicated Server Clients Blueprints showing up in Blueprint selection when those Blueprints don’t exist on Server
  • Patch 0.7.0.0: Overhauled Pioneer name tags for Multiplayer Clients or Dedicated Server Clients
  • Patch 0.6.1.2
    • Fixed heavy stuttering for Multiplayer Clients and Dedicated Server Clients when getting hit by a projectile
    • Fixed a crash for Multiplayer Clients and Dedicated Server Clients when trying to remove highlights from a Map Marker
    • Fixed a Crash by making it error normally instead of crash
  • Patch 0.6.1.1
    • Fixed Nobelisk Gas clouds not disappearing on Dedicated Server
    • Server should now error out instead of crash when the server is unable to bind to a query port
    • Fixed a server crash when uploading a save file
  • Patch 0.6.0.15
    • Fixed Equipment icon in HUD flickering when equipping an item for Multiplayer Clients and Dedicated Server Clients.
    • Fixed Markers and Stamps placed on the map disappearing when reconnecting to a Dedicated Server
    • Fixed Markers and Stamps not saving properly on Dedicated Server
  • Patch 0.6.0.14:
    • Fixed pings being invisible for other Multiplayer players or Dedicated Server players
    • Fixed “Press RMB To Respawn” still being displayed after a player is revived
  • Patch 0.6.0.13: Potential fix for Crab Hatchers displaying incorrectly when joining for Multiplayer Clients and Dedicated servers Clients
  • Patch 0.6.0.12
    • Fixed crash related to Hatchers on Dedicated Server
    • Updated visuals for Multiplayer and Dedicated servers offline player name tags
  • Patch 0.6.0.10
    • Other Player characters in the world should now show last used user name when they go offline (Not retroactive)
    • Potential fix for Foliage not being interactable sometimes on Dedicated Servers
  • Patch 0.6.0.5
    • Fixed Multiplayer Clients and Dedicated servers Clients not being able to place Extractors on Resource Well Satellite Nodes
    • Fixed Resources not being shown for Multiplayer Clients and Dedicated servers Clients when the Map or Radar Tower was opened
  • Patch 0.6.0.4
    • Fixed Resource Deposits being Invisible/Non-interactable for Multiplayer Clients or Dedicated Server Clients
    • Potential fix for a crash that starts from players experiencing audio crackling and performance degradation on dedicated server in Northern Forest
    • Fixed issue where the Equipment HUD Slot for Consumables wouldn’t update properly on Multiplayer Clients or Dedicated Server Clients
    • Fixed crash reporter not working on Windows
  • Patch 0.6.0.3
    • Equipment HUD is now correctly updated for Multiplayer Clients or Dedicated Server Clients
    • Weapon crosshairs are now correctly updated for Multiplayer Clients or Dedicated Server Clients
  • Patch 0.6.0.2
    • Hatcher should now show their status properly for for Multiplayer Clients and Dedicated Servers Clients
    • Fixed Resources not being shown to Multiplayer Clients or Dedicated Server Clients when opening Map or Radar Tower
    • Dedicated server should not crash anymore when it fails to bind to a port
    • Fixed a crash that may happen if the server settings file is corrupted. In this case, the server will use default settings instead
  • Patch 0.6.0.1
  • Fixed a crash when Multiplayer Clients and Dedicated Servers Clients would place a second Truck Station
  • Fixed the Truck Stations UI not showing up properly for Multiplayer Clients and Dedicated Servers Clients
  • Fixed a debug icon showing up on the Truck Station inventory when accessed for a second time by Multiplayer Clients and Dedicated Servers Clients
  • Patch 0.5.2.1: Current Train Station stop should now properly display for clients in Multiplayer Clients or Dedicated Servers Clients
  • Patch 0.5.1.13: Fixed Dedicated Server crash reporter not working properly
  • Patch 0.5.1.12: Fixed a crash for Multiplayer Clients and Dedicated Server Clients related to vehicle paths
  • Patch 0.5.1.9
    • Fixed a crash related to Vehicle Automation for Multiplayer Clients and Dedicated Server Clients
    • Fixed a bug in the Load Vehicle Path UI where the “Used by this vehicle” checkmark was missing for Multiplayer Clients and Dedicated Server Clients
  • Patch 0.5.1.8: Undid all the Networking Optimisation changes from the previous build, which accidentally introduced a bunch of issues for Clients on Multiplayer and Dedicated Servers
  • Patch 0.5.1.7
    • Fixed Multiplayer and Dedicated servers Clients not being able to cancel the docking sequence
    • Network Optimizations that should result in some performance gain CPU side for Clients on Multiplayer and Dedicated servers
    • Network Optimizations that should result in some performance gain on for Clients on Multiplayer and Dedicated servers hosting games with many Smart Splitters built
  • Patch 0.5.1.6:
    • Improved stability of the packet router
    • Improved CPU usage of the packet router
    • Added a startup argument for disabling the packet router: -DisablePacketRouting
  • Patch 0.5.1.4: Fixed holograms having the proper position for Multiplayer and Dedicated servers Client but the wrong one for Host/Server in some situations
  • Patch 0.5.1.2:
    • Implemented a mechanism that routes all server packets through the query beacon, in effect reducing the number of ports that need to be open/forwarded to 1, simplifying setup.
  • Patch 0.5.1.1:
    • Fixed a bug that made Clients spam poll the server, now we should poll much less
    • Fixed some more issues with the Crash reporter integration
  • Patch 0.5.0.14:
    • Found an issue where threading was forced to be disabled for dedicated servers in some scenarios. Fixed it so now we should actually make use of multiple CPU cores
    • Added tick rate information on the Server Status UI Menu
    • Production Lights for all buildings should now be working again
  • Patch 0.5.0.13
    • Added Crash Reporter integration for Dedicated Server for both Windows and Linux.
      • This is enabled by default, we plan on including a toggle for this in GUI but for the moment, if you want to disable automatically sending crash logs you can do this:
      • Go to SatisfactoryDedicatedServer\FactoryGame\Saved\Config\WindowsServer\
      • Open “Engine.ini”
      • Add the following:
[CrashReportClient]
bImplicitSend=False
      • Save changes
  • Patch 0.5.0.12: Enabled background and hi-prio task sets for servers to match what they are for the game, This should further improve multicore CPU usage
  • Patch 0.5.0.11: Servers should now use all available cores (Up to 26 worker threads) on both Windows and Linux
  • Patch 0.5.0.9:
    • Potential fix for a Multiplayer / Dedicated servers crash related to tireconfig deletion
    • Fixed Nobelisks being invisible when first equipping for Clients
    • Fixed a rare crash when accessing the Train Station UI as Client
    • Fixed ammo count issues for Clients
    • Implemented a first revision of the Save Manager in the “Manage Saves” tab under Server Manager
    • Increased the beacon connection timeout to 30 seconds (Previous value was 5 seconds)
    • Actually fixed invisible Conveyor Belts, Conveyor Lifts and Pipelines sometimes being invisible for Multiplayer/Dedicated Servers Clients (Triple for real!!!)
  • Patch 0.5.0.8:
    • Hopefully fixed remaining Nobelisk issues for Multiplayer / Dedicated Servers Clients (Firing, Explosions, UI Feedback, Responsiveness)
    • Fixed a bug where complex clearance would not be spawned on the server, blocking Clients from building despite holograms being ok with it on server
    • Fixed Self Driving Trains being slow when a Client was travelling in them
    • Potential fix for invisible Conveyor Belts, Conveyor Lifts and Pipelines sometimes being invisible for Clients
    • Fixed player has joined messages not showing up for Clients
    • Fixed spelling mistake in the server is offline message
    • Server state is now polled a lot less by the clients (at most 3 times per second) and clients back off gradually if a server does not respond to pings which makes the client behaviour less consistent with DDOS attacks
    • Clients do not store DNS lookup results in the server manager file and instead the DNS lookups are made every time the client starts up which makes the clients work better for servers with Dynamic DNS
  • Patch 0.5.0.7:
    • Fixed a crash on startup on Dual Stack Linux, IPv6 should now work on more recent kernels
    • Fixed a shutdown crash caused by OnlineSubsystemEOS
  • Patch 0.5.0.6:
    • Potentially fixed a crash related to using the Rebar Gun on Dedicated Server
    • Fixed Hologram snapping always using automatic clearance snapping if a Multiplayer / Dedicated Server Client was building, it now updates settings between Client and Host/Server
    • Fixed Nobelisk/Snowballs on Dedicated servers
    • Added IPv6 Support
    • Made FGAbstractServerWidget public for modders
    • UI should now properly display when new connections are established
    • Potentially fixed a crash related to using the Rebar Gun on Dedicated Server
  • Patch 0.5.0.4
    • Fixed Client for crash related to not-yet-replicated member
    • Fixed Dedicated Servers crash related to Vehicles end play
    • Fixed a crash when using Parachutes as Client
    • Changed "-GamePort" server parameter to "-Port"
    • Added a “Save Game” server command (server.SaveGame <saveName>)
    • Flipped around the Show/Hide Address Toggle Button text in the Add Server popup
  • Patch 0.5.0.2 (Released again in Patch 0.5.0.3): Fixed Multiplayer / Dedicated Servers Clients not being able to save or remove colour presets in the Customizer
  • Patch 0.5.0.0: Introduced
    • First iteration of Dedicated Server support (Still Experimental)

References