26 April 2026

Sons of the Forest Server Configuration Guide

A reference to every knob in the Sons of the Forest dedicated server config – what each key does, the valid values, and the defaults Endnight ship. Use it alongside Configuration Files in your TCAdmin panel to build the exact co-op experience you want.

Need a Sons of the Forest server?Rent now

If you've already got your Sons of the Forest server running on LOW.MS (if not, start with the join guide and the pricing page) this article digs into everything you can actually tune. I'll cover every section of Endnight's dedicatedserver.cfg – what it does, what the sensible values are, and where in the TCAdmin panel you do the editing.

Sons of the Forest's config is one of the cleaner dedicated-server formats in the survival-horror genre – a single JSON file with a flat top-level block, a GameSettings block for the always-on multiplayer toggles, and a CustomGameModeSettings block that only reads when GameMode is "Custom". Knowing which block a key belongs to is half the battle.

Where the config lives

The config file is called dedicatedserver.cfg and it's plain JSON. On a LOW.MS box it sits under the server's userdata (sometimes configurations) folder, and you edit it from Configuration Files in the TCAdmin sidebar. That's the primary path – it gives you an in-browser editor with syntax highlighting and a proper save-and-restart prompt. If you'd rather edit a file directly, File Manager in the sidebar exposes the same tree over a web UI, and SFTP is available through Service Settings if you want to drop a pre-built config in.

Two rules for JSON that bite people constantly:

  • Keys and string values need double quotes. Integers, floats, and booleans do not.
  • A stray trailing comma will refuse to parse – Endnight's server will boot with partial defaults and log the parse error, which is usually how people discover they broke the file.

If you want a safety net, make a copy (dedicatedserver.cfg.bak) via File Manager before you start editing. Or just rely on our nightly automated backups under Cloud Backup / Cloud Restore – a bad config is 30 seconds to roll back.

Server identity

The top-level strings are what other players see in the server browser and the in-game list:

  • ServerName – the name shown in the browser. Default "Sons Of The Forest Server (dedicated)". Strings need to be quoted and Unicode is fine.
  • Password – leave empty ("") for a public server; up to 40 characters if you want password-only access. I covered the practical password-vs-owners-whitelist tradeoff under Admin & moderation below.
  • MaxPlayers – integer. Endnight cap this at 8, which is the supported co-op ceiling for the game itself. Setting it higher will parse but the server refuses connections above 8.

There's no separate MOTD field, no custom server icon, and no version pin – the server always runs the current Sons of the Forest dedicated-server build that Steam last pushed. You keep that build current through Steam Update in the sidebar, which runs the SteamCMD app_update 2465200 validate step against the official dedicated-server tool (Steam App ID 2465200, a separate free install from the game itself).

Network and connectivity

Three UDP ports matter for Sons of the Forest and LOW.MS assigns them automatically out of the 27015–27415 range. For reference, the stock Endnight defaults are GamePort 8766, QueryPort 27016, BlobSyncPort 9700 – but do not hard-code those on a shared node because they'll collide with whatever else is on the same IP. Leave the values we provision and your server will behave.

IpAddress defaults to "0.0.0.0" which tells the server to bind to every interface – that's what you want unless you've explicitly ordered a Dedicated IP add-on, in which case the provisioning script fills in the correct address.

LanOnly is a boolean that controls whether the server advertises to the public Steam master list. Keep it false for an internet-facing co-op server. Flipping to true is useful if you're staging a local LAN party off a home connection, and for the specific case of a restricted NAT it skips the accessibility probe that would otherwise block startup.

SkipNetworkAccessibilityTest is the related escape hatch – leave it false by default. Only set it to true if you're hosting behind a NAT that's rejecting the port probe but you know connectivity actually works. On LOW.MS you shouldn't ever need this.

Game settings

This is where most of the actual tuning happens. GameMode is the master switch and everything downstream depends on it:

Key Type Default Valid values
GameMode string "Normal" Normal, Hard, HardSurvival, Peaceful, Creative, Custom
SaveSlot integer 1 Any positive integer
SaveMode string "Continue" Continue, New
SaveInterval integer 600 Seconds between autosaves

On the difficulty side, the five non-custom presets (Normal, Hard, HardSurvival, Peaceful, Creative) are exactly the presets the single-player menu exposes – if you want what the Normal singleplayer difficulty feels like across 8 players, just set "GameMode": "Normal" and you're done. "Custom" tells the server to ignore the preset and read the CustomGameModeSettings block instead.

The always-on GameSettings block has two toggles that apply regardless of GameMode:

Gameplay.TreeRegrowth – boolean. Trees your crew chops down will grow back over time. Turning this off is the usual choice for long-running communities who want permanent clearings around their bases; leaving it on is kinder to drop-in players who want to scavenge wood near spawn.

Structure.Damage – boolean. Controls whether built structures can take damage (cannibals chipping at your walls, weather degrading platforms). Off makes bases invulnerable, which is a reasonable call for build-focused servers.

Custom game mode settings

When GameMode is "Custom", the CustomGameModeSettings block becomes authoritative. These are the keys and the valid values I've verified against the current dedicated-server guide:

