← Blog

Konfiguracja serwera DayZ: kompletny przewodnik krok po kroku

Par Benjamin D. · PDG

· Mis à jour le 5 września 2026 · Lecture 9 min

Spis treści

Konfiguracja serwera DayZ to w praktyce praca na kilku plikach tekstowych: serverDZ.cfg, parametrach startowych, katalogu misji oraz plikach ekonomii. Poniżej znajdziesz uporządkowany przebieg — od struktury katalogów, przez sloty i limity kolejki, po mody ze Steam Workshop i strojenie rozgrywki. Wszystko opisane tak, jak wygląda to podczas realnej pracy administratora.



Struktura plików i podstawy pliku serverDZ.cfg

Zanim zaczniesz zmieniać cokolwiek, warto poznać układ katalogów. Instancja DayZ Server (Linux lub Windows) wygląda mniej więcej tak:

/
├── DayZServer (lub DayZServer_x64.exe)
├── serverDZ.cfg
├── profiles/
│   ├── BattlEye/
│   ├── crash_*/
│   └── *.RPT / *.ADM / *.log
├── keys/
├── mpmissions/
│   └── dayzOffline.chernarusplus/
│       ├── init.c
│       ├── cfgeconomycore.xml
│       ├── cfggameplay.json
│       ├── cfgplayerspawnpoints.xml
│       ├── cfgspawnabletypes.xml
│       └── db/
│           ├── types.xml
│           ├── globals.xml
│           ├── events.xml
│           └── messages.xml
└── @NazwaModa/
    ├── addons/
    └── keys/

Kluczowe wpisy w serverDZ.cfg

Plik ma składnię zbliżoną do C: pary klucz = wartość; oraz bloki class. Poniżej minimalny, ale kompletny szkielet:

hostname = "PL | Chernarus | Vanilla+";
password = "";
passwordAdmin = "ZmienToNaDlugieHaslo";
maxPlayers = 60;

verifySignatures = 2;
forceSameBuild = 1;
disableVoN = 0;
vonCodecQuality = 20;

disable3rdPerson = 0;
disableCrosshair = 0;
disablePersonalLight = 1;

serverTime = "SystemTime";
serverTimeAcceleration = 8;
serverNightTimeAcceleration = 4;
serverTimePersistent = 0;

guaranteedUpdates = 1;
loginQueueConcurrentPlayers = 5;
loginQueueMaxPlayers = 500;
respawnTime = 5;

instanceId = 1;
storageAutoFix = 1;
enableCfgGameplayFile = 1;

steamQueryPort = 27016;

timeStampFormat = "Short";
logAverageFps = 60;
logMemory = 60;
logPlayers = 60;
logFile = "server_console.log";

adminLogPlayerHitsOnly = 0;
adminLogPlacement = 1;
adminLogBuildActions = 1;
adminLogPlayerList = 1;

motd[] = {"Witaj na serwerze","Zasady na Discordzie"};
motdInterval = 300;

class Missions
{
    class DayZ
    {
        template = "dayzOffline.chernarusplus";
    };
};

Co realnie warto ustawić na starcie

ParametrZnaczenieRekomendacja
maxPlayersLiczba slotówZacznij od 40–60 i zwiększaj, obserwując server FPS
verifySignaturesWeryfikacja podpisów modówZawsze 2 — blokuje niepodpisane addony
forceSameBuildWymusza identyczną wersję klienta1, ogranicza crashe po patchu
serverTimeAccelerationMnożnik upływu czasu4–12 dla PvP, 1–2 dla hardcore survival
instanceIdIdentyfikator instancji storageUnikalny dla każdej mapy na jednej maszynie
storageAutoFixNaprawa uszkodzonego persistence1 — ratuje bazy graczy po twardym restarcie
enableCfgGameplayFileWłącza cfggameplay.json1, jeśli chcesz stroić rozgrywkę bez modów

Uwaga na serverTimePersistent. Ustawiony na 1 zapamiętuje porę dnia między restartami — bardzo praktyczne, ale w połączeniu z dużym serverNightTimeAcceleration potrafi zablokować graczy w wiecznej nocy, jeśli restarty wypadają zawsze o tej samej godzinie.

Jeżeli szukasz gotowej infrastruktury pod maszynę zarządzaną z panelu Pterodactyl, z NVMe i ochroną anty-DDoS w standardzie, sprawdź hosting DayZ — konsola live i menedżer plików ułatwiają edycję opisanych tu konfiguracji bez ręcznego łączenia się po SSH.



Parametry startowe, porty i BattlEye

