Skip to content

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.

Updated September 28, 2026
Vintage Story

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>
text

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:

  1. Stop the server and take a backup, so you can go back if the new version or a mod misbehaves.
  2. Check your mods on the ModDB. Mods built for an older major version often fail to load on a new one.
  3. 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.
  4. In Settings, choose Reinstall Server. The installer replaces the game's assets/ and Lib/ folders and the program files. It doesn't touch data/, so your world, config and mods stay where they are.
  5. 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
text

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

  1. In Vintage Story, go to Multiplayer > Add new server.
  2. 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.
  3. 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:

  1. Install the .NET runtime that matches your game version (.NET 10 for 1.22).
  2. 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
bash
  1. Edit USERNAME, VSPATH and DATAPATH at the top of the included server.sh, make it executable, and start the server with it. Or run ./VintagestoryServer --dataPath /path/to/data directly, or as a systemd service.
  2. 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:port from the panel.
  • Your serverconfig.json edit disappeared. You edited it while the server was running and the server saved over it. Stop the server first, or use /serverconfig commands instead.
  • Installing a pre version fails. The pre-release branch needs an exact version number in Release version.

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