Games Satisfactory
Satisfactory server requirements
Requirements
| Our benchmark | Coffee Stain | |||
|---|---|---|---|---|
| CPU | 2% of one core, idle | Min 4-core i5-3570, rec 6 physical cores | i5-3570 or Ryzen 5 3600+, single-thread rating 2000+ | High single-thread clock, rating 2000+ |
| RAM | 2.6 GB idle, 3.4 GB peak | 8 GB min, 16 GB rec | 8 GB, 16 GB for big saves or 5+ players | 8 GB min, 16 GB rec, 12 GB middle |
| Disk | 2.8 GB install | 20 GB, SSD recommended | 12.4 GB files (Windows), 8 GB total (Linux) | SSD strongly preferred |
| Network | UDP 7777, TCP 7777 and 8888 | Internet for multiplayer | Broadband, 7777 TCP+UDP, 8888 TCP | 7777 TCP+UDP, 8888 TCP |
| OS | Linux, native | Windows 10 min, Windows 11 rec, 64-bit | Windows 10/11 or Server 2016-2022, Debian or Ubuntu |
RAM by players
8 GB
8 to 12 GB
- Recommended
- Satisfactory wiki: "8GB. 16GB RAM may be recommended for larger saves or to host more than 4 players."
- XGamingServer: "Early/mid-game, 1-4 players: 8-12GB RAM. 4+ players or large late-game saves: 16GB RAM. Heavily modded or megafactory builds: 16GB+."
Memory over time
- In use
- Peak, with cache
Pending
- 24 hours idle
- One player for 30 minutes
- Built-up late-game save
- Three warm restarts
Ports
| Port | Protocol | Use | Our server |
|---|---|---|---|
7777 | UDP | Game traffic. Set with -Port. | Open |
7777 | TCP | HTTPS admin API and game traffic. Same number as UDP. | Open |
8888 | TCP | Reliable messaging, since patch 1.1. Set with -ReliablePort. | Open |
Forward all three. Same numbers outside and inside.
Docker setup
4 steps
Download
Free anonymous download, Steam app 1690800, about 2.8 GB.
docker run --rm -v /srv/games/satisfactory:/data steamcmd/steamcmd:latest \ +@sSteamCmdForcePlatformType linux +force_install_dir /data \ +login anonymous +app_info_update 1 +app_update 1690800 validate +quitRun
Ubuntu 24.04 with ca-certificates and libcurl, tagged game_runtime (as on the Palworld page). Saves in ~/.config/Epic, on a volume the user can write.
printf 'FROM ubuntu:24.04\nRUN apt-get update && apt-get install -y --no-install-recommends ca-certificates libcurl4t64 && rm -rf /var/lib/apt/lists/*\nUSER ubuntu\n' | docker build -t game_runtime - chown -R 1000:1000 /srv/games/satisfactory docker volume create satisfactory_save docker run --rm -v satisfactory_save:/x ubuntu:24.04 chown 1000:1000 /x docker run -d --name satisfactory --memory 12g \ -v /srv/games/satisfactory:/satisfactory -w /satisfactory \ -v satisfactory_save:/home/ubuntu/.config/Epic \ game_runtime ./FactoryServer.sh -log -unattendedClaim
Admin API up 2.3 seconds after start. Unclaimed server: passwordless login, then claim with a name and admin password for an admin token.
API=https://SERVER_IP:7777/api/v1 TOKEN=$(curl -sk -H 'Content-Type: application/json' \ -d '{"function":"PasswordlessLogin","data":{"MinimumPrivilegeLevel":"InitialAdmin"}}' $API \ | jq -r .data.authenticationToken) ADMIN=$(curl -sk -H 'Content-Type: application/json' -H "Authorization: Bearer $TOKEN" \ -d '{"function":"ClaimServer","data":{"ServerName":"My server","AdminPassword":"change-me"}}' $API \ | jq -r .data.authenticationToken)New game
Works on build 24656085. MapName, bSkipOnboarding and GameModeSettings required, though unmarked in the published API notes. World running 15 seconds later.
curl -sk -H 'Content-Type: application/json' -H "Authorization: Bearer $ADMIN" -d '{ "function": "CreateNewGame", "data": {"NewGameData": { "SessionName": "My game", "MapName": "/Game/FactoryGame/Map/GameLevel01/Persistent_Level", "StartingLocation": "Grass Fields", "bSkipOnboarding": true, "AdvancedGameSettings": {}, "GameModeSettings": {}, "CustomOptionsOnlyForModding": {} }}}' $API
Settings
12 settings
Launch options on the start command; server options in the Server Manager or the API.
| Setting | What it does |
|---|---|
-Port=7777 | Launch option. Game port, UDP and TCP. |
-ReliablePort=8888 | Launch option. Reliable messaging port (TCP), since patch 1.1. |
-ExternalReliablePort= | Launch option. For a reliable port remapped on the way in. |
-multihome= | Launch option. Bind one IP on a machine with several. |
-log -unattended | Launch options. Log to the console; never wait for input. |
FG.DSAutoPause=True | Server option. Pauses the world with nobody connected. On by default. |
FG.DSAutoSaveOnDisconnect=True | Server option. Save on player disconnect. |
FG.AutosaveInterval=300.0 | Server option. Seconds between autosaves. |
FG.ServerRestartTimeSlot=1440.0 | Server option. Daily session reboot, in minutes after midnight server time; 1440 is midnight. Bench: 00:00 UTC. |
FG.SendGameplayData=True | Server option. Gameplay data to Coffee Stain. On by default. |
FG.EnableSeasonalEvents=True | Server option. Seasonal events such as FICSMAS. |
FG.NetworkQuality=1 | Server option. Network quality preset. |
Troubleshooting
6 problems
- CreateNewGame: 'Missing JSON value named MapName' (or bSkipOnboarding, or GameModeSettings)
- Build 24656085 requires all three; the field is bSkipOnboarding, not SkipOnboarding. One missing field named per attempt; working body in Docker setup step 4.
- Nobody can join a new server
- No game yet. Claim it, then create or upload a game via the Server Manager or the admin API.
- World saves and reloads once a day
- Scheduled session restart: FG.ServerRestartTimeSlot, default midnight server time. Bench log at 00:00 UTC: 'Session Restart Timer elapsed, rebooting the session to maintain clock stability/game performance'; memory peaked at 3.4 GB, above the first load. Set the slot to an hour nobody plays.
- Near 0% CPU, world not moving
- Expected with nobody connected: FG.DSAutoPause, on by default, pauses the world (isGamePaused=true). Resumes when someone joins.
- No connections after patch 1.1
- Patch 1.1 added TCP 8888 for reliable messaging. Forward it with UDP and TCP 7777.
- Remapped port 7777 fails
- Port redirection unsupported for the standard port (official wiki); external and internal numbers must match. Change
-Portinstead.
Method
build 24656085
| Server | Satisfactory dedicated server, Steam build 24656085, downloaded 2026-10-05. |
|---|---|
| Image | Minimal ubuntu:24.04 image with ca-certificates and libcurl4t64, run as a regular user (uid 1000), saves on a Docker volume. |
| Machine | AMD Ryzen 9 5950X, Proxmox VE 9, each game server in Docker inside a dedicated LXC container. 12 GB memory limit, no swap. |
| Command | ./FactoryServer.sh -log -unattended |
Changes from defaults
- Claimed and new game created via the HTTPS API, not the client's Server Manager. Same claimed server and session.
- New game: Grass Fields start, onboarding skipped, other game and server settings default.
- Default ports.