How to set up a Project Zomboid server from scratch
Full setup walkthrough for a Project Zomboid dedicated server (Build 41 or Build 42): deploy via SteamCMD, configure servertest.ini, edit sandbox vars in servertest_SandboxVars.lua, add map regions via servertest_spawnregions.lua, install Workshop mods and map add-ons (Raven Creek, Bedford Falls, Grapeseed, North Muldraugh), set up admin accounts and whitelist, and fix the common PZ errors.
- What you need first
- Build 41 vs Build 42
- Deploy the server (1-click)
- File layout & where things go
- Core
servertest.inisettings - Sandbox vars โ gameplay tuning
- Spawn regions & map add-ons
- Installing Workshop mods
- Admin accounts & whitelist
- RCON & in-game admin
- Connect and test
- Common errors and fixes
What you need first
- An active Project Zomboid plan on Fatality Servers. See our Project Zomboid hosting plans.
- A Steam copy of Project Zomboid for each player.
- Enough RAM โ PZ's server is Java-based and single-threaded on the critical path. 6-8 GB for 4-8 players on vanilla Knox County; 12-16 GB for 20+ players on a mod-heavy server with extended map mods.
- A basic SFTP client (FileZilla, WinSCP). PZ uses plain
.iniand Lua files.
Sizing note: PZ's main server thread is single-threaded, so raw CPU clock matters more than core count. A high-clock Ryzen core handles 20+ players on vanilla comfortably; heavy map mods (Raven Creek + Bedford Falls + Grapeseed) can double RAM needs since each map region loads actively-visited chunks into memory.
Build 41 vs Build 42
Two active PZ branches:
- Build 41 โ the stable branch. What 95% of servers run. Mod ecosystem is enormous and battle-tested.
- Build 42 โ the unstable/experimental branch. Major engine changes: animals, basement support, new crafting system, new lighting. Breaks many Build 41 mods; a smaller but growing pool of B42-compatible mods is emerging.
Our template asks which branch you want on first deploy. Swap anytime from the panel's Beta dropdown (triggers a SteamCMD re-download). Changing branches wipes your save โ export backups first.
Mods are branch-specific. A Build 41 mod will almost never load cleanly on Build 42 and vice-versa. Before subscribing, check the Workshop page's tags โ most authors label B41-only, B42-only, or "both". Mixed mod lists = crashes.
Deploy the server (1-click)
Our PZ template runs SteamCMD to pull the dedicated server (Steam App ID 380870), generates default servertest.* config files, and opens UDP 16261 (game) + UDP 16262 (steam) on your plan's IP.
-
Pick the PZ template at checkout
On the Project Zomboid hosting page, pick a plan. Starter fits 4-8 players on vanilla; Community 16-32 players with standard mods; Flagship for heavy multi-map modded runs.
-
Pick build (41 / 42)
Template asks. Pick one.
-
Wait for SteamCMD
Server binary is ~3 GB. First install takes 3-5 minutes.
-
Confirm the server is listening
[zomboid] loading RakNet from libRakNet64.so [zomboid] Server Steam ID 90123456789012345 [zomboid] setting breakpad minidump AppID = 108600 [zomboid] SERVER STARTED [zomboid] Type 'help' for list of server commands [zomboid] Listening to connections on port 16261
File layout & where things go
/
โโโ ProjectZomboid64 (Linux) or StartServer64.bat (Windows)
โโโ projectzomboid.log โ main server log
โโโ ~/Zomboid/ โ config + save files (NOT the server root!)
โโโ Server/
โ โโโ servertest.ini โ main config
โ โโโ servertest_SandboxVars.lua โ gameplay tuning
โ โโโ servertest_spawnregions.lua โ map add-on regions
โ โโโ servertest_spawnpoints.lua โ spawn coord overrides
โโโ db/
โ โโโ servertest.db โ player database (SQLite)
โโโ Saves/Multiplayer/
โ โโโ servertest/ โ the actual world save
โ โโโ map_*.bin
โโโ Logs/ โ log archive
โโโ mods/ โ manually-installed mods (rare; usually Workshop)
Configs live in ~/Zomboid/Server/, not in the server install folder. This trips up first-time admins constantly. The default server name is servertest, so all config files are prefixed with servertest_. If you rename the server in servertest.ini, the config FILES stay named servertest_* โ it's the in-game display name that changes.
Core servertest.ini settings
Edit ~/Zomboid/Server/servertest.ini. Plain key=value pairs:
# --- Server identity ---
PublicName=My PZ Server [EU] - Mild Mods
PublicDescription=Low-pop community vanilla-plus. 2x XP, 3-day sleep.
MaxPlayers=32
Open=true
Public=true
PauseEmpty=true
AutoCreateUserInWhiteList=false
# --- Passwords ---
Password=
AdminPassword=change-me-strong
ServerPlayerID=
# --- Spawn / map ---
Map=Muldraugh, KY
SpawnPoint=0,0,0
SpawnItems=
StartYear=1
StartMonth=7
StartDay=9
StartTime=2
# --- PVP / safety ---
PVP=true
SafetySystem=true
ShowSafety=true
SafetyToggleTimer=2
SafetyCooldownTimer=3
AllowCoop=true
PlayerSafehouse=true
AdminSafehouse=false
SafehouseAllowTrepass=true
SafehouseAllowFire=true
SafehouseAllowLoot=true
SafehouseAllowRespawn=false
SafehouseDaySurvivedToClaim=0
SafeHouseRemovalTime=144
SafehouseAllowNonResidential=false
# --- Network ---
DefaultPort=16261
UDPPort=16262
SteamPort1=8766
SteamPort2=8767
SteamVAC=true
ServerBrowserAnnouncedIP=
# --- RCON ---
RCONPort=27015
RCONPassword=change-me-rcon
DiscordEnable=false
DiscordToken=
DiscordChannel=
DiscordChannelID=
# --- Mods (comma-separated Workshop IDs + mod folder names) ---
WorkshopItems=2659216714;2392709985;2478247379
Mods=ModManager;BuildingMenu;MoreBuild
# --- Map extension (map mods) ---
Map=Muldraugh, KY
# --- Logging / admin ---
ServerWelcomeMessage=<RGB:1,0.8,0> Welcome to My PZ Server! Rules in MOTD.
LoginQueueEnabled=false
LoginQueueConnectTimeout=60
# --- Gameplay quickies ---
AllowNonAsciiUsername=false
BanKickGlobalSound=true
ServerShutdownGraceTimer=10
AllowDestructionBySledgehammer=true
ServerSurvivorsXpMultiplier=1.0
UPnP=false
VoiceEnable=true
VoiceMinDistance=10.0
VoiceMaxDistance=100.0
Voice3D=true
GlobalChat=true
Values most people tweak:
PublicNameโ server browser name. 50 chars.MaxPlayersโ slot count. Match your plan.Open=false+ aPasswordโ private server.Public=trueโ list on PZ server browser.false= invite-only.PauseEmpty=trueโ pause the sim when everyone is offline. Saves massive CPU on small plans; means no zombies wander or plants die overnight.PVP=falseโ safer default for community servers; safety toggle still prevents accidental kills.WorkshopItems/Modsโ mod configuration (see Mods section).
Sandbox vars โ gameplay tuning
The juicy stuff lives in ~/Zomboid/Server/servertest_SandboxVars.lua. This is a full Lua table of gameplay parameters โ hundreds of them. Highlights:
SandboxVars = {
VERSION = 5,
Zombies = 3, -- 1=Insane 2=HighPop 3=Normal 4=Low 5=None
Distribution = 1, -- 1=Urban (vanilla) 2=Roaming
DayLength = 3, -- 1=15min 2=30min 3=1hr 4=2hr 5=3hr 6=4hr 7=5hr
StartYear = 1, StartMonth = 7, StartDay = 9, StartTime = 2,
WaterShut = 2, ElecShut = 2, -- 1=Instant ... 6=VeryLong, shutoff timing
WaterShutModifier = 14,
ElecShutModifier = 14,
FoodLoot = 2, WeaponLoot = 2, OtherLoot = 2, -- 1=ExtremelyRare 6=Abundant
Temperature = 3, Rain = 3, -- weather severity
ErosionSpeed = 3,
ErosionDays = -1, -- -1 = unlimited erosion
XpMultiplier = 1.0,
ZombieAttractionMultiplier = 1.0,
VehicleEasyUse = false,
Farming = 3,
CompostTime = 2,
StatsDecrease = 3, -- hunger/thirst/boredom rate
NatureAbundance = 3,
Alarm = 4, LockedHouses = 6,
StarterKit = false,
Nutrition = true,
FoodRotSpeed = 3,
FridgeFactor = 3,
LootRespawn = 1, -- 1=None 2=Every Day 3=Week 4=Two Weeks 5=Month
SeenHoursPreventLootRespawn = 0,
TimeSinceApo = 1, -- days since outbreak
PlantResilience = 3,
PlantAbundance = 3,
EndRegen = 3,
Helicopter = 2, -- 1=Never 2=Sometimes 3=Often
MetaEvent = 2, SleepingEvent = 1,
GeneratorSpawning = 3, GeneratorFuelConsumption = 1.0,
ZombieLore = {
Speed = 2, -- 1=Fast 2=Fast Shamblers 3=Shamblers
Strength = 2,
Toughness = 2,
Transmission = 1, -- 1=Blood+Saliva 2=Saliva 3=None
Mortality = 5, -- time to zombify
Reanimate = 3,
Cognition = 3, -- 1=Smart 2=Navigates 3=Basic
CrawlUnderVehicle = 3,
Memory = 3,
Decomp = 1,
Sight = 2, Hearing = 2, Smell = 2,
ThumpNoChasing = 1,
ThumpOnConstruction = true,
ActiveOnly = 1, -- 1=Both 2=Night 3=Day
TriggerHouseAlarm = true,
ZombiesDragDown = true,
ZombiesFenceLunge = true,
},
...
}
Most-tweaked values:
Zombiesโ population multiplier. 3 (Normal) is vanilla; drop to 4 (Low) for community-friendly runs.DayLengthโ time scale. 1 hour per day (3) is standard; 2 hour / 3 hour common for long-session groups.XpMultiplierโ 1.0 vanilla, 2.0-3.0 is "boosted but not silly".LootRespawnโ 1 (none) for hardcore, 3 (weekly) for community.WaterShut/ElecShutโ how many in-game days before utilities cut. Combine with the Modifier values for exact day counts.ZombieLore.Speedโ 1 = full sprint (Romero would cry), 2 = fast shamblers (vanilla), 3 = classic shamblers (casual).
Use in-game host to prototype, then copy out. Host a Host game from your own client, tweak sandbox vars in the GUI until it feels right, then copy the resulting SandboxVars.lua from your local save directory up to the server. Much faster than editing the Lua by hand and guessing values.
Spawn regions & map add-ons
Map mods (Raven Creek, Bedford Falls, Grapeseed, Petroville, North Muldraugh) each add new map regions, but players can only spawn in a region if it's listed in servertest_spawnregions.lua:
function SpawnRegions()
return {
{ name = "Muldraugh, KY", file = "media/maps/Muldraugh, KY/spawnpoints.lua" },
{ name = "West Point, KY", file = "media/maps/West Point, KY/spawnpoints.lua" },
{ name = "Rosewood, KY", file = "media/maps/Rosewood, KY/spawnpoints.lua" },
{ name = "Riverside, KY", file = "media/maps/Riverside, KY/spawnpoints.lua" },
{ name = "Raven Creek", file = "media/maps/Raven Creek/spawnpoints.lua" },
{ name = "Bedford Falls", file = "media/maps/BedfordFalls/spawnpoints.lua" },
}
end
Each mod's Workshop description tells you the exact entries to add here. Save, restart, map mod's regions show up on the character-creation screen.
Multi-map compositing
Multiple map mods can co-exist if their map tiles don't overlap. Compatibility is a known community spreadsheet โ search "PZ map merge sheet" for a current version. Popular compatible combo for 2026:
Muldraugh + West Point + Rosewood + Riverside + March Ridge (vanilla Knox County)
+ Raven Creek (isolated coastal city, no overlap)
+ Bedford Falls (north of vanilla, minor overlap)
+ Grapeseed (south, tight integration with Muldraugh)
Installing Workshop mods
PZ mods come from the Steam Workshop. SteamCMD downloads them automatically when listed in servertest.ini.
-
Find the Workshop ID and Mod ID
On the Workshop page:
- Workshop ID โ from the URL:
?id=2392709985. - Mod ID โ the internal folder name, shown in the Workshop page's description (usually). If not, subscribe โ open
~/Zomboid/mods/after launching once.
- Workshop ID โ from the URL:
-
Add both to
servertest.iniWorkshopItems=2659216714;2392709985;2478247379 Mods=ModManager;BuildingMenu;MoreBuildThe lists must be in the same order and the same length. Separator is
;not,. -
Add map regions (if mod is a map)
Edit
servertest_spawnregions.luaas shown above. -
Restart
On boot, SteamCMD downloads any missing Workshop items. First boot with new mods takes 30-180 seconds extra.
Popular must-have mods
- ModManager + ModManager: Server โ lets players see the server's required mod list
- Simple Overhaul: Traits & Occupations (SOTO) โ adds dozens of new trait choices
- Brita's Weapon Pack + Brita's Armor Pack โ hundreds of new guns / armor
- Building Menu + More Build โ extensive base-building additions
- Autotsar Trailers + Filibuster Rhymes' Used Cars โ vastly more vehicles
- True Actions Dancing โ emotes + dancing
- Raven Creek / Bedford Falls / Grapeseed โ map expansion
Admin accounts & whitelist
PZ has its own user database (SQLite). Admin accounts are created via the server console or RCON.
Create the initial admin
On first boot, the console prompts you for an admin username + password โ those become the first admin account. If you missed the prompt, run in console:
adduser <username> <password>
setaccesslevel <username> admin
Access levels: none, observer, gm, overseer, moderator, admin. Admins have full control; moderators can kick/ban but not spawn items.
Whitelist
Set Open=false in servertest.ini, then add players via console:
adduser <username> <password>
Alternatively set AutoCreateUserInWhiteList=true to let first-come players auto-register their own accounts, then turn it off once your community is seeded.
RCON & in-game admin
PZ supports standard Source RCON. Set in servertest.ini:
RCONPort=27015
RCONPassword=change-me-rcon
Connect with any RCON client (mcrcon, rcon-cli). Common commands:
players - List online players
kick <user> - Boot a player
ban <user> - Ban by username
banid <steamid> - Ban by Steam64
save - Force a world save
quit - Graceful shutdown (saves)
servermsg "text" - Broadcast
additem <user> "Base.Axe" - Give an item
addxp <user> <skill> <amount>
teleport <user1> <user2> - TP user1 to user2
thunder <on|off> - Force storm
changeoption SafehouseAllowFire false - Change .ini option live
In-game, admins press Esc โ Admin Panel for the GUI version of most of this.
Connect and test
-
Launch Project Zomboid
From main menu: Join Server.
-
Add your server
Bottom left: Add to Favorites. Fill in:
Server name: My PZ Server (display only) IP: YOUR-SERVER-IP Port: 16261 Account: (your PZ account username) Password: (the password you set with adduser) -
Or browse via Internet tab
With
Public=true, your server appears in the Internet tab 2-5 minutes after boot. Filter by name. -
Smoke-test as admin
Log in โ Esc โ Admin Panel โ try "Teleport", "Give Item", "Toggle God Mode".
Common errors and fixes
"Your mods are not compatible with the server"
Client has mods the server doesn't, or different versions. Fixes:
- Workshop unsubscribe-resubscribe on the mismatching mod
- Make sure the server's
WorkshopItemsandModslists match in ORDER - Cross-branch mods (B41 mod on B42 server) won't work โ branch-match strictly
Server doesn't show in browser
Public=falseโ flip totrue- Firewall blocking UDP on 16261/16262/8766/8767 โ check panel firewall
- Wait 2-5 minutes โ PZ's master list indexing is slow
- Try direct-connect (Favorites tab) first to rule out the server being down
"Failed to connect to server"
- Wrong port โ double-check
DefaultPortinservertest.inimatches what you're entering - SteamVAC issue โ server needs all four ports open (16261, 16262, 8766, 8767)
- Server's
ServerPlayerIDgot reset โ delete it fromservertest.ini, restart, PZ will regenerate
Mods stuck in "downloading from Workshop"
SteamCMD is rate-limited or the Workshop item is huge.
- Wait โ a 2 GB Workshop item on a cold cache takes 5-10 minutes
- Check console for
RequestWorkshopItemerrors - Our panel has a "Clear Workshop Cache" button if a download gets stuck partway
Server crashes with "OutOfMemoryError"
- Increase JVM heap via the panel's Memory slider โ default is 8 GB; many modded servers want 12+
- Edit the startup script to pass
-Xmx12g(our panel exposes this as a setting) - Too many map mods loaded at once โ PZ loads every active cell's entities into RAM; trim the mod count or map add-ons
Client save desync / can't see objects placed by others
Known PZ multiplayer issue โ client and server diverge on object state. Have the affected player:
- Log out and log back in
- If persists: delete local map cache (
%username%/Zomboid/Multiplayer/<server-ip>_<port>/) and rejoin
World save corrupted
Rollback from the panel's backup tab. All managed PZ plans ship with 3x daily auto-snapshots of ~/Zomboid/Saves/ + 30-day retention. If the latest snapshot is also bad, open a ticket and we'll try to repair individual map cells.
Player lag in high-density zombie areas
- Lower
Zombiessandbox var from 3 to 4 (Low) - Set
ZombieLore.ActiveOnly=3(active at night only) to halve world-sim load - Raw single-thread CPU limit โ upgrade plan to a higher-clock tier
Heli events / meta events never trigger
- Sandbox var
Helicopter=1(Never) orMetaEvent=1(Never) โ bump to 2 or 3 - Server uptime matters โ helis only spawn after X in-game days; if you wipe nightly they may never trigger
Stuck on something specific? Email support with your server IP, the last 200 lines of projectzomboid.log, and your servertest.ini โ we'll usually have an answer within the hour.