config.json is the single file that controls an Arma Reforger dedicated server: it sets the server name, network ports, scenario, player cap, admin password, mods, and detailed game rules. The file is plain JSON organized into a few top-level objects, mainly a server identity block and a nested game object. This guide walks through config.json field by field so you know exactly what every key does and how to set it correctly without breaking the server.
How config.json Is Structured
config.json is a JSON object with a small number of top-level sections. There is a network and identity layer that covers the address, ports, and public name, and a nested game object that holds the scenario, player limits, mods, admins, and a gameProperties block for detailed rules. Everything is case-sensitive, and the whole file must be valid JSON.
- A single missing comma, extra comma, or unclosed quote makes the whole file invalid and stops the server
- The two areas you edit most are the network identity fields and the game object
- gameProperties is a nested object inside game that holds the fine-grained rule toggles
Network and Identity Fields
These fields control how the server is reachable on the network and how it identifies itself. On a managed host the bind address and ports are usually preset for you, so you mostly confirm rather than change them.
"0.0.0.0"2001"203.0.113.10"2001"a2s": { "address": "0.0.0.0", "port": 17777 }- On Loafhosts these are configured at deploy time; change them only if instructed
- If your server does not appear in the browser, the A2S query port is a common culprit
Core Server Fields in the game Object
The game object holds the settings most people think of as the server configuration: the visible name, the player password, the admin password, and the player cap.
"[NA] Loaf Conflict""""strong-secret"64true- Set game.visible to false plus a game.password for a fully private server
- Never leave passwordAdmin empty on a public server; an empty admin password is a serious security hole
The scenarioId Field
scenarioId tells the server which mission or campaign to load on boot. It is one of the most important fields, and it has a strict format: a GUID in braces followed by a resource path that ends in .conf. Vanilla Conflict and Game Master scenarios have published IDs; modded scenarios provide their ID on the Workshop page.
"{ECC61978EDCC2B5A}Missions/23_Campaign.conf"- Copy scenario IDs exactly; a single wrong character means the server cannot find the scenario
- The braces and the GUID are required; the path after the braces points to the scenario resource
- A modded scenario ID only resolves if the scenario's mod is also in the mods array
The admins Array
The admins array lists the Reforger IDs of players who get admin rights. Anyone in this list can use admin tools and, on Game Master scenarios, the Game Master menu. Reforger IDs are tied to the player account and are not the same as Steam IDs.
- Ask each admin to read their Reforger ID from the profile screen in the main menu
- Add each ID as a quoted string inside the array
- Separate multiple IDs with commas and avoid a trailing comma after the last entry
"admins": ["reforger-id-1", "reforger-id-2"]- Keep this list short and only include people you fully trust
The mods Array
The mods array lists every Workshop mod the server loads. Each entry is an object with a modId, a name for readability, and an optional version. Leaving version empty keeps the mod on auto-update. The LPV5 Mod Manager writes this array for you, which avoids syntax mistakes.
"5AAAC70D754245DD""Server Admin Tools"""- Use the Mod Manager rather than hand-editing this array to avoid comma and bracket errors
- Dependencies are resolved automatically, so you do not list them in the array
- An example single entry: { "modId": "5AAAC70D754245DD", "name": "Server Admin Tools", "version": "" }
The gameProperties Block
gameProperties is a nested object inside game that holds the detailed rule toggles: crossplay, server view distance, battleye, voice options, and similar tuning. These are the knobs you turn to balance performance against fidelity and to control how the server behaves.
2500501500truetrue- If a busy server struggles, lowering serverMaxViewDistance and networkViewDistance is the first lever to pull
- Keep BattlEye enabled on public servers unless a mod specifically requires it off
Validating and Saving config.json
Because the entire server depends on config.json being valid JSON, validation is not optional. The LPV5 panel config editor helps, and a quick external check catches the rest. Save once you are confident the structure is intact, then restart.
- Review every object for matching braces and brackets
- Confirm there is no trailing comma after the last item in any array or object
- Confirm every string is wrapped in double quotes
- Run the file through a JSON validator if you edited it by hand
- Save and restart the server, then watch the console for a clean boot
- If the server stops immediately after a config change, assume a JSON error first and recheck the file