⚠️ The latest release is unstable. Use preview builds instead
Skip to content

Server Settings

Game and server settings are configured via server-settings.json. This file is auto-created with sensible defaults on first startup.

Accessing the Settings File

The settings file is stored on your host machine at .local-container/settings/server-settings.json (relative to your docker-compose.yml).

To view:

sh
cat .local-container/settings/server-settings.json

To edit:

  1. Open .local-container/settings/server-settings.json with any text editor
  2. Make your changes
  3. Restart to apply: docker compose restart

First Run

This file is auto-created with defaults on first server startup. If the file doesn't exist yet, start the server once and it will be created.

Default Settings

json
{
  "Game": {
    "FarmName": "Junimo",
    "FarmType": 0,
    "ProfitMargin": 1.0,
    "StartingCabins": 1,
    "SpawnMonstersAtNight": "auto",
    "RemixBundles": false,
    "RemixMines": false,
    "CommunityCenterYear1": false,
    "CabinLayoutNearby": false,
    "UseLegacyRandom": false,
    "RandomSeed": null,
    "PetBreed": 1,
    "PetName": "Apples",
    "MushroomCave": true,
    "BuyJoja": false
  },
  "Server": {
    "MaxPlayers": 10,
    "CabinStrategy": "CabinStack",
    "SeparateWallets": false,
    "ExistingCabinBehavior": "KeepExisting",
    "VerboseLogging": false,
    "AllowIpConnections": false,
    "AllowCabinRelocation": true,
    "EnforceFarmhandOwnership": true,
    "LobbyMode": "Shared",
    "ActiveLobbyLayout": "default",
    "AdminSteamIds": [],
    "NetworkBroadcastPeriod": 1
  }
}

Game Creation Settings

These settings only take effect when creating a new game. They are ignored when loading an existing save.

SettingDescriptionDefault
FarmNameFarm name displayed in-game"Junimo"
FarmTypeFarm map type: a number 0-7 or a name for a built-in farm, or a farm Id string for a mod-added farm (see table below)0
ProfitMarginSell price multiplier1.0
StartingCabinsNumber of cabins created with new game. Ignored when CabinStrategy is "None", which always places min(designated map spots, MaxPlayers) cabins up front1
SpawnMonstersAtNightMonster spawning: "true", "false", or "auto""auto"
RemixBundlesUse remixed or default CC bundles"false"
RemixMinesUse remixed or default mines rewards"false"
CommunityCenterYear1Guarantee the community center is completable in year 1false
CabinLayoutNearbyWhich of the map's two designated cabin layouts to use (nearby vs separate). Selects where None cabins are placed, and the default shared-stack spot under CabinStack. Must stay at the value the game was created with — it is re-read on every load, so changing it on an existing save silently switches which layout every cabin placement resolvesfalse
UseLegacyRandomUse the legacy RNG algorithmsfalse
RandomSeedSeed to use for RNG. "null" for a random seed"null"
PetBreedBreed of pet. [0-4] are cats, [5-9] are dogs. -1 for no pet1
PetNameName of starting pet"Apples"
MushroomCaveMakes the farm cave a mushroom cave. Set to false for fruit bats.true
BuyJojaWhether to buy the Joja membership when available.false

Farm Types

The eight built-in farms can be selected by number or by name (names are case- and space-insensitive, so "FourCorners" and "four corners" both work):

ValueNameFarm Type
0"Standard"Standard
1"Riverland"Riverland
2"Forest"Forest
3"Hilltop"Hilltop
4"Wilderness"Wilderness
5"FourCorners"Four Corners
6"Beach"Beach
7"MeadowlandsFarm"Meadowlands

Either column works and the two are equivalent — e.g. "FarmType": 7 and "FarmType": "MeadowlandsFarm" select the same farm.

Mod-added farms

A farm added by a mod is selected by its Id string (mod farms have no number):

json
"FarmType": "FrontierFarm"

The Id is the Id field of the farm's entry in the mod's Data/AdditionalFarms content (check the mod for the exact value). The mod must be installed on the server for the Id to resolve. An unknown Id — or a number above 7 — falls back to the Standard farm with a warning in the log.

If you have a single farm mod installed and don't want to look up its Id, use the keyword "modded", which selects the first installed mod farm:

json
"FarmType": "modded"

Because mod load order isn't guaranteed, prefer the explicit Id when more than one farm mod is installed. With no farm mod installed, "modded" falls back to Standard with a warning.

Profit Margin

ValueDifficulty
1.0Normal prices
0.7575% prices (harder)
0.550% prices (hard)
0.2525% prices (very hard)

Monster Spawning

  • "true": Monsters spawn at night on all farm types
  • "false": No monster spawning
  • "auto": Only spawn on Wilderness farm type

Server Runtime Settings

These settings apply on every startup and can be changed between runs.

SettingDescriptionDefault
MaxPlayersMaximum concurrent players10
CabinStrategyCabin management strategy"CabinStack"
SeparateWalletsEach player has their own moneyfalse
ExistingCabinBehaviorHow to handle visible cabins"KeepExisting"
VerboseLoggingEnable detailed debug loggingfalse
AllowIpConnectionsAllow direct IP connectionsfalse
AllowCabinRelocationLet players move their cabin with the !cabin chat commandtrue
EnforceFarmhandOwnershipLock each farmhand to the platform account that claimed ittrue
LobbyModeLobby mode for password protection"Shared"
ActiveLobbyLayoutActive lobby layout name"default"
AdminSteamIdsPlatform ids (Steam or GOG) auto-granted admin on join[]
NetworkBroadcastPeriodTicks between farmer/location/world-state delta broadcasts (1=every tick, 3=vanilla)1

