Dedicated servers

Experimental This page details how to set up and operate Satisfactory dedicated servers.

Summary
At the moment, the server is available for the Windows and Linux platforms and can only be installed through Steam or its command line sibling SteamCMD. Only the Experimental branch of the game is currently supported.

Automated vs manual server setup
This page details manual installation of the dedicated server tool for users who are comfortable using the command line. Users who want a streamlined install, different options are outlined on the Dedicated servers/Automated Solutions page. Not all services detailed in Automated Solutions are free.

Port forwarding & firewall
Before you start, you will need to ensure that the following ports are reachable on your server so you might have to create firewall rules or configure port forwarding in your router, depending on your setup. Port redirection is not supported at the moment so the ports that you open in your router need to match the ones presented here (IE: do not forward port 7777 as port 7778 on your router). Each of these ports is overridable via a parameter, in accordance with the table below. If you want to run multiple instances of the server on one computer you will have to override at least one port.

Minimum requirements
No matter which service or installation method the server needs a minimum of 4 GB RAM and 10 GB of storage space. It is recommended to run a server with 6+ GB RAM and more storage space to support 4+ players and or large/complex factories.

Save files in excess of 10 MB can require 8+ GB RAM at idle, for reference brand new worlds have save files around 500 KB/ 0.5 MB.

Ram usage on servers appears to be exactly the same as when loading the same save on client, your mileage may vary.

Steam
You can install the server from your steam library like you would install any other game. You might have to change your steam library filters to include tools but other than that the process does not differ from any other game.

SteamCMD
If you are installing the server on a headless environment, you will most likely want to use SteamCMD, regardless of the platform that you are using. SteamCMD itself is thoroughly documented on the SteamCMD wiki page.

Assuming that SteamCMD has been installed and is ready to use, you can simply install the server using the following command in a terminal window. (Windows: Run this in a CMD prompt):

This command works for both Windows and Linux, and installs the server into a directory. For reference,  is equivalent to the current user's home directory on Linux. Also known as. It is recommended to use an absolute path as an installation directory to make it less likely you'll lose track of your installation.

But on Windows, steamcmd uses steam client dll files, so you'd better be getting steamcmd.exe (get it via link above) extracted to your Steam directory (typically C:\Program Files (x86)\Steam), then pop up command line (cmd) and enter something particulary specific, like  instead, assuming first part is a full path to your Steam installation, and force_install_dir is a full path to your future dedicated server installation.

Starting the server
If you are using Steam, just launch it, like you would any other game. However, that is not very useful for most purposes. You might actually want to launch the server from the command line instead.

Windows
Inside the installation directory:

Example below with custom ports on windows.

start C:\SatisServer\FactoryServer.exe ?listen -Port=10000 -ServerQueryPort=10002 -BeaconPort=10004 -log -unattended -nosteam

The  and   parameters are not required but are generally quite useful. The first one will open up a console window that is going to be useful if you want to check out what your server is up to. The later one will make sure no UI dialogs are open. This is important because most times there are no users in front of a server who could respond to those dialogs so the server would just stall waiting for user input.

