An Arma Reforger dedicated server is a free SteamCMD download (app id 1874900) with native Linux and Windows builds, configured entirely by one JSON file passed with -config. That file names the scenario to run by its ID, lists the mods to download from Bohemia's own Workshop, sets the player count (up to 128), crossplay and view distances, and holds the admin and RCON passwords. It needs UDP 2001 for the game and UDP 17777 for the server browser, plus a port for RCON if you use it, and a realistic 6 to 12 GB of memory depending on scenario and mods. The rest of this guide is each block of that file and the mistakes that stop a server appearing.
Reforger is a different engine (Enfusion) from Arma 3, and almost nothing carries over: no server.cfg, no @mod folders, no .bikey files, no Steam Workshop. If you are coming from Arma 3, read this as a new game. If you are looking for Arma 3 itself, see the Arma 3 server and mods guide.
How a Reforger server works#
The server loads one scenario - Conflict on Everon, Game Master, Combat Ops and so on, or a modded scenario - and runs it until it ends or the server restarts. Players connect from PC (Steam), Xbox and PlayStation, depending on which platforms you enable.
Three things make Reforger hosting different from older Bohemia titles:
- Mods download themselves. You list mod IDs in the config; the server fetches them from the Arma Reforger Workshop (Bohemia's own service, not Steam) at start-up, and players' clients download them on join. No manual uploads, no key files.
- The config is JSON. It is strict: one missing comma or a trailing comma after the last item and the server refuses to start. Validate the file before you restart.
- Scenarios are referenced by resource ID, a GUID in braces followed by a path, not by a friendly name.
Requirements and resource usage#
Bohemia publishes minimums; real servers need more, and scenario choice matters more than player count.
| Setup | RAM | CPU | Notes |
|---|---|---|---|
| Game Master, small group | 4-6 GB | 2 cores | Load depends on what the Game Master spawns |
| Conflict, 32 players | 6-8 GB | 2-3 cores | AI and base building add up over a session |
| Conflict, 64+ players | 10-12 GB | 3-4 cores | The common public setup |
| Heavily modded, any size | 12 GB+ | 3-4 cores | Large mod packs dominate |
- CPU. Enfusion uses more than one thread better than Arma 3's engine, but the simulation still leans on a main thread, so clock speed counts. Cap the frame rate with
-maxFPSso the server does not spin a core at 100% for frames nobody needs. - Memory. Grows over a long Conflict session as bases are built and AI accumulates. A scheduled restart keeps it predictable.
- Disk. The server install is in the tens of gigabytes and mods add to it. Plan for 30-50 GB with a moderate mod list, and fast storage helps the long initial mod download and scenario load.
AI is the expensive part, as in every Arma. The operating.aiLimit setting caps the AI count; it is the most effective single knob for a server that struggles in the second hour. CPU vs RAM for game servers explains how to tell which resource is short.
Installing and the launch line#
The server is anonymous on SteamCMD:
$ steamcmd +force_install_dir /home/reforger/server +login anonymous \ +app_update 1874900 validate +quit$ cd /home/reforger/server$ ./ArmaReforgerServer -config ./config.json -profile ./profile \ -maxFPS 60The arguments that matter:
| Argument | What it does |
|---|---|
-config | Path to the JSON configuration. Required |
-profile | Folder for logs, settings and downloaded mods. Keep it outside the install |
-maxFPS | Caps server frame rate. 60 is a common, sensible value |
-listScenarios | Prints the scenario IDs available, including from installed mods, and exits |
On Windows the binary is ArmaReforgerServer.exe. On a panel host the same arguments are assembled from the Startup tab, and config.json is a file you edit in the file manager. SteamCMD explained covers validate and updates in general.
config.json: the top level, ports and RCON#
A complete, working file looks like this. Each block is explained below.
{ "bindAddress": "0.0.0.0", "bindPort": 2001, "publicAddress": "", "publicPort": 2001, "a2s": { "address": "0.0.0.0", "port": 17777 }, "rcon": { "address": "0.0.0.0", "port": 19999, "password": "a-long-random-rcon-password", "permission": "admin", "maxClients": 2 }, "game": { "name": "Everon Conflict | EU | Comms", "password": "", "passwordAdmin": "a-different-long-password", "admins": [], "scenarioId": "{ECC61978EDCC2B5A}Missions/23_Campaign.conf", "maxPlayers": 64, "visible": true, "crossPlatform": true, "supportedPlatforms": ["PLATFORM_PC", "PLATFORM_XBL"], "gameProperties": { "serverMaxViewDistance": 2500, "serverMinGrassDistance": 50, "networkViewDistance": 1500, "disableThirdPerson": false, "fastValidation": true, "battlEye": true }, "mods": [] }, "operating": { "lobbyPlayerSynchronise": true, "playerSaveTime": 120, "aiLimit": -1, "slotReservationTimeout": 60, "joinQueue": { "maxSize": 0 } }}The networking keys:
| Key | Default | What it does |
|---|---|---|
bindAddress | all interfaces | Address the game listens on |
bindPort | 2001 | Game port, UDP |
publicAddress | detected | The address advertised to players. Set it if detection gets it wrong |
publicPort | 2001 | The port advertised. Differs from bindPort only behind port translation |
a2s.port | 17777 | Steam query (A2S), UDP - what server lists use |
rcon.port | none set | RCON port, UDP |
publicAddress deserves a note: on a server with a straightforward public address it can usually stay empty, but if the browser shows your server with a private or wrong address, set it explicitly to the public IP. Behind NAT, publicPort is the external port and bindPort the internal one.
RCON in Reforger uses the BattlEye RCon protocol over UDP, so the familiar Arma RCON tools work with it. permission is admin (full control) or monitor (read-only). maxClients caps simultaneous RCON connections; blacklist and whitelist arrays can restrict which commands are allowed. The protocol is not encrypted, so treat the port the same way RCON safely describes: long unique password, restricted by source address where possible, or left out of the config entirely if you do not use it.
The game block: identity, scenario and platforms#
`name`, `password`, `passwordAdmin`. The browser name, the join password (empty for public), and the password used with #login in chat. Keep the admin password long and do not reuse the RCON one.
`admins`. A list of player identifiers granted admin rights. It accepts the player's Bohemia identity ID and, for Steam players, their SteamID64. The identity ID is shown in the server log when the player connects, which is the reliable place to copy it from.
`scenarioId`. The scenario to load, as a resource reference:
{ECC61978EDCC2B5A}Missions/23_Campaign.conf Conflict - Everon{59AD59368755F41A}Missions/21_GM_Eden.conf Game Master - EveronThose two have been stable for a long time, but new terrains and official scenarios have been added with each major update, each with its own ID. Do not copy lists from old posts. Run the server once with -listScenarios and use what it prints - that output includes scenarios from the mods in your config, which is the only way to get a modded scenario's ID right.
`maxPlayers`. 1 to 128, default 64. Conflict is designed around large counts; Game Master and Combat Ops sessions play better far smaller.
`visible`. Whether the server appears in the browser. Set false for a private event server people join by address.
`crossPlatform` and `supportedPlatforms`. With crossPlatform true, the platforms listed in supportedPlatforms can join: PLATFORM_PC, PLATFORM_XBL (Xbox) and PLATFORM_PSN (PlayStation). Leaving a platform out keeps it off your server. Console players can only load mods that are available on their platform, so a mod list that works for PC players can quietly exclude consoles; check each mod's platform availability on the Workshop if you want crossplay to mean anything.
gameProperties and operating: performance and behaviour#
gameProperties controls what the server asks clients to render and simulate:
| Key | Default | Range / values | What it does |
|---|---|---|---|
serverMaxViewDistance | 1600 | 500-10000 | Maximum view distance clients may use |
serverMinGrassDistance | 0 | 0, 50-150 | Minimum grass draw distance, so grass cannot be turned off for an advantage |
networkViewDistance | 1500 | 500-5000 | Distance at which the server sends updates about objects |
disableThirdPerson | false | true / false | Force first person |
fastValidation | true | true / false | Quicker client data validation. Keep it on |
battlEye | true | true / false | Anti-cheat. Keep it on for public servers |
networkViewDistance is the one with a real server cost. Every object within it is replicated to each player, so raising it on a 64-player Conflict server raises bandwidth and CPU together. Leave it near the default unless your community plays long-range armour and helicopters and you have measured the cost. serverMinGrassDistance set to around 50 closes the "turn grass off and see everyone lying in the field" trick that annoys public servers.
operating covers server behaviour:
| Key | Default | What it does |
|---|---|---|
lobbyPlayerSynchronise | true | Keep the lobby in sync with in-game players |
playerSaveTime | 120 | Seconds between saves of player state |
aiLimit | -1 | Cap on AI characters, -1 for no cap |
slotReservationTimeout | 60 | Seconds a slot is held for a disconnected player |
disableAI | false | Disable AI entirely |
joinQueue.maxSize | 0 | Join queue length, up to 50 |
Recent versions also support saving scenario progress, configured in a persistence block (an autosave interval and a hive identifier). It is younger than the rest of the file and has changed between releases, so check the current Bohemia documentation before relying on it for a long-running Conflict campaign, and keep your own backups of the profile folder regardless.
Choosing a scenario type for your group#
The scenario decides almost everything about the server - who it suits, how many players it needs and what it costs to run - so choose it before tuning anything else.
- Conflict is the large-scale persistent mode: two factions build bases, capture territory and supply the front line. It needs a population to work. Below about twenty players the map feels empty and one side usually snowballs. It is also the heaviest on memory over a long session, because bases, vehicles and AI accumulate.
- Game Master puts one or more players in control of the scenario, spawning AI, objectives and events for everyone else in real time. It suits organised groups running their own operations, and it is the most variable load: a Game Master who spawns two hundred AI in one town has just made the server's worst evening. Set
aiLimiton Game Master servers even if you trust your staff. - Combat Ops and other official co-op scenarios are shorter, structured missions against AI for small groups. They are light to run and need no ongoing maintenance.
- Modded scenarios range from small training maps to complete overhauls. Treat each as a new game: read the mod page for its expected player count and dependencies.
A sensible pattern for a community is one public Conflict server and, if there is demand, a smaller password-protected Game Master server for scheduled operations. Running both on the same machine is possible with different ports and profile folders, but each server needs its own memory, and Conflict alone will use most of a mid-sized plan at peak.
Mods from the Reforger Workshop#
Mods are listed in game.mods. The server downloads each into the profile folder at start-up; joining clients download the same set.
"mods": [ { "modId": "0123456789ABCDEF", "name": "Example Weapons Pack", "version": "1.0.12" }, { "modId": "FEDCBA9876543210", "name": "Example Map" }]The fields:
- `modId` is the 16-character hexadecimal ID from the mod's Workshop page (on reforger.armaplatform.com or in the in-game Workshop). It is the only field that identifies the mod. The IDs above are placeholders.
- `name` is informational. It shows in logs and helps humans read the file.
- `version` is optional. Leave it out and the server takes the latest version on every start. Set it and the server pins that version - which is the right choice for a server where mods must not change underneath you.
- Dependencies are resolved automatically: list the mod you want and its required mods are fetched too.
The trade-off of automatic downloads is that an unpinned mod can update overnight, the server picks up the new version on its next restart, and the mod breaks. For any server people depend on, pin versions, update deliberately, and test after updating. What to do when a mod update breaks and keeping a modded server clean apply here exactly as to any other game.
A modded scenario is selected exactly like an official one: add the mod, start once with -listScenarios, copy its scenario ID into scenarioId.
Ports, admins and day-to-day running#
| Port | Protocol | Purpose |
|---|---|---|
2001 | UDP | Game traffic (bindPort) |
17777 | UDP | A2S query - server browser and list sites |
19999 | UDP | RCON, only if configured |
Everything is UDP. A server that runs but is not listed is the A2S port in most cases; a server that is listed but cannot be joined is the game port or a wrong publicAddress. Game server ports explained covers why the query port exists separately.
Admins log in from chat with #login followed by passwordAdmin (players listed in admins are recognised as admins). Logged-in admins get in-game admin tools and chat commands for kicking, banning and restarting; the exact command set has grown over Reforger's updates, so type # commands from the official list for your version rather than from an old guide. RCON gives the same control remotely.
The routine that keeps a Reforger server healthy:
- Restart on a schedule. Daily, at an hour nobody plays. It clears accumulated AI and memory growth, and picks up config changes. Restart schedules that help has the reasoning.
- Update deliberately. After a Reforger update, the server must update before anyone can join, and mods may need their authors to release fixes. Update the server, check mods, then start.
- Back up the config and profile.
config.jsonis small and precious. The profile holds logs and any saved progress. On a panel, back up before each update and restore with one click if it goes wrong. - Read the log after every change. JSON errors, failed mod downloads and wrong scenario IDs are all stated plainly at start-up. Reading the console helps with finding the line that matters.
Troubleshooting#
The server exits immediately. Invalid JSON. A trailing comma after the last item in a list or object is the usual culprit. Run the file through a JSON validator.
"Scenario not found" or the wrong scenario loads. The scenarioId is mistyped, belongs to a mod that is not in the list, or is from an older version. Use -listScenarios.
Not in the server browser. A2S port closed or wrong, visible false, or publicAddress advertising the wrong address.
Console players cannot join. crossPlatform is false, their platform is not in supportedPlatforms, or a mod in the list is not available on their platform.
Mod download fails at start-up. Wrong modId, a pinned version that the author has removed, or a temporary Workshop outage. The log names the mod.
Server FPS drops after an hour of Conflict. AI and objects accumulating. Set an aiLimit, check networkViewDistance, and schedule restarts.
Players see different view distances. Expected - serverMaxViewDistance is a ceiling, not a target. Clients choose up to that value.
FAQ#
Is Arma Reforger's server the same as Arma 3's?
No. Different engine, different files, different mod system. Reforger uses one config.json, downloads mods from Bohemia's Workshop automatically, and has no server.cfg, @mod folders or signature keys.
How many players can an Arma Reforger server hold?
Up to 128, set with maxPlayers. Whether your server can simulate that many depends on the scenario, AI count and CPU; most public Conflict servers run 64 or more on capable hardware.
Where do I find a scenario ID?
Start the server with -listScenarios. It prints the IDs of every scenario available, including those from the mods in your config. Copy the full string with the braces and path.
Do I need to upload mods to the server?
No. List each mod's ID in game.mods and the server downloads it from the Reforger Workshop at start-up. Players download the same mods when they join.
Can PlayStation and Xbox players join a modded server?
Only if every mod on the server is available on their platform, and only with crossPlatform enabled and their platform listed in supportedPlatforms. Check mod availability before promising crossplay.
Does Reforger need a Steam account or token to host?
The server downloads anonymously with SteamCMD and needs no game server token. Mods come from Bohemia's Workshop, which the server reaches without your Steam account.




Comments
Completely anonymous: no account, no email, no cookie. We store the name you type, the text and the time - nothing else. Links are limited and markup is not rendered.