AdminSteamIds

Players whose platform id is listed here are granted admin automatically when they join. Despite the name, it accepts both Steam and GOG ids.

A platform id is a player's Steam64 or GOG Galaxy id, which is a long number distinct from their in-game name. Where you find it depends on the platform.

Steam. The best place is the player's Steam profile. Open it in a browser and look at the URL. If it reads steamcommunity.com/profiles/7656..., the 17-digit number after /profiles/ is the Steam64 id. If the profile uses a custom name instead (steamcommunity.com/id/somename), paste that URL into a lookup site such as steamid.io or steamid.xyz and copy the steamID64 it reports.

GOG. Use the server log: have the player connect to the server once (reaching the farmer-selection screen is enough), then look for the Client connected via Galaxy P2P (platform id ...) line — that number is their id. The ids shown on the GOG website (such as galaxyUserId in your account data) are encoded differently from the id the game presents on a connection, so they will not match.

The same Client connected via ... log line also shows a Steam player's Steam64, so the connect log works as a single lookup path for both platforms.

Cabin Strategies

StrategyDescriptionBest For
CabinStackCabins hidden off-map. Each player sees only their own at a shared position.Most servers
FarmhouseStackCabins hidden off-map. All players exit at the main farmhouse's front door (shared entry point).Co-op focused
NoneVanilla behavior. Cabins placed at real farm positions.Traditional multiplayer

Under None, the effective player ceiling is min(designated map spots, MaxPlayers) (7 spots on the Standard farm); all cabins are placed up front at game creation, and raising MaxPlayers afterwards does not add cabins. See Cabin Strategies for details.

Editing CabinStrategy on an existing save applies at the next reload only for pure-hide switches; a switch that would place a cabin on the live farm is rejected at load and must go through the staged cabins migrate console flow instead:

DirectionPath
anything → FarmhouseStackSettings file + reload
NoneCabinStackSettings file + reload
FarmhouseStackCabinStackcabins migrate
CabinStack/FarmhouseStackNonecabins migrate

See Switching Strategies and the cabins migrate command.

Cabin Relocation

With AllowCabinRelocation enabled (the default), players can move their cabin to a real spot on the farm with the !cabin chat command and send it back with !cabin reset, under every strategy. Under a stacked strategy a moved-out cabin becomes a real, visible building with its own working door. Set it to false to reject the command entirely.

Existing Cabin Behavior

Controls what happens to visible cabins already on the farm when using a stacked strategy.

BehaviorDescription
KeepExistingLeave existing cabins at their positions. Only new cabins follow the strategy.
MoveToStackRelocate all visible cabins to the hidden stack on startup.

Wallet Modes

SettingDescription
falseShared wallet: all players share one money pool
trueSeparate wallets: each player has their own money

You can switch this in-game with the !changewallet shared / !changewallet separate admin command. The change applies overnight (the game's own safe point); running the opposite command before then cancels it.

Direct IP Connections

WARNING

Direct IP connections carry no platform identity, so farmhands created over direct IP can't be locked to a specific player — anyone connecting over direct IP can select them. Farmhands claimed via Steam/GOG stay protected either way (see Farmhand Ownership).

Only enable if you need it for specific network configurations.

Farmhand Ownership

With EnforceFarmhandOwnership enabled (the default), the server records which platform account (Steam or GOG) claims each farmhand and from then on shows and admits that farmhand only to the same account. Farmhands created over direct IP remain selectable by any direct-IP player (there is no identity to lock them to), but they are hidden from Steam/GOG players — and platform-owned farmhands are hidden from direct-IP players.

Set it to false only when one person plays the same farmhand from two transports — for example Steam at their desk plus a second device connecting over direct IP. Strict ownership cannot express that dual identity, so such setups disable enforcement; claims keep being recorded while it is off, and re-enabling restores enforcement with an up-to-date ownership map. Be aware the setting is server-wide: while it is false, the server-side ownership lock is off for every farmhand on the server — not just that player's — and only the game's weaker built-in checks remain.

To hand a farmhand to a different account (or unlock one), use the farmhand console command. Ownership records are stored in a small file inside the save folder, so they travel with backups, restores, and Saves-folder migrations to another server.

Network Broadcast Period

Controls how often the server broadcasts farmer, location, and world-state deltas to connected players.

ValueBehavior
1Broadcast every tick. Lowest perceived latency, highest bandwidth (mod default).
2Broadcast every other tick. Roughly 50% bandwidth reduction with one extra tick of latency (~16ms at 60 TPS).
3Vanilla Stardew default. Roughly 66% bandwidth reduction with two extra ticks of latency.

Allowed range is 1 to 60. Out-of-range values are clamped and a warning is logged on startup. Raise this value if connected players report bandwidth saturation; lower it if movement and inventory changes feel laggy.

Password Protection Settings

For lobby mode and layout settings, see Password Protection.

SettingDescription
LobbyMode"Shared" (all in one lobby) or "Individual" (separate lobbies)
ActiveLobbyLayoutName of the lobby layout for new players

Released under the MIT License.