📋

Basic Server Install & Upgrade Guide

DayZ Epoch — A2OA setup, MySQL, BattlEye & security hardening

Based on the official DayZ Epoch Readme ↗ by the Epoch Mod Team

Download Epoch ↗
⚠️
Before you start — read these first
  • Both server and client must be updated to A2OA stable 1.64.0.144629 or newer. Do NOT use beta builds — wait until A2/OA updates reach the stable channel.
  • Do not copy ArmA 2 addon files or PBOs into the ArmA 2 OA/Expansion directory. Instead, load ArmA 2 addons via a -mod flag: -mod=C:\Program Files (x86)\Steam\SteamApps\common\Arma 2;EXPANSION;ca
  • If you have already copied ArmA 2 addons into your ArmA 2 OA Expansion/Addons folder: uninstall ArmA 2 OA, completely delete the ArmA 2 OA Expansion folder, then reinstall cleanly.

Basic Install Guide

  1. Install Visual C++ Redistributables

    Install or update your Visual Studio Redistributable packages using the installers found in the Visual Studio C++ Redistributables directory included with the Epoch server files.

  2. Set up MySQL

    Install or update MySQL Server on the server machine. Then, in your MySQL client (MySQL Workbench, HeidiSQL, or the command line):

    1. Create a new database. dayz_epoch is the conventional name, but it doesn't have to be — you can call it whatever you like. Just remember the name, because it must be entered as the Database value in HiveExt.ini later.
    2. Execute epoch.sql on that database to create the tables.
    3. Execute add_recommended_mysql_events.sql on the same database to add the recommended cleanup events.
    4. Create a MySQL user for the server and grant it access to the database, using legacy password auth (see below).
    5. Confirm the MySQL event scheduler is turned on (see below).
    ⚠️
    MySQL 8+: enable legacy password authentication. Epoch's HiveExt.dll is old and can only log in using the legacy mysql_native_password plugin. Modern MySQL (8.0+) defaults to caching_sha2_password, which Hive can't use — so the server will fail to connect to the database unless you create its user with the native plugin (adjust the names/password to match your setup):
    CREATE USER 'dayz'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourStrongPassword';
    GRANT ALL PRIVILEGES ON dayz_epoch.* TO 'dayz'@'localhost';
    FLUSH PRIVILEGES;
    To convert an existing user instead:
    ALTER USER 'dayz'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourStrongPassword';
    On MySQL 8.4+ the native plugin is disabled by default — enable it by adding mysql_native_password=ON under [mysqld] in my.ini and restarting MySQL. (On 8.0–8.3 you can instead set default-authentication-plugin=mysql_native_password.)
    💡
    Confirm the event scheduler is on. The recommended events handle automatic database cleanup and only run while the scheduler is active. Check its status with:
    SHOW VARIABLES LIKE 'event_scheduler';
    If it returns OFF, turn it on for the current session:
    SET GLOBAL event_scheduler = ON;
    To keep it enabled across MySQL restarts, add this under [mysqld] in my.ini and restart the service:
    event_scheduler=ON
  3. Download and extract the Epoch files

    Download both the client and server files and extract them into the root ArmA 2 Operation Arrowhead folder, for example:

    C:\Program Files (x86)\Steam\steamapps\common\Arma 2 Operation Arrowhead

    On some Windows systems, DLL files may need to be unblocked after extraction. Right-click the file → Properties → click Unblock. Additionally, copy the DLLs from the dlls folder into the server root folder (the directory containing arma2oaserver.exe).

  4. Set up the @DayZ_Epoch_Server mod folder

    The server loads as a mod folder in your OA root. The release normally includes it, but if you're assembling it by hand, build this structure inside your Arma 2 Operation Arrowhead directory:

    ...\Arma 2 Operation Arrowhead\
    ├─ @DayZ_Epoch_Server\
    │  ├─ addons\
    │  │  └─ dayz_server.pbo
    │  └─ HiveExt.dll          (HiveExt.ini sits alongside it)
    └─ MPMissions\
       └─ DayZ_Epoch_11.Chernarus    (the map[s] you plan to run)
    1. Create the @DayZ_Epoch_Server folder in the OA root.
    2. Inside it, create an addons folder and place dayz_server.pbo in it.
    3. Place HiveExt.dll directly in @DayZ_Epoch_Server (with HiveExt.ini next to it).
    4. Put the mission folder(s) or .pbo(s) for the map(s) you want to run into the MPMissions folder (e.g. DayZ_Epoch_11.Chernarus).
    💡
    Install PBO Manager. You'll need it to unpack and repack .pbo files (the mission and dayz_server.pbo) whenever you edit them. Download PBO Manager — then right-click any .pbo to extract or pack it.
  5. Move the server config folder outside the game directory

    Move the DZE_Server_Config folder to the root of your drive (e.g. C:\DZE_Server_Config) or another location outside the arma2oaserver.exe folder and its subfolders. Keeping config files outside the game directory is an important security measure — it prevents scripts from reading your passwords via directory traversal.

  6. Edit the configuration files
    1. Open HiveExt.ini and fill in your MySQL connection details under [Database]IP, Port, Username, Password and Database. The Database value must match the database name you created in MySQL (dayz_epoch or your custom name).
    2. Open your server config file (the *_map.cfg, e.g. 11_chernarus.cfg) and set a strong admin password. This file is also where you set the public-facing server options:
      • hostName — the server name shown in the in-game server browser
      • password — password players must enter to join (leave blank for an open/public server)
      • passwordAdmin — the admin / RCon login password
      • maxPlayers — number of player slots
      • motd[] — the message of the day shown to players as they join the lobby
    3. Open BEServer.cfg in the BattlEye folder and set a strong RCon password.
  7. Configure the mission folder

    Server-side gameplay options live inside the mission .pbo in MPMissions\ (e.g. DayZ_Epoch_11.Chernarus.pbo). Unpack it with PBO Manager, edit, then repack. The main file to review is configVariables.sqf, which controls things like:

    • Spawn selection and starting loadouts
    • Safe zones / trader-city god mode
    • Day/night cycle and time acceleration
    • Vehicle, trader and economy tuning, plus many other gameplay toggles
    💡
    Each option in configVariables.sqf is documented with inline comments — read them, and change one thing at a time so a bad value is easy to trace. Your server's instance number (set in the mission's init.sqf) must match the instance value in your database. Remember to repack the PBO after editing.
  8. Launch the server

    Run the desired *_map.bat file to start the server for the map you configured.

  9. Port forwarding (if needed)

    If players cannot connect, you may need to open the following ports in your server's software and hardware firewalls:

    Port(s)ProtocolPurpose
    2302UDPArmA game traffic (primary)
    2303UDPArmA game traffic (secondary)
    2304UDPArmA game traffic
    2305UDPArmA game traffic
    2306UDP / TCPBattlEye RCon
  10. Running multiple servers on the same machine

    To host more than one server from a single machine:

    1. Create a copy of the DZE_Server_Config folder with a unique name for each additional server.
    2. Update the config folder name referenced inside each *_map.bat.
    3. Use different port numbers in each server's *_map.cfg and *_map.bat.
    4. Update HiveExt.ini settings if each server uses a separate database.
    5. Make a copy of arma2oaserver.exe for each instance, give each a unique name (e.g. arma2oaserver_1.exe, arma2oaserver_2.exe), and point each *_map.bat at its own renamed copy.
    💡
    Why rename the executable? Epoch itself doesn't strictly require it, but it's strongly recommended with multiple instances. Process-watchers, auto-restart scripts and monitoring tools (BEC schedulers, FireDaemon, Task Scheduler, etc.) identify a server by its executable name — giving each instance a uniquely named copy of arma2oaserver.exe lets those tools target and restart the correct server instead of guessing between identical processes.

