ArmA Reforger guide

Arma Reforger server_config.json Explained: Every Setting

By the ChicagoServers team · Updated · 9 min read

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.

Quick answer
  • Run the server with -config PATH. Install it through SteamCMD with app ID 1874900 (stable) or 1890870 (experimental).
  • Defaults: bindPort 2001 (UDP), a2s.port 17777, maxPlayers 64 (range 1 to 256), visible true, battlEye true.
  • Since 0.9.8.73 the old gameHost* keys became bind* and public*, and supportedGameClientTypes became supportedPlatforms.
  • scenarioId looks like {ECC61978EDCC2B5A}Missions/23_Campaign.conf. Run the server with -listScenarios to log the valid ones.
  • Set game.passwordAdmin or game.admins before you need them; admins log in with #login in chat.
On this page
  1. Starting the server with your config file
  2. Ports and addresses: bindPort, publicAddress and a2s
  3. The game block: name, passwords, admins, players
  4. gameProperties: view distance, BattlEye, voice and perspective
  5. The operating block
  6. A complete example server_config.json
  7. Old key names that break older tutorials
  8. Server not showing up or players cannot join
  9. Frequently asked questions
  10. 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.

Example launch commands (from the Bohemia wiki)
# 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 60

On 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

SettingWhat it doesDefault
bindAddressLocal IP the server socket binds to. Usually left empty.empty (treated as 0.0.0.0)
bindPortUDP port the server listens on (1 to 65535).2001
publicAddressThe 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)
publicPortUDP port registered with the backend. Match bindPort if the server has its own public IP; otherwise use the forwarded port.2001
a2s.addressIP the Steam Query (A2S) socket binds to. Required if you use the a2s block. Added in 0.9.9.31.none
a2s.portUDP port for Steam Query requests.17777
rconOptional 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

SettingWhat it doesDefault
game.nameServer name in the browser, 0 to 100 characters.none
game.passwordPassword players must enter to join. Empty means open.empty
game.passwordAdminAdmin password. Players log in by typing #login PASSWORD in chat.empty
game.adminsArray 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.scenarioIdWhich scenario to run. See the scenarios guide.none
game.maxPlayersPlayer slots, 1 to 256.64
game.visibleWhether the server appears in the Server Browser.true
game.crossPlatformIf true, adds the PC and Xbox platforms to the supported platforms when missing. Does nothing when false.false
game.supportedPlatformsPlatforms the server accepts. The wiki lists PLATFORM_PC and PLATFORM_XBL (Xbox).["PLATFORM_PC"]
game.modsMods 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

SettingWhat it doesDefault
serverMaxViewDistanceMaximum view distance the server allows, 500 to 10000.1600
serverMinGrassDistanceMinimum grass distance in meters (0, or 50 to 150). 0 imposes nothing on clients.0
networkViewDistanceMaximum streaming range for replicated entities, 500 to 5000.1500
fastValidationFast validation of map entities on join. Bohemia says to enable it for internet-facing servers and disable it only for local debugging.true
battlEyeTurns BattlEye anti-cheat on or off (since 0.9.8.73).true
disableThirdPersonForces first-person view.false
VONDisableUIHides the voice-over-network UI.false
VONDisableDirectSpeechUIHides the direct speech UI.false
VONCanTransmitCrossFactionTrue lets players transmit on other factions' radios; false makes them listen only.false
missionHeaderOverrides 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

SettingWhat it doesDefault
lobbyPlayerSynchroniseSends the player identity list to the GameAPI with the heartbeat (since 0.9.8.73).true
disableCrashReporterDisables the server-side crash report. Same as the -disableCrashReporter launch parameter.false
disableServerShutdownStops the server shutting itself down when the backend connection is lost. Other errors, like a corrupt config, still shut it down.false
disableAIPrevents AIWorld from initializing or ticking, which turns AI off entirely.false
aiLimitMaximum number of AIs (since 0.9.8.64). Negative means no limit. The -aiLimit launch parameter overrides it.-1
playerSaveTimeSeconds between player saves, for both online and local storage.120
slotReservationTimeoutSeconds 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.

server_config.json (a2s.address, admins and values are illustrative)
{
  "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 nameCurrent name
gameHostBindAddressbindAddress
gameHostBindPortbindPort
gameHostRegisterBindAddresspublicAddress
gameHostRegisterPortpublicPort
playerCountLimitgame.maxPlayers
supportedGameClientTypesgame.supportedPlatforms
root/passwordAdmingame.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 that publicAddress is correct if the machine sits behind NAT or has several network interfaces.
  • Can see it, cannot connect: confirm UDP 2001 (or your bindPort) is reachable from outside. If publicPort differs from bindPort, the forwarded port must match publicPort.
  • BattlEye problems: BattlEye is on by default (battlEye true), 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 PASSWORD in 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.

References