Running your own Project Zomboid server gives you full control over player slots, passwords, PvP, zombie population, loot, mods and the rules of a persistent world. You can install the dedicated server on your own Windows or Linux machine for free, or use a preconfigured game server.
This guide covers the complete manual setup with SteamCMD, network ports, configuration files, Workshop mods, admin permissions, RCON, backups and common troubleshooting steps.
legacy41 branch, but Build 41 saves are not compatible with Build 42.Quick setup: Create a Project Zomboid server in 8 steps
- Choose a PC, VPS or dedicated server with enough memory.
- Install SteamCMD on Windows or Linux.
- Download the Project Zomboid Dedicated Server with App ID
380870. - Launch it once with
StartServer64.batorstart-server.sh. - Set a strong password for the automatically created admin account.
- Allow
16261/UDPand16262/UDPthrough the firewall and router. - Configure
<servername>.iniand<servername>_SandboxVars.lua. - Join using the server IP and port
16261.
Table of contents
- Requirements and hardware
- Self-hosting or renting a server
- Create a Project Zomboid server on Windows
- Create a Project Zomboid server on Linux
- Understanding the configuration files
- Which ports does a Project Zomboid server need?
- Connecting to the server
- Granting admin and moderator permissions
- Installing Steam Workshop mods
- Setting up RCON
- Creating backups and resetting the world
- Troubleshooting
- FAQ: Project Zomboid server questions
- Conclusion
Requirements and hardware
A Project Zomboid dedicated server does not need a powerful graphics card. Memory, CPU performance, fast SSD storage and a reliable network connection are more important. Mods, larger player counts and long-running worlds increase resource usage.
Use the following values as starting points rather than guaranteed requirements:
| Use case | Players | Suggested starting memory |
|---|---|---|
| Small private game | 1–4 | at least 4 GB |
| Group of friends | 5–10 | 6–8 GB |
| Larger or modded server | 10–20 | 8–12 GB |
| Large, heavily modded world | 20+ | 12–16 GB or more |
For a modded server, 8 GB or more is usually a more practical starting point. Java memory is controlled with -Xms and -Xmx. Setting these values above the available physical memory can prevent the server from starting or force it to use slow swap space.
-Xms and -Xmx, such as -Xms8g -Xmx8g. Leave additional memory available for the operating system and other services.A publicly accessible home server also requires:
- stable upload bandwidth
- a public IPv4 address or a working IPv6 setup
- router port forwarding
- local firewall rules
- a computer that remains powered on
Connections using CGNAT or DS-Lite often do not provide a directly reachable public IPv4 address. Standard IPv4 port forwarding will not work in that situation. You will need a public address from your ISP, a suitable VPN or tunnel, or an externally hosted server.
Self-hosting or renting a server
| Option | Advantages | Disadvantages |
|---|---|---|
| Your own PC | no additional hosting fee for testing, full control | computer must stay on, electricity costs and networking work |
| VPS or dedicated server | available around the clock, full system access | you manage the OS, updates, firewall and backups |
| Managed game server | quick setup without maintaining SteamCMD or an OS | monthly cost and less operating-system access |
A home setup works well for testing or a small private group. An external server is generally more reliable when the world should remain online continuously.
Players who do not want to maintain SteamCMD, Linux and firewall rules can instead rent a Project Zomboid server.
Create a Project Zomboid server on Windows
1. Create the folders
Create separate directories for SteamCMD and the server:
C:\steamcmd
C:\pzserver
2. Download SteamCMD
Download SteamCMD through Valve's official documentation and extract steamcmd.exe into:
C:\steamcmd
Run it once so it can download its own updates.
3. Install the dedicated server
Enter the following commands in SteamCMD:
force_install_dir C:\pzserver
login anonymous
app_update 380870 validate
quit
You can also run the complete installation from Command Prompt:
C:\steamcmd\steamcmd.exe +force_install_dir C:\pzserver +login anonymous +app_update 380870 validate +quit
App ID 380870 is the Project Zomboid Dedicated Server. App ID 108600 belongs to the game client and must not be used as the server installation ID.
Build 42.20 is now on the public stable branch, so the standard installation no longer needs -beta unstable.
4. Prepare the launch script
Open:
C:\pzserver
On a current 64-bit system, use:
StartServer64.bat
Make a backup copy before editing it. The script contains the Java memory arguments -Xms and -Xmx. An 8 GB example is:
-Xms8g -Xmx8g
Add a clear internal server name after %1 %2 in the game arguments:
%1 %2 -servername dshzomboid
The value dshzomboid determines which settings and world files the server loads. Use a simple name without spaces and keep it consistent.
-servername does not control the public name displayed in the browser. Use PublicName= in the INI file for that.5. Run the server for the first time
Launch the edited StartServer64.bat. On the first run, the server prompts you to create a password for the default admin account. Use a long, unique password.
The server also supports startup arguments such as:
%1 %2 -servername dshzomboid -adminpassword "REPLACE_WITH_A_LONG_PASSWORD"
This stores the password in plain text in the batch file, so the interactive prompt is usually safer. Remove -adminpassword after the initial setup if you use it.
Allow the first launch to finish creating the configuration, database and world. Shut down cleanly from the console:
save
quit
6. Configure Windows Firewall
Open PowerShell as Administrator:
New-NetFirewallRule -DisplayName "Project Zomboid 16261 UDP" -Direction Inbound -Protocol UDP -LocalPort 16261 -Action Allow
New-NetFirewallRule -DisplayName "Project Zomboid 16262 UDP" -Direction Inbound -Protocol UDP -LocalPort 16262 -Action Allow
Only add an RCON rule if you use RCON:
New-NetFirewallRule -DisplayName "Project Zomboid RCON 27015 TCP" -Direction Inbound -Protocol TCP -LocalPort 27015 -Action Allow
7. Forward the router ports
For a home server, forward these ports to the server computer's local IPv4 address:
16261/UDP
16262/UDP
Assign the server computer a static DHCP lease so its local address does not change.
Create a Project Zomboid server on Linux
The following steps target current Debian and Ubuntu systems. Package repositories can differ between releases.
1. Create a dedicated user
Do not run the game server as root:
sudo adduser --disabled-password --gecos "" pz
sudo mkdir -p /opt/pzserver
sudo chown pz:pz /opt/pzserver
2. Install SteamCMD
Ubuntu commonly provides SteamCMD through the multiverse repository. Debian may require an additional repository such as non-free.
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install steamcmd
If the package cannot be found, check the repositories for your distribution before using an old third-party installation script.
3. Download the server
Switch to the server account:
sudo -iu pz
Install the files:
steamcmd \
+force_install_dir /opt/pzserver \
+login anonymous \
+app_update 380870 validate \
+quit
If steamcmd is not in the shell path:
/usr/games/steamcmd \
+force_install_dir /opt/pzserver \
+login anonymous \
+app_update 380870 validate \
+quit
4. Check the Java memory settings
Locate -Xms and -Xmx in the supplied script:
grep -nE 'Xms|Xmx' /opt/pzserver/start-server.sh
Edit the script only if the current allocation does not suit the machine:
nano /opt/pzserver/start-server.sh
An example for a machine with at least 10 GB of physical memory:
-Xms8g
-Xmx8g
Keep enough memory free for Linux and other processes.
5. Complete the first launch manually
The first run should be interactive so you can set the admin password:
cd /opt/pzserver
./start-server.sh -servername dshzomboid
After initialization, shut it down cleanly:
save
quit
The generated configuration is stored under:
/home/pz/Zomboid/Server/
6. Configure systemd
Project Zomboid needs time to save before its Java process exits. A simple hard stop can damage world data. The following setup uses a FIFO control file to send save and quit.
Create /etc/systemd/system/zomboid.service:
[Unit]
Description=Project Zomboid Dedicated Server
After=network-online.target
Wants=network-online.target
[Service]
PrivateTmp=true
Type=simple
User=pz
Group=pz
WorkingDirectory=/opt/pzserver
ExecStart=/bin/sh -c "exec /opt/pzserver/start-server.sh -servername dshzomboid </opt/pzserver/zomboid.control"
ExecStop=/bin/sh -c "echo save > /opt/pzserver/zomboid.control; sleep 15; echo quit > /opt/pzserver/zomboid.control"
Sockets=zomboid.socket
KillSignal=SIGCONT
Restart=on-failure
RestartSec=15
[Install]
WantedBy=multi-user.target
Create /etc/systemd/system/zomboid.socket:
[Unit]
BindsTo=zomboid.service
[Socket]
ListenFIFO=/opt/pzserver/zomboid.control
FileDescriptorName=control
RemoveOnStop=true
SocketMode=0660
SocketUser=pz
SocketGroup=pz
Reload systemd and start the socket:
sudo systemctl daemon-reload
sudo systemctl enable --now zomboid.socket
sudo systemctl status zomboid
Follow the logs:
sudo journalctl -u zomboid -f
Send a console command:
echo "save" | sudo tee /opt/pzserver/zomboid.control
save and quit.7. Open the Linux firewall
With UFW:
sudo ufw allow 16261/udp
sudo ufw allow 16262/udp
sudo ufw reload
Allow RCON only from a trusted management address:
sudo ufw allow from 203.0.113.10 to any port 27015 proto tcp
Replace the example address with your actual management IP.
Understanding the configuration files
The configuration is not stored in the SteamCMD installation directory. It is located in the Zomboid/Server directory of the user account that runs the server.
For the internal server name dshzomboid, the important paths are:
Windows
C:\Users\<User>\Zomboid\Server\dshzomboid.ini
C:\Users\<User>\Zomboid\Server\dshzomboid_SandboxVars.lua
C:\Users\<User>\Zomboid\Server\dshzomboid_spawnregions.lua
Linux
/home/pz/Zomboid/Server/dshzomboid.ini
/home/pz/Zomboid/Server/dshzomboid_SandboxVars.lua
/home/pz/Zomboid/Server/dshzomboid_spawnregions.lua
Without -servername, the default name is servertest.
Important INI settings
DefaultPort=16261
UDPPort=16262
MaxPlayers=16
PVP=true
PauseEmpty=true
Public=true
PublicName=My Project Zomboid Server
PublicDescription=Private survival world for friends
Open=true
Password=
Mods=
WorkshopItems=
RCONPort=27015
RCONPassword=
| Setting | Purpose |
|---|---|
DefaultPort | main connection port |
UDPPort | second required UDP port |
MaxPlayers | maximum concurrent players |
PVP | enables or disables player damage |
PauseEmpty | pauses the world when nobody is online |
Public | lists the server publicly |
PublicName | name shown in the browser |
PublicDescription | public server description |
Open | allows new accounts without a prebuilt whitelist |
Password | optional server password |
Mods | internal mod IDs separated by semicolons |
WorkshopItems | numeric Steam Workshop IDs |
RCONPort | TCP port for remote administration |
RCONPassword | separate RCON password |
Back up the file before editing it. Some INI options can be reloaded with:
reloadoptions
Mods, sandbox rules and world-related changes normally require a full restart. Some sandbox changes only affect newly generated areas or require a new world.
SandboxVars.lua
<servername>_SandboxVars.lua controls gameplay rules, including:
- zombie population and respawn
- loot rarity
- XP multiplier
- day length
- water and electricity shutoff
- vehicle condition
- infection rules and zombie behavior
A Lua syntax error can prevent the settings from loading. Change only values you understand and keep a backup.
Which ports does a Project Zomboid server need?
| Port | Protocol | Purpose | Required |
|---|---|---|---|
| 16261 | UDP | primary server connection | Yes |
| 16262 | UDP | second/direct connection port | Yes |
| 27015 | TCP | RCON remote administration | Only when RCON is enabled |
A current server instance normally requires two UDP ports. Older guides that list additional Steam ports or one port for every player may no longer match current versions.
The port numbers must match in:
<servername>.ini- the local firewall
- the router when hosting at home
- any external firewall provided by a host
A port test is meaningful only while the server is fully running. Many web-based port checkers test TCP only and may incorrectly report a working UDP port as closed.
16261 and 16262 use UDP. TCP-only firewall rules will not work for player connections.Connecting to the server
- Launch Project Zomboid.
- Select Join.
- Open Favorites.
- Enter the server IP address.
- Use port
16261unless you changed it. - Choose the username and password for your player account.
- Save the entry and connect.
Examples:
Public server: 203.0.113.50:16261
Local network: 192.168.1.50:16261
Same computer: 127.0.0.1:16261
If the server uses Password=, enter that separate server password as well. The player-account password and server password serve different purposes.
The client and server must run the same major build. A Build 41 client cannot join a Build 42 world.
Granting admin and moderator permissions
The default admin account is created during the first server launch. Its password is separate from RCONPassword= and the optional Password= used to join the server.
Enter admin commands directly in the server console. Add a slash when entering them in-game:
/setaccesslevel "PlayerName" "admin"
Moderator example:
/setaccesslevel "PlayerName" "moderator"
Available access levels:
| Access level | General role |
|---|---|
admin | full administration |
moderator | broad moderation tools |
overseer | management and observation functions |
gm | game-master functions |
observer | limited observation tools |
none | removes the special access level |
Useful console commands:
players
save
showoptions
reloadoptions
help
In-game:
/players
/save
/showoptions
/help
Grant only the level a team member actually needs.
Recovering from a lost admin password
If you cannot access the existing admin account, temporarily create another one with startup arguments:
-adminusername RecoveryAdmin -adminpassword "REPLACE_WITH_A_NEW_LONG_PASSWORD"
Start the server once, sign in using the recovery account and then remove the password arguments from the launch script.
Installing Steam Workshop mods
A Project Zomboid server requires two different identifiers for Workshop mods:
WorkshopItems=
Mods=
WorkshopItems=contains numeric Workshop IDs.Mods=contains internal mod IDs from each mod'smod.info.- A Workshop ID is not the same as a mod ID.
Example:
WorkshopItems=1234567890;9876543210
Mods=RequiredLibrary;ExampleMod
A Workshop URL may look like:
https://steamcommunity.com/sharedfiles/filedetails/?id=1234567890
Its Workshop ID is:
1234567890
The internal mod ID appears in the author's documentation or mod.info:
id=ExampleMod
Installation process
- Stop the server cleanly with
saveandquit. - Back up
Zomboid/Server,Zomboid/SavesandZomboid/db. - Check that every mod supports Build 42.
- Review dependencies.
- Add Workshop IDs to
WorkshopItems=. - Add internal IDs to
Mods=. - Separate IDs with semicolons.
- Place libraries in the order required by the author.
- Start the server and inspect the logs.
- Connect only after the Workshop download has completed.
Common causes of a failed mod load include swapped identifiers, missing libraries, the wrong order, incompatible builds, an incomplete Workshop download or a server that was not fully restarted.
Setting up RCON
RCON lets an external client send administration commands. Configure it in <servername>.ini:
RCONPort=27015
RCONPassword=REPLACE_WITH_A_LONG_UNIQUE_PASSWORD
RCON uses TCP port 27015 by default. It is separate from the two UDP game ports.
Use a different password for RCON, the admin account and the server join password. Store the RCON password in a password manager.
Creating backups and resetting the world
The important data is stored below the server user's personal Zomboid directory.
Windows
C:\Users\<User>\Zomboid\Server\
C:\Users\<User>\Zomboid\Saves\Multiplayer\
C:\Users\<User>\Zomboid\db\
Linux
/home/pz/Zomboid/Server/
/home/pz/Zomboid/Saves/Multiplayer/
/home/pz/Zomboid/db/
Back up at least:
<servername>.iniand the matching Lua filesSaves/Multiplayer/<servername>/- the matching database and user data under
db/ - custom scripts and systemd units
- a list of all Workshop and mod IDs
Safe manual backup
- Notify connected players.
- Run
save. - Stop the server with
quit. - Confirm the process has exited.
- Copy the three data areas to another storage location.
- Label the backup with its date and server name.
- Test a restore periodically.
A backup stored only on the same SSD does not protect against disk failure, accidental deletion or a compromised system.
Resetting the world
Project Zomboid has no monthly force-wipe cycle. A world remains persistent until you reset it manually or a major incompatible update requires a new save.
For a clean reset:
- Stop the server.
- Create a complete backup.
- Remove only the world and database data matching the selected
<servername>. - Keep the configuration files if you want to reuse the rules.
- Start the server and let it generate a new world.
Zomboid directory when it contains other worlds or server configurations.Build 41 saves are not compatible with Build 42. Continuing an old world requires both clients and server to remain on legacy41.
Troubleshooting
| Problem | Likely cause | Fix |
|---|---|---|
| Server is missing from the browser | Public=false, startup incomplete or UDP ports blocked | set Public=true, review logs and check both UDP rules |
| Connection fails | wrong IP or port, missing forwarding or CGNAT | verify the address, 16261/UDP, 16262/UDP and public IP availability |
| Works on LAN but not online | router or ISP blocks inbound traffic | check forwarding, the local server address and connection type |
| Mods do not load | Workshop ID and mod ID were mixed up | verify WorkshopItems= and Mods= separately |
| Client reports a mod mismatch | different client and server mod versions | update the server download and refresh client mods |
| Server crashes at startup | -Xms/-Xmx too high, insufficient RAM or incompatible mod | lower memory allocation, inspect logs and disable mods for testing |
| Excessive memory usage | large world, many entities, players or mods | audit mods, allocate more RAM or reduce unnecessary content |
| Admin password is lost | no access to the default admin | create a temporary account with -adminusername and -adminpassword |
| Settings do not apply | wrong <servername>, wrong user path or restart missing | verify launch arguments and the active Zomboid/Server path |
| Sandbox change has no effect | restart or newly generated area required | restart and test in new world areas |
| World fails after an update | incompatible build or mods | restore a backup and verify build and mod compatibility |
| RCON cannot connect | wrong password, blocked TCP port or missing restart | check RCONPort, RCONPassword, firewall and restart |
Reading logs
With the systemd setup:
sudo journalctl -u zomboid -f
Project Zomboid also writes logs below the server user's Zomboid directory. Search for lines containing:
ERROR
Exception
Workshop
Mod
RCON
FAQ: Project Zomboid server questions
How much RAM does a Project Zomboid server need? A small Project Zomboid server needs at least about 4 GB of RAM, while 8 GB or more is a better starting point for additional players or mods.
Which ports does a Project Zomboid server need? A current Project Zomboid server uses 16261/UDP and 16262/UDP by default, with optional RCON on 27015/TCP.
Can I host a Project Zomboid server on my own PC? Yes, you can host it on your own PC when it has enough memory, a stable connection, correct firewall rules and working port forwarding.
How do I become an admin on a Project Zomboid server? The default admin is created during the first launch, and additional players can receive admin access with /setaccesslevel "PlayerName" "admin".
How do I install mods on a Project Zomboid server? Add numeric Workshop IDs to WorkshopItems=, internal mod IDs to Mods= and restart the server after saving the configuration.
Why is my Project Zomboid server not showing up? The most common causes are blocked UDP ports, Public=false, an incomplete startup or mismatched game builds.
Where are the Project Zomboid server configuration files? They are stored in %USERPROFILE%\Zomboid\Server\ on Windows and ~/Zomboid/Server/ on Linux.
Conclusion
A Project Zomboid dedicated server can be installed on Windows or Linux through SteamCMD with App ID 380870. A successful setup depends primarily on the two UDP ports, a consistent internal server name, the correct configuration path and a realistic Java memory allocation.
For Workshop mods, keep WorkshopItems= and Mods= separate, and back up the world, configuration and database before updates or major changes. Players who prefer not to maintain an operating system, SteamCMD and firewall rules can instead rent a Project Zomboid server.
Related guides: