Arma: server.cfg, Missions and Mods

The three config files, mission rotation that works, the difference between -mod and -serverMod, signatures and the keys folder - plus the admin commands.


Three files, three jobs

File Loaded with What it controls
server.cfg -config= Server name, passwords, admins, missions, security
basic.cfg -cfg= Network settings and bandwidth
<name>.Arma3Profile -profiles= + -name= Difficulty and which aids players get

Arma has no default config. If -config= points at a file that does not exist, no configuration is loaded - with no error message. The server starts fine, but without your name, your missions and your settings. It is the most common "why is nothing happening" case.

The names server.cfg and basic.cfg are pure convention. It is the startup parameters that decide which files are read.


server.cfg

hostname          = "My Arma server";
password          = "";
passwordAdmin     = "pick-something-long";
maxPlayers        = 40;
motd[]            = {"Welcome to the server.", "Rules are in our Discord."};
admins[]          = {"76561198000000000"};

logFile           = "server_console.log";
timeStampFormat   = "short";

verifySignatures  = 2;
BattlEye          = 1;
kickduplicate     = 1;
allowedFilePatching = 0;

disableVoN        = 0;
vonCodecQuality   = 10;

persistent        = 1;
Key Meaning
hostname The name in the server browser
password Password to join. Empty = open server
passwordAdmin Used with #login in-game
admins[] SteamID64. Those listed can use #login without a password
maxPlayers The cap is the lower of this and the mission's slot count
verifySignatures 2 requires every client mod to be signed. 1 is deprecated and behaves like 2
kickduplicate Kicks a second player with the same ID
allowedFilePatching 0 none, 1 headless clients only, 2 everyone
persistent 1 keeps the mission running when the last player leaves
timeStampFormat none, short or full in the log
missionWhitelist[] Restricts which missions an admin may pick

Remember a semicolon after every line. That is the second big source of errors.


Missions

Missions are .pbo files in the mpmissions/ folder. The name follows the pattern MissionName.Terrain.pbo.

In server.cfg the rotation is set up like this:

class Missions
{
	class Mission1
	{
		template = MP_Marksmen_01.Altis;
		difficulty = "veteran";
		class Params {};
	};
	class Mission2
	{
		template = MP_End_Game_01.Altis;
		difficulty = "veteran";
		class Params {};
	};
};

Three things that go wrong:

  • template is written without quotes and without .pbo. The file MP_Marksmen_01.Altis.pbo becomes template = MP_Marksmen_01.Altis;
  • Every inner class closes with }; - both the brace and the semicolon
  • The outer class Missions also closes with };

difficulty takes the name of a difficulty: recruit, regular, veteran or custom. Choose custom and the settings come from CustomDifficulty in your profile file.

Without an admin on the server it picks a mission itself when the first player connects, and moves to the next in the cycle when the mission ends.

To keep the mission running with no players, set persistent = 1; and start the server with -autoInit.


Mods

There are two parameters, and the difference matters:

Parameter Meaning
-mod= Mods players must also have. Maps, weapons, ACE, CBA, RHS
-serverMod= Mods that run only on the server. Admin and logging tools. Players do not need them

The syntax is semicolon-separated with no spaces:

-mod=@CBA_A3;@ace;@RHSUSAF
-serverMod=@serverTools

On Linux the semicolons have to be escaped: -mod=@CBA_A3\;@ace\;@RHSUSAF. Without that, only the first mod is loaded.

Linux is also case-sensitive. A mod that works on Windows can fail on the server because folder or file names contain capitals. It is the classic Arma-on-Linux failure.

Dependencies first: @CBA_A3 has to come before the mods that require it.

Signatures and the keys folder

With verifySignatures = 2; the server checks that every single .pbo on the player's side is signed with a key the server knows.

  1. Every mod has a keys folder with a .bikey file.
  2. Copy that .bikey into the server's own keys/ folder in the root directory.
  3. Restart.

If the key is missing, the player is rejected - even with exactly the right mod installed.


basic.cfg

The network settings. The defaults work for most servers:

MinBandwidth = 131072;
MaxBandwidth = 10000000000;
MaxMsgSend = 128;
MaxSizeGuaranteed = 512;
MaxSizeNonguaranteed = 256;
MinErrorToSend = 0.001;
MinErrorToSendNear = 0.01;
MaxCustomFileSize = 0;
Key Default Meaning
MaxMsgSend 128 Packets per simulation cycle
MaxSizeGuaranteed 512 Size of guaranteed packets - shooting, for instance
MaxSizeNonguaranteed 256 Size of non-guaranteed packets - positions, for instance
MinBandwidth 131072 Guaranteed bandwidth
MaxCustomFileSize 0 0 means players may not bring custom files

MinBandwidth and MaxBandwidth are in bits per second, not bytes. This is constantly misread.


Admin in-game

Type this in chat:

#login your-admin-password

If you are in admins[], plain #login is enough.

Command What it does
#missions Pick a mission from the list
#restart Restart the mission
#reassign Start over and reassign roles
#lock / #unlock Close and open the server to new players
#kick <name> Kick a player
#exec ban <name> Ban a player. The ID is written to ban.txt
#init Reload server.cfg
#monitor 5 Show server performance every five seconds
#userlist List everyone on the server
#shutdown Shut the server down

A logged-in admin outranks a voted admin elected by the players.


Headless client - briefly

A headless client is an extra Arma process that connects as a player-less client and takes over the AI, so the server can concentrate on the players.

In server.cfg:

headlessClients[] = {"127.0.0.1"};
localClient[]     = {"127.0.0.1"};

It has to run exactly the same -mod= list as the server, and if the server has a password it needs that too. Note that the mission itself has to be written to use headless clients - otherwise it makes no difference.


Troubleshooting

Symptom Likely cause Fix
The server starts but without my settings -config= points at a file that does not exist Check the path - there is no default file
The server refuses to start Syntax error: a missing semicolon or brace Check }; after every class in particular
The mission list is empty The .pbo is not in mpmissions/, or template includes .pbo Fix both
The player is rejected with a signature error The .bikey is not in the server's keys/ folder Copy the key over and restart
The player is rejected for a mod mismatch The mod is in -serverMod= but players need it Move it to -mod=
Only the first mod loads on Linux Semicolons not escaped Use \; between mods
Mods work on Windows but not on the server Capital letters in filenames Everything has to be lowercase on Linux
Players are kicked on join MaxCustomFileSize is 0 That is deliberate - raise it if you want to allow custom files
The mission stops when the last player leaves persistent = 0 Set it to 1 and use -autoInit
The difficulty does not change difficulty points at a preset, or the profile is not loaded Check -name= and -profiles=
Random BattlEye kicks BattlEye not updated at both ends Update BE on server and client

Good advice

  • Change one thing at a time, and use #init to reload server.cfg without restarting the whole server.
  • Keep verifySignatures = 2 and BattlEye = 1 enabled on a public server.
  • Use filePatchingExceptions[] sparingly - it skips both file patching and signature checks for the listed players.
  • Put your rules in motd[]. It is the first thing players see.
  • Take a copy of server.cfg before touching class Missions. One missing }; brings down the whole file.

Cannot get your server to load a mission or a mod? Send us server_console.log in a ticket - the error is usually stated plainly.

ArmaOrder now

Guide Information

Published
August 23, 2026
Last Updated
August 23, 2026
Views
12