Project Zomboid

PlatformSupportNotes
Linux✅ NativeFull support with Java
Windows✅ NativeFull support

Project Zomboid

Project Zomboid is a sandbox zombie survival game with cooperative multiplayer. This guide covers complete server setup, configuration, mod support, and administration on Linux.

  • RAM: 4GB minimum, 6GB+ recommended
  • vCPU: 2+ cores (scales with player count and mods)
  • Disk Space: 10GB+ (game ~2GB, saves and mods vary)
  • Network: Stable connection, ~4-8 Mbps for 16 players

RAM usage scales significantly with player count and active mods. Start with 6GB for 8-16 players, add 1-2GB per 8 additional players.

02

Prerequisites

  • Linux server (Ubuntu 20.04+ recommended)
  • SSH access
  • Steam account (free)
  • Linux command-line experience
03

Step 1: Install System Dependencies

bash
sudo apt update
sudo apt upgrade -y
sudo apt install -y lib32gcc-s1 lib32stdc++6 curl wget unzip default-jre-headless

Java Runtime Environment is optional but helpful for some admin tools.

04

Step 2: Create Game User

bash
sudo useradd -m -s /bin/bash pzserver
sudo passwd pzserver

Switch to the new user:

bash
su - pzserver
05

Step 3: Install SteamCMD

bash
mkdir -p ~/steamcmd
cd ~/steamcmd
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -xzf steamcmd_linux.tar.gz
./steamcmd.sh +quit
06

Step 4: Install Project Zomboid Server

Use SteamCMD to download the server (AppID 380870):

bash
cd ~/steamcmd
./steamcmd.sh +force_install_dir ~/pz-server +login anonymous \
  +app_update 380870 validate +quit

Installation takes 10-20 minutes depending on disk speed.

Verify:

bash
ls -la ~/pz-server/

You should see ProjectZomboid64.sh and supporting files.

07

Step 5: Generate Initial Configuration

Run the server once to generate config directories:

bash
cd ~/pz-server
./ProjectZomboid64.sh

Wait 30-60 seconds, then press Ctrl+C to stop. This creates:

  • ~/.cache/ProjectZomboid/ (config directory)
  • Server properties and world folders
08

Step 6: Configure Server Properties

Locate and edit the server configuration:

bash
cd ~/.cache/ProjectZomboid/Zomboid/Server
ls -la

Create servertest.ini

This is the main server configuration file:

bash
cat > ~/.cache/ProjectZomboid/Zomboid/Server/servertest.ini << 'EOF'
[TCPIP]
host=0.0.0.0
port=16261