Key Type Default Options
GameSetting.Multiplayer.Cheats boolean false true, false
GameSetting.Multiplayer.PvpDamage string "Normal" low, normal, high
GameSetting.Vail.EnemySpawn boolean true
GameSetting.Vail.EnemyHealth string "Normal" low, normal, high
GameSetting.Vail.EnemyDamage string "Normal" low, normal, high
GameSetting.Vail.EnemyArmour string "Normal" low, normal, high
GameSetting.Vail.EnemyAggression string "Normal" low, normal, high
GameSetting.Vail.AnimalSpawnRate string "Normal" low, normal, high
GameSetting.Vail.EnemySearchParties string "Normal" low, normal, high
GameSetting.Environment.StartingSeason string "Summer" spring, summer, autumn, winter
GameSetting.Environment.SeasonLength string "Default" short, default, long, realistic
GameSetting.Environment.DayLength string "Default" short, default, long, realistic
GameSetting.Environment.PrecipitationFrequency string "Default" low, default, high
GameSetting.Survival.ConsumableEffects string "Normal" normal, hard
GameSetting.Survival.PlayerStatsDamage string "Off" off, normal, hard
GameSetting.Survival.ColdPenalties string "Off" off, normal, hard
GameSetting.Survival.StatRegenerationPenalty string "Off" off, normal, hard
GameSetting.Survival.ReducedFoodInContainers boolean false
GameSetting.Survival.SingleUseContainers boolean true
GameSetting.Survival.BuildingResistance string "Normal" low, normal, high
GameSetting.Survival.CreativeMode boolean false
GameSetting.Survival.PlayersImmortalMode boolean false
GameSetting.Survival.OneHitToCutTrees boolean false
GameSetting.Construction.NoCuttingsSpawn boolean false
GameSetting.FreeForm.ForcePlaceFullLoad boolean false

A couple of notes on the less-obvious ones. PlayersImmortalMode is god mode – useful for a pure building/exploration server. OneHitToCutTrees plus NoCuttingsSpawn together give you a faster harvest loop without littering the map. ForcePlaceFullLoad makes large builds placeable without the usual "wait until chunks load" delay, which matters for blueprint restores.

There isn't a dedicated respawn or permadeath key in the JSON – respawn behaviour is implicit in the difficulty preset (Peaceful is infinite-respawn-and-no-enemies at the extreme, HardSurvival is single-life on death). If you want a permadeath server, run HardSurvival and establish the rule socially; the config can't enforce it beyond that.

Save behaviour

Each save is keyed by SaveSlot and lives under the server's user_data directory. The default 1 is fine for a fresh world. If you want to juggle multiple campaigns on the same server – a public save and a private one, say – bump SaveSlot to 2 and the server creates a sibling save directory.

SaveMode decides what happens on startup: "Continue" loads whatever's in SaveSlot, "New" wipes it and starts fresh (so be careful). SaveInterval is seconds between autosaves; 600 (10 minutes) is the default and I'd leave it there – shorter intervals push more IO for little gain.

For continuing an existing singleplayer save, upload the save files via File Manager or SFTP into the SaveSlot directory – there's a dedicated save-upload walkthrough that covers the exact paths.

Rolling backups for the save itself are handled by Backup Manager (manual) and Cloud Backup (automated) in the sidebar, separate from the config. Endnight's server doesn't rotate save snapshots itself – that's our layer on top.

Performance pacing

Two keys control how hard the server CPU works depending on whether anyone's online:

  • IdleTargetFramerate (default 5) – the tick rate when the server is empty. Low on purpose, keeps CPU cost near-zero.
  • ActiveTargetFramerate (default 60) – the tick rate with players connected. 60 is the sweet spot; raising it rarely helps and eats CPU.
  • IdleDayCycleSpeed (default 0.0, range 0 to 1) – fraction of normal day-cycle speed when the server is empty. 0.0 pauses time entirely while nobody's online, which is almost always what you want.

Admin and moderation

Admin is deliberately kept outside the JSON. To grant someone in-game admin (access to the pause-menu Players panel, kick/ban powers, and the debug console) you add their 17-digit SteamID64 to ownerswhitelist.txt in the server's user_data directory. One SteamID per line, plain text, no quotes. Edit it via Configuration Files or File Manager – same flow as the main config.

Players find their SteamID64 by opening Steam → Account Details, or by pasting their profile URL into a resolver like steamid.io. Ban and kick commands are then available through the in-game Players panel once they're on the whitelist.

There's no separate bans.cfg in the current version – ban state is tracked server-side by Endnight's code once you issue a ban through the in-game panel.

Logging and diagnostics

Three log keys, all booleans, all live at the top level:

  • LogFilesEnabled – default false. Flip to true to write server logs to disk; leave off if you're only using the Log Viewer live stream in the panel.
  • TimestampLogFilenames – default true. Adds a timestamp suffix so each run writes to a new file instead of overwriting.
  • TimestampLogEntries – default true. Adds per-line timestamps, which you almost always want when diagnosing an issue after the fact.

For chasing down specific issues – network problems, connection failures, the cannibal AI misbehaving – pair the log files with the Log Viewer sidebar item for live tail, and cross-reference with the troubleshooting guide.

Applying changes

The correct order when changing config:

  1. Service Settings → stop the server. Config edits while the server is live will either be overwritten by the next autosave or ignored until restart.
  2. Configuration Files → edit dedicatedserver.cfg (or ownerswhitelist.txt for admins).
  3. Service Settings → start the server.
  4. Log Viewer → confirm the startup log doesn't show a JSON parse error.

If you need to launch-argument-level anything – bind to a specific IP family, force a particular Steam region – that goes in Commandline Manager, not the JSON. The defaults we provision cover every case I've seen in production.

That's the full surface. Nothing in Sons of the Forest's dedicated server lives outside dedicatedserver.cfg, the ownerswhitelist.txt, and the Steam build itself – once you know what the three files do, you can recreate any server configuration from scratch in under two minutes.

Join our Discord to chat with our staff and community!
Join Discord