Dedicated servers

Experimental This is a short guide on how to set up a Satisfactory dedicated server.

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.

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.

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.

Steam
'''This method is not available for installation right now. It is a known issue and it is being worked on.'''

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 (Windows: Run this in a CMD prompt):

This command works for both Windows and Linux, and installs the server into a directory

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:

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 "FactoryGame.exe" AND "UE4Server-Win64-Shipping.exe" (Found in "Engine\Binaries\Win64\"). The file "UE4Server-Win64-Shipping.exe" is loaded after "FactoryGame.exe" and your firewall rules will not apply unless set explicitly, at least in Server 2016.

Do-It-All .bat file
It assumes steamcmd to be installed in c:\steamcmd and the server itself in d:\satisfactorydedicatedserver.

Satisfactory Dedicated Server.bat
set steamcli=c:\steamcmd set satisdedicated=d:\SatisfactoryDedicatedServer set steamopts=validate %steamcli%\steamcmd.exe +login anonymous +force_install_dir %satisdedicated% +app_update 1690800 %steamopts% +quit if %errorlevel% neq 0 pause & exit /b %errorlevel% cd /D %satisdedicated% FactoryServer.exe -log -unattended The pause command is just so you have a chance to look at any errors of steamcmd before Windows closes the command line.

Linux
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:

Loading save file

 * Step 1: Find the desired save file and Session name in the Load tab in the main menu.
 * 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
 * Step 2: Locate save file in SaveGames folder and copy the .sav
 * Windows:
 * Linux:
 * Step 3: Paste/Transfer save file to the SaveGames\server folder
 * Windows (local):
 * Windows (Running as service):
 * Linux:
 * Step 4: Insert the Session Name from step 1 into the server settings tab in Server Manager, then press . The server should initiate a search for the save file with the matching Session Name.
 * 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.
 * 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] Using 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 configuration 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] Using 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, You can modify other settings if you want, but that's the only required step. Click "install", then run this command.

Other useful commands

Automated Installation via LinuxGSM
LinuxGSM is a popular and powerful, hassle free gameserver management script. It only requires rudimentary Linux skills from the admin and is completely used on the command line interface (usually through SSH).

After you have installed your server, log in with the superuser or root and start following the very basic steps described in the LGSM documentation. What it does is downloading SteamCMD as well as the Satisfactory server files as well. You will also install any dependencies in the first steps so everything will run out of the box.

Once the setup is done you can start your server via   command.

Automated Installation via AMP
AMP is a popular and simple to install game server management panel you can run on your own PC/server that supports Satisfactory. No command line knowledge is required, and it makes it very easy to get the server going from its web interface or on your mobile device. You can run it on both Windows and Linux, and it also allows you to let other people manage your game servers without giving them access to the entire system and can optionally run the server within an isolated Docker container.

Once you have AMP itself up and running (Tutorial and Guide), click "Create Instance" and then select "Satisfactory" from the list of games. Once you've done that, select "Create Instance".

After that, double click the new Satisfactory instance to manage it and select "Update" from the status screen. This will download the Satisfactory server and required files.

Once the download is complete you can hit Start and after a few moments the server will start up. Once the startup has completed you can connect as normal. AMP automatically creates the correct firewall rules for you so you don't need to worry about this. You can monitor the resource usage from the status screen.

On a fresh windows install you may need to run the FactoryServer.exe executable once manually to install some UE4 requirements (C++ runtimes, .net 3.5). The default port also may not be the same as the port used. Check the last run executable in 'Support' tab of your Satisfactory instance.

Running manually within a Docker container
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 $STEAMAPPDIR 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 /var/lib/docker/volumes. You can find exactly where using docker inspect on the running container. More information here.

Error 1
You may see an error like:

You can resolve this by downloading the dependency:

Error 2
You may see an error like:

You can resolve this by symlinking the expected path to where the library actually exists, for example:

Log output should change: