Arma Reforger server_config.json Explained: Every Setting
An Arma Reforger dedicated server is configured by one JSON file that you point the server at with -config. The file name is your choice; people commonly call it config.json or server_config.json. The defaults that matter most: game port 2001 (UDP), Steam query port 17777, 64 player slots, BattlEye on, and the server visible in the browser.
This guide walks through every key in the official Bohemia Interactive Community Wiki "Server Config" page, including the renames that break older tutorials. The wiki's newest version marker on that page is 1.2.0; everything here was checked against it on 2026-11-01, so confirm against the wiki after a major update.
- Run the server with
-config PATH. Install it through SteamCMD with app ID 1874900 (stable) or 1890870 (experimental). - Defaults:
bindPort2001 (UDP),a2s.port17777,maxPlayers64 (range 1 to 256),visibletrue,battlEyetrue. - Since 0.9.8.73 the old
gameHost*keys becamebind*andpublic*, andsupportedGameClientTypesbecamesupportedPlatforms. scenarioIdlooks like{ECC61978EDCC2B5A}Missions/23_Campaign.conf. Run the server with-listScenariosto log the valid ones.- Set
game.passwordAdminorgame.adminsbefore you need them; admins log in with#loginin chat.
On this page
- Starting the server with your config file
- Ports and addresses: bindPort, publicAddress and a2s
- The game block: name, passwords, admins, players
- gameProperties: view distance, BattlEye, voice and perspective
- The operating block
- A complete example server_config.json
- Old key names that break older tutorials
- Server not showing up or players cannot join
- Frequently asked questions
- References
Starting the server with your config file
The dedicated server executable is ArmaReforgerServer.exe on Windows and ArmaReforgerServer on Linux. Install or update it with SteamCMD using anonymous login: app_update 1874900 validate for the stable branch, or 1890870 for experimental. Match the branch to the one your players run.
# Windows
ArmaReforgerServer.exe -config ".\Configs\my_server.json" -maxFPS 60
# Linux
./ArmaReforgerServer -config /home/USER/.config/ArmaReforgerServer/config.json -profile /home/USER/.config/ArmaReforgerServer -maxFPS 60On a hosted server the host normally launches the server for you, so you edit the same config file (over SFTP or your host's editor) instead of building the command yourself. It must be strictly valid JSON, so no comments and no trailing commas. A server that refuses to start after an edit often has a stray comma or quote.
-maxFPS is not in the config file but belongs in your launch line. Bohemia says it is heavily recommended, with a value between 60 and 120, because otherwise the server can try to use all available resources.
Ports and addresses: bindPort, publicAddress and a2s
| Setting | What it does | Default |
|---|---|---|
bindAddress | Local IP the server socket binds to. Usually left empty. | empty (treated as 0.0.0.0) |
bindPort | UDP port the server listens on (1 to 65535). | 2001 |
publicAddress | The IP clients use to reach you. Either the server's own public IP or that of the machine forwarding to it. | empty (detected automatically by the backend) |
publicPort | UDP port registered with the backend. Match bindPort if the server has its own public IP; otherwise use the forwarded port. | 2001 |
a2s.address | IP the Steam Query (A2S) socket binds to. Required if you use the a2s block. Added in 0.9.9.31. | none |
a2s.port | UDP port for Steam Query requests. | 17777 |
rcon | Optional remote console block with address, port, password, permission, blacklist, whitelist and maxClients. | port 19999, permission monitor |
Open 2001 UDP for players and 17777 UDP if you want the server to answer Steam Query. If you leave RCON out, there is nothing else to expose. If you enable it, use a strong password with no spaces, keep permission at monitor (read-only commands) unless you truly need admin, and do not expose the RCON port to the public internet.
The game block: name, passwords, admins, players
| Setting | What it does | Default |
|---|---|---|
game.name | Server name in the browser, 0 to 100 characters. | none |
game.password | Password players must enter to join. Empty means open. | empty |
game.passwordAdmin | Admin password. Players log in by typing #login PASSWORD in chat. | empty |
game.admins | Array of identity IDs and/or Steam IDs of server admins (since 0.9.9.31). From 1.0.0, listed users can use #login without a password. | empty array |
game.scenarioId | Which scenario to run. See the scenarios guide. | none |
game.maxPlayers | Player slots, 1 to 256. | 64 |
game.visible | Whether the server appears in the Server Browser. | true |
game.crossPlatform | If true, adds the PC and Xbox platforms to the supported platforms when missing. Does nothing when false. | false |
game.supportedPlatforms | Platforms the server accepts. The wiki lists PLATFORM_PC and PLATFORM_XBL (Xbox). | ["PLATFORM_PC"] |
game.mods | Mods clients must have, each with modId, name and version. See the mods guide. | empty array |
About crossplay: the wiki page lists only the PC and Xbox values. Hosting guides, including our own knowledgebase article on crossplay, also use PLATFORM_PSN for PlayStation 5 players, so check the current wiki and patch notes for your version before you rely on it. Console players and mods are a separate problem; see the mods guide.
A note on the name key inside mods entries: it has no function and is only a comment to remind you which mod an ID is.
gameProperties: view distance, BattlEye, voice and perspective
| Setting | What it does | Default |
|---|---|---|
serverMaxViewDistance | Maximum view distance the server allows, 500 to 10000. | 1600 |
serverMinGrassDistance | Minimum grass distance in meters (0, or 50 to 150). 0 imposes nothing on clients. | 0 |
networkViewDistance | Maximum streaming range for replicated entities, 500 to 5000. | 1500 |
fastValidation | Fast validation of map entities on join. Bohemia says to enable it for internet-facing servers and disable it only for local debugging. | true |
battlEye | Turns BattlEye anti-cheat on or off (since 0.9.8.73). | true |
disableThirdPerson | Forces first-person view. | false |
VONDisableUI | Hides the voice-over-network UI. | false |
VONDisableDirectSpeechUI | Hides the direct speech UI. | false |
VONCanTransmitCrossFaction | True lets players transmit on other factions' radios; false makes them listen only. | false |
missionHeader | Overrides parts of the scenario's own header, for example m_iPlayerCount. Not in the template. | none |
Servers running a milsim ruleset usually set disableThirdPerson and the two VONDisable options to true, as in Bohemia's own example. Leave battlEye on for a public server.
The operating block
| Setting | What it does | Default |
|---|---|---|
lobbyPlayerSynchronise | Sends the player identity list to the GameAPI with the heartbeat (since 0.9.8.73). | true |
disableCrashReporter | Disables the server-side crash report. Same as the -disableCrashReporter launch parameter. | false |
disableServerShutdown | Stops the server shutting itself down when the backend connection is lost. Other errors, like a corrupt config, still shut it down. | false |
disableAI | Prevents AIWorld from initializing or ticking, which turns AI off entirely. | false |
aiLimit | Maximum number of AIs (since 0.9.8.64). Negative means no limit. The -aiLimit launch parameter overrides it. | -1 |
playerSaveTime | Seconds between player saves, for both online and local storage. | 120 |
slotReservationTimeout | Seconds a slot is held for a kicked player, 5 to 300 (since 0.9.9.31). At the minimum it is effectively off. | 60 |
Version 1.0.0 also added a navmesh streaming option under operating; read the wiki for its current key name and behavior, because it changed in 1.2.0.
A complete example server_config.json
Replace the example IP with your server's public address. The scenario is Conflict on Everon. Remove the mods entries if you are not using mods.
{
"bindAddress": "0.0.0.0",
"bindPort": 2001,
"publicAddress": "203.0.113.10",
"publicPort": 2001,
"a2s": {
"address": "203.0.113.10",
"port": 17777
},
"game": {
"name": "My Community | Conflict Everon",
"password": "",
"passwordAdmin": "change_this_admin_password",
"admins": [],
"scenarioId": "{ECC61978EDCC2B5A}Missions/23_Campaign.conf",
"maxPlayers": 32,
"visible": true,
"supportedPlatforms": ["PLATFORM_PC"],
"gameProperties": {
"serverMaxViewDistance": 2500,
"serverMinGrassDistance": 50,
"networkViewDistance": 1000,
"disableThirdPerson": false,
"fastValidation": true,
"battlEye": true
},
"mods": []
},
"operating": {
"lobbyPlayerSynchronise": true
}
}The view-distance values come from the example on the Bohemia wiki. They are a sensible starting point, not a rule. a2s.address is the local address the query socket binds to, so on a machine behind NAT use its local IP there rather than the public one.
Old key names that break older tutorials
| Old name | Current name |
|---|---|
gameHostBindAddress | bindAddress |
gameHostBindPort | bindPort |
gameHostRegisterBindAddress | publicAddress |
gameHostRegisterPort | publicPort |
playerCountLimit | game.maxPlayers |
supportedGameClientTypes | game.supportedPlatforms |
root/passwordAdmin | game.passwordAdmin |
The wiki marks these renames as happening before 0.9.8.73. If you copy a config from an old video or forum post and settings seem ignored, look here first.
Hosting with ChicagoServers? The ArmA Reforger server hosting page lists what is included, such as free server backups and SFTP file access.
Server not showing up or players cannot join
- Not in the browser: check
visible, that the server finished starting without errors, and thatpublicAddressis correct if the machine sits behind NAT or has several network interfaces. - Can see it, cannot connect: confirm UDP
2001(or yourbindPort) is reachable from outside. IfpublicPortdiffers frombindPort, the forwarded port must matchpublicPort. - BattlEye problems: BattlEye is on by default (
battlEyetrue), so players need it working too. Check the server and client logs before deciding to turn it off. - Admin login fails: the password must match
game.passwordAdmin. Type#login PASSWORDin chat with no quotes. - Config ignored: confirm the path passed to
-config. The parameter is ignored when you launch with-server, which is the local-world mode.
Frequently asked questions
What ports does an Arma Reforger server use?
The game port defaults to 2001 over UDP (bindPort and publicPort), and the Steam Query (A2S) port defaults to 17777. The optional RCON block defaults to port 19999. Open the first two for a public server.
How do I make myself admin on my Arma Reforger server?
Set game.passwordAdmin in the config, join the server, and type #login followed by that password in chat. You can also list your Steam ID or identity ID in game.admins; since 1.0.0 listed users can log in without a password.
How do I enable crossplay on an Arma Reforger server?
Set game.crossPlatform to true, or list the platforms yourself in game.supportedPlatforms. The Bohemia wiki documents PLATFORM_PC and PLATFORM_XBL. Modded servers and console players have limitations, so test with the platforms you want to support.
Where do I get a valid scenarioId?
Start the server with the -listScenarios parameter and it logs the available scenario .conf paths. The Bohemia wiki also lists the official ones, such as {ECC61978EDCC2B5A}Missions/23_Campaign.conf for Conflict on Everon.