How to Set Up a Vintage Story Dedicated Server
A dedicated Vintage Story server can stay online without anyone sitting in the client. Here is the first-time order that gets you from an empty machine to a loaded world friends can join: separate the data path, point the server at the right save, set whitelist and access, then open the port path.
This is a separate server program, not a single-player world left open in the background. It can stay online without your game client being logged in.
A separate data folder keeps server saves, mods and serverconfig.json away from your single-player files. That is the easiest way to avoid loading the wrong save.
Create the world in single-player if you want full customise options, then copy the .vcdbs file into the server’s Saves folder. Either rename it to default.vcdbs or set SaveFileLocation to that file.
Dedicated servers use whitelist by default, and private servers usually leave public advertising off. Add names, set a password if you want one, open the port path, then hand out the public IP.
Dedicated server or just open your single-player world?
Vintage Story includes a proper dedicated server program. That matters because it runs as its own process, so the world can stay online even when the host is not standing in-game with the client open. If your goal is a world friends can join regularly, this is the cleaner route.
The short-term alternative is to open a single-player world and use Open to Lan for the same network, or Open to Internet for people outside the house. The official note on that internet option is that UPnP works instantly only about 60% of the time. It is fine for an ad-hoc session, but the world must remain open in your client the whole time. If that is all you need, use this play Vintage Story with friends guide; this page is for the always-on dedicated route.
Rent or self-host: a panel still cannot skip the important bits
A rented panel saves you the operating-system work: downloading the server, starting and stopping it, and usually basic file access. It does not choose the correct game version for your group, load the right world for you, bypass whitelist, decide on password or advertising, or tell your friends which IP and port they should enter. Those are the same jobs either way.
Self-hosting gives you direct control over files and firewall rules, which is useful if you want to understand exactly what the server is loading. A rented panel is easier if you want less machine admin, but the setup order stays the same. There is also an ARM64 build, though the official notes still mark ARM64 as experimental.
Keep this flow in mind before you touch any buttons:
VintagestoryServer.exe / the Linux server package with its own --dataPath..vcdbs file into the server Saves folder.A managed panel can save time on installation and restarts, but you will still need to pick the right world, set access rules and confirm the version matches your players. If self-hosting feels like extra work for no gain, compare the options first.
Compare the best Vintage Story server hostsSelf-host on Windows: start by separating server data from player data
On Windows, the normal game install folder in %AppData%\Vintagestory contains both Vintagestory.exe and VintagestoryServer.exe. Download the Recommended Download from your game account downloads page unless you specifically need an older version. If you host on the same PC you play on, do not let the server use the same data area as your single-player game.
A separate –dataPath does not make the server faster by itself; its job is file separation. It gives the dedicated server its own saves, mods and serverconfig.json, which prevents the classic first-time mistake of editing one set of files while the server is reading another.
- Create a dedicated server data folder.
- Make a shortcut to VintagestoryServer.exe, or a small batch file.
- Append your data path to the launch command.
- Run it once so the server creates its folders, then close it before editing config.
- Add a Windows Firewall inbound Program rule for VintagestoryServer.exe. If you also play on the same machine, allow Vintagestory.exe too.
"C:\Users\YourUsername\AppData\Roaming\Vintagestory\VintagestoryServer.exe" --dataPath="C:\Users\YourUsername\AppData\Roaming\VintagestoryServer\VSserverData"
When the console shows a line along the lines of Dedicated Server now running on Port 42420 and all ips!, the process is listening and is ready for join tests. If the console window opens and closes immediately, another Vintage Story instance may already be running, so close that first and try again.
Self-host on Linux: use the server package and match the .NET runtime
Linux uses the separate server-only tar.gz archive. Extract it under a dedicated non-root user, make server.sh executable, and set the script’s username, install path and data path values before starting. Do not run the server as root; there is no upside for gameplay, only extra risk if files or permissions go wrong.
The helper script exists so you can start, stop, check status and send commands to the running server without attaching to it directly. If you prefer a plain launch command, this is the simple form:
dotnet VintagestoryServer.dll --dataPath /home/vintagestory/data
- .NET 10 for Vintage Story 1.22.0 and later
- .NET 8 for Vintage Story 1.21.x
- .NET 7 for versions before 1.21
That runtime match matters because the server binary will not start cleanly on the wrong major runtime. If you update later, remove the old installation files first; keep the data folder, because that is where your saves, settings and player data live.
How much hardware does the dedicated server need?
The official estimate for a normal survival world is simple: 1 GB base RAM plus 300 MB per player, with 4 threads recommended, and 1 GHz base CPU frequency plus 100 MHz per player. That formula is mainly about memory for loaded world and player state, and CPU time for world simulation as more people spread out and keep more areas active.
For the CPU side, the same formula works out to 1.4 GHz for 4 players, 1.8 GHz for 8, and 2.6 GHz for 16. A larger map also keeps more terrain and player changes on disk and in memory, so if the world is meant to last, check this Vintage Story map size guide before you choose a plan.
Create or load the world before you invite anyone
The server only opens one save file at startup. If that save file is missing or not the one you expected, you will join the wrong world and think the server ignored your settings. That is why the safest first-time method is to create the world in single-player first, using the full customise options, then copy that save into the dedicated server.
- Create the world in single-player if you want specific world settings or a particular playstyle.
- Stop the dedicated server completely.
- Copy the .vcdbs save file into the server data path’s Saves folder.
- Either rename that file to default.vcdbs, or point WorldConfig.SaveFileLocation at it.
- Start the server again and join to confirm it loaded the intended world.
{
"WorldConfig": {
"SaveFileLocation": "./data/Saves/ExampleWorld.vcdbs",
"WorldName": "ExampleWorld",
"PlayStyle": "surviveandbuild"
}
}
If you leave the default filename in place, the server’s default world path is fine. If you keep your own filename, update SaveFileLocation so the server opens that exact file. This is the main fix for “I copied my world over, but the server made a new blank one instead”. For panel-specific upload steps, use this guide to uploading an existing world. For deeper world and config options, use the Vintage Story server settings guide.
Protect access before you share the IP
Do this part before you give anyone the address. It is easier to test a private server once, with known settings, than to debug joins while the server is still changing under people’s feet.
- Leave public advertising off unless you want the public list. Since version 1.20, AdvertiseServer is false by default. That keeps the server out of Browse public servers, which is usually what you want for a friends-only world.
- Add yourself and friends to the whitelist. Dedicated servers use whitelist by default, so a brand-new server will refuse everyone until their exact game account names are added. This protects the world, but the trade-off is a little manual admin up front.
- Optional: set a password. A password is a second gate on top of the whitelist. It costs no extra server resources, but players can mistype it, and it cannot contain spaces.
- Optional: set the default role to suvisitor. That lets new arrivals look around and chat but not place, break or use things. It is cautious, but you will need to promote trusted players afterwards.
- Make yourself admin. You join as a normal suplayer until you grant yourself operator rights, so admin commands will fail until then.
/whitelist add ExampleUser /player ExampleFriend whitelist on /op ExampleUser /serverconfig password examplepass /serverconfig advertise false
If you cannot use the live console, put “StartupCommands”: “/op ExampleUser” in serverconfig.json and restart. After using commands you want to keep, run /autosavenow, then /stop and relaunch. Friends join from Multiplayer by adding a name and your public IP; they only need :port if you changed from 42420. If your connection does not have a static IP, that public address can change later.
Ports, firewall rules and the public IP: the whole path has to be open
Vintage Story’s default server port is 42420. For a dedicated server, think in terms of a full network path: the server process must listen on the port, the machine firewall must allow it, and the router must pass outside traffic to that machine. One missing piece is enough to make WAN joins fail.
| Port | Players need it | Needed from the internet | Required from version 1.20 |
|---|---|---|---|
| TCP 42420 | Yes | Yes | Yes |
| UDP 42420 | Yes | Yes | Yes |
| A non-default port you chose instead | Yes | Yes | Partly |
- TCP 42420 must be open.
- From version 1.20 onwards, open UDP 42420 as well.
- On Windows, allow the server program through Windows Firewall.
- On Linux, allow the same port and protocols through your firewall.
- Forward the same port and protocols on the router to the server machine if friends are joining from outside your home.
The Ip setting is a listen address, not your public IP. Leaving it as null means the server listens on all interfaces, which is the usual correct choice. There is also a UPnP setting and command, but Upnp defaults to false, so do not assume the router will configure itself unless you explicitly turn that on and confirm it worked.
First-join troubleshooting: fix the first refusal in the right order
Most first-join failures come from only a handful of causes. Work from the server process outward: is it running, is it loading the right world, is access allowed, and can outside traffic reach it?
| Symptom | Likely cause | First fix |
|---|---|---|
| Cannot connect at all | The server is not fully started, the public IP is wrong, the port path is blocked, or the server is listening on the wrong interface. | Wait for the “now running on Port 42420” line, confirm the public IP, leave Ip as null, and check both TCP and UDP port rules. |
| Whitelist kick or refusal | Dedicated whitelist is on by default and the exact account name was not added. | Add the player by exact game account name, then have them retry without changing anything else. |
| The wrong world loads | The copied save is not in the server data path’s Saves folder, or SaveFileLocation still points at another file. | Stop the server, put the correct .vcdbs file in Saves, rename it to default.vcdbs or point SaveFileLocation to it, then restart. |
| The console closes immediately | Another Vintage Story instance is already running, or the launch method exits before you can read the error. | Close any other instance and launch again from a terminal or command prompt so you can see the output. |
| Friends on LAN can join but WAN friends cannot | The local machine is reachable, but the router is not forwarding internet traffic correctly, or only one protocol is open. | Forward 42420 on the router for both TCP and UDP, and keep the local firewall rule in place. |
| Version or mod mismatch | The server version differs from the client version, or the mod list changed. | Match the game version exactly and let joiners accept the server mod download prompt for server-side and universal mods. |
| Admin commands are denied | You never granted yourself operator rights and are still joining as suplayer. | Run /op on your account name from the server console or through StartupCommands, then rejoin if needed. |
If you hit something stranger, use the full Vintage Story server troubleshooting guide. For mod behaviour and where auto-downloaded files go, use the Vintage Story mods guide. Players are prompted to download server-side and universal mods automatically; client-side extras still need manual handling.
First-launch checklist
If you follow this table in order, you avoid the usual wrong turns: mixed data folders, missing whitelist entries, the wrong save file and ports that were never actually reachable from outside.
| Step | Why it matters | What “done” looks like |
|---|---|---|
| Install or rent the dedicated server on the same game version as the players | Clients and server must match before joins and mod checks make sense. | The server starts cleanly and your group is on the same version. |
| Set a separate data path | Prevents saves, mods and config from mixing with single-player data. | The server has its own folders for Saves, Mods and serverconfig.json. |
| Place the world file and confirm SaveFileLocation | The server only loads the save file it is told to open at startup. | Your intended .vcdbs file is in the server Saves folder and the path points to it. |
| Add yourself and friends to whitelist | Dedicated servers refuse joins by default until names are allowed. | Each exact game account name has been added before first join attempts. |
| Choose password and public listing settings | This decides who can find the server and whether there is a shared secret on entry. | AdvertiseServer is set how you want it, and the password is either set or deliberately blank. |
| Open 42420 through firewall and router | Outside players need the full network path, not just a running server process. | TCP is open, and on 1.20 onwards UDP is open too. |
| Grant yourself admin | You join as suplayer otherwise, so admin commands fail. | Your account has operator rights and server commands work. |
| Wait for the ready console line | Testing too early looks like a network problem when the server is simply not listening yet. | The console reports the dedicated server is running on port 42420. |
| Share the public IP only after the above checks | That keeps first joins focused on one clean test instead of several moving parts. | Friends have the public IP, plus :port only if you changed the default. |
Vintage Story server FAQ
What port does a Vintage Story dedicated server use?
The default dedicated server port is 42420. Open TCP on that port, and from version 1.20 onwards open UDP on the same port as well. Players normally do not need to type the port after the IP unless you changed it from the default.
Why can’t my friends join my new Vintage Story server?
The usual causes are whitelist, wrong public IP, missing router or firewall rules, or a version mismatch. On a new dedicated server, whitelist is the first thing to check, because the server will refuse everyone until their exact account names are added.
How do I load a custom world on a Vintage Story dedicated server?
Stop the server, copy the .vcdbs world file into the server data path’s Saves folder, then either rename it to default.vcdbs or set WorldConfig.SaveFileLocation to that file. Start the server again and confirm you joined the expected world, not a fresh default one.
Do I need to whitelist players on a Vintage Story dedicated server?
Yes, for a new dedicated server that is the normal expectation, because dedicated whitelist is on by default. Add your own account name as well as your friends’ names before you test joins, or the server can refuse even the owner.
How much RAM does a Vintage Story dedicated server need?
The official estimate is 1 GB base RAM plus 300 MB per player. That works out to 2.2 GB for 4 players, 3.4 GB for 8, and 5.8 GB for 16. The same guidance also recommends 4 threads and a CPU baseline of 1 GHz plus 100 MHz per player.
More Vintage Story server guides
Compare hosts, tune serverconfig.json, move a save or fix a join problem.
Game updates and host panels change names, defaults and layouts over time; where a panel differs, follow your host’s current controls, but keep the same order: separate data path, correct world file, access rules, ports, then admin.