[Server]
PauseEmpty=true
PauseEmptyOnStart=true
Public=true
PublicName=My Project Zomboid Server
PublicDescription=Survival server
Password=
MaxPlayers=16
Mods=
WorkshopItems=
DoLuaChecksum=true
LogFile=../Logs/console.log
SaveWorldEveryMinutes=60
AutorebootTime=0
GoogleAnalytics=false
PingFrequency=10.0
ItemRemovalTime=8
NpcRemovalTime=72
PlayerSafehouse=true
AdminSafehouse=false
ConstructionPreventionRadius=0
SafeHouse2=true
FactionDamageSelf=true
FactionDamageOtherGang=true
FactionDamageNPC=true
Difficulty=4
ZombieAttractionMultiplier=1.0
PlayerBonusXpMultiplier=1.0
ZombieSkill=1
ZombieMemory=2
ZombieLore=0
ZombiePopulation=0.8
ZombieMaxCount=500
ZombieSpawnerType=0
ZombieRespawn=0
ZombieRespawnHours=72
AllowNonAdminPVP=true
AllowNonAdminMiscItem=true
AllowNonAdminDeleteObject=true
AllowNonAdminWaterShut=true
AllowNonAdminElecShut=true
AllowNonAdminFillWater=true
AllowNonAdminActivateSafehouse=true
AllowNonAdminMechanics=true
AntiCheatProtectionType=1
AnticheatKickFPS=false
BanKnownCheatsAccount=false
BanKnownCheatsCD=false
UserOnlyListenServer=false
EnableMapModsequivalence=true
RestrictRollingCodewords=true
SafetyGlobeUpperLimit=0
MaxItemOnGround=500
ChatStreams=general default faction safehouse admin
ChatStreamFilter=false
DiscordEnable=false
DiscordToken=
DiscordChannelId=
DiscordChannelName=
WorldVersion=2
DeleteUnusedStorage=true
LogItemSpawn=false
LogAnimalSpawn=false
LogVehicleSpawn=false
LogChunkSpawn=false
LogFps=false
LogMemory=false
LogObjectStatisticsFile=false
LogNetworkTraffic=false
LogInput=false
LogGPU=false
LogPreloadedItems=false
LogLagometer=false
RconPort=27015
RconPassword=
RconFilePath=
RconBindIp=0.0.0.0
RconThreads=4
RconSleepMS=10
BlockJoinUntilLoaded=false
SetupPassword=
SpawnMode=0
SpawnPoint=0,0
SafetySeason=0
SafetyYear=1
GenerateMultipleSpawns=true
StartMonth=7
StartDay=9
StartYear=1
StartHour=8
KnownCauseOfDeathFmodBlacklist=
NoFire=false
NoClaimMicromanagement=true
NoBaseDefense=false
NoSafehousesAllowed=false
AllowExtraSenses=true
AllowTradeUI=true
AllowRadio=true
AllowHelicopters=true
AllowSearchMode=true
AllowLootBags=true
AllowVehicles=true
AllowSign=true
AllowFire=true
AllowBoarding=true
AllowLongModNames=false
AllowFactionPVP=true
AllowFactionVehicle=true
AllowMultipleSpawns=true
AllowMovingStash=true
AllowWaterShutOff=true
AllowElecShutOff=true
AllowFillWater=true
AllowActivateSafehouse=true
AllowMechanics=true
AllowResetLua=true
AllowDebugMode=false
AllowInjuryEmote=false
AllowPlayerSafeHouse=true
AllowMapModifications=true
AllowDestructionBySneaking=true
AllowDestructionByOtherPlayers=true
AllowDestructionByFaction=true
AllowPlaceMultipleItemsPerInventorySlot=true
AllowPoliceStationLoot=true
AllowRadioStations=true
AllowRadioChannels=true
AllowSearchModeTag=true
Faction=true
NoFire=false
NoPvp=false
NoClaimMicromanagement=true
NoBaseDefense=false
NoSafehousesAllowed=false
NoWorldAge=false
NoFog=false
NoAnimals=false
OnlyKnownRecipes=false
OnlyKnownSeeds=false
OnlyKnownCompost=false
StartWithSomeMP=true
OneManSlateOfGod=false
SleepAllowed=true
SleepNeeded=true
AllowPlayerVoice=true
AllowTableTalk=true
AllowGlobalModFallback=true
AllowCopVoice=true
AllowRestrainedAttack=true
AllowFactionAttackNonMembers=false
AllowFactionAttackMembers=false
AdminEnableDebugMode=false
AdminTeleport=true
AdminGodMode=true
AdminInvisible=true
AllowAdminPVP=true
AllowAdminWaterShut=true
AllowAdminElecShut=true
AllowAdminFillWater=true
AllowAdminActivateSafehouse=true
AllowAdminMechanics=true
AllowAdminDebugMode=true
AllowAdminResetLua=true
AllowAdminInjuryEmote=false
RestrictDroppingItems=false
RestrictUsingVehicles=false
RestrictRepairing=false
RestrictGatheringSeeds=false
RestrictComposting=false
RestrictFishing=false
RestrictAxes=false
RestrictShovels=false
RestrictChopTrees=false
RestrictDigGraves=false
RestrictRemovingFloor=false
RestrictRemovingWalls=false
RestrictRemovingDoors=false
RestrictRemovingFences=false
RestrictRemovingBars=false
RestrictRemovingWallsOrFloors=false
RestrictStartFires=false
RestrictLightingFires=false
RestrictPuttingOutFires=false
RestrictFirewoodChoppy=false
RestrictPBags=false
RestrictTrapping=false
RestrictMechanics=false
RestrictUsingItems=false
RestrictLootPiles=false
PVPServer=false
VoiceEnable=true
VoiceBufferSize=2000
VoiceMaxDistance=100
VoiceMaxDistanceMult=0.1
VoiceMaxDistanceChat=10
VoiceChatDistance=10
CustomSpawns=false
ErosionDays=0
StartingItems=Base.Axe;Base.WoodenPlank;Base.ModernClothes
AlwaysShowDamagePlayer=false
AlwaysShowDamageNPC=false
AlwaysShowDamageObject=false
AlwaysShowDamageVehicle=false
AuthorizedReadWriteChars=;.,_-+='?!()[]{}*&%^$

