How to Set Up a Satisfactory Dedicated Server
The free Satisfactory dedicated server keeps your factory online when the host logs off. Here is the full setup on Windows or Linux: install, ports, first launch, claiming and locking it down, moving your save and inviting friends.
The server can use multiple cores, but one core still does the heaviest simulation work. For big factories, that matters more than chasing lots of slower vCPUs.
7777 carries game traffic and the HTTPS management API, while 8888 handles reliable messaging. Missing 8888 is the classic cause of players getting stuck on loading.
Claiming sets ownership, the admin password protects server control, and the player password protects entry. They solve different problems, so use all three parts.
Do not close the server window with the X. Use quit, Ctrl+C, or your service manager so saves and config files finish writing.
Before you start: requirements and where to run it
The dedicated server is a separate free tool. It does not need a GPU, and Steam or Epic makes no difference for joining: both can connect to the same server. Console players cannot use Satisfactory dedicated servers.
| Requirement | What you need | Why it matters |
|---|---|---|
| CPU | x86-64 CPU; Intel i5-3570 or AMD Ryzen 5 3600 or better; single-thread rating 2000 or higher | The server can spread work across several threads, but the main game loop is fundamentally single-threaded. One fast core sets the pace for factory simulation, autosaves and busy moments. |
| RAM | 8GB baseline; 16GB recommended for larger saves or more than 4 players | Save size, player count and world state all live in memory. Low RAM pushes the machine towards swapping, which turns stutter into long hitches. |
| Storage | Windows 12.4GB server files; Linux 8GB | Server files only. You do not need the full game installed on the server machine. |
| OS | Windows 10/11/Server 2016/2019/2022 or Debian/Ubuntu | The official server tool supports these platforms. No 32-bit and no ARM. |
| Network | Broadband; home hosting needs port forwarding or a VPN | Every connected player is fed world state from the server. Weak upload shows up as slow joins, rubber-banding or timeouts. |
Coffee Stain’s own explanation is useful here: the server can spawn up to 26 threads per work set, but one core always ends up doing more than the rest. That is why a fast desktop CPU usually feels better than a cheap many-core VM when a mature factory is loaded.
- Home PC: cheapest if it is already on, but your game, browser and background apps all compete with the same CPU and storage. Fine for a small private group if you can port-forward.
- Spare PC: usually the best self-hosted option. It avoids interruptions from your own play session and can stay on without tying up your main machine.
- VPS: tidy and always-on, but only if the CPU is decent. On virtualisation,
kvm64CPU type is a known problem for new-game creation. - Rented game server: easiest for friends and least hassle for updates, backups and power use. You trade control of the whole machine for convenience.
Use this simple path to decide the order of work: install, open ports, launch, claim, then either create a new session or move your current save across.
No game purchase needed
8888 TCP
https://IP:7777
Admin + player password
- Upload your save in Manage Saves
- Set Auto-Load Session Name
- Friends add the server in Server Manager
Install with SteamCMD on Windows and Linux
You can install the server through SteamCMD without owning Satisfactory on Steam. On Epic, the server tool also exists as a free dedicated server add-on, but SteamCMD is the straightforward route on both Windows and Linux.
On Linux, do this as a regular user such as steam, not as root. That keeps file ownership sensible and reduces the damage a bad command can do.
Base install
steamcmd.exe +force_install_dir "C:\GameServers\SatisfactoryServer" +login anonymous +app_update 1690800 validate +quit
steamcmd +force_install_dir ~/SatisfactoryDedicatedServer +login anonymous +app_update 1690800 validate +quit
The same command updates the server later. Stop the server first before you run it again; otherwise SteamCMD can report 0x606 because files are still in use.
Experimental branch
+app_update 1690800 -beta experimental validate +app_update 1690800 -beta public validate
Add -beta experimental if your group wants that branch. To go back, use -beta public explicitly; simply removing the beta flag may not switch it back.
Ports and firewall: 7777 and 8888 do different jobs
Satisfactory now needs 7777 on both TCP and UDP, plus 8888 on TCP. These are not duplicates. 7777/TCP carries server traffic and the HTTPS API, 7777/UDP carries game traffic and the lightweight query API, and 8888/TCP handles reliable messaging that the join process depends on.
The practical result is simple: if 8888 is missing, players can appear to connect and then sit on loading forever. If 7777 is busy locally, the server can try the next port up, but you cannot remap the standard port on the router. External and internal port numbers must match the port the server is actually listening on.
| Job | 7777 TCP | 7777 UDP | 8888 TCP |
|---|---|---|---|
| Server traffic and HTTPS API | Yes | No | No |
| Game traffic | No | Yes | No |
| Lightweight query API | No | Yes | No |
| Reliable messaging | No | No | Yes |
| Can use a different external port | No | No | Yes |
Windows firewall
New-NetFirewallRule -DisplayName "Satisfactory UDP 7777" -Direction Inbound -Action Allow -Protocol UDP -LocalPort 7777 New-NetFirewallRule -DisplayName "Satisfactory TCP 7777" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 7777 New-NetFirewallRule -DisplayName "Satisfactory TCP 8888" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 8888
Linux firewalld
firewall-cmd --permanent --add-port=7777/tcp firewall-cmd --permanent --add-port=7777/udp firewall-cmd --permanent --add-port=8888/tcp firewall-cmd --reload
If you are hosting from home, you also need matching router forwards for the same ports. Think of the router as the gate to your network and the OS firewall as the gate on the machine itself; both have to allow the traffic.
First launch, check it is up, then claim and lock it down
Launch it
FactoryServer.exe -log -unattended ./FactoryServer.sh
On Linux, logging and unattended mode are already on by default. If you need a different listen port, use -Port=; if you need a different reliable port, use -ReliablePort=. Keep in mind that if the reliable port is already in use, the server can fail to start.
Check it is really listening
A quick browser check is the easiest first test because it confirms the HTTPS API on 7777/TCP is alive:
https://<LAN-IP>:7777/
Use https, not http. You should expect a certificate warning because the server uses a self-signed certificate. After that, confirm the process exists:
pgrep -f FactoryServer.sh tasklist | find "FactoryServer.exe"
If the process is running but 7777 does not answer, check which port it actually bound to. That often means something else had already claimed 7777.
Claim the server and protect it
In game, open Server Manager, add the server by IP and port, then claim it. Claiming is what turns an unowned process into your managed server.
- Server name: just the label people see in Server Manager.
- Admin password: protects server administration, including loading saves, changing options and starting a new game.
- Player password: protects entry. This is off by default, so turn on Player Password Protection for a private group.
Use both passwords because they guard different things. A player password keeps strangers out if your IP is shared around; the admin password stops regular players from taking over the server settings.
If you forget the admin password, delete ServerSettings.7777.sav from just above the save folder and reclaim the server. That also resets the server name, player password, auto-load session and certificate, so treat it as a full reset of server identity.
Move your existing world and keep proper backups
To bring over a local factory, open Manage Saves in Server Manager and upload the save from your PC. Then set Auto-Load Session Name to that save so the server comes back into the correct world after every restart instead of waiting for manual selection.
Server saves live here:
- Linux:
~/.config/Epic/FactoryGame/Saved/SaveGames/server - Windows:
%LocalAppData%\FactoryGame\Saved\SaveGames\server
Back up that folder before major updates, before changing several settings at once, and before experimenting with branches. Save files are the part that matters; reinstalling the server binaries is easy, rebuilding a factory is not.
If you want a named snapshot before maintenance, use server.SaveGame saveName from the server console. That gives you a manual restore point separate from the autosave rotation.
Settings that matter for stability
Most performance complaints on private servers come from a few settings being misunderstood. The rule is to change one thing at a time, then watch the symptom you were trying to fix: join time, save hitches, idle CPU use, or disconnects.
| Setting | What it does | Private-group recommendation |
|---|---|---|
| Auto Pause | Pauses the world when nobody is connected. Cuts idle CPU use because the simulation stops instead of ticking an empty world. | Leave it on unless you specifically want the factory to keep running with nobody online. If you turn it off, expect more constant CPU use. |
| Auto-Save on Player Disconnect | Writes a save when someone leaves. Costs a short save hitch and disk activity at that moment. | Turn it on for a private group. It is a simple way to avoid “we logged off fine, then the machine crashed later” progress loss. |
| Autosave Interval | Default is every 300 seconds, which is 5 minutes. Saving interrupts play briefly while the world is written to disk. | Start with the default. Shorter intervals mean less progress lost after a crash, but more frequent hitches. |
| Rotating autosaves | The server keeps 3 rotating autosaves by default, giving you several recent rollback points. | Keep at least the default 3. Fewer copies reduce recovery options after corruption or a bad build session. |
| Daily restart time | This is a daily time, not an every-X-hours interval. A clean restart resets the process and reloads the save. | Set it for a quiet time if the server stays up all day. It can help long-running servers stay tidy, but it will disconnect anyone online. |
| Network Quality | Higher values can improve client load times and network performance, but they cost server framerate. | Only raise it if clients are loading slowly or catching up badly after join. If server stutter gets worse, put it back. |
| Player cap | The default cap is 4, and the server is tuned for 4. More players mean more simulation load, memory use and bandwidth. | Raise MaxPlayers only to the actual size of your group. If you plan for more than 4 or larger saves, 16GB is the safer memory target. |
| Connection timeouts | Default connection timeout is 30 seconds. Slow PCs can run out of time while loading and validating the world. | Only raise InitialConnectTimeout and ConnectionTimeout if older machines time out during loading. It helps slow clients, but dead connections take longer to clear. |
| Tick rate | The default server tick is 30. Raising it asks the main thread to do more work, more often. | Leave it at 30. If the hardware cannot sustain 30 already, increasing it will not fix lag and usually makes the CPU bottleneck worse. |
To raise the cap without editing files, you can use a launch option such as:
FactoryServer.exe -log -unattended -ini:Game:[/Script/Engine.GameSession]:MaxPlayers=8
If you do edit config files directly, stop the server first. On Linux they sit in <install>/FactoryGame/Saved/Config/LinuxServer/; on Windows they sit in <install>\FactoryGame\Saved\Config\WindowsServer\. The server rewrites these files on graceful shutdown, and some of them only appear after the first clean stop, so do not set them read-only.
Invite friends the right way
Give friends your public IP and the server port. If you are not using the default, tell them the actual port the server is listening on. They should open Server Manager, add the server there, and join from that screen.
Do not use Join Game for a dedicated server. That route commonly throws Encryption token missing because it is the wrong join path for this setup.
If you are using IPv6, put the address in brackets when entering it. If a friend cannot get in from outside your network, follow the check order below before changing half the server at once.
Keep it healthy and fix common problems
Graceful shutdown and updates
Always stop the server cleanly: use quit in the server console or Server Manager, send SIGINT, run systemctl stop satisfactory if it is a service, or press Ctrl+C in the Windows console. Never close the window with the X. A hard close can kill the process before it finishes writing saves, certificates and config changes.
For updates, stop first and then run the same SteamCMD command you used to install. If you see 0x606, something still has the files open; the server is usually still running, and if it is not, a reboot normally clears the file lock.
Logs and crash reports
Logs live in FactoryGame/Saved/Logs. Crash dumps live in FactoryGame/Saved/Crashes. On Linux, crash reports upload by default; if you want to opt out, add this while the server is stopped:
[CrashReportClient] bImplicitSend=False
| Symptom | Likely cause | First fix |
|---|---|---|
| Stuck on loading | 8888/TCP is not forwarded or blocked | Open and forward 8888/TCP, then retry. This is the usual cause when people can reach the server but never finish joining. |
| Encryption token missing | Joined through Join Game instead of Server Manager | Add the server in Server Manager and join from there. |
| Can’t see server | Server not listening on the expected port, firewall block, or router forwards missing | Check https://<LAN-IP>:7777/ first, then confirm firewall rules and router forwards for 7777/TCP, 7777/UDP and 8888/TCP. |
| Crash on new game on VPS | VM CPU type is kvm64 | Change the VM CPU type to host. |
| 0x606 in SteamCMD | Files are still in use | Stop the server fully before updating. If it is already stopped, reboot and try again. |
| Certificate is not yet valid | Wrong clock or timezone on client or server | Fix time and timezone on both ends. If the server clock was wrong when the certificate was created, delete the server settings file and reclaim. |
| Timeouts on older PCs | Clients need longer than the default 30 seconds to load and connect | Raise InitialConnectTimeout and ConnectionTimeout in Engine.ini. |
| Forgot admin password | No recovery inside the normal UI | Delete ServerSettings.7777.sav, then reclaim the server. Remember that this also resets name, player password, auto-load session and certificate. |
Self-host or rent: make the boring call first
If you are still weighing self-hosting a game server against running a game server on a VPS, judge it on these practical points rather than convenience alone.
| Question | Self-hosted usually makes sense if… | Renting is usually simpler if… |
|---|---|---|
| PC on 24/7 | You already have a machine or spare PC that can stay on reliably. | You do not want your electricity use, Windows restarts or local crashes deciding uptime. |
| Upload quality | Your home broadband upload is steady and your router is under your control. | Your upload is weak, shared, or you cannot do clean port forwards. |
| Single-core speed | You have a decent desktop CPU and are not also hammering it with other tasks. | Your available machine is old, power-limited or stuck on slow virtual cores. |
| Backups and restarts | You are happy to copy save folders, schedule clean restarts and read logs when something breaks. | You want panel tools to handle the routine admin work with less fuss. |
If the table points towards renting, our Satisfactory server hosting comparison is the quickest way to compare small private-group plans.
The cheapest Satisfactory plan in our comparison is £3.03/month ($4.03), though a starter plan suits a fresh factory better than a months-old one.
Conversion used: £1 = $1.33
Compare plans on uptime, control panel quality, backups and how easy they make updates and save handling.
Compare the best Satisfactory server hostsSatisfactory server FAQ
Is the Satisfactory dedicated server free?
Yes. The dedicated server tool is free, and on Steam you can install it through SteamCMD without owning the game there. On Epic, it is also available as a free dedicated server tool add-on.
What ports does a Satisfactory server need?
You need 7777/TCP, 7777/UDP and 8888/TCP. 7777 covers game traffic and the HTTPS API, while 8888 handles reliable messaging used during joining.
Why are my friends stuck on loading when joining my Satisfactory server?
The usual cause is 8888/TCP not being forwarded or being blocked by a firewall. Players can sometimes reach the server well enough to start joining, but the reliable channel never completes, so loading never finishes.
How many players can join a Satisfactory dedicated server?
The default cap is 4, and the server is tuned for 4. You can raise MaxPlayers, and the wiki puts the theoretical ceiling at 127, but each extra player adds more simulation, memory and network load, so practical stability matters more than the headline limit.
Can Epic and Steam players join the same Satisfactory server?
Yes. The dedicated server does not split players by store platform, so Steam and Epic users can join the same world. The important part is that they join through Server Manager with the correct IP, port and password if you set one.
More Satisfactory server help
The host comparison, plus our guides on running a server yourself.
Game updates, port handling and host panels do change. If a host’s current panel differs from the steps here, follow the panel’s present wording, but keep the same underlying rules on ports, passwords, saves and graceful shutdowns.