ARMA II is a first person war game and ARMA II Operation Arrowhead is a standalone expansion pack to ARMA 2. The dedicated server component can be run as a Windows Service using FireDaemon Pro, which allows you to have the dedicated server start automatically at boot prior to login, start multiple instances of the dedicated server and more. This HOWTO will show you how to set it up. You can also use Fusion to manage FireDaemon and other Windows services via a web browser.

If you are only setting up an ARMA II server, you can disregard all the stuff about Operation Arrowhead.

ARMA II: Operation Arrowhead Dedicated Server Setup Under FireDaemon Pro

To set up an Operation Arrowhead server, you need to install ARMA II files in addition to the ARMA II: OA files since the expansion pack relies on content from the main game. There is no dedicated server package available. You can only install the server files if you own a copy of the game. The easy way to install them is via Steam's SteamPipe servers, but the caveat to this is that the Steam account must have ARMA II and/or ARMA II:OA purchased (Arma II: Combined Operations includes both). We suggest that you do not use your local client version of Steam as it will be logged out when you install or update the server files. You also risk having your Steam account hijacked or stolen should your server ever be hacked since the hackers could then get access to your Steam account.

To make your new Steam account for your server, go here. If you want to use your existing steam account that already has ARMA II and ARMA II: OA, then skip to downloading SteamCMD.

Purchase ARMA II: Combined Operations from the Steam store and gift it to the server account you just created.

Download and extract SteamCMD. The download is small (< 2 MB).

Download the ARMA II and ARMA II: OA server files via the Steam SteamPipe servers. Before you can download the files, go to the directory where you installed SteamCMD and create two shortcuts to "SteamCMD.exe". The content of the shortcut will depend on which version of ARMA II you are running. In the first shortcut, edit the properties and in the target box, at the end of it (with a space before the following), put:

ARMA II Server Only

Create a shortcut to steamcmd.exe. Edit the properties and in the target box, at the end of it (with a space before the following), put:
+login USERNAME PASSWORD +force_install_dir "C:\ARMAII" +app_update 33910 validate +quit

Note: Do not install ARMA II over the ARMA II: OA files as that will break things. First download ARMA II files, let it finish downloading and then start the OA files if you need them. If you started the OA install first, then install the ARMA II files into a different directory and then copy and paste the OA files into the ARMA II directory.

Operation Arrowhead Server Only

After creating the ARMA II shortcut, create a new shortcut to steamcmd.exe. Edit the properties and in the target box, at the end of it (with a space before the following), put:

+login USERNAME PASSWORD +force_install_dir "C:\ARMAII" +app_update 33930 validate +quit

Arma II OA Beta

Many mods like DayZ and derivative mods from DayZ also require the ARMA 2: OA beta installed. To install the beta, create an additional shortcut to steamcmd.exe, edit the properties and in the target box, at the end of it (with a space before the following), put:

+login USERNAME PASSWORD +force_install_dir "C:\ARMAII" +app_update 219540 validate +quit

Note: In all of the above cases, replace USERNAME with your Steam username and PASSWORD with your Steam password. You will need to enter a verification string if your steam account has SteamGuard enabled. The verification string will be sent to the email you set up as your Steam account email. This string only needs to be filled in once.

If you are just running an ARMA II server, click the only shortcut you created. If you are running an Operation Arrowhead server, then you will need to click both shortcuts to grab all the files. Wait until ARMA II finishes downloading before downloading the OA files. It will take a few hours to download everything because there are over 8GB of files. You should also run the shortcut every week or so to grab the latest server updates. Stop your server before downloading any updates.

Note: ARMA II/ARMA II: OA uses 2 configuration files to store its settings. You will need to make them by creating them in "C:\ARMAII\". Find the configs at the bottom of this howto. To create a map/mission cycle, please read this.

Next, download and install DirectX from the Microsoft website.

Download and install FireDaemon Pro into the directory of your choice, typically C:\Program Files\FireDaemon.

Next start the FireDaemon GUI from the desktop shortcut. Click on the "Create a new service definition" button in the toolbar (or type Ctrl+N) and enter the information into the fields as you see below. Adjust the paths to suit your installation. Note the required parameters.

Arma II

Arma II OA

The most important field on the tab is the Parameters. The Parameters define the initial setup of your server.

Here’s the full parameter list you should have:
-ip= -port=2302 "-config=pathto\config.cfg" "-cfg=pathto\basic.cfg" "-profiles=YourProfile" "-mod=@mod1;@mod2" -cpuCount=2 -exThreads=7 -bandwidthAlg=2 -maxMem=2047 -noSound

  • "-ip" It's useful to define this if your server is behind a NAT router or if your server machine has multiple IP's and you only want the server to listen on one IP. If you are hosting the server from home or do not know your server IP, then on the server, go to the following website to find your external IP address:
  • "-port" This set's the server port. It should be left on default unless you are running multiple servers on the same IP.
  • "-config" Loads the server config file.
  • "-profiles" Loads/saves profiles to the specified directory. This should be set as default location to save profiles is in your users folder of windows and its better to have all your configs in the same directory.
  • "-mod" This one is not needed if you are running an ARMA II/OA server with no mods. If you are running mods, you would put each mod name prefixed with an @ symbol and seperated by a semi-colon. Replace @mod1;@mod2 with whatever mods you're using.
    The next few parameters are performance related and may be too low or high depending on your server specs. You should research them before using. If you don't know about them, then do not use them.
  • "-cpuCount 2" Limits the number of cores your server uses to 2. This is usefull to prevent your whole machine from locking up should your server ever use 100% cpu.
  • "-exThreads 7" Limits the number of threads your server uses to 7.
  • "-bandwidthAlg 2" Changes the bandwidth algoritm to a better optimized one. This may improve bandwidth usage and management.
  • "-maxMem=2047" Limits the maximum amount of memory to 2GB. ARMA 2 servers in general never go above 500MB (even for 50 slot servers), this command is usefull to prevent memory leaks.
  • "noSound" Disables sound output when the server starts.