Be sure to have your firewall let "FactoryServer.exe" AND "UE4Server-Win64-Shipping.exe" (Found in "Engine\Binaries\Win64\"). The file "UE4Server-Win64-Shipping.exe" is loaded after "FactoryServer.exe" and your firewall rules will not apply unless set explicitly, at least in Server 2016.

Linux
Example setting custom ports Linux

./FactoryServer.sh ?listen -Port=10000 -ServerQueryPort=10002 -BeaconPort=10004

On Linux, both  and   are implicitly added so all you need to do is just launch the executable.

With both these scenarios though, if the server crashes then you will have to manually start it up again and that's not very desirable for a headless server. You might want to look into setting it up as a service that automatically restarts. There's a guide on how to achieve that on Linux but that is possible on any platform.

Initial configuration
Initial configuration is made in the game by the first player connecting to a server and it largely boils down to giving the server a name and assigning an administration password. More settings are available through the in game server manager. The server does not start any game on it's own. An administrator will have to create a game through the in-game UI. Player password protection is not enabled by default but a player password can be set through the same UI.

Many more settings can be changed manually by editing ini files, which are located in the installation directory:

The server largely uses the same configuration options as the game. By default, the server uploads crash reports when running on Linux. If you want to disable this behavior, add the following lines to the "Engine.ini" configuration file:

Commands
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

Loading a save file
1. Find the desired save file and Session name in the Load tab in the main menu. 2. Locate save file in SaveGames folder and copy the .sav 3. Paste/Transfer save file to the SaveGames\server folder 4. Insert the Session Name from step 1 into the server settings tab in Server Manager, press. The server should initiate a search for the save file with the matching Session Name.
 * Session Name is of critical importance, save files only display it if they haven't been renamed while being saved, the only way to see the Session Name otherwise is from the Load Menu or a save editor
 * Windows:
 * Linux:
 * Windows (local):
 * Windows (Running as service):
 * Linux:
 * To reiterate, Session Name & Save File Name are not the same, Session Name cannot be changed without a save editor, renaming a .sav file does not change the Session Name.

Other platforms/setups will have differing folder structures, the key point of this tutorial is finding Session Name.

This is a temporary/manual method while the Manage Saves feature is not implemented.

Setting the server up as a service
Running the dedicated server as a Service allows your server to auto-restart in the event of a crash, as well as automatically start after booting. How this is handled differs between Linux and Windows operating systems, so make sure you use the correct section for your environment.

[Linux] SystemD
This section only applies to Linux, specifically distributions running  as an init system. The server could be configured to run as a service on Windows as well but that path hasn't been explored as of yet.

For the sake of simplicity, we're going to assume that we are setting up this server for a user called, with the usual default home directory found at. Start by creating a server startup script, place it at. It should contain the following lines:

Once the  has been created, you would need to set it to an executable by running:

You will need to have root access for the next steps. Create a file called

It should have the following contents:

Finally, enable the service:

This will start the server. If you haven't installed it before hand, the server will also be installed once the service starts. Every time the service is restarted, the server will be updated by steamcmd. To restart the server, one can simply run:

This can be done automatically every night at 04:00, for example, by adding the command to the root crontab:

[Linux] OpenRC on Gentoo
You would install steamcmd using Portage, and accept it's license. After of which you should have a steamcmd user too. It's home directory lives at /opt/steamcmd.

Recommended way is to link to the already existing steamcmd init file like ln -s /etc/init.d/steamcmd /etc/init.d/steamcmd.satisfactory and then copying the default config from /etc/conf.d/steamcmd to /etc/conf.d/steamcmd.satisfactory.

The /etc/conf.d/steamcmd.satisfactory would look something like this: DTACH_OPTS="-e '^D' -r none" STEAMCMD_BINARY="FactoryServer.sh" STEAMCMD_PATH="/opt/steamcmd/sf" STEAMCMD_OPTS=""
 * 1) Copyright 1999-2020 Gentoo Authors
 * 2) Distributed under the terms of the GNU General Public License v2
 * 1) Dtach options, which will used, when the `attach` extra command is called.
 * 2) By default, CTRL+D is used, and no signal is send,
 * 3) when you want to detach from the attached console.
 * 1) Specifies, which server binary is used.
 * 2) This could be 'hlds_run' or 'srcds_run', depending on your game.
 * 1) Path to the files of your started server.
 * 1) Options for your server binary.

[Linux] Alternative SystemD configuration
There's really no need for an additional bash script (start_server.sh mentioned above), as the configuration done in this script can be done directly in satisfactory.service:

Note that this configuration will validate and update your dedicated server on every restart.

[Windows] NSSM
For Windows users, you can use Non-Sucking Service Manager to easily set up auto-restart for the dedicated server.

Once you've downloaded and unzipped NSSM, navigate to the directory containing nssm.exe and run the below command

This will pull up a GUI for configuration. Set the "Path" to the location of FactoryServer.exe, Set the "Arguments" to "-unattended". You can modify other settings if you want, but that's the only required step. Click "install", then run this command.

Other useful commands

Docker
This is an example Dockerfile on how to run the Satisfactory dedicated server inside a docker container. As stated in the table at the beginning, do not use different ports for 15000 and 7777, so it is mandatory that those are specified in the command line as in the example. The other port (15777) can be declared as wanted.

The  is declared as a volume so that the savegames and the config of the server can be accessed and modified from outside the container. If that is not mapped to a host directory as done with -v, it will go into. You can find exactly where using docker inspect on the running container. More information here.

Docker-Compose
Use the following example docker-compose file in parallel with the Dockerfile and run  for a detached background server.

SDL Priority Manager
This issue can be resolved by downloading the dependency:

No Such File or Directory
This issue can be resolved by symlinking the expected path to where the library actually exists, for example:

Log output should change:

State is 0x606 after update job
This issue can be resolved by rebooting the machine. It is likely caused by SteamCMD being unable to overwrite files due to them being used by another process.

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.
 * Patch 0.5.0.4:
 * Changed "-GamePort" server parameter to "-Port"
 * Added a “Save Game” server command
 * Flipped around the Show/Hide Address Toggle Button text in the Add Server popup
 * Patch 0.5.0.0: Introduced