πŸ“š DayZ Mod for ARMA 2 Server Guide

Zombie survival mod that revolutionized the genre

Quick Info

Base Game:ARMA 2: Operation Arrowhead + ARMA 2 (Combined Operations)
Version:DayZ Mod 1.9.0+ (final official release)
Database:MySQL/MariaDB required for character persistence
Server Type:Reality build + Hive server architecture
Max Players:Up to 100 (50-60 typical for performance)
Anti-Cheat:BattlEye required
Port:2302 UDP (game), 2303 UDP (query)

Navigation

Overview

DayZ Mod is the original zombie survival mod for ARMA 2 that popularized the survival genre. Players spawn on a massive map with minimal gear, scavenging for supplies while avoiding zombies and other players in a persistent open world.

Key Features

Architecture Overview

DayZ Mod uses a unique two-server architecture:

πŸ’Ύ Database Setup

Installing MySQL/MariaDB

Ubuntu/Debian

# Install MariaDB
sudo apt-get update
sudo apt-get install mariadb-server mariadb-client

# Secure installation
sudo mysql_secure_installation

# Start service
sudo systemctl start mariadb
sudo systemctl enable mariadb

Windows

# Download MySQL Community Server from mysql.com
# Or use XAMPP which includes MySQL

# Install MySQL Server
# Set root password during installation
# Ensure MySQL service is running

Creating DayZ Database

# Login to MySQL
mysql -u root -p

# Create database
CREATE DATABASE dayz_epoch CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

# Create user with permissions
CREATE USER 'dayz'@'localhost' IDENTIFIED BY 'your_secure_password';
GRANT ALL PRIVILEGES ON dayz_epoch.* TO 'dayz'@'localhost';
FLUSH PRIVILEGES;

# If Hive is on different machine
CREATE USER 'dayz'@'%' IDENTIFIED BY 'your_secure_password';
GRANT ALL PRIVILEGES ON dayz_epoch.* TO 'dayz'@'%';
FLUSH PRIVILEGES;

Importing DayZ Schema

DayZ Mod includes SQL schema files in the database folder:

# Import the schema (adjust path to your installation)
mysql -u root -p dayz_epoch < path/to/dayz_server/SQL/dayz_schema.sql

# Or import via MySQL client
mysql -u root -p
USE dayz_epoch;
SOURCE /path/to/dayz_server/SQL/dayz_schema.sql;

Database Tables (Key Tables)

Table Purpose
character_data Player characters (inventory, position, stats)
survivor_data Survivor profile information
object_data Persistent objects (tents, storage, vehicles)
player_data Player login tracking
instance_deployable Deployed items (wire, tank traps)

πŸ“₯ Server Installation

Prerequisites

Linux Installation

# Install ARMA 2 OA server via SteamCMD
steamcmd +force_install_dir ~/arma2oa_server +login YOUR_USERNAME +app_update 33935 validate +quit

# Download DayZ Mod server files
# Available from DayZ GitHub: https://github.com/DayZMod/DayZ
# Or DayZ Launcher repositories

# Extract DayZ files
cd ~/arma2oa_server
unzip dayz_server_files.zip

# Install Reality build (custom ARMA 2 build for DayZ)
# Copy @Reality folder to server root
cp -r /path/to/@Reality ~/arma2oa_server/

# Install HiveExt
# Copy HiveExt.so to server root
cp HiveExt.so ~/arma2oa_server/

# Set permissions
chmod +x ~/arma2oa_server/arma2oaserver
chmod +x ~/arma2oa_server/HiveExt.so

Windows Installation

# Install ARMA 2 OA server via SteamCMD
steamcmd +force_install_dir C:\arma2oa_server +login YOUR_USERNAME +app_update 33935 validate +quit

# Download and extract DayZ Mod server files
# Extract to C:\arma2oa_server\

# Install @Reality folder
# Copy to C:\arma2oa_server\@Reality\

# Install HiveExt.dll
# Copy to C:\arma2oa_server\

πŸ”§ Hive Server Configuration

HiveExt.ini

Configure HiveExt.ini in server root:

[Database]
;Hostname or IP of the MySQL server
Host = 127.0.0.1

;Port to connect to MySQL (default 3306)
Port = 3306

;Database name
Database = dayz_epoch

;Username
Username = dayz

;Password
Password = your_secure_password

[Time]
;Type of time to use
;Possible values:
; Local (use server machine time)
; Static (use fixed time from config)
; Custom (use time from database)
Type = Local

;If Type is Static, set the time here (24-hour format)
Hour = 8
Minute = 0

[Logging]
;Enable detailed logging for debugging
;0 = Off, 1 = Errors only, 2 = All
LogLevel = 1
LogFile = HiveExt.log

Database Connection Test

Test database connectivity before starting server:

# Linux
telnet 127.0.0.1 3306

# Windows
Test-NetConnection -ComputerName 127.0.0.1 -Port 3306

# Or use MySQL client
mysql -h 127.0.0.1 -u dayz -p dayz_epoch

βš™οΈ ARMA Server Configuration

server.cfg

Basic ARMA 2 server configuration:

hostname = "My DayZ Server";
password = "";
passwordAdmin = "AdminPassword";
serverCommandPassword = "RconPassword";

maxPlayers = 50;
kickDuplicate = 1;
verifySignatures = 2;  // BattlEye enforcement
BattlEye = 1;

persistent = 1;  // Required for DayZ persistence

// Mission file
class Missions
{
    class DayZ
    {
        template = dayz_1.chernarus;
        difficulty = "regular";
    };
};

