Since 29 July 2026, Build 42 (with multiplayer) is Project Zomboid's stable version, and SteamCMD installs it with nothing special. It needs more memory than 41: 8 GB is tight; for a group with mods, 10 to 12 GB is better.
1. Download it
# Windows
C:\steamcmd\steamcmd.exe +force_install_dir C:\zomboid +login anonymous +app_update 380870 validate +quit
# Linux (as the steam user)
~/steamcmd/steamcmd.sh +force_install_dir ~/zomboid +login anonymous +app_update 380870 validate +quit
2. First start
# Windows
C:\zomboid\StartServer64.bat
# Linux
~/zomboid/start-server.sh
The first time, the console asks for a password for the admin user. Write it down: you will log in as administrator with that user and password. When it finishes starting, stop it with quit to configure it.
3. Memory
It is set with the -Xmx value:
- Windows: inside
StartServer64.bat. - Linux: in
ProjectZomboid64.json, in thevmArgslist.
For example, -Xmx10g on a 12 GB VPS. Always leave headroom for the system.
4. Settings
They are stored in the Zomboid/Server folder of the user running it (on Windows, C:\Users\Administrator\Zomboid\Server\; on Linux, ~/Zomboid/Server/):
servertest.ini: general settings.PublicName(name),Public=true(appear in the list),Password,MaxPlayers,PVP...servertest_SandboxVars.lua: the world rules (zombies, loot, days...).
Workshop mods: in servertest.ini, WorkshopItems= holds the Workshop numbers and Mods= each mod's identifier (the "Mod ID" on its page), all separated by semicolons with no spaces. If a mod does not load on Build 42, try a backslash in front of its ID in Mods=: some 42 versions required it.
5. Ports
Project Zomboid uses 16261 and 16262 on UDP:
# Windows (PowerShell as administrator)
New-NetFirewallRule -DisplayName "Zomboid UDP 16261-16262" -Direction Inbound -Protocol UDP -LocalPort 16261-16262 -Action Allow -Profile Any
# Linux
ufw allow 16261:16262/udp
6. Joining
In the game, Join: your VPS's IP, port 16261, and a username and password. Each player creates their account the first time they join (if the server is open); you log in as admin with the first-start password. To give someone else permissions: /setaccesslevel Name admin.