[Map]
Map=Muldraugh, KY

[Discord]
DiscordEnable=false
DiscordToken=
DiscordChannelId=
DiscordChannelName=
EOF

Key Configuration Options

  • PublicName: Server name visible in browser
  • Public: Set to true for public listing, false for private
  • Password: Leave empty for public, set password for private
  • MaxPlayers: Number of player slots (8-32 typical)
  • Mods: Comma-separated mod names (format: ModName;ModName2)
  • Map: Starting map location
  • Difficulty: 1-4 (higher = harder)
  • PVPServer: Enable/disable PvP
  • Password: Server password (blank = open)
  • RconPort: Remote console port (27015 recommended)
  • RconPassword: Admin password for RCON
09

Step 7: Create Systemd Service

Exit to root and create service:

bash
exit  # Exit pzserver user
sudo tee /etc/systemd/system/pzserver.service > /dev/null << 'EOF'
[Unit]
Description=Project Zomboid Dedicated Server
After=network.target
Wants=network-online.target

[Service]
Type=simple
User=pzserver
WorkingDirectory=/home/pzserver/pz-server
ExecStart=/home/pzserver/pz-server/ProjectZomboid64.sh -server
Restart=on-failure
RestartSec=10
StandardOutput=journal
StandardError=journal
Environment="HOME=/home/pzserver"

# Resource limits
MemoryLimit=8G
CPUQuota=300%

[Install]
WantedBy=multi-user.target
EOF

Enable and start:

bash
sudo systemctl daemon-reload
sudo systemctl enable pzserver
sudo systemctl start pzserver

Check status:

bash
sudo systemctl status pzserver
sudo journalctl -u pzserver -f  # Follow logs
10

Step 8: Open Firewall Ports

Project Zomboid uses two UDP ports:

bash
sudo ufw allow 16261/udp comment "Project Zomboid Game"
sudo ufw allow 16262/udp comment "Project Zomboid Secondary"
sudo ufw allow 27015/tcp comment "Project Zomboid RCON"

Or with iptables:

bash
sudo iptables -A INPUT -p udp --dport 16261 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 16262 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 27015 -j ACCEPT
11

Step 9: Add and Configure Mods

Steam Workshop Integration

Enable Workshop mods by adding to servertest.ini:

ini
WorkshopItems=123456789;987654321

Replace with actual Workshop item IDs. Find IDs on steamcommunity.com.

Manual Mod Installation

Download mods (.zip files) and place in mods directory:

bash
mkdir -p ~/.cache/ProjectZomboid/Zomboid/mods
cd ~/.cache/ProjectZomboid/Zomboid/mods
unzip /path/to/mod.zip

Verify structure (should have mod.info file):

bash
ls -la ~/.cache/ProjectZomboid/Zomboid/mods/YourModName/

Add Mod to Server Config

Edit servertest.ini:

ini
Mods=YourModName;AnotherMod;WorkshopMod

Popular Mods

Server and client mods must match exactly. Ensure all connected players have identical mods installed. Test mods on a test server before production deployment.