Linia uruchomienia

Sam serverDZ.cfg to nie wszystko — reszta ustawień idzie w parametrach startowych binarki:

./DayZServer -config=serverDZ.cfg \
  -port=2302 \
  -profiles=profiles \
  -BEpath=battleye \
  -mod=@CF;@Community-Online-Tools;@BuilderItems \
  -servermod=@AdminTools \
  -cpuCount=4 \
  -limitFPS=60 \
  -dologs -adminlog -netlog -freezecheck
ParametrDo czego służy
-mod=Mody wymagane też po stronie klienta (średnik jako separator)
-servermod=Mody wyłącznie serwerowe, klient ich nie pobiera
-cpuCount=Liczba wątków przydzielona instancji
-limitFPS=Sufit server FPS; 60 zwykle wystarcza i zmniejsza zużycie CPU
-freezecheckWykrywa zawieszenie procesu i generuje dump
-adminlogGeneruje plik .ADM z akcjami graczy

Porty

DayZ wymaga otwarcia kilku portów UDP. Standardowy komplet:

  • 2302/UDP — port rozgrywki (game port),
  • 2303/UDP — port wewnętrzny wykorzystywany przez silnik,
  • 27016/UDP — Steam Query, decyduje o widoczności na liście serwerów,
  • 2310/TCP+UDP — RCON BattlEye (konfigurowalny).

Jeśli serwer działa, a nie widać go w launcherze, w 90% przypadków winny jest źle przekierowany steamQueryPort albo niezgodność między nim a portem faktycznie nasłuchiwanym. Sprawdź to poleceniem:

ss -lunp | grep -E '2302|27016'

Konfiguracja RCON

BattlEye obsługuje zdalną administrację. Plik battleye/BEServer_x64.cfg (lub profiles/BattlEye/BEServer_x64.cfg) powinien zawierać:

RConPassword HasloRCON_min_16_znakow
RestrictRCon 0
RConPort 2310

Hasło RCON traktuj jak klucz do całego serwera: minimum 16 znaków, losowe, inne niż passwordAdmin. Nigdy nie wrzucaj go na publiczny kanał Discorda ani do repozytorium z konfiguracją misji.



Mody ze Steam Workshop krok po kroku

Pobieranie przez SteamCMD

Mody DayZ mają AppID 221100. Pobierasz je po ID pozycji z Workshopu:

steamcmd +force_install_dir /home/dayz/workshop \
  +login TWOJ_LOGIN \
  +workshop_download_item 221100 1559212036 \
  +workshop_download_item 221100 2116157322 \
  +quit

Pliki lądują w steamapps/workshop/content/221100/<ID>. Każdy taki katalog zawiera folder moda z plikiem meta.cpp oraz katalogami addons/ i keys/.

Instalacja na instancji

  1. Skopiuj katalog moda do katalogu głównego serwera i nazwij go zgodnie z konwencją @NazwaModa.
  2. Skopiuj wszystkie pliki .bikey z @NazwaModa/keys/ do głównego katalogu keys/.
  3. Dodaj moda do parametru -mod=, zachowując kolejność zależności.
  4. Jeśli mod dostarcza własne typy przedmiotów, podepnij jego pliki w cfgeconomycore.xml.
cp -r /home/dayz/workshop/steamapps/workshop/content/221100/1559212036 \
      /home/dayz/server/@CF
