Install the server files
The dedicated server is a separate free tool on Steam, app 380870, and it downloads without a Steam login. On a Windows PC it appears under Tools in the Steam library. On a rented or headless machine you fetch it with SteamCMD, and a hosting panel runs the same command during installation.
PZwiki carries one warning worth repeating: do not start the server with the Launch button in Steam. Start it with the script in the server folder, StartServer64.bat on Windows or start-server.sh on Linux. If it was launched through Steam by accident, verify the files before trying again.
On Linux the wiki also advises creating a normal user for the server and not running it as root.
- Install or update: steamcmd +force_install_dir <folder> +login anonymous +app_update 380870 validate +quit
- Build 41 instead: app_update 380870 -beta legacy41 validate
- Windows start script: StartServer64.bat
- Linux start script: start-server.sh, run from the server folder
- A different world on the same install: add -servername YOURNAME to the start command
The two UDP ports and what each is for
PZwiki lists two ports a dedicated server needs open, both UDP.
The first is 16261, set by DefaultPort in the server's ini file. It is the port players type when they add the server in the game, and the settings page describes it as the default starting port for player data. The second is 16262, set by UDPPort, which the wiki labels the direct connection port. Open and forward both.
Each server on the same machine needs its own pair. The wiki's example for a second server is 16274 and 16275, changed in that server's ini file or with the -port and -udpport start parameters.
Older guides tell you to open a TCP port for every player slot, 16262 to 16272 for ten players. That described older versions of the game. The wiki's own multiplayer FAQ notes that the per player TCP ports stopped being needed from version 41.65.
There is also an RCON port, RCONPort, which is 27015 by default. It is only for remote console tools, and you can leave it closed if you do not use one.
- 16261 UDP: DefaultPort, the port players enter in the game
- 16262 UDP: UDPPort, the direct connection port
- 27015: RCONPort, only if you use a remote console tool
- UPnP is on by default in the ini and will try to set up forwarding on a home router that supports it
Java memory: the heap has to fit inside the machine
The server is a Java program, and Java only uses as much memory for the game as its heap setting allows. That setting is -Xmx, the maximum heap, with -Xms beside it as the starting amount.
Where you set it depends on how the server starts. On Windows it is in StartServer64.bat. On Linux the server is launched through the ProjectZomboid64 program, which reads its Java options from the vmArgs list in ProjectZomboid64.json in the server folder, and that is the file to edit. The value is written as -Xmx6g for six gigabytes or -Xmx6144m for the same amount in megabytes.
The number must be smaller than the memory the machine or container really has. PZwiki warns that the Windows start script asks for 16 GB by default and that the server fails to start with memory errors on a machine that cannot provide it. A starting value in -Xms that cannot be allocated stops the server from booting at all. On Linux the failure can come later and look worse: if the heap is allowed to grow past what the machine or its container has, the system's out of memory killer ends the process on the spot. Nothing is saved first, and the log simply stops.
Java also uses memory outside the heap, for its own code, threads and the native libraries the game loads. So do not set -Xmx to the full size of the machine. Leave a clear margin, more on a small server than a large one, and raise the heap only when the console reports it filling.
- Windows: edit -Xms and -Xmx in StartServer64.bat
- Linux: edit the -Xmx entry in vmArgs inside ProjectZomboid64.json
- Keep the heap below the machine's memory, with room for Java's own overhead
- A heap above available memory means a failed start or a killed process, not a slower server
The Zomboid folder: settings, sandbox and saves
Everything that makes your server yours lives outside the install folder, in a folder named Zomboid in the home directory of the user that runs the server. On Windows that is C:\Users\YourName\Zomboid, and on Linux it is ~/Zomboid. The -cachedir start parameter moves it somewhere else, which is what most hosting panels do.
The server name ties the files together. The default name is servertest, so the files are servertest.ini and so on. Start with -servername and every file and the save folder take that name instead, and a new empty world is created beside the old one. Pick the name before the first start.
The files are created with default values the first time the server runs. You can edit them in a text editor with the server stopped, or build them in the game itself under Host, then Manage Settings, which writes the same files. Changes to the ini can also be applied to a running server with the reloadoptions admin command.
- Server/servertest.ini: server settings such as ports, password, player limit, PVP, mods and map
- Server/servertest_SandboxVars.lua: the sandbox rules, such as zombie population, loot and day length
- Server/servertest_spawnregions.lua and servertest_spawnpoints.lua: where new characters can start
- Saves/Multiplayer/servertest: the world itself, everything explored, built and looted
- db: the database of player accounts and access levels, named after the server
First start, the admin account and useful settings
On the first run the console stops and asks you to set a password for the admin account it creates. On a headless server you can pass it with the -adminpassword start parameter instead. When the world has been generated the console prints a message that the server has started.
Join from the game with Join, then Favorites, entering the address, port 16261 and the admin account's name and password. Give other people rights with the setaccesslevel command, which takes a username and one of the levels user, priority, observer, gm, moderator or admin. That is better than sharing the admin login.
A few ini settings are worth deciding early.
- Open: true lets anyone create an account by joining. false means an admin must add each player with adduser
- Password: a join password for the whole server
- MaxPlayers: 32 by default. The settings page warns that counts above 32 can cause poor map streaming and desync
- PauseEmpty: true by default, so game time stops when nobody is online
- Public: false by default. Set it to true to list the server in the in-game browser
- SaveWorldEveryMinutes: 0 by default, which means loaded areas are saved when players leave them and not on a timer
- BackupsOnStart and BackupsOnVersionChange: both true by default, with BackupsCount set to 5
Workshop mods and maps
Mods are listed on two separate lines in servertest.ini, and they take different values.
WorkshopItems is the list of Steam Workshop item numbers, separated by semicolons. This is what makes the server download the files. Mods is the list of mod IDs to load, the ID each mod declares in its own info file. One Workshop item can contain several mods, so the two lists are often not the same length. A mod that is downloaded and not listed under Mods does nothing.
Map mods need a third line. Map holds the map folder names, and the default value is Muldraugh, KY.
The least error prone way to fill these in is the game's own Host, Manage Settings screen, which has a Steam Workshop page and writes the lines for the build you are running. PZwiki's settings page shows where each ID is found if you prefer to do it by hand. Players who join download the server's Workshop mods automatically.
Mods are made for a particular build of the game. Check that each one has a Build 42 version before adding it, and test a new mod list on a copy of the world first.
Updates, Build 42 and wiping the world
The Indie Stone released version 42.20 to the public Stable branch on 29 July 2026. From that date the default download, for the game and for the dedicated server, is Build 42. Version 42.21 followed on Stable on 28 September 2026. Build 41 remains available on a Steam branch called legacy41, and the developer states that Build 41 saves are not compatible with Build 42.
There is still an Unstable branch. The Indie Stone describes the routine now as: an update goes to Unstable first, players test it, and it then moves to Stable. A server and its players have to be on the same branch and version, and since 42.21 the game tells a player when they try to join a server on a different version. For a group that wants a steady world, stay on Stable and update the server with the same SteamCMD command whenever the game updates. Back up the Zomboid folder first.
To wipe the world and keep the accounts, stop the server, back up, and delete the folder named after your server inside Saves/Multiplayer. The account database in db is separate, so players keep their logins and admins keep their rights. Delete the database as well only if you want a completely clean start.
The game also has a soft reset start flag. PZwiki documents that it does not work on the current stable version, so do not plan a wipe around it. Stop the server with the quit command, which saves first, and not by closing the window.