Vintage Story Server Configuration: serverconfig.json
Checked on 14 October 2026 against a default serverconfig.json written by the Vintage Story 1.22.7 server.
A Vintage Story dedicated server keeps nearly all of its settings in one JSON file, serverconfig.json. This page covers where it is, how it is laid out, the real defaults of the settings people change most, and the one rule behind most "my settings don't apply" questions: world settings are copied into the save when the world is created, and after that they are changed with /worldconfig, not in this file.
Where serverconfig.json lives
- Dedicated server: in its data folder, the one given with
--dataPath. Without that option it is the normalVintagestoryDatafolder:%APPDATA%\VintagestoryDataon Windows,~/.config/VintagestoryDataon Linux. - Created on first start: if the file is missing, the server writes one with default values.
--genconfigwrites a fresh default file and exits, and deletes the existing one. - Shared with single player: the file's own first line warns that it is also loaded when you start a single player world from the same data folder, which is why the developers recommend running a dedicated server from its own folder.
- On Supercraft: it is in the Config section of the file manager.
How the file is laid out
Three parts matter:
- Top-level keys are server settings: name, port, password, player limit, whitelist mode and so on.
WorldConfigdescribes the world:Seed,SaveFileLocation(which save file to load),WorldName,PlayStyle,WorldTypeandWorldConfiguration, the gameplay rules such as death punishment and temporal storms.Roleslists the nine stock player roles and their privileges, fromsuvisitortoadmin.
{
"ServerName": "Vintage Story Server",
"Port": 42420,
"MaxClients": 16,
...
"WorldConfig": {
"Seed": null,
"SaveFileLocation": ".../Saves/default.vcdbs",
"WorldName": "A new world",
"PlayStyle": "surviveandbuild",
"WorldType": "standard",
"WorldConfiguration": { "deathPunishment": "keep" }
},
...
}
World keys only work inside WorldConfig. The server ignores a SaveFileLocation or WorldConfiguration placed at the top level, and drops it the next time it rewrites the file.
Server settings people change most
| Setting | Default | What it does |
|---|---|---|
ServerName | "Vintage Story Server" | Name shown to players. |
ServerDescription | empty | Description for the public server list. |
WelcomeMessage | "Welcome {0}, may you survive well and prosper" | Message on join; {0} is the player name. |
Port | 42420 | TCP and UDP port. |
Ip | empty | Address to bind to; empty means all. |
MaxClients | 16 | Player limit. |
Password | empty | Join password. |
AdvertiseServer | false | List the server on the public master server. |
WhitelistMode | Default | On a dedicated server the default means only whitelisted players can join. |
DefaultRoleCode | "suplayer" | Role given to new players. |
AllowPvP | true | Player versus player damage. |
PassTimeWhenEmpty | false | If true, the calendar keeps running with nobody online. Left false, the world clock pauses when the last player leaves, which freezes crops, food spoilage and mechanical power such as windmills. |
MaxChunkRadius | 12 | How many chunks around each player the server sends. |
SpawnCapPlayerScaling | 0.5 | How much creature spawn caps grow with each extra player. |
ServerLanguage | "en" | Language for server messages. |
StartupCommands | empty | Console commands to run at every start, one per line. |
ModIdBlackList, ModIdWhiteList | empty | Mods players may not use, or the only client mods they may use. |
AntiAbuse | 0 (Off) | Anti-cheat level. |
LogBlockBreakPlace | false | Write every placed and removed block to server-build.log. |
CorruptionProtection | true | Keeps a write-ahead log on the save database so a bad shutdown is far less likely to damage it. |
DieBelowDiskSpaceMb | 400 | Stop the server when free disk space drops below this. |
DieAboveMemoryUsageMb | 50000 | Stop the server when it uses more memory than this. |
World settings
PlayStyle picks the preset: surviveandbuild (standard survival), exploration, wildernesssurvival, homosapiens or creativebuilding. WorldType is standard unless you want a superflat creative world. Inside WorldConfiguration go the gameplay rules; a few of the most asked, with their defaults:
| Key | Default | Values |
|---|---|---|
deathPunishment | drop | drop, keep |
droppedItemsTimer | 600 | Seconds before dropped items despawn. |
spawnRadius | 50 | How far from spawn new players start, in blocks. |
graceTimer | 0 | Days before hostile creatures spawn. |
playerlives | -1 | Lives per player; -1 is unlimited. |
creatureHostility | aggressive | aggressive, passive, off |
temporalStorms | sometimes | off to veryoften |
daysPerMonth | 9 | 3 to 30. |
worldWidth, worldLength | 1024000 | World size in blocks. |
allowLandClaiming | true | Whether players can claim land. |
These are only read when the world is created; each preset also sets its own values on top of these defaults. After that the world keeps them in its save. To change one on an existing world, use /worldconfig <key> <value>; the server answers Ok, value ... set. Restart game world or server to apply changes. The worldconfig command reference lists the keys.
Changing settings while the server runs
/serverconfig reads and changes server settings from the console or in game, for example /serverconfig password, nopassword, name, maxclients, maxchunkradius, passtimewhenempty, advertise, allowpvp, whitelistmode, antiabuse, modwhitelist and modblacklist. The server saves those changes into serverconfig.json itself. The autosave interval, 300 seconds by default, is changed the same way with /serverconfig autosaveintervall <seconds>, spelled with two Ls.
Launch options
--dataPath: the data folder, and with it the location ofserverconfig.json.--port,--ip,--maxclients: override those settings for this run.--withconfig="{ key: value }": merges values into the config and starts the server.--setconfig="{ key: value }": sets values, writes the file and exits.--genconfig: writes a fresh default file and exits, deleting the old one.
Frequently Asked Questions
Where is serverconfig.json?
In the server's data folder: the folder given with --dataPath, otherwise VintagestoryData (%APPDATA%\VintagestoryData on Windows, ~/.config/VintagestoryData on Linux). The server creates it with default values on its first start. On Supercraft it is in the Config section of the file manager.
How do I set a password for my Vintage Story server?
Run /serverconfig password <password> in the server console, or stop the server and set "Password" in serverconfig.json. /serverconfig nopassword removes it.
How do I set a custom world seed?
Set "Seed" inside the WorldConfig block before the world is created. An existing world keeps the seed it was made with, so a new seed means a new world: point SaveFileLocation at a new file name and start the server.
Why aren't my configuration changes applying?
Usually one of four reasons. You edited the file while the server was running, and the server wrote its own copy back over it. You changed a world setting after the world was created; those live in the save from then on and need /worldconfig. You put a world key at the top level of the file instead of inside WorldConfig, where the server ignores it and drops it when it rewrites the file. Or it is a mod setting, which lives in that mod's file in ModConfig.
Do I need to restart the server after changing settings?
After editing the file, yes: the server reads it when it starts. Many /serverconfig changes apply while it runs. A /worldconfig change answers "Restart game world or server to apply changes", so restart after those.
An open report on the developers' issue tracker, issue 7676 from 1.21.6, describes server settings "reverting". The first reply from a project collaborator asks whether the config was changed before or after the world was launched, which is the difference described above.
Troubleshooting
The server stops right after a config edit
Look for Failed to read serverconfig.json. Did you modify it? See server-main.log for the affected line. Will stop the server. The file is not valid JSON; the error just above it in server-main.log gives the line and position. A missing comma or quote is the usual cause.
A value is accepted but nothing changes
Check that world keys sit inside WorldConfig, and that the world was not already created; on an existing world use /worldconfig. If the server rewrote the file after your edit, your change was made while it was running: stop it, edit, start.
Performance settings
MaxChunkRadius(12): fewer chunks per player means less memory and traffic.SpawnCapPlayerScaling(0.5): lower it if many players online fill the world with creatures.RandomBlockTicksPerChunk(16),BlockTickChunkRange(5) andBlockTickInterval(300): how much random block updating, such as crop growth, the server does around players.TickTime(33.333 ms, about 30 ticks a second): leave it alone.
Looking for managed Vintage Story server hosting? Supercraft runs Vintage Story dedicated servers with daily backups, instant setup, and 4 region options.
Build it the easy way: our free Vintage Story World Configuration Generator turns presets plus a simple form into a ready-to-paste WorldConfiguration for serverconfig.json, plus the matching live /worldconfig commands. Paste an existing config to see how it differs from a preset.