Basic Upgrading Guide

⬆️
Upgrading from an older version of Epoch? If you already have a running server and just want to move it to the latest release, follow the steps below instead of doing a full reinstall. Starting completely fresh? You can skip this section.
  1. Re-run steps 1–3 from the install guide

    Ensure Visual C++ redistributables are current, MySQL is up to date, and the new Epoch files are extracted to the correct location.

  2. Update server components

    Replace the following with the new versions from the download:

    • MPMission folder
    • dayz_server.pbo
    • BattlEye filter files
    • HiveExt.dll
  3. Update the database
    1. Connect to MySQL and make a full backup of dayz_epoch before proceeding.
    2. Open the included *_Updates.sql file and read the comments carefully, especially those at the bottom of the file.
    3. Run the appropriate update queries against the dayz_epoch database.
  4. Clean up old BIKeys

    Inside the server Keys folder, remove any DayZ_Epoch*.bikey files from previous versions.

  5. Fresh or diffmerged dayz_server.pbo
    🔴
    Critical: You must either start with a completely fresh dayz_server.pbo or carefully diffmerge your current customised version against the latest release. Skipping this step will break your server.

⚠ Security Advisory

🔴
The included startup files and folder structure are examples only. All default passwords must be changed before the server goes live. Profile and config folders should be placed outside your OA directory. Do not forget to change the password in BEServer.cfg.

Your server config directory, profiles, and startup files must be kept outside your ArmA 2 / OA root directory so that they cannot be read by hackers or scripters who exploit directory traversal vulnerabilities. The instructions below show how to set that up.

In this example we place the profiles directory at C:\DZE_Server_Config. Adjust the path to suit your setup and select the correct map .cfg for your server.

Modify your startup.bat to point the following flags at your new config directory:

"-profiles=C:\DZE_Server_Config"
"-BEpath=C:\DZE_Server_Config\BattlEye"
"-config=C:\DZE_Server_Config\11_chernarus.cfg"
"-cfg=C:\DZE_Server_Config\basic.cfg"
💡
You can gain additional security by appending random characters to your config file names and BE folder name — this makes them harder to guess if an attacker attempts directory enumeration.

Content based on the official DayZ Epoch Server Readme by the Epoch Mod Team. Always refer to the latest readme for the most current information.