motd[] = {
    "Welcome to My DayZ Server",
    "Visit our website: example.com"
};

motdInterval = 300;

disableVoN = 0;  // Voice enabled
vonCodecQuality = 10;

// Performance settings
MinBandwidth = 768000;
MaxBandwidth = 10000000;
MaxMsgSend = 256;
MaxSizeGuaranteed = 512;
MaxSizeNonguaranteed = 256;
MinErrorToSend = 0.001;
MinErrorToSendNear = 0.01;

Mission Folder Structure

MPMissions/
└── dayz_1.chernarus/
    β”œβ”€β”€ mission.sqm          // Mission file (player spawn, time settings)
    β”œβ”€β”€ init.sqf             // Initialization script
    β”œβ”€β”€ description.ext      // Mission description and parameters
    β”œβ”€β”€ scripts/             // Custom scripts folder
    └── addons/              // Mission-specific addons

init.sqf (Sample)

// DayZ initialization
startLoadingScreen ["","RscDisplayLoadCustom"];
cutText ["","BLACK OUT"];
enableSaving [false, false];

// Variables
dayZ_instance = 1;  // Server instance ID
dayzHiveRequest = [];
initialized = false;

// Load DayZ
call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\variables.sqf";
progressLoadingScreen 0.1;
call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\publicEH.sqf";
progressLoadingScreen 0.2;
call compile preprocessFileLineNumbers "\z\addons\dayz_code\medical\setup_functions_med.sqf";
progressLoadingScreen 0.4;
call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\compiles.sqf";
progressLoadingScreen 0.5;

// Server-side initialization
if (isServer) then {
    call compile preprocessFileLineNumbers "\z\addons\dayz_server\system\dynamic_vehicle.sqf";
    call compile preprocessFileLineNumbers "\z\addons\dayz_server\system\server_monitor.sqf";
};

progressLoadingScreen 1.0;
cutText ["","BLACK IN", 1];

πŸ›‘οΈ BattlEye Filters

BattlEye Configuration

BattlEye filters in BattlEye/ folder prevent exploits and hacks. DayZ-specific filters are critical.

Key Filter Files

Updating Filters

# Download latest filters from community sources
# Recommended: DayZ GitHub or DZMS filter packs

# Example: Download from GitHub
wget https://github.com/DayZMod/DayZ/tree/master/BattlEye -O battleye_filters.zip
unzip battleye_filters.zip -d BattlEye/

# Always backup existing filters before updating!
cp -r BattlEye/ BattlEye_backup_$(date +%Y%m%d)/

Common BattlEye Issues

πŸ—ΊοΈ Maps & Variants

Official Maps

Map Installation

Additional maps require mission files and sometimes map addons:

# Install map addon (e.g., @Namalsk)
cp -r @Namalsk ~/arma2oa_server/

# Add to startup parameters
-mod=@Reality;@DayZ;@Namalsk

# Install mission file
cp -r dayz_1.namalsk MPMissions/

πŸš€ Startup & Launch

Linux Startup Script

#!/bin/bash
# start_dayz.sh

# Variables
SERVER_DIR="/home/user/arma2oa_server"
CONFIG="server.cfg"
PORT="2302"
MODS="-mod=@Reality;@DayZ"

cd $SERVER_DIR

# Start server
./arma2oaserver \
    $MODS \
    -port=$PORT \
    -config=$CONFIG \
    -cfg=basic.cfg \
    -profiles=profiles \
    -name=server \
    -world=empty \
    -nosound \
    -noCB \
    -cpuCount=4 \
    -exThreads=7

Windows Startup Batch

@echo off
REM start_dayz.bat

SET SERVER_DIR=C:\arma2oa_server
SET MODS=-mod=@Reality;@DayZ
SET PORT=2302

cd %SERVER_DIR%

start "DayZ Server" /high arma2oaserver.exe ^
    %MODS% ^
    -port=%PORT% ^
    -config=server.cfg ^
    -cfg=basic.cfg ^
    -profiles=profiles ^
    -name=server ^
    -world=empty ^
    -cpuCount=4 ^
    -exThreads=7

Startup Parameters Explained

πŸ”§ Troubleshooting

Hive Connection Failed

# Check HiveExt.log for errors
tail -f HiveExt.log

# Common causes:
# 1. Wrong database credentials in HiveExt.ini
# 2. MySQL not running
# 3. Firewall blocking port 3306
# 4. Database name doesn't exist

# Test connection manually
mysql -h 127.0.0.1 -u dayz -p dayz_epoch

# Check MySQL is listening
netstat -an | grep 3306

Players Spawn as Seagulls

This indicates database connection issues:

Server Crashes on Startup

# Check server logs
tail -f arma2oaserver.rpt

# Common causes:
# 1. Missing @Reality or @DayZ files
# 2. Corrupted mission file
# 3. Wrong mod load order
# 4. Insufficient RAM (4GB+ recommended)

# Verify mod folders exist
ls -la @Reality
ls -la @DayZ

# Check mission file syntax
# mission.sqm must be valid ARMA format

BattlEye Kicking All Players

Character Data Not Saving

# Verify database connection
mysql -u dayz -p dayz_epoch

# Check character_data table
SELECT * FROM character_data LIMIT 10;

# Verify HiveExt is loading
grep "HiveExt" arma2oaserver.rpt

# Check for SQL errors in HiveExt.log
grep "ERROR" HiveExt.log

Poor Server Performance

Pro Tips

Resources