Disable mods by removing them from the Mods= line and restarting.

  • ORGM (Over-Engineered Roleplay Game Mode) - Advanced RP features
  • Faction Tools - Improved faction management
  • Better Sorting - Inventory improvements
  • Map Extensions - Additional map areas
  • Expanded Helicopters - More helicopter types
12

Step 10: Server Administration

Admin Password Setup

Edit servertest.ini:

ini
SetupPassword=your_setup_password
RconPassword=your_rcon_password

Create Admin Account (In-Game)

Admin Commands

Use in-game console (press `):

/help # List all commands /ban [player_name] # Ban player /unban [player_name] # Unban player /kick [player_name] [reason] # Kick player /mute [player_name] # Mute player chat /teleportto [player_name] # Teleport to player /teleport [x] [y] [z] # Teleport to coordinates /serverinfo # Show server info /setadmin [player_name] # Make player admin /removeadmin [player_name] # Remove admin from player /adduser [username] # Add whitelisted user /removeuser [username] # Remove from whitelist /save # Force save world /startrain # Start rain /stoprain # Stop rain /settime [hour] # Set server time /zone [x] [y] [z] # Safe zone management /factions create [name] # Create faction /factions invite [player] # Invite player to faction

Remote Console (RCON)

Use RCON client or telnet:

bash
telnet tuodominio.com 27015
# Enter RconPassword when prompted
  • Join the server as a new player
  • Open console: ` key
  • Type: /setadmin [username]
  • Player becomes admin with full permissions
13

Step 11: Backup Server Data

Create Backup Script

bash
cat > ~/backup-pz.sh << 'EOF'
#!/bin/bash

BACKUP_DIR=/home/pzserver/backups
WORLD_DIR=/home/pzserver/.cache/ProjectZomboid/Zomboid

mkdir -p $BACKUP_DIR
TIMESTAMP=$(date +%Y%m%d_%H%M%S)

# Stop server gracefully
echo "Saving server state..."
sleep 5

# Backup world
tar -czf $BACKUP_DIR/pz-world-$TIMESTAMP.tar.gz $WORLD_DIR/Saves/

# Keep last 14 backups
find $BACKUP_DIR -name "pz-world-*.tar.gz" -mtime +14 -delete

echo "Backup completed: pz-world-$TIMESTAMP.tar.gz"
EOF

chmod +x ~/backup-pz.sh

Schedule Automated Backups

bash
sudo crontab -e
# Add: 0 3 * * * /home/pzserver/backup-pz.sh

Daily 3 AM backup.

14

Step 12: Monitor and Manage Server

Check Server Status

bash
sudo systemctl status pzserver
ps aux | grep ProjectZomboid

View Logs

bash
sudo journalctl -u pzserver -f
cat ~/.cache/ProjectZomboid/Zomboid/Server/console.log | tail -100

Monitor Resource Usage

bash
watch -n 2 'ps aux | grep ProjectZomboid64'
free -h

Update Server

bash
sudo systemctl stop pzserver
cd ~/steamcmd
./steamcmd.sh +force_install_dir ~/pz-server +login anonymous \
  +app_update 380870 validate +quit
sudo systemctl start pzserver

Always backup world saves before updating. Test updates on a test server if possible. Player count may drop temporarily during major updates.

15

Step 13: Performance Tuning

RAM Scaling

Monitor with:

bash
htop -p $(pgrep ProjectZomboid64)

Reduce Server Load

  • 4 players: 4GB minimum
  • 8 players: 6GB recommended
  • 16+ players: 8GB+ recommended
  • Add 1GB per 4 active mods
  • Limit MaxPlayers based on available RAM
  • Disable unused mods
  • Increase SaveWorldEveryMinutes to reduce disk I/O (300 seconds recommended)
  • Monitor CustomSpawns load
16

Troubleshooting

Server won't start

bash
cd ~/pz-server
./ProjectZomboid64.sh -server

Check for errors in output. Common issues:

High memory usage

Players can't connect

Verify firewall:

bash
sudo netstat -tuln | grep 1626

Ensure Public=true in config and ports are open.

Mod conflicts

Start with core mods only, add mods one at a time, and test between each addition. Check mod compatibility with server version.

  • Config file syntax error (check .ini for special characters)
  • Port already in use
  • Missing mods listed in config
  • Reduce MaxPlayers
  • Disable problematic mods one by one
  • Increase swap space temporarily
  • Monitor with top or htop
17

Windows Server Setup

Step 1: Download Server on Windows

powershell
steamcmd +force_install_dir "C:\PZ-Server" +login anonymous +app_update 380870 validate +quit

Step 2: Generate Initial Config

Run the server once to create config files:

batch
cd C:\PZ-Server
ProjectZomboid64.exe -server

Wait 30 seconds, then close. Config files appear in %APPDATA%\Zomboid\Zomboid\Server\.

Step 3: Edit servertest.ini

Edit %APPDATA%\Zomboid\Zomboid\Server\servertest.ini (same settings as Linux guide in Step 6).

Step 4: Create Startup Batch

Create C:\PZ-Server\start-server.bat:

batch
@echo off
cd /d C:\PZ-Server
ProjectZomboid64.exe -server
pause

Step 5: Run as Service (Optional)

powershell
# Install NSSM
nssm install PZServer "C:\PZ-Server\ProjectZomboid64.exe" "-server"
nssm start PZServer
18

Tips & Tweaks

JVM Memory Allocation

Increase heap memory for better performance:

bash
# Linux: Set JVM_OPTS before running
export JVM_OPTS="-Xmx8G -Xms6G"
./ProjectZomboid64.sh -server

# Windows: Create ProjectZomboid64.bat wrapper
@echo off
set JVM_OPTS=-Xmx8G -Xms6G
ProjectZomboid64.exe -server

Guidelines:

Admin Commands Reference

CommandPurpose
/ban [username]Permanent ban
/unban [username]Unban
/kick [username] [reason]Remove player
/mute [username]Mute chat
/setadmin [username]Grant admin privileges
/removeadmin [username]Revoke admin privileges
/teleportto [username]Teleport to player
/teleport [x] [y] [z]Teleport to coordinates
/serverinfoShow server configuration
/saveForce save world
/startrain / /stoprainControl weather
/settime [hour]Set server time

Mod Load Order and Compatibility

Mods load in order specified in servertest.ini:

ini
Mods=ModName1;ModName2;ModName3;

Best Practices:

Sandbox Settings for Difficulty Tuning

Adjust zombie behavior and progression in servertest.ini:

SettingImpactRecommended
Difficulty1-4 (higher = harder)2-3 for balanced gameplay
ZombiePopulation0.5-1.00.8 for moderate challenge
ZombieSkill0-32 for medium AI difficulty
ZombieMemory0-3 (higher = smarter)2 for realistic behavior
ZombieRespawnHours0-16872 for 3-day respawn cycle
AllowNonAdminPVPtrue/falsefalse for PvE, true for PvP
  • 4 players: -Xmx4G -Xms2G
  • 8 players: -Xmx6G -Xms4G
  • 16+ players: -Xmx8G -Xms6G
  • Core mods first (dependencies like ORGM)
  • Gameplay mods next
  • Content/decoration mods last
  • Test each mod addition individually
  • Keep client mods identical to server
19

Next Steps

  • Set up automated Discord notifications for player joins/quits
  • Configure backup rotation with offsite storage
  • Install additional server management tools
  • Plan regular server restarts (weekly recommended)
  • Monitor player base growth and adjust hardware accordingly
  • Create community rules document and post on Discord

DeluxHost, founded in 2023, offers high-quality hosting solutions for various digital needs. We provide shared hosting, VPS, and dedicated servers with advanced security and global data centers.

© DeluxHost, All rights reserved. | VAT Number : IT17734661006
All Systems Operational