Project Zomboid sunucu kurulumu SteamCMD ile yapılır: 380870 numaralı dedicated server uygulaması anonim girişle indirilir, start-server.sh ilk kez çalıştırılıp yönetici şifresi belirlenir ve 16261/UDP portu açılır. Buraya kadarı yarım saatlik iş. Zaman alan kısım ayar dosyaları — özellikle mod satırları, sırası yanlış olduğunda sunucu açılmıyor.
Bu rehberde Ubuntu 24.04 LTS üzerinde kurulumu adım adım anlatıyoruz, Windows karşılıklarını kısa kısa veriyoruz. servertest.ini ayarları, sandbox dosyası, Workshop modu ekleme, RAM planlaması, portlar, yedekleme ve donanım seçimi sırayla ele alınıyor.
Kurulum Öncesi Hazırlık#
- İşletim sistemi
- Ubuntu 24.04 LTS (birinci tercih) veya Windows Server 2022/2025.
- Portlar
- 16261/UDP (
DefaultPort), 16262/UDP (UDPPort), isteğe bağlı RCON portu. - Disk
- Kurulum birkaç GB; modlar, kayıtlar ve yedeklerle 50 GB NVMe SSD alt sınır.
- Linux ek paketleri
lib32gcc-s1,lib32stdc++6,curl,tar,unzip.- Java
- Sunucu paketi kendi çalışma zamanını içinde taşır; ayrıca Java kurmanız gerekmez.
- Erişim
- Kök yetkili VDS veya dedicated sunucu. Paylaşımlı hostingde çalışmaz.
Sunucuya bağlanmayı ayrı anlattık: SSH ile sunucuya bağlanma ve Windows için uzak masaüstü bağlantısı. Makine yeniyse önce VDS ilk ayarlar rehberindeki adımları uygulayın.
-
SteamCMD — resmî doküman ve indirmeZorunluAç
-
Project Zomboid resmî sitesi (The Indie Stone)Aç
-
Notepad++ — .ini ve .lua dosyalarını düzenlemeİndir
-
WinSCP — kayıt ve ayar dosyalarını aktarmaİndir
-
PuTTY — SSH bağlantısıİndir
Sunucu dosyaları yalnızca SteamCMD üzerinden indirilir. Sürüm numarası her yamada değiştiği için burada sabit bir dosya adı vermiyoruz; güncel yapı app_update komutuyla gelir.
Adım 1: SteamCMD ile Sunucu Kurulumu#
Ayrı bir sistem kullanıcısı açarak başlayın. Oyun sunucusunu root ile çalıştırmak, ileride pişman olacağınız bir kısayoldur.
# Ubuntu 24.04
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y lib32gcc-s1 lib32stdc++6 curl tar unzip
sudo adduser --disabled-password --gecos "" zomboid
sudo su - zomboid
mkdir -p ~/steamcmd && cd ~/steamcmd
curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -
# Sunucu dosyalarini indir (uygulama kimligi 380870)
cd ~/steamcmd
./steamcmd.sh +force_install_dir /home/zomboid/server \
+login anonymous \
+app_update 380870 validate \
+quit
REM Windows Server
C:\steamcmd\steamcmd.exe +force_install_dir C:\zomboid ^
+login anonymous ^
+app_update 380870 validate ^
+quit
app_update satırına -beta <dal-adi> eklenir. Modlarınız kararlı daldayken test dalına geçmeyin; mod uyumu bir gecede kırılır ve geri dönmek dünya kaybettirebilir.Adım 2: İlk Çalıştırma ve Yönetici Şifresi#
Sunucuyu ilk kez çalıştırdığınızda konsol size bir yönetici şifresi soracak, sonra doğrulatacaktır. Bu şifre girilmeden ayar dosyaları oluşmaz — dolayısıyla “ini dosyasını bulamıyorum” diyorsanız sunucu bir kez düzgün açılmamış demektir.
cd /home/zomboid/server
chmod +x start-server.sh
./start-server.sh
# Ekranda:
# Enter new administrator password:
# Confirm the password:
REM Windows
cd /d C:\zomboid
StartServer64.bat
Varsayılan sunucu adı servertest’tir ve tüm dosya adları bu adı taşır. Kendi adınızı kullanmak isterseniz betiği parametreyle başlatın; o zaman dosyalar da yeni adla oluşur:
# Kendi sunucu adiniz ve hazir yonetici sifresiyle
./start-server.sh -servername batihost -adminpassword "uzun-ve-rastgele-bir-sifre"
~/Zomboid/Server/servertest.ini Sunucu ayarlari
~/Zomboid/Server/servertest_SandboxVars.lua Oyun zorlugu ve kurallari
~/Zomboid/Server/servertest_spawnregions.lua Baslangic bolgeleri
~/Zomboid/Saves/Multiplayer/servertest/ Dunya kayitlari
~/Zomboid/Logs/ Gunlukler
Password) aynı yapmayın. Yönetici şifresini bilen kişi sunucuda sınırsız yetkilidir: eşya üretebilir, oyuncu banlayabilir, dünyayı silebilir. Sunucu konsolunda changepwd ile kendi şifrenizi değiştirebilir, grantadmin "oyuncuadi" ile başkasına yetki verebilirsiniz.Adım 3: servertest.ini Temel Ayarları#
Sunucunun kimliği, portları, slot sayısı ve kuralları bu dosyadadır. Aşağıdaki satırlar en çok dokunulanlar; dosyanın tamamı çok daha uzundur.
nano ~/Zomboid/Server/servertest.ini
# Listede gorunen ad ve aciklama
PublicName=Batihost Project Zomboid
PublicDescription=Turkiye lokasyonlu, dusuk pingli PZ sunucusu.
# Sunucu topluluk listesinde gorunsun mu?
Public=true
# Oyuncu giris sifresi (bos birakirsaniz herkes girer)
Password=
# Slot sayisi
MaxPlayers=16
# Portlar
DefaultPort=16261
UDPPort=16262
# Oyuncular arasi hasar
PVP=false
# Kimse yokken oyun dursun mu (CPU tasarrufu)
PauseEmpty=true
# Giris mesaji
ServerWelcomeMessage=Batihost PZ sunucusuna hos geldiniz. Kurallar Discord'da.
# Dunya kac dakikada bir diske yazilsin
SaveWorldEveryMinutes=10
# Dahili yedekleme
BackupsOnStart=true
BackupsOnVersionChange=true
BackupsPeriod=60
BackupsCount=10
# Yukleniyor: mod satirlari (Adim 5'te ayrintili)
Mods=
WorkshopItems=
# Harita (ozel harita modu eklerseniz vanilya en sonda kalir)
Map=Muldraugh, KY
| Ayar | Ne yapar | Öneri |
|---|---|---|
PublicName | Sunucu listesinde görünen ad | Kısa ve tanımlayıcı |
Public | Topluluk listesinde yayınlama | false ise yalnızca IP ile girilir |
Password | Oyuncu giriş şifresi | Kapalı topluluklarda mutlaka doldurun |
MaxPlayers | Slot sayısı | Donanıma göre; 16 ile başlayın |
DefaultPort | Ana sunucu portu | 16261 (UDP) |
UDPPort | Oyuncu bağlantı portu | 16262 (UDP) — açmayı unutmayın |
PVP | Oyuncular arası hasar | Hikâye odaklı sunucularda false |
PauseEmpty | Boşken oyunu duraklatır | true — boşuna CPU yakmaz |
SaveWorldEveryMinutes | Otomatik kayıt aralığı | 10 dakika dengeli |
BackupsCount | Tutulacak dahili yedek sayısı | Gerçek yedeğin yerini tutmaz |
Mods | Yüklenecek mod kimlikleri | Sıra = yükleme sırası |
WorkshopItems | İndirilecek Workshop kimlikleri | Mod kimliğiyle aynı numara değildir |
Adım 4: Sandbox Ayar Dosyası#
Zombi yoğunluğu, ganimet bolluğu, gün uzunluğu, elektrik ve suyun ne zaman kesileceği gibi oyun kuralları ini dosyasında değil, ayrı bir Lua dosyasındadır. Bu ayrımı kaçıran çok oluyor: ini sunucuyu, Lua oyunu yönetir.
nano ~/Zomboid/Server/servertest_SandboxVars.lua
SandboxVars = {
VERSION = 5,
Zombies = 3,
Distribution = 1,
DayLength = 3,
StartYear = 1,
StartMonth = 7,
StartDay = 9,
StartTime = 2,
WaterShut = 2,
ElecShut = 2,
WaterShutModifier = 14,
ElecShutModifier = 14,
XpMultiplier = 1.0,
ZombieAttractionMultiplier = 1.0,
LootRespawn = 1,
HoursForLootRespawn = 0,
ZombieLore = {
Speed = 2,
Strength = 2,
Toughness = 2,
Cognition = 3,
Memory = 2,
Sight = 2,
Hearing = 2,
},
}
Başlangıç bölgelerini de servertest_spawnregions.lua dosyası belirler. Özel harita modu eklediğinizde oyuncuların o haritada doğabilmesi için bu dosyaya ilgili bölgeyi eklemeniz gerekir; aksi hâlde harita yüklenir ama kimse orada başlayamaz.
Adım 5: Workshop Modu Ekleme#
Project Zomboid’de mod eklemek iki satır ister ve bu iki satır farklı numaralar alır. Karıştırıldığında sunucu ya modu indirmez ya da indirip yüklemez.
WorkshopItems- Steam Workshop sayfasının adresindeki
?id=numarası. Sunucunun modu indirmesini sağlar. Mods- Modun kendi kimliği (mod klasöründeki
mod.infodosyasındaid=satırında yazar). Sunucunun modu yüklemesini sağlar. Map- Harita modu eklediyseniz haritanın klasör adı. Vanilya haritası daima en sonda kalır.
# Degerler noktali virgulle ayrilir, arada bosluk birakmayin
WorkshopItems=2392709985;2169435993;2857034700
Mods=tsarslib;Authentic Z - Current;Brita_2
# Ozel harita eklediyseniz
Map=Grapeseed;Muldraugh, KY
Mods satırındaki sıra yükleme sırasıdır ve aynı dosyaya dokunan iki mod varsa sonda yazan öncekini ezer. Bir mod başka bir moda bağımlıysa (kütüphane modları buna girer) bağımlılık listede önce gelmelidir. Map satırında ise mantık terstir: önce yazan harita önceliklidir ve vanilya Muldraugh, KY her zaman en sonda kalır.Mod güncellemelerini takip etmek de ayrı bir iş. Sunucu konsolunda checkModsNeedUpdate komutu, yüklü modlardan hangilerinin Workshop’ta güncellendiğini söyler. Bir mod güncellendiğinde oyuncular bağlanamamaya başlar; o yüzden bu kontrolü haftalık alışkanlık hâline getirin.
players Bagli oyuncular
save Dunyayi aninda kaydet
quit Kaydedip kapat
kick "oyuncu" Oyuncuyu at
banuser "oyuncu" Oyuncuyu yasakla
grantadmin "oyuncu" Yonetici yetkisi ver
removeadmin "oyuncu" Yetkiyi geri al
servermsg "mesaj" Tum oyunculara duyuru
changeoption PVP false Ayari anlik degistir
checkModsNeedUpdate Mod guncellemelerini kontrol et
changepwd Yonetici sifresini degistir
Adım 6: Portları Açma#
# Ubuntu / Debian — UFW
sudo ufw allow 22/tcp
sudo ufw allow 16261/udp
sudo ufw allow 16262/udp
sudo ufw enable
sudo ufw status numbered
# Portlar dinleniyor mu?
ss -lnup | grep 1626
# Windows Server
New-NetFirewallRule -DisplayName "Zomboid" -Direction Inbound -LocalPort 16261-16262 -Protocol UDP -Action Allow
Kendi servertest.ini dosyanızda başka port satırları da varsa (RCON portu ya da sürüme göre değişen Steam sorgu portları gibi) onları da açın. Kural yazma mantığı için firewall yapılandırması ve port açma rehberi sayfalarına bakabilirsiniz. Oyuncular oyunda Join → Favorites bölümünden IP ve port girerek bağlanır.
RAM Planlaması ve Donanım#
Project Zomboid sunucusu Java üzerinde koştuğu için belleği bir yığın (heap) sınırı içinde kullanır ve bu sınırı siz verirsiniz. Yığını işletim sistemine pay bırakacak şekilde ayarlayın; paketin tamamını yığına vermeyin.
nano /home/zomboid/server/ProjectZomboid64.json
{
"vmArgs": [
"-Xms6g",
"-Xmx6g",
"-Dzomboid.steam=1",
"-Djava.awt.headless=true"
]
}
| Oyuncu sayısı | Sunucu paketi | Java yığını | İşlemci | Disk |
|---|---|---|---|---|
| 2-8 oyuncu, arkadaş grubu | 8 GB | -Xms6g -Xmx6g | Ryzen 9 3900X ve üzeri | 50 GB NVMe SSD |
| 8-16 oyuncu | 12 GB | -Xms10g -Xmx10g | Ryzen 9 7900X | 50 GB NVMe SSD |
| 16-32 oyuncu | 16 GB | -Xms14g -Xmx14g | Ryzen 9 7900X / 7950X | 100 GB NVMe SSD |
| Ağır modlu veya çok sunuculu | 32 GB ve üzeri | -Xms28g -Xmx28g | Ryzen 9 7950X | 200 GB+ NVMe SSD |
Başlangıç değeri ile üst sınırı (-Xms ve -Xmx) daima eşit verin; aksi hâlde Java yığını büyütürken oyun içinde takılma yaşanır. İşlemci tarafında çekirdek sayısı değil saat hızı belirleyicidir, çünkü sunucunun ana döngüsü tek çekirdek üzerinde ilerler. Düşük frekanslı çok çekirdekli sunucu işlemcileri burada iyi sonuç vermez.
Disk için NVMe SSD şart: kayıt işlemi sırasında yüzlerce küçük hücre dosyası yazılır ve yavaş diskte bu her seferinde hissedilen bir donma yaratır. Türkiye lokasyonlu yüksek frekanslı seçenekler için yüksek frekanslı VDS, tam izolasyon için dedicated sunucu tarafına bakabilirsiniz; ikisi arasındaki farkı VDS mi dedicated mi karşılaştırmasında anlattık. Kaynak yetmemeye başladığında ne yapılacağı da kaynak yükseltme sayfasında.
Servis Olarak Çalıştırma#
SSH oturumu kapandığında sunucu da kapanır. Kalıcı çözüm systemd servisi.
# /etc/systemd/system/zomboid.service
[Unit]
Description=Project Zomboid Dedicated Server
After=network.target
[Service]
Type=simple
User=zomboid
WorkingDirectory=/home/zomboid/server
ExecStartPre=/home/zomboid/steamcmd/steamcmd.sh +force_install_dir /home/zomboid/server +login anonymous +app_update 380870 validate +quit
ExecStart=/home/zomboid/server/start-server.sh
Restart=on-failure
RestartSec=30
KillSignal=SIGTERM
TimeoutStopSec=180
LimitNOFILE=100000
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now zomboid
sudo systemctl status zomboid
journalctl -u zomboid -f
Servis mantığının ayrıntısı için systemd servisi oluşturma, konsola komut göndermek istiyorsanız screen ve tmux kullanımı sayfalarına bakın. Windows tarafında aynı işi NSSM ile StartServer64.bat dosyasını hizmete dönüştürerek yaparsınız.
TimeoutStopSec değerini kısa tutmayın. Project Zomboid kapanırken bütün yüklü hücreleri diske yazar ve kalabalık bir sunucuda bu iş bir dakikayı geçebilir. Süre dolduğunda sistem süreci zorla öldürür, yarım yazılmış hücre dosyaları da bozuk dünya demektir.Yedekleme#
Sunucunun dahili yedekleme özelliği (BackupsOnStart, BackupsPeriod) faydalıdır ama aynı diskte durduğu için gerçek yedek sayılmaz. Disk giderse yedekler de gider. Üstelik kayıt klasörünü tek başına yedeklemek yetmez: aynı dünyayı açabilmek için ayar dosyaları ve mod listesi de lazım.
#!/bin/bash
# /home/zomboid/yedek.sh
TARIH=$(date +%F-%H%M)
HEDEF=/home/zomboid/yedek
mkdir -p $HEDEF
tar -czf $HEDEF/zomboid-$TARIH.tar.gz \
/home/zomboid/Zomboid/Saves \
/home/zomboid/Zomboid/Server
# 14 gunden eskileri sil
find $HEDEF -name "zomboid-*" -mtime +14 -delete
echo "$(date) yedek tamam: zomboid-$TARIH.tar.gz"
chmod +x /home/zomboid/yedek.sh
crontab -e
# Her gun 04:00 ve 16:00
0 4,16 * * * /home/zomboid/yedek.sh >> /var/log/zomboid-yedek.log 2>&1
Yedekten hemen önce konsolda save çalıştırırsanız arşiv yarım kalmaz. Zamanlanmış görev kurmayı bilmiyorsanız cron job rehberimiz yeterli; kaç kopya nerede duracak sorusunun cevabı ise 3-2-1 yedekleme kuralında. Yedek almayı ilk günden kurun, sonrada aklınıza gelmiyor.
Sık Karşılaşılan Sorunlar#
| Belirti | Sebep | Çözüm |
|---|---|---|
| Ayar dosyaları oluşmadı | Sunucu bir kez düzgün açılmadı | start-server.sh çalıştırıp şifreyi girin |
| Oyuncular bağlanamıyor | UDPPort kapalı | 16261 ve 16262’yi birlikte açın |
| Modlar yüklenmiyor | Mods satırı boş, sadece WorkshopItems dolu | İki satırı da doldurun |
| Sunucu mod yüzünden açılmıyor | Bağımlılık modu sonra yazılmış | Kütüphane modlarını listede öne alın |
| Özel harita görünmüyor | Map satırı güncellenmemiş | Haritayı ekleyin, vanilyayı sonda bırakın |
| Bir gün sonra kimse giremiyor | Workshop modu güncellenmiş | checkModsNeedUpdate ile kontrol edin |
| Sunucu bellek yetersizliğiyle kapanıyor | Yığın küçük veya paket dar | -Xmx değerini ve paketi büyütün |
| Dünya bozuk açılıyor | Kapanış sırasında zorla öldürme | TimeoutStopSec artırın, yedekten dönün |
| Sunucu boşken CPU yakıyor | PauseEmpty=false | true yapın |
Özetle#
Project Zomboid sunucu kurulumu SteamCMD ile 380870 uygulamasını indirmek, start-server.sh ile bir kez açıp yönetici şifresini belirlemek, servertest.ini dosyasını düzenlemek ve 16261 ile 16262 numaralı UDP portlarını açmakla tamamlanır.
İki dosyayı birbirine karıştırmayın: servertest.ini sunucunun kendisini, servertest_SandboxVars.lua oyunun zorluğunu yönetir. Mod eklerken de iki satırın ikisini birden doldurun — WorkshopItems indirir, Mods yükler ve Mods satırındaki sıra çakışmalarda kimin kazanacağını belirler. Burada birşey ters giderse sunucu açılışta durur.
Donanımda 8 GB paket ve 6 GB Java yığını küçük bir grup için yeterli, 16 oyuncuda 12 GB, 32 oyuncuda 16 GB planlayın; -Xms ile -Xmx daima eşit olsun. İşlemcide saat hızı, diskte NVMe SSD belirleyici.
Benzer kurulumlar için Valheim dedicated server, Palworld sunucu kurulumu ve Rust sunucu kurulumu rehberlerimize, altyapı tarafı için Ubuntu Server kurulumu ve sunucu izleme sayfalarına bakabilirsiniz. Takıldığınız yerde destek talebi açabilirsiniz.