# Arma Reforger Server Config JSON Reference (/docs/arma-reforger/server-config-reference)



Arma Reforger servers use a JSON configuration file for all server settings. This page is a complete reference for every available option.

> 💡 **Tip:** Use our free [Arma Reforger Config Generator](https://armareforger.xyz/) to build your server config visually — no manual JSON editing required.

> ⚠️ **Warning:** Parameters inside the JSON file are **case-sensitive**. Always keep `fastValidation` set to `true` for public servers, and limit max FPS with the `-maxFPS` [startup parameter](/docs/arma-reforger/startup-parameters).

Default Ports [#default-ports]

| Port  | Protocol | Required | Purpose              |
| ----- | -------- | -------- | -------------------- |
| 2001  | UDP      | Yes      | Public game port     |
| 17777 | UDP      | No       | A2S Steam query port |
| 19999 | UDP      | No       | RCON port            |

Root Settings [#root-settings]

dedicatedServerId [#dedicatedserverid]

Unique server identifier linked to your Bohemia Interactive account. Used for backend registration and server identity.

```json
"dedicatedServerId": "ar-gm-myserver"
```

region [#region]

Geographic region for matchmaking. Helps players find servers in their area.

| Value | Region        |
| ----- | ------------- |
| `US`  | United States |
| `EU`  | Europe        |
| `AS`  | Asia          |
| `AU`  | Australia     |
| `SA`  | South America |
| `AF`  | Africa        |

bindAddress [#bindaddress]

IP address the server socket binds to. Leave empty to use `0.0.0.0` (accepts connections from any interface).

> 📝 **Note:** Leave this empty in most cases. IPv6 is **not** supported.

bindPort [#bindport]

UDP port the server socket binds to. Range: `1–65535`, default: `2001`. Automatically uses the same value as `publicPort` if not set.

publicAddress [#publicaddress]

Public IP address registered with the backend. Leave empty to auto-detect. You can use the keyword `"local"` to auto-detect the local network address.

publicPort [#publicport]

Public UDP port registered with the backend. Range: `1–65535`, default: `2001`.

a2s (Steam Query) [#a2s-steam-query]

Steam A2S query protocol settings. See [Valve's A2S documentation](https://developer.valvesoftware.com/wiki/Server_queries).

| Property  | Type   | Default  | Description                       |
| --------- | ------ | -------- | --------------------------------- |
| `address` | string | required | IP address for A2S socket binding |
| `port`    | number | 17777    | UDP port for A2S queries          |

rcon (Remote Console) [#rcon-remote-console]

Remote console settings for server administration. See [RCON](/docs/arma-reforger/rcon).

| Property     | Type   | Default  | Description                                        |
| ------------ | ------ | -------- | -------------------------------------------------- |
| `address`    | string | required | IP for RCON socket binding                         |
| `port`       | number | 19999    | RCON UDP port                                      |
| `password`   | string | —        | Required, no spaces, min 3 characters              |
| `maxClients` | number | 16       | Max simultaneous RCON connections (1–16)           |
| `permission` | string | —        | `"admin"` (full access) or `"monitor"` (read-only) |
| `blacklist`  | array  | \[]      | Commands excluded from execution                   |
| `whitelist`  | array  | \[]      | If defined, only these commands can be executed    |

game [#game]

name [#name]

Server name displayed in the browser. Max 100 characters.

password [#password]

Password required to join the server.

passwordAdmin [#passwordadmin]

Admin password for in-game admin access. Use `#login <password>` in chat to authenticate. Does not support spaces.

admins [#admins]

Array of IdentityIds and/or Steam IDs. Listed admins can `#login` without a password and use the priority join queue (IdentityIds only).

> 📝 **Note:** Limited to 20 unique IDs. Priority queue only works with IdentityIds, not Steam IDs.

scenarioId [#scenarioid]

The scenario `.conf` file path. See [Scenario List](/docs/arma-reforger/scenario-list) or use the `-listScenarios` [startup parameter](/docs/arma-reforger/startup-parameters).

```json
"scenarioId": "{ECC61978EDCC2B5A}Missions/23_Campaign.conf"
```

maxPlayers [#maxplayers]

Maximum player count. Range: `1–128`, default: `64`.

visible [#visible]

Show server in the browser. Default: `true`.

crossPlatform [#crossplatform]

Accept all platforms. Default: `false`. Set to `true` for crossplay.

> 💡 **Tip:** Use `crossPlatform: true` instead of manually setting `supportedPlatforms`. See [Enable Crossplay](/docs/arma-reforger/crossplay-setup).

supportedPlatforms [#supportedplatforms]

Array of platform identifiers. Only used when `crossPlatform` is `false`.

| Key            | Platform    |
| -------------- | ----------- |
| `PLATFORM_PC`  | PC          |
| `PLATFORM_XBL` | Xbox        |
| `PLATFORM_PSN` | PlayStation |

modsRequiredByDefault [#modsrequiredbydefault]

Override default `required` value for all mods. Default: `true`.

mods [#mods]

Array of mods required by clients, automatically downloaded on join.

```json
"mods": [
    {
        "modId": "59727DAE364DEADB",
        "name": "WeaponSwitching",
        "version": "1.0.1"
    }
]
```

| Property   | Description                                                            |
| ---------- | ---------------------------------------------------------------------- |
| `modId`    | GUID of the mod from Workshop                                          |
| `name`     | Human-readable name (comment only, not functional)                     |
| `version`  | Optional — latest version used if omitted                              |
| `required` | Optional — if `false`, server starts without the mod if download fails |

See [Mod Setup](/docs/arma-reforger/mod-setup) for a step-by-step guide.

gameProperties [#gameproperties]

| Property                     | Type   | Default | Description                                |
| ---------------------------- | ------ | ------- | ------------------------------------------ |
| `serverMaxViewDistance`      | number | 1600    | Client max view distance (500–10000)       |
| `serverMinGrassDistance`     | number | 0       | Min grass distance in meters (0 or 50–150) |
| `networkViewDistance`        | number | 1500    | Max network streaming range (500–5000)     |
| `fastValidation`             | bool   | true    | **Always keep `true` for public servers**  |
| `battlEye`                   | bool   | true    | Enable/disable BattlEye anti-cheat         |
| `disableThirdPerson`         | bool   | false   | Force first-person view                    |
| `VONDisableUI`               | bool   | false   | Hide VON UI                                |
| `VONDisableDirectSpeechUI`   | bool   | false   | Hide direct speech UI                      |
| `VONCanTransmitCrossFaction` | bool   | false   | Allow cross-faction radio                  |

missionHeader [#missionheader]

Overwrite scenario header settings like name, time, and weather. This is nested inside `gameProperties`:

```json
"missionHeader": {
    "m_sName": "My Custom Server",
    "m_sDetails": "No teamkilling!",
    "m_iStartingHours": 7,
    "m_iStartingMinutes": 30,
    "m_bRandomStartingWeather": true,
    "m_fDayTimeAcceleration": 6,
    "m_fNightTimeAcceleration": 12,
    "m_fXpMultiplier": 10,
    "m_iPlayerCount": 40
}
```

See [Mission Header Settings](/docs/arma-reforger/mission-header) for all available properties.

persistence [#persistence]

Auto-save and persistence configuration:

| Property           | Type   | Default | Description                                                                                 |
| ------------------ | ------ | ------- | ------------------------------------------------------------------------------------------- |
| `autoSaveInterval` | number | 10      | Minutes between auto-saves (0 to disable)                                                   |
| `hiveId`           | number | 0       | Server identifier for shared databases (0–16383). Each unique hiveId gets its own save data |
| `databases`        | object | —       | Override system database configurations using named presets                                 |
| `storages`         | object | —       | Override system storage configurations                                                      |

operating [#operating]

| Property                  | Type   | Default | Description                                                                |
| ------------------------- | ------ | ------- | -------------------------------------------------------------------------- |
| `lobbyPlayerSynchronise`  | bool   | true    | Sync player list with backend                                              |
| `disableCrashReporter`    | bool   | false   | Disable automatic crash reports                                            |
| `disableNavmeshStreaming` | array  | —       | Load navmesh into memory for better AI performance. Pass as array in v1.2+ |
| `disableServerShutdown`   | bool   | false   | Prevent auto-shutdown on backend disconnect                                |
| `disableAI`               | bool   | false   | Completely disable AI                                                      |
| `playerSaveTime`          | number | 120     | Player save interval in seconds                                            |
| `aiLimit`                 | number | -1      | Max AI characters (-1 = unlimited)                                         |
| `slotReservationTimeout`  | number | 60      | Seconds to reserve slot for kicked players (5–300)                         |

joinQueue [#joinqueue]

| Property  | Type   | Default | Description                                      |
| --------- | ------ | ------- | ------------------------------------------------ |
| `maxSize` | number | 0       | Max players in join queue (0 = disabled, max 50) |

Full Template [#full-template]

```json title="server-config.json"
{
    "dedicatedServerId": "",
    "region": "",
    "bindAddress": "",
    "bindPort": 2001,
    "publicAddress": "",
    "publicPort": 2001,
    "a2s": {
        "address": "",
        "port": 17777
    },
    "rcon": {
        "address": "",
        "port": 19999,
        "password": "",
        "maxClients": 16,
        "permission": "monitor",
        "blacklist": [],
        "whitelist": []
    },
    "game": {
        "name": "",
        "password": "",
        "passwordAdmin": "",
        "admins": [],
        "scenarioId": "",
        "maxPlayers": 64,
        "visible": true,
        "crossPlatform": false,
        "supportedPlatforms": ["PLATFORM_PC"],
        "modsRequiredByDefault": true,
        "gameProperties": {
            "serverMaxViewDistance": 1600,
            "serverMinGrassDistance": 0,
            "networkViewDistance": 1500,
            "disableThirdPerson": false,
            "fastValidation": true,
            "battlEye": true,
            "VONDisableUI": false,
            "VONDisableDirectSpeechUI": false,
            "VONCanTransmitCrossFaction": false
        },
        "mods": []
    },
    "operating": {
        "lobbyPlayerSynchronise": true,
        "disableCrashReporter": false,
        "disableServerShutdown": false,
        "disableAI": false,
        "playerSaveTime": 120,
        "aiLimit": -1,
        "slotReservationTimeout": 60,
        "joinQueue": {
            "maxSize": 0
        }
    }
}
```

Example Configuration [#example-configuration]

```json title="example-config.json"
{
    "dedicatedServerId": "",
    "region": "EU",
    "bindAddress": "0.0.0.0",
    "bindPort": 2001,
    "publicAddress": "192.168.9.10",
    "publicPort": 2001,
    "a2s": {
        "address": "192.168.9.10",
        "port": 17777
    },
    "rcon": {
        "address": "192.168.9.10",
        "port": 19999,
        "password": "changeme_withoutspaces",
        "maxClients": 16,
        "permission": "admin",
        "blacklist": [],
        "whitelist": []
    },
    "game": {
        "name": "My Arma Reforger Server - Conflict Everon",
        "password": "",
        "passwordAdmin": "changeme",
        "admins": [
            "76561198200329058"
        ],
        "scenarioId": "{ECC61978EDCC2B5A}Missions/23_Campaign.conf",
        "maxPlayers": 32,
        "visible": true,
        "crossPlatform": true,
        "gameProperties": {
            "serverMaxViewDistance": 2500,
            "serverMinGrassDistance": 50,
            "networkViewDistance": 1000,
            "disableThirdPerson": true,
            "fastValidation": true,
            "battlEye": true,
            "VONDisableUI": false,
            "VONDisableDirectSpeechUI": false,
            "VONCanTransmitCrossFaction": false,
            "missionHeader": {
                "m_iPlayerCount": 40,
                "m_iStartingHours": 7,
                "m_iStartingMinutes": 30,
                "m_bRandomStartingWeather": true
            }
        },
        "mods": [
            {
                "modId": "59727DAE364DEADB",
                "name": "WeaponSwitching",
                "version": "1.0.1"
            }
        ]
    },
    "operating": {
        "lobbyPlayerSynchronise": true,
        "joinQueue": {
            "maxSize": 12
        }
    }
}
```

Related Guides [#related-guides]

See also: [Server Configuration](/docs/arma-reforger/server-config) | [Startup Parameters](/docs/arma-reforger/startup-parameters) | [Scenario List](/docs/arma-reforger/scenario-list)

If you need help, join our [Discord](https://discord.xgamingserver.com/).