Now click on the Settings tab. If you DON'T want to see your dedicated server running, uncheck the Interact with Desktop check box & select "Hidden" from the "Show Window" dropdown. You can optionally run ARMA II as the user you installed it as. In the Logon Account field type your username (e.g. Administrator) and then enter the user's password twice in the Password and Confirm fields. You can change the Process Priority to allocate more CPU time to the dedicated server or specify which CPU or core the dedicated server will run on (in the case of multi-processor, hyperthreaded or multi-core CPUs).


Now click on the Lifecycle tab. Uncheck Graceful Shutdown as ARMA II doesn't respond to it.


Now click on the Install button to install and start ARMA II/OA!

ARMA II Configuration Files


// comments are written with "//" in front of them.

hostname = "My ARMA II Server";            // The name of the server that shall be displayed in the public server list
password = "";                        // Password for joining, eg connecting to the server
passwordAdmin = "CHANGEME";                    // Password to become server admin. When you're in ARMA MP and connected to the server, type '#login xyz'
reportingIP = "";        // For ARMA2: Operation Arrowhead
logFile = "server_console.log";                // Tells ARMA-server where the logfile should go and what it should be called

// WELCOME MESSAGE ("message of the day")
// It can be several lines, separated by comma
// Empty messages "" will not be displayed at all but are only for increasing the interval
motd[] = {
    "", "",
    "Two empty lines above for increasing interval",
    "Welcome to our server",
    "", "",
    "We are looking for fun - Join us Now !",
    "One more empty line below for increasing interval",
motdInterval = 5;                    // Time interval (in seconds) between each message

checkfiles[] = {};                    // Outdated.
maxPlayers = 64;                    // Maximum amount of players. Civilians and watchers, beholder, bystanders and so on also count as player.
kickDuplicate = 1;                    // Each ARMA version has its own ID. If kickDuplicate is set to 1, a player will be kicked when he joins a server where another player with the same ID is playing.
verifySignatures = 2;                    // Verifies .pbos against .bisign files. Valid values 0 (disabled), 1 (prefer v2 sigs but accept v1 too) and 2 (only v2 sigs are allowed).
equalModRequired = 0;                    // Outdated. If set to 1, player has to use exactly the same -mod= startup parameter as the server.
//requiredBuild = 103419                    // Require clients joining to have at least build 103419 of game, preventing obsolete clients to connect

voteMissionPlayers = 1;                    // Tells the server how many people must connect so that it displays the mission selection screen.
voteThreshold = 0.33;                    // 33% or more players need to vote for something, for example an admin or a new map, to become effective

disableVoN = 0;                        // If set to 1, Voice over Net will not be available
vonCodecQuality = 0;                    // since 1.62.95417 supports range 1-20 //since 1.63.x will supports range 1-30 //8kHz is 0-10, 16kHz is 11-20, 32kHz is 21-30
persistent = 1;                        // If 1, missions still run on even after the last player disconnected.
timeStampFormat = "short";                // Set the timestamp format used on each report line in server-side RPT file. Possible values are "none" (default),"short","full".
BattlEye = 1;                                           // Server to use BattlEye system

onUserConnected = "";                    //
onUserDisconnected = "";                //
doubleIdDetected = "";                    //
//regularCheck = "{}";                                  //  Server checks files from time to time by hashing them and comparing the hash to the hash values of the clients. Causes heavy I/O, uncomment to disable feature - READ WARNING ABOVE - makes cheating possible!

onUnsignedData = "kick (_this select 0)";        // unsigned data detected
onHackedData = "ban (_this select 0)";            // tampering of the signature detected
onDifferentData = "";                    // data with a valid signature, but different version than the one present on server detected

// MISSIONS CYCLE (see below)
class Missions {};


// These options are created by default

// These options are important for performance tuning

MinBandwidth = 131072;            // Bandwidth the server is guaranteed to have (in bps). This value helps server to estimate bandwidth available. Increasing it to too optimistic values can increase lag and CPU load, as too many messages will be sent but discarded. Default: 131072
MaxBandwidth = 10000000000;        // Bandwidth the server is guaranteed to never have. This value helps the server to estimate bandwidth available.

MaxMsgSend = 128;            // Maximum number of messages that can be sent in one simulation cycle. Increasing this value can decrease lag on high upload bandwidth servers. Default: 128
MaxSizeGuaranteed = 512;        // Maximum size of guaranteed packet in bytes (without headers). Small messages are packed to larger frames. Guaranteed messages are used for non-repetitive events like shooting. Default: 512
MaxSizeNonguaranteed = 256;        // Maximum size of non-guaranteed packet in bytes (without headers). Non-guaranteed messages are used for repetitive updates like soldier or vehicle position. Increasing this value may improve bandwidth requirement, but it may increase lag. Default: 256

MinErrorToSend = 0.001;            // Minimal error to send updates across network. Using a smaller value can make units observed by binoculars or sniper rifle to move smoother. Default: 0.001
MinErrorToSendNear = 0.01;        // Minimal error to send updates across network for near units. Using larger value can reduce traffic sent for near units. Used to control client to server traffic as well. Default: 0.01

MaxCustomFileSize = 0;            // (bytes) Users with custom face or custom sound larger than this size are kicked when trying to connect.