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
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 Window and Linux, and installs the server into a directory

Update Dedicated Server Tool
To make sure your tool is up to date run the following command, if the tool is outdated an error may show up for users trying to connect.

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.

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):
 * 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 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:

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.

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 game server management panel you can run on your own PC/server that supports Satisfactory and makes it easier to get the server going from its web interface. You can run it on both Windows and Linux.

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.

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: