Post

Configuring Your Satisfactory Server

Adjust Satisfactory server settings: max players, autosave interval, and server name via Docker environment variables and the vanilla HTTPS API.

Configuring Your Satisfactory Server

Overview

Most Satisfactory server configuration is done through Docker environment variables (set at container start) or via the vanilla HTTPS API (changed at runtime without restarting). This guide covers the most common configuration options.


Docker Environment Variables

These variables are set in the docker run command or docker-compose.yml and take effect when the container starts (a restart is required to change them).

VariableDefaultDescription
MAXPLAYERS4Maximum number of simultaneously connected players
AUTOSAVEINTERVAL300Autosave frequency in seconds (300 = 5 minutes)
PGID1000Group ID for /config volume ownership
PUID1000User ID for /config volume ownership
STEAMBETAfalseUse the Steam beta (experimental) branch
SKIPUPDATEfalseSkip the SteamCMD update check on startup

Changing a variable

Edit your docker-compose.yml:

1
2
3
environment:
  - MAXPLAYERS=16
  - AUTOSAVEINTERVAL=600

Then restart:

1
docker compose up -d

API-Configurable Settings

These can be changed at runtime via the vanilla HTTPS API without restarting the server. Get an authentication token first (see Generating Your API Token).

Check Server State

1
2
3
4
curl -k -X POST https://YOUR_SERVER_IP:7777/api/v1 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -d '{"function": "QueryServerState", "data": {}}'

Response fields:

FieldDescription
numConnectedPlayersCurrent player count
playerLimitMaximum players allowed
techTierCurrent research tier (0–9)
isGameRunningWhether a session is active
isGamePausedWhether the session is paused
totalGameDurationTotal session time in seconds
activeSessionNameName of the active save

Rename the Server

1
2
3
4
curl -k -X POST https://YOUR_SERVER_IP:7777/api/v1 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -d '{"function": "RenameServer", "data": {"serverName": "My Factory Server"}}'

Run a Console Command

1
2
3
4
curl -k -X POST https://YOUR_SERVER_IP:7777/api/v1 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -d '{"function": "RunCommand", "data": {"command": "server.ListSessions"}}'

Verifying the Server is Healthy

Use the HealthCheck endpoint (no authentication required):

1
2
3
curl -k -X POST https://YOUR_SERVER_IP:7777/api/v1 \
  -H "Content-Type: application/json" \
  -d '{"function": "HealthCheck", "data": {}}'
  • "health": "healthy" — server is running normally
  • "health": "slow" — server is running but under heavy load (tick rate degraded)

FICSIT.monitor polls this endpoint every 10 seconds and reflects the status in the dashboard’s server status indicator.


Viewing Server Logs

1
2
3
4
5
# Follow live logs
docker logs -f satisfactory-server

# Last 100 lines
docker logs --tail 100 satisfactory-server

Look for these log patterns:

PatternMeaning
LogGameState: Match State Changed from WaitingToStart to InProgressSession started
LogNet: Join request:Player attempting to connect
LogNet: Client disconnectedPlayer left
LogSatisfactoryGame: AutosaveAutosave completed

Save Management

List Available Saves

1
2
3
4
curl -k -X POST https://YOUR_SERVER_IP:7777/api/v1 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -d '{"function": "EnumerateSessions", "data": {}}'

Create a Manual Save

1
2
3
4
curl -k -X POST https://YOUR_SERVER_IP:7777/api/v1 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -d '{"function": "CreateSave", "data": {"saveName": "manual_backup_2026"}}'

Back Up Save Files

Save files are stored in ./data/saves/ (relative to your docker-compose.yml). Back them up with:

1
cp -r /home/satisfactory/data/saves/ /home/satisfactory/backups/$(date +%Y%m%d_%H%M%S)/

Next Step

Installing FicsitRemoteMonitoring (FRM) →

This post is licensed under CC BY 4.0 by the author.