Project Zomboid Dedicated Server نسخهای جدا از بازی است که دنیای چندنفره را روی یک سرور مستقل اجرا میکند؛ یعنی حتی وقتی Host شخصی آفلاین است، World میتواند روشن بماند. برای گروههای ثابت، سرورهای مودشده و Worldهای طولانی، Dedicated Server کنترل بسیار بیشتری روی پورتها، Sandbox، Workshop Mods، Backup و منابع سیستم میدهد.
در زمان بازبینی این مقاله در ۲۰ اکتبر ۲۰۲۶، نسخه پایدار Project Zomboid برابر Build 42.21 است. Build 42 از ۲۹ ژوئیه ۲۰۲۶ وارد Stable شد و 42.21 نیز در ۲۸ سپتامبر Stable شده است. این نسخه چند اصلاح مهم Multiplayer دارد؛ از جمله بهبود مشکلات رانندگی با Ping بالا، Z-level desync، Zombie duplication و چند مشکل Sync دیگر.
این آموزش از صفر تا یک سرور قابلاستفاده جلو میرود: نصب با SteamCMD، بازکردن پورتهای درست، تنظیم servertest.ini و Sandbox، نصب Workshop Mods، هماهنگکردن Modها بین Client و Server، Backup از Save و Database و در پایان یک روش مرحلهای برای پیدا کردن علت Desync.
وضعیت روز: برای یک سرور جدید Build 42 دیگر نباید از -beta unstable استفاده کنید. دستور معمول app_update 380870 validate شاخه Public/Stable را دریافت میکند. اگر عمداً میخواهید روی Build 41 بمانید، شاخه legacy41 جداست. Saveهای Build 41 را سازگار با Build 42 فرض نکنید.
برای Project Zomboid Build 42 چه منابعی لازم داریم؟
Project Zomboid یک عدد رسمی واحد برای RAM همه سرورها اعلام نکرده است؛ چون تعداد بازیکن، تعداد Zombieها، Map Mods و Workshop Mods روی مصرف حافظه و CPU اثر زیادی دارند. برای ظرفیتسنجی، بهتر است با World واقعی خودتان Benchmark کنید.
| سناریو | شروع منطقی | نکته |
|---|---|---|
| Vanilla کوچک، ۴ تا ۶ نفر | حدود ۶ تا ۸GB RAM | CPU با Single-core مناسب مهم است |
| Vanilla/چند Mod، ۸ تا ۱۲ نفر | حدود ۸GB RAM | World بزرگ و رانندگی Chunk Loading را سنگین میکند |
| Modded/Map-heavy | ۱۲GB یا بیشتر | هر Mod و Map میتواند Heap و Load را بالا ببرد |
این اعداد توصیه عملی هستند، نه Requirement رسمی. Build 42 در بسته فعلی Linux معمولاً با Heap چندگیگابایتی اجرا میشود؛ فایل ProjectZomboid64.json یا Launcher خودتان را بررسی کنید و -Xmx را با RAM واقعی ماشین هماهنگ کنید. بعد از Update هم دوباره این فایل را چک کنید، چون Validate یا Update میتواند فایلهای نصب را جایگزین کند.
نصب سرور Project Zomboid Build 42 روی Linux
بهتر است سرور را با یک User جدا اجرا کنید و Root را برای اجرای Game Server استفاده نکنید.
sudo apt update
sudo apt install -y steamcmd
sudo useradd --system --create-home \
--home-dir /home/pzserver \
--shell /bin/bash pzserver
sudo mkdir -p /home/pzserver/server
sudo chown -R pzserver:pzserver /home/pzserver
Dedicated Server رسمی با Steam App ID زیر منتشر میشود:
380870
نصب Build 42 Stable:
sudo -u pzserver /usr/games/steamcmd \
+force_install_dir /home/pzserver/server \
+login anonymous \
+app_update 380870 validate \
+quit
اجرای اولیه:
sudo -iu pzserver
cd ~/server
./start-server.sh
در اولین اجرا، سرور Admin Password را میگیرد و پوشههای Config، Save و Database را زیر Home همان User میسازد.
نصب روی Windows Server
SteamCMD را مثلاً در C:\\SteamCMD قرار دهید و سرور را در مسیر جدا نصب کنید:
C:\\SteamCMD\\steamcmd.exe ^
+force_install_dir C:\\PZServer ^
+login anonymous ^
+app_update 380870 validate ^
+quit
بعد:
C:\\PZServer\\StartServer64.bat
مثل Linux، اولین Start فایلهای servertest را در Profile کاربری Windows میسازد.
پورتهای Build 42؛ 16261 و 16262 را فراموش نکنید
Dedicated Server امروزی Project Zomboid دو پورت اصلی UDP دارد. پورت 16261 برای Steam Query/اتصال اصلی و 16262 برای Direct Connection استفاده میشود.
| Port | Protocol | کاربرد |
|---|---|---|
| 16261 | UDP | Game/Steam connection |
| 16262 | UDP | Direct connection / RakNet path |
| 27015 | TCP | RCON فقط اگر آن را فعال کرده باشید |
UFW:
sudo ufw allow 16261/udp
sudo ufw allow 16262/udp
sudo ufw status
اگر RCON ندارید، Port آن را باز نکنید. اگر RCON فعال است، دسترسی را به IP مدیریت یا VPN محدود کنید.
فایلهای مهم سرور کجا هستند؟
با نام پیشفرض servertest، مسیرها به شکل زیر هستند:
Linux:
~/Zomboid/Server/servertest.ini
~/Zomboid/Server/servertest_SandboxVars.lua
~/Zomboid/Server/servertest_spawnregions.lua
~/Zomboid/Saves/Multiplayer/servertest/
~/Zomboid/db/servertest.db
Windows:
%USERPROFILE%\\Zomboid\\Server\\servertest.ini
%USERPROFILE%\\Zomboid\\Server\\servertest_SandboxVars.lua
%USERPROFILE%\\Zomboid\\Saves\\Multiplayer\\servertest\\
%USERPROFILE%\\Zomboid\\db\\servertest.db
اگر با -servername myserver اجرا کنید، نام فایلها و Save Folder از servertest به myserver تغییر میکند. یکی از رایجترین علتهای «تنظیمات من اعمال نمیشود» همین است که Admin فایل اشتباه را ویرایش میکند.
یک servertest.ini پایه برای شروع
بعد از اولین اجرا، Server را Stop کنید و فقط گزینههایی را که لازم دارید تغییر دهید. نمونه زیر برای یک سرور خصوصی ۱۶ نفره است:
Public=false
PublicName=Iranica B42 Server
Password=CHANGE_THIS_SERVER_PASSWORD
DefaultPort=16261
UDPPort=16262
MaxPlayers=16
PauseEmpty=true
PVP=false
Open=true
DoLuaChecksum=true
BackupsCount=10
BackupsOnStart=true
BackupsOnVersionChange=true
DoLuaChecksum=true را برای یک سرور عادی خاموش نکنید. در بعضی Threadهای قدیمی Build 42، خاموشکردن Checksum بهعنوان Workaround پیشنهاد شده بود؛ اما برای عیبیابی Mod Sync بهتر است ابتدا Version، Mod ID، Workshop ID و Load Order را درست کنید، نه اینکه Checksum را حذف کنید.
Sandbox در Build 42 را از فایل خود همان نسخه بسازید
قوانین World در servertest_SandboxVars.lua هستند؛ Zombie Population، Loot، Day Length، Respawn، Vehicles، Animals و دهها Setting دیگر اینجا قرار میگیرند.
Build 42 بعضی نامها و ساختارها را نسبت به Build 41 تغییر داده است. بنابراین یک فایل Sandbox قدیمی را کامل Copy/Paste نکنید. بهترین روش این است که فایل تولیدشده توسط همین Build 42.21 را مبنا قرار دهید و فقط گزینههای موردنیاز را تغییر دهید.
ساختار کلی:
SandboxVars = {{
VERSION = 4,
Zombies = 4,
Distribution = 1,
DayLength = 3,
-- Build 42 contains many more settings.
-- Keep the file generated by your own server build.
}}
یک comma یا brace اشتباه میتواند Server Startup را متوقف کند؛ قبل از ویرایش، از فایل نسخه Backup بگیرید.
Workshop Mods در Build 42؛ دو ID متفاوت داریم
برای هر Mod معمولاً دو شناسه وجود دارد:
🔹 Workshop ID: عددی که در URL صفحه Steam Workshop میبینید.
🔹 Mod ID: شناسه داخل mod.info.
WorkshopItems= به سرور میگوید چه چیزی را از Workshop دانلود کند. Mods= تعیین میکند کدام Mod واقعاً Load شود. اگر فقط یکی از این دو را وارد کنید، ممکن است فایل دانلود شود ولی در Game فعال نشود.
نمونه:
WorkshopItems=1234567890;2345678901
Mods=\\ExampleMod;\\AnotherMod
در Build 42 Dedicated Server، در نسخههای فعلی برای Mod IDها استفاده از Backslash قبل از ID در بسیاری از نصبها لازم است و این Workaround توسط Admin انجمن رسمی هم در چرخه Build 42 تأیید شده بود. با این حال چون Parser و Mod System در Build 42 همچنان تغییر کرده، Log Server خودتان را معیار نهایی قرار دهید.
Map Mod یک خط سوم هم دارد
اگر Mod نقشه نصب میکنید، علاوه بر Workshop و Mods معمولاً Map= هم باید درست باشد و Map Mod قبل از Base Map قرار گیرد.
WorkshopItems=1234567890
Mods=\\ExampleMap
Map=ExampleMapFolder;Muldraugh, KY
نام داخل Map= لزوماً همان Workshop ID یا Mod ID نیست؛ باید Folder Name نقشه را از مستند Mod بگیرید.
Mod Sync؛ مهمترین منبع خطا در سرورهای Build 42
Build 42 سیستم Modding را عمیقاً تغییر داده و خود بازی Mod Manager رسمی جدید دارد. برای Server Production، این Workflow امنتر است:
🔹 فقط Modهایی را نصب کنید که صریحاً Build 42 را پشتیبانی میکنند.
🔹 Server و تمام Clientها روی Build دقیق یکسان باشند.
🔹 Workshop ID و Mod ID را با هم تطبیق دهید.
🔹 Dependencyهای هر Mod را قبل از Restart اضافه کنید.
🔹 Modها را دستههای کوچک ۳ تا ۵تایی اضافه کنید، نه ۸۰ Mod یکباره.
🔹 قبل از تغییر Mod Pack از Save و DB نسخه Backup بگیرید.
🔹 Map Mod را از World فعال حذف نکنید مگر اینکه Recovery Plan داشته باشید.
Build 42.20.4 چند تغییر امنیتی در Lua داشت و در 42.21 بعضی Methodها بعد از بررسی بیشتر دوباره فعال شدند. نتیجه عملی برای Admin این است: Mod را مثل «فایل بیخطر گرافیکی» نبینید؛ فقط از Workshop Itemهایی استفاده کنید که Author و سابقه آنها را میشناسید.
وقتی Workshop Mod Update شد و Client دیگر وصل نمیشود
سناریوی رایج این است: Steam روی Client نسخه جدید Mod را دانلود کرده ولی Dedicated Server هنوز Cache قدیمی دارد. نتیجه Error مربوط به Workshop Version یا Mod Mismatch است.
روش درست:
# Linux
sudo systemctl stop zomboid
sudo -u pzserver /usr/games/steamcmd \
+force_install_dir /home/pzserver/server \
+login anonymous \
+app_update 380870 validate \
+quit
sudo systemctl start zomboid
اگر مشکل فقط یک Workshop Item است، Log دانلود Workshop را بخوانید و همان Mod را بررسی کنید. پاککردن کل World یا Database نباید اولین واکنش شما باشد.
مطلب مرتبط: اگر مشکل شما بیشتر شبیه Ping، Jitter یا Packet Loss است تا Mod Sync، این مقاله کمک میکند سمت Client و Server را جدا کنید.
Save و Database؛ از چه چیزهایی Backup بگیریم؟
برای یک Backup قابلاستفاده فقط Save Folder کافی نیست. سه بخش مهم دارید:
~/Zomboid/Server/
~/Zomboid/Saves/Multiplayer/servertest/
~/Zomboid/db/servertest.db
اولی Config و Sandbox است، دومی World/Chunk Data و سومی Player Account، Whitelist، Ban و Admin-related Data را نگه میدارد.
Backup دستی روی Linux
sudo systemctl stop zomboid
sudo -u pzserver tar -czf \
/home/pzserver/pz-backup-$(date +%F-%H%M).tar.gz \
-C /home/pzserver \
Zomboid/Server \
Zomboid/Saves/Multiplayer/servertest \
Zomboid/db/servertest.db
sudo systemctl start zomboid
برای World مهم، Backup را خارج از همان VPS نگه دارید. Backup روی همان Disk، در برابر خرابی Storage یا حذف VPS Disaster Recovery محسوب نمیشود.
Update Build 42 بدون آسیب به World
قبل از Update:
🔹 Server را Stop کنید.
🔹 از Server، Saves و DB Backup بگیرید.
🔹 Changelog را برای Save/Mod Compatibility بخوانید.
🔹 Workshop Mods مهم را از نظر Build 42 Support بررسی کنید.
Update:
steamcmd \
+force_install_dir /home/pzserver/server \
+login anonymous \
+app_update 380870 validate \
+quit
بعد از Update، Build Client و Server باید یکسان باشد. Build 42.21 حتی در Server Browser درباره تفاوت نسخه Client/Server هشدار واضحتری اضافه کرده است.
Desync در Project Zomboid دقیقاً چه شکلی است؟
Desync یعنی Client و Server درباره وضعیت World یا Player تصویر یکسانی ندارند. نشانهها میتوانند شامل این موارد باشند:
🔹 Teleport یا Rubber-banding بازیکنها.
🔹 Passenger جابهجا یا Teleport میشود.
🔹 هنگام رانندگی Map Chunk دیر Load میشود.
🔹 Player در Z-level اشتباه دیده میشود.
🔹 Zombie یا Item State بین Clientها متفاوت است.
🔹 Inventory/Timed Action با تأخیر یا State متفاوت دیده میشود.
خود The Indie Stone در 42.21 چند مشکل مهم MP را اصلاح کرده است؛ از جمله رانندگی در Ping حدود ۱۵۰ms، Map Loading جلوی خودرو، Passenger teleportation و Z-level desync. بنابراین اگر روی 42.20.x هستید، اولین قدم عیبیابی Desync، Update به 42.21 Stable است.
روش استاندارد رفع Desync؛ مرحلهبهمرحله
۱. Build Client و Server را یکی کنید
اول Server Log را ببینید و Build را ثبت کنید. بعد روی Client مطمئن شوید Branch همان Stable است. اگر یکی روی legacy41 یا Unstable باشد، قبل از هر کار دیگری نسخه را یکی کنید.
۲. یک تست Vanilla انجام دهید
اگر ۵۰ Mod دارید، نمیتوانید بفهمید Desync از Core Game است یا Mod. از World اصلی Backup بگیرید و یک Server Name آزمایشی بدون Mod اجرا کنید. اگر مشکل ناپدید شد، Mod Pack را گروهگروه برگردانید.
۳. Workshop و Mod IDها را مقایسه کنید
Server باید دقیقاً همان Mod Version و Dependencyهایی را داشته باشد که Client میگیرد. Error را از Log بخوانید؛ فقط «Server Restart» بدون بررسی Workshop Version ممکن است مشکل را تکرار کند.
۴. Ping بالا را از Server Load جدا کنید
اگر فقط یک Player Rubber-band دارد، مسیر همان User محتملتر است. اگر همه بازیکنها همزمان Desync دارند، CPU، GC، Disk یا Network Server را بررسی کنید.
ping SERVER_IP
mtr -rwzc 100 SERVER_IP
۵. Heap Java و OOM را بررسی کنید
اگر VPS 16GB RAM دارد ولی JVM فقط Heap کوچکتری گرفته، Game Server نمیتواند خودکار همه RAM را مصرف کند. فایل Startup/JSON را بررسی کنید و -Xmx را بیشتر از RAM قابلاستفاده سیستم قرار ندهید.
Linux:
free -h
ps -eo pid,rss,%mem,%cpu,cmd --sort=-rss | head
journalctl -k | grep -Ei 'oom|out of memory|killed process'
۶. هنگام رانندگی CPU و Network را نگاه کنید
Build 42.21 بخشی از High-Ping Driving Desync را اصلاح کرده، اما Server ضعیف هنوز میتواند Chunkها را دیر Stream کند. اگر مشکل فقط داخل Vehicle و در سرعت بالا دیده میشود، Map Mods و CPU را هم بررسی کنید.
۷. Save و DB را آخر دستکاری کنید
پاککردن servertest.db یا World Folder راه معمول رفع Desync نیست. Database را فقط وقتی دست بزنید که مشکل Player Account/Whitelist یا داده مشخص DB دارید. قبل از هر تغییر، Backup کامل بگیرید.
اشتباههای رایج که Desync را بدتر میکنند
🔹 Server روی 42.21 و Client روی Build دیگری است.
🔹 Modهای Build 41 در Server Build 42 استفاده شدهاند.
🔹 WorkshopItems درست است ولی Mods خالی یا اشتباه است.
🔹 Map Mod از World فعال حذف شده است.
🔹 DoLuaChecksum=false بدون اینکه علت اصلی Mod Mismatch پیدا شود.
🔹 Server با RAM زیاد ولی Heap Java کوچک اجرا میشود.
🔹 Port 16262 بسته است و Direct Connection درست کار نمیکند.
🔹 Admin همه مشکلات Rubber-banding را به «Ping کاربر» نسبت میدهد در حالی که CPU Server اشباع است.
یک Workflow امن برای Mod Pack بزرگ
اگر سرور Community دارید، Mod Pack را مثل Software Deployment مدیریت کنید:
Stable server
|
+--> Backup world + DB
|
+--> Clone test server
|
+--> Update 3-5 mods
|
+--> Remote join test
|
+--> Drive / combat / inventory test
|
+--> Promote to production
این روش زمان بیشتری از «Restart و امیدواری» میگیرد، اما وقتی World صدها ساعت سابقه دارد، پیدا کردن یک Mod خراب بسیار سادهتر میشود.
مطلب مرتبط: اگر هنوز برای انتخاب VPS بازی مردد هستید، این مقاله دید کلی خوبی درباره Game Server میدهد.
برای Project Zomboid یک سرور دائمی و مودشده میخواهید؟
اگر تعداد بازیکنها، Mod Pack و محل کاربران مشخص باشد، میتوان VPS را با RAM و CPU مناسب انتخاب کرد و قبل از انتقال World، SteamCMD، پورتها، Backup و Mod Sync را آماده کرد.
تماس با پشتیبانی ایرانیکاسرور: 021-91302467
پرسشهای رایج
نسخه Stable فعلی Project Zomboid چیست؟
در زمان بازبینی ۲۰ اکتبر ۲۰۲۶، نسخه پایدار Build 42.21 است. Build 42.20 در ژوئیه Stable شد و 42.21 در سپتامبر با اصلاحات Multiplayer منتشر شد.
App ID سرور Project Zomboid در SteamCMD چیست؟
Dedicated Server از App ID برابر 380870 استفاده میکند و با Login ناشناس SteamCMD قابل نصب است.
چه پورتهایی برای Build 42 لازماند؟
پورتهای اصلی UDP 16261 و 16262 هستند. RCON Port جداست و فقط در صورت فعالکردن RCON باید باز شود.
چرا Workshop Mod دانلود میشود ولی فعال نیست؟
چون WorkshopItems فقط Download را مشخص میکند. Mod ID مربوطه باید در Mods هم وجود داشته باشد و Dependencyها و Load Order نیز درست باشند.
آیا Modهای Build 41 روی Build 42 کار میکنند؟
نباید چنین فرضی داشته باشید. Build 42 ساختار Modding متفاوتی دارد و باید نسخهای از Mod را نصب کنید که صریحاً برای Build 42 منتشر یا تأیید شده باشد.
Save سرور کجا قرار دارد؟
با نام پیشفرض servertest، World در Zomboid/Saves/Multiplayer/servertest و Database کاربران در Zomboid/db/servertest.db قرار دارد.
بهترین راه رفع Desync چیست؟
اول Client و Server را روی Build یکسان قرار دهید، سپس Vanilla Test انجام دهید، Mod Sync را بررسی کنید، Network و CPU/Heap را اندازه بگیرید و فقط در آخر سراغ Save یا Database بروید.
آیا Build 42.21 Desync را بهتر کرده است؟
بله. The Indie Stone در 42.21 بهبودهایی برای رانندگی با Ping بالا، Map Chunk Loading، Passenger teleportation و Z-level desync منتشر کرده است؛ اما Mod، Network و Server Load همچنان میتوانند Desync ایجاد کنند.
جمعبندی
Project Zomboid Build 42 حالا شاخه Stable است و در زمان نگارش، نسخه 42.21 بهترین نقطه شروع برای Dedicated Server جدید است. برای نصب عادی کافی است App ID 380870 را با SteamCMD روی Public Branch نصب کنید.
دو پورت UDP یعنی 16261 و 16262 را درست باز کنید، Config و Sandbox را از فایلهای تولیدشده توسط خود Build 42.21 بسازید و فایل Build 41 را بدون بررسی کپی نکنید.
برای Modها، Workshop ID و Mod ID دو چیز متفاوتاند. Server و Client باید Build، Workshop Version، Dependency و Load Order هماهنگ داشته باشند؛ در سرورهای Modded این بخش معمولاً مهمتر از خود نصب SteamCMD است.
اگر Desync دارید، ترتیب تشخیص را رعایت کنید: Version → Vanilla Test → Mod Sync → Network → CPU/RAM/Heap → Save/DB. پاککردن World یا خاموشکردن Checksum نباید اولین راهحل باشد.






دیدگاهها (۰)