Vintage Story Dedicated Server: .NET Versions, Updates and Whitelist
Vintage Story dedicated server guide: .NET 10 for 1.22, updating by reinstall, the default whitelist, joining with IP:port, and self-hosting on Linux.
A Vintage Story dedicated server is the same VintagestoryServer program that ships with every copy of the game, run by itself with its own data folder instead of as part of a single-player world. It's small (the 1.22.7 Linux server download is about 51 MB) and it runs on Windows or Linux. Anyone can connect to it at any hour, not only while the host is playing. The official wiki suggests budgeting 1 GB of RAM plus 300 MB per player, and 4 CPU threads.
Most problems people hit with a Vintage Story dedicated server come from three things: the .NET version, the whitelist, and updating. This guide covers all three for a GameServerKings server, then gives the self-hosting steps for Linux.
Checked against
Vintage Story 1.22.7 (current stable when we checked, 28 September 2026), the official wiki's dedicated server guide, and the GameServerKings Vintage Story server configuration.
How your GameServerKings server runs Vintage Story
Your server starts the game like this:
./VintagestoryServer --dataPath ./data --port=<your port> --maxclients=<Max Clients> <Start options> That tells you where everything lives. The program files are in the server's root folder. Everything that belongs to your world is under data/:
| Path | What's in it |
|---|---|
data/serverconfig.json |
Server settings: name, password, whitelist mode, roles, world config |
data/Saves/ |
The world file (default.vcdbs unless you've renamed it) |
data/Mods/ |
Server mods, as .zip files |
data/Logs/ |
Server logs, the first place to look when something goes wrong |
data/Backups/ |
The game's own backups. SQLite also uses it for temporary files (see below) |
--port and --maxclients override the values in serverconfig.json. The game's own help text describes both as "overwrites configured value". So change the player limit on the Startup tab, not in the file, and leave the port alone. Our serverconfig.json guide covers every other setting.
The Startup tab, setting by setting
| Setting | Default | What it's for |
|---|---|---|
| Release branch | stable |
stable, unstable (release candidates) or pre (pre-releases) |
| Release version | latest |
latest, or an exact version such as 1.21.7 to stay on an older release. The pre branch always needs an exact version |
| Max Clients | 16 |
Player slots, up to 256 |
| Start options | empty | Extra launch arguments, up to 200 characters |
| Sqlite temporary files directory | /home/container/data/Backups |
Read-only. It gives the /db vacuum command room to work, because the default temporary folder is small and in memory |
| Docker image | – | Which .NET runtime the server runs on: Dotnet 8, Dotnet 9 or Dotnet 10. See the next section |
Release branch and Release version only take effect when the game is installed. Changing them doesn't update a running server. See "Updating" below.
Match the .NET version to the game version
Vintage Story needs a specific .NET runtime, and 1.22 moved to .NET 10:
| Game version | .NET runtime | Pick this Docker image |
|---|---|---|
| 1.22.0 and later | .NET 10 | Dotnet 10 |
| 1.21.x | .NET 8 | Dotnet 8 |
You can confirm this from the server files themselves. 1.22.7's VintagestoryServer.runtimeconfig.json targets net10.0, and the game's own server.sh refuses to start with "I require dotnet 10.0".
New servers can start out on the Dotnet 8 image, which is too old for 1.22. If your server doesn't start, or the console stops right after start-up with a message saying .NET needs to be installed or updated, open Startup, set Docker Image to Dotnet 10, and restart. If it still won't start, contact support with the console output.
Updating to a new Vintage Story version
Your server doesn't update itself. The game files are downloaded when it's installed, so updating means installing again:
- Stop the server and take a backup, so you can go back if the new version or a mod misbehaves.
- Check your mods on the ModDB. Mods built for an older major version often fail to load on a new one.
- On Startup, leave Release version on
latest(or enter the exact version you want). Switch Docker Image to Dotnet 10 if you're moving to 1.22. - In Settings, choose Reinstall Server. The installer replaces the game's
assets/andLib/folders and the program files. It doesn't touchdata/, so your world, config and mods stay where they are. - Start the server and watch the console for
Dedicated Server now running on Port.
Players need the same game version as the server. If someone gets a version-mismatch error, either they or the server is on the wrong release.
First login: get past the whitelist
Since 1.20, dedicated servers enforce the whitelist by default. On a fresh server, not even the owner can get in until they're whitelisted. Use the panel console, which accepts server commands directly:
/whitelist add YourPlayerName Then give yourself admin rights. Our Vintage Story commands guide covers roles and privileges, and how to switch the whitelist off if you want an open server. That isn't recommended: the official guide calls the whitelist "significantly more secure than a password".
How players connect
- In Vintage Story, go to Multiplayer > Add new server.
- Enter any name, then the IP address and port from your panel (for example
203.0.113.10:25612). The official guide says you can usually leave the port off, but that only works on the default port 42420. Your server uses its own port. - Enter the password if you've set one, then click Create and join.
On their first join, players are offered the server's mod list. If they accept, the game downloads every server-side and universal mod into its ModsByServer folder, so nobody installs server mods by hand. The mods guide has the details.
Want the server in the public list? AdvertiseServer defaults to false. Set it to true in serverconfig.json while the server is stopped.
Self-hosting a Vintage Story dedicated server on Linux
The official wiki's Linux method, in short:
- Install the .NET runtime that matches your game version (.NET 10 for 1.22).
- Create a user for the server, then download and unpack the server archive:
wget https://cdn.vintagestory.at/gamefiles/stable/vs_server_linux-x64_1.22.7.tar.gz
mkdir server && tar -C server -xzf vs_server_linux-x64_1.22.7.tar.gz - Edit
USERNAME,VSPATHandDATAPATHat the top of the includedserver.sh, make it executable, and start the server with it. Or run./VintagestoryServer --dataPath /path/to/datadirectly, or as a systemd service. - Open port 42420 for TCP and UDP (UDP is needed from 1.20 on).
On Windows, VintagestoryServer.exe is in the game's install folder already. Start it with --dataPath pointing at an empty folder so it doesn't mix its files with your single-player saves.
Troubleshooting
- The console stops at startup with a .NET error. Wrong Docker image. See the .NET section above.
- "You are not whitelisted". Run
/whitelist add <name>in the panel console. - Friends can't connect but you can. They left the port off the address. Use the full
IP:portfrom the panel. - Your
serverconfig.jsonedit disappeared. You edited it while the server was running and the server saved over it. Stop the server first, or use/serverconfigcommands instead. - Installing a
preversion fails. The pre-release branch needs an exact version number in Release version.
What to Read Next
- Getting started with your Vintage Story server: first boot and world basics
- Vintage Story server settings and world config:
serverconfig.jsonin depth - Vintage Story commands and cheats: admin roles, whitelist and privileges
- How to install mods for Vintage Story: server mods and the ModDB
Made with 💜 by GameServerKings

Need a Vintage Story server?
Deploy an instantly-provisioned Vintage Story server on high-clock hardware — DDoS protected, no contracts, cancel anytime.
From $4.90 /month