cp /home/dayz/server/@CF/keys/*.bikey /home/dayz/server/keys/

Systemy plików Linuksa rozróżniają wielkość liter, a wiele modów zawiera nazwy z wielkimi literami w addons/. Jeżeli po dodaniu moda serwer wywala się przy starcie, sprawdź w .RPT linię typu Cannot open file — najczęściej to właśnie kwestia case sensitivity. Rozwiązuje ją zamiana nazw plików PBO na małe litery.

Kolejność ładowania

To najczęstsza przyczyna błędów przy modowaniu. Zasada jest prosta: frameworki przed modami, które z nich korzystają. Typowa kolejność:

-mod=@CF;@Dabs Framework;@Community-Online-Tools;@VPPAdminTools;@Ear Plugs;@BuilderItems

Po każdej zmianie listy modów wykonaj pełny restart procesu, a nie tylko przeładowanie misji. Warto też prowadzić prosty rejestr wersji modów — po aktualizacji Workshopu autor potrafi zmienić klasy przedmiotów, co unieważnia wpisy w types.xml.

Rejestracja przedmiotów z modów w ekonomii

Aby przedmioty z moda spawnowały się w świecie, dodaj wpis w mpmissions/dayzOffline.chernarusplus/cfgeconomycore.xml:

<ce folder="custom">
    <file name="mod_types.xml" type="types" />
    <file name="mod_spawnabletypes.xml" type="spawnabletypes" />
</ce>

Następnie utwórz katalog custom/ w folderze misji i umieść w nim wskazane pliki. Trzymanie modowanych typów poza db/types.xml znacznie ułatwia późniejsze aktualizacje wersji gry.



Parametry rozgrywki: cfggameplay.json, types.xml i globals.xml

cfggameplay.json — strojenie bez modów

Po ustawieniu enableCfgGameplayFile = 1 plik cfggameplay.json w katalogu misji pozwala zmienić dziesiątki zachowań silnika. Fragment użytecznej konfiguracji:

{
  "GeneralData": {
    "disableBaseDamage": false,
    "disableContainerDamage": false,
    "disableRespawnDialog": false
  },
  "PlayerData": {
    "disablePersonalLight": true,
    "StaminaData": {
      "sprintStaminaModifierErc": 1.0,
      "staminaMax": 120.0
    },
    "MovementData": {
      "timeToStrafeJog": 0.5
    }
  },
  "WorldsData": {
    "lightingConfig": 0,
    "objectSpawnersArr": ["custom/bazy_militarne.json"],
    "environmentMinTemps": [-2, -1, 1, 5, 10, 14, 16, 16, 13, 8, 4, 0],
    "environmentMaxTemps": [2, 4, 7, 12, 17, 21, 23, 23, 19, 14, 8, 4]
  },
  "BaseBuildingData": {
    "HologramData": { "disableIsCollidingBBoxCheck": false }
  }
}

Zwiększenie staminaMax i temperatur otoczenia to najprostszy sposób na złagodzenie rozgrywki dla nowej społeczności, bez sięgania po mody. Odwrotnie — obniżenie temperatur minimalnych szybko podnosi poziom trudności zimą.

types.xml — kontrola lootu

Każdy przedmiot ma własny wpis. Znaczenie pól:

PoleOpis
nominalDocelowa liczba sztuk w świecie
minPróg, po przekroczeniu którego uruchamia się respawn
lifetimeCzas życia przedmiotu w sekundach
restockOpóźnienie przed uzupełnieniem do nominal
quantmin/quantmaxProcentowe wypełnienie (amunicja, płyny)
usageStrefa spawnu: Military, Police, Farm, Town…
tier / valuePoziom lokacji, od Tier1 do Tier4
<type name="M4A1">
    <nominal>8</nominal>
    <lifetime>7200</lifetime>
    <restock>1800</restock>
    <min>4</min>
    <quantmin>-1</quantmin>
    <quantmax>-1</quantmax>
    <cost>100</cost>
    <flags count_in_cargo="0" count_in_hoarder="0"
           count_in_map="1" count_in_player="0" crafted="0" deloot="1"/>
    <category name="weapons"/>
    <usage name="Military"/>
    <value name="Tier4"/>
</type>

Podnosząc nominal broni wysokiego tieru, pamiętaj że pula lootu jest ograniczona globalnie — zbyt hojna militarka wypycha z mapy przedmioty przetrwaniowe. Zmiany wprowadzaj etapami i po każdym restarcie weryfikuj plik lootHistory oraz logi ekonomii.

globals.xml — wydajność i cleanup

Ten plik decyduje o obciążeniu instancji bardziej niż cokolwiek innego:

  • ZombieMaxCount — liczba zombie na mapie; wartość powyżej 1000 wyraźnie obciąża CPU,
  • AnimalMaxCount — analogicznie dla zwierząt,
  • IdleModeCountdown — czas do przejścia serwera w tryb bezczynności przy zerze graczy,
  • CleanupLifetimeDeadPlayer i CleanupLifetimeRuined — sprzątanie zwłok i zniszczonych obiektów,
  • TimeHopping i TimeLogin — kary za server hopping i czas logowania.

Przy 60 slotach i mapie Chernarus rozsądny start to ZombieMaxCount około 900. Jeśli server FPS spada poniżej 25, zejdź do 600 zanim zaczniesz szukać winy w modach. Wysoka częstotliwość taktowania procesorów Ryzen i dyski NVMe pomagają przy odczycie persistence, ale liczba aktywnych AI pozostaje głównym pożeraczem cykli.

Sloty a realna pojemność

Parametr maxPlayers to tylko deklaracja. Faktyczny limit wyznacza suma: liczba graczy × obiekty w ich bazach × AI × mody. Przy modach na budownictwo (dodatkowe obiekty persistence) ta sama maszyna udźwignie mniej slotów niż w wariancie vanilla. Kolejkę logowania regulują loginQueueConcurrentPlayers (ilu graczy wchodzi jednocześnie — 3 do 5 jest bezpieczne) i loginQueueMaxPlayers.



Utrzymanie: restarty, logi i kopie zapasowe

Harmonogram restartów

DayZ akumuluje wycieki pamięci przy długim uptime. Standardem społecznościowym są restarty co 3–4 godziny, z komunikatem ostrzegawczym. Komunikaty ustawisz w db/messages.xml:

<message>
    <deadline>180</deadline>
    <text>Restart za 10 minut. Zabezpiecz ekwipunek.</text>
</message>
<message>
    <deadline>190</deadline>
    <shutdown>1</shutdown>
    <text>Restart serwera.</text>
</message>

Gdzie szukać przyczyn awarii

  • *.RPT — błędy skryptów, brakujące klasy, problemy z modami,
  • *.ADM — akcje graczy: zabójstwa, budowanie, połączenia (podstawa moderacji),
  • script_*.log — wyjątki w kodzie Enforce Script,
  • crash_* — dumpy po twardym zawieszeniu procesu.

Przy raporcie o duplikacji przedmiotów zaczynaj od .ADM: koreluj czas zdarzenia z logami połączeń. Filtrowanie po nicku:

grep -i "nick_gracza" profiles/*.ADM | tail -n 50

Kopie zapasowe persistence

Krytyczny katalog to mpmissions/dayzOffline.chernarusplus/storage_1/. Zawiera bazy graczy, pojazdy i stan ekonomii. Kopię wykonuj po restarcie, gdy serwer jest wyłączony — zrzut z działającej instancji bywa niespójny. Automatyczne kopie zapasowe dostępne na infrastrukturze Fly-Serv działają w tle, ale własny archiwalny snapshot przed każdą większą zmianą types.xml lub listy modów oszczędza wiele godzin.

tar -czf backup_$(date +%F_%H%M).tar.gz \
    mpmissions/dayzOffline.chernarusplus/storage_1/

Dobre praktyki bezpieczeństwa

  • verifySignatures = 2 i komplet kluczy .bikey — bez tego wpuszczasz dowolne addony klienckie,
  • osobne, długie hasła dla passwordAdmin i RCON, rotowane po każdej zmianie w ekipie,
  • subkonta w panelu zamiast dzielenia jednego dostępu między moderatorów,
  • ograniczony dostęp do RCON tylko dla zaufanych adresów IP,
  • aktualizacja serwera i modów wykonywana razem, nigdy pojedynczo.

Pełną listę parametrów startowych i dyrektyw konfiguracyjnych utrzymuje Bohemia Interactive: DayZ Server Configuration. Jeśli prowadzisz kilka światów survivalowych równolegle, podobne mechanizmy persistence i ekonomii znajdziesz też w innych tytułach opisanych w sekcji Wszystkie nasze serwery gier oraz w poradnikach na Blog Fly-Serv.

Ostatnia rada praktyczna: trzymaj katalog misji w repozytorium Git. Każda zmiana w types.xml, cfggameplay.json czy events.xml staje się wtedy odwracalna jednym poleceniem, a przy pracy w zespole moderatorów historia commitów pokazuje, kto i kiedy podniósł spawn amunicji.



Podsumowanie

Konfiguracja serwera DayZ opiera się na kilku warstwach: serverDZ.cfg odpowiada za sloty i zasady dostępu, parametry startowe za mody i wydajność, a pliki misji za ekonomię oraz odczucia z rozgrywki. Zmieniaj po jednym elemencie naraz, obserwuj logi .RPT i .ADM, rób kopie storage_1 przed każdą modyfikacją. Ta dyscyplina oszczędza najwięcej czasu.



FAQ

Dlaczego mój serwer DayZ nie pojawia się na liście w launcherze?

Najczęściej winny jest port zapytań Steam. Upewnij się, że steamQueryPort w serverDZ.cfg (domyślnie 27016) jest otwarty na UDP i przekierowany tak samo jak port rozgrywki 2302. Sprawdź nasłuch poleceniem ss -lunp | grep 27016. Drugą przyczyną bywa brak parametru -config= w linii startowej — serwer wystartuje wtedy z ustawieniami domyślnymi.

Jak dodać przedmioty z moda do puli lootu, nie psując aktualizacji gry?

Nie edytuj db/types.xml. Utwórz katalog custom/ w folderze misji,