To install Workshop mods on an Arma Reforger dedicated server, stop the server, copy each mod’s 16-character hexadecimal modId from the Reforger Workshop, add those IDs to the game.mods array in the server’s config.json, validate the JSON, and restart. The server then resolves and downloads missing or newer addons. Players are prompted to download required mods when they join. A modded scenario also needs its complete scenario ID in scenarioId, and the mod that owns that scenario must appear in game.mods.
This procedure works for a self-hosted dedicated server and for a managed host that exposes the same configuration file. The details that usually cause failures are an incorrect Workshop ID, invalid JSON, missing dependencies, a pinned version that no longer exists, unsupported console platforms, or a stale client download.
What do I need before adding mods?
Prepare the server and the mod list before editing anything. Arma Reforger uses the Bohemia-operated Reforger Workshop, so a normal dedicated-server installation is ID-based rather than a matter of copying arbitrary files into a mods folder.
- A running dedicated-server installation: You need access to its startup command and the file supplied to the
-configparameter. - Workshop entries: Select mods from the in-game Workshop or the web Workshop. Check the entry’s current version, dependencies, supported platforms, and whether it is public and still available.
- Configuration access: You must be able to back up and edit
config.json. - A restart window: The server downloads and registers addons during startup, and large packs can make the first restart take noticeably longer.
- Storage headroom: There is no authoritative universal RAM or maximum-mod-count figure. Mod size, player count, platform storage, and how often addons update determine the practical workload.
Do not edit a live configuration. Stop the process first, keep a copy of the last working file, and make one controlled change at a time if you are troubleshooting.
How do I add Workshop mods to an Arma Reforger dedicated server?
The complete workflow is: stop, identify, back up, edit, validate, restart, and verify. Use the exact ID displayed by the Workshop; a title or URL is not a substitute for the ID.
-
Stop the server
Use your host control panel or the server console to shut the instance down cleanly. Editing while the process is running can be overwritten by a save operation, and a restart is required before the new addon list is resolved.
-
Choose and inspect each Workshop mod
Open the mod in the in-game Workshop or on the web Workshop. Record its 16-character hexadecimal
modId, note any dependency entries, and confirm that the release supports the platforms you intend to allow. A mod can be visible to you but unavailable to the server if it has been made private or removed.Keep a simple list containing the mod name, ID, current release, dependencies, and the scenario (if any) that uses it. This makes later updates and rollback decisions much safer than relying on memory.
-
Back up and open the configuration file
Copy
config.jsonto a dated backup before changing it. The dedicated server is launched with-configpointing to this file, so verify that you are editing the file used by the active instance rather than an unused sample or a different server profile. -
Add every required ID under
game.modsKeep the existing JSON structure and add one object per mod inside the
modsarray. ThemodIdproperty is required.nameis informational and helps humans identify an entry; it does not replace the ID.versionis optional.{ "game": { "mods": [ {"modId":"0123456789ABCDEF","name":"Example Weapons Pack"}, {"modId":"FEDCBA0987654321","name":"Example Map","version":"1.0.4"} ] } }The hexadecimal values above demonstrate the required 16-character format. Replace them with the real IDs shown for your chosen Workshop entries; do not copy the illustrative values into a production server. Preserve commas between objects, use straight quotation marks, and do not add comments inside JSON.
-
Decide whether to pin a version
If you omit
version, the server follows the latest release available when it restarts. That is convenient for active communities, but an upstream update can change a mission unexpectedly. Add the exact Workshop version string when you need a known-good build for a scheduled operation, tournament, or compatibility investigation.A pin is not permanent insurance. Revisit it after maintenance because an old release may be removed, and clients running a different release can be refused. Record why a version was pinned so another administrator knows when it is safe to move forward.
-
Validate the JSON and save
Run the file through a JSON validator or your editor’s built-in checker before starting the server. A missing comma, quote, brace, or bracket can stop the server while it is reading the configuration. Validation checks syntax; it does not confirm that a Workshop ID exists, that a dependency is present, or that a version is still downloadable.
-
Restart and read the startup log
Start the server with the same
-configtarget. During startup it resolves each ID, downloads missing or outdated addons, and reports addon loading. Allow extra time on the first run for large maps and content packs. Confirm that every intended addon appears without an error before inviting players. -
Set the scenario after the addon is available
If the mod supplies a custom mission, put the complete scenario ID, including braces, in the configuration’s
scenarioIdproperty. Obtain the exact value from the scenario list or server console rather than typing a shortened display name.The scenario and its owning mod are separate requirements. A correct
scenarioIdcannot load if the mod that contains it is absent fromgame.mods. If you are isolating a failure, temporarily select a vanilla scenario to determine whether the problem is the mission reference or the addon itself.
Where exactly does the mod ID go in config.json?
Each Workshop ID belongs inside the array at game.mods. Do not put it in scenarioId, a startup argument, or a separate file unless a particular hosting product documents a different wrapper around the standard dedicated-server configuration.
A minimal configuration fragment looks like this:
"game": {
"mods": [
{"modId":"0123456789ABCDEF","name":"Example Mod"}
]
}
When the file already contains other game settings, insert the mods property at the existing game level and retain all unrelated properties. If there are several entries, separate them with commas; the final entry has no trailing comma. Keep IDs uppercase or lowercase exactly as displayed if your management tooling compares text literally, even though the identifier itself is hexadecimal.
Do players have to download the mods first?
No. For required server addons, the dedicated server resolves and downloads missing content, and a joining player is prompted to download missing required mods. The player still needs enough local storage and a compatible client version, and the download must complete before the connection can proceed.
Tell players to allow the download to finish rather than repeatedly reconnecting. A local copy can become incomplete after an interrupted update; refreshing or deleting the affected local addon and joining again normally forces a clean download. Server administrators should restart after changing server-side mods so the server and clients are offered the same addon set.
How do I pin a mod to a specific version?
Add the Workshop release string as the optional version property in that mod’s object. Leaving the property out tracks the latest release at each restart; including it requests the specified release instead.
| Configuration choice | Server behavior | Best use | Risk to monitor |
|---|---|---|---|
No version property |
Resolves the latest available release on restart. | Communities that want routine updates. | An update can alter a mission or introduce incompatibility without a configuration edit. |
Explicit version |
Requests the recorded release. | Scheduled events, known-good operations, and controlled rollback testing. | The release may be removed, or clients may have a different version and fail to join. |
When pinning, write down the date and reason. Recheck the Workshop entry before a planned event, because a removed release cannot be downloaded and an old pin can outlive the client builds your players have installed.
How do I install a modded scenario?
Install the mod in game.mods first, then set the complete scenario ID in scenarioId. Scenario IDs commonly include braces, and omitting them or copying only the human-readable mission name prevents the server from finding the scenario.
- Start with the mod’s Workshop entry and confirm that it actually contains the scenario.
- Add the owning mod’s ID, plus any dependencies, to
game.mods. - Use the scenario list or console to copy the full scenario ID, including braces.
- Save and validate the configuration.
- Restart and check the log for both addon loading and scenario selection.
If the mission fails while a vanilla scenario works, the problem is usually the scenario reference, the owning mod, a dependency, or a version mismatch. Do not assume that a successful addon download means every scenario supplied by that addon is compatible with your current game build.
Can a modded server allow Xbox or PS5 players?
Yes, but cross-play is constrained by the least-supported required mod. Xbox and PS5 support mods, yet a cross-play server can admit console players only when every required addon supports their platform.
Before enabling cross-play, inspect platform support for every direct mod and dependency. A single PC-only dependency can make an otherwise compatible list unavailable to console users. If you need a quick diagnostic, run the same scenario without the questionable addon and compare connection behavior; do not ask console players to troubleshoot a content package their platform cannot install.
What is the difference between self-hosting and a managed server?
Both local hosting and third-party hosting are supported. The practical difference is who controls the files, process, network, backups, and maintenance tools.
| Decision area | Self-hosted dedicated server | Managed hosting |
|---|---|---|
| Files and startup parameters | Full access to the installation, launch command, -config, and local logs. |
Access depends on the provider; some expose a file manager and startup fields while others restrict them. |
Editing config.json |
Direct editing and scripted backups are available. | Usually performed through a panel, FTP-like access, or a support request. |
| Updates and restarts | You schedule downloads, process restarts, and rollback procedures. | Panels may provide automatic updates, scheduled restarts, and one-click reinstall tools. |
| Network and ports | You are responsible for firewall rules, port forwarding, uptime, and router behavior. | The provider normally supplies a reachable endpoint and manages the host network. |
| Backups | You choose where configuration and worlds are copied and how often. | Backup frequency, retention, and restore access vary by service; verify them before relying on them. |
| Cost and support | No hosting subscription, but you supply hardware, bandwidth, electricity, and administration time. | A recurring fee trades some control for managed infrastructure and support. |
Regardless of host, the mod logic is the same: the active server configuration must contain valid Workshop IDs, and the process must restart successfully. A managed panel can simplify restarts and backups, but it cannot repair a nonexistent or private Workshop item.
Why will my modded server not start?
Use the startup log to identify the first failure, then make one correction and restart. The table below separates configuration, Workshop, mission, and client-side symptoms.
| Symptom | Likely cause | What to do |
|---|---|---|
| The process stops while reading the configuration. | Invalid JSON punctuation or structure. | Restore the last backup, validate the file, and check every quote, comma, brace, and bracket. Then reapply one change at a time. |
| “Can’t find addon” or a download error appears. | The ID was copied incorrectly, or the Workshop item is private or removed. | Copy the ID again from the current Workshop entry and verify that another account can view the item. Remove an unavailable entry rather than repeatedly restarting. |
| A dependency cannot be added or the addon reports a missing requirement. | The dependency is not listed explicitly. | Add the dependency’s own Workshop ID to game.mods, validate, and restart. Treat the dependency list as part of the mod’s installation, not as optional documentation. |
| The mission fails to load but the server otherwise starts. | The scenario ID is incomplete, the owning mod is absent, or the selected release does not contain that scenario. | Copy the full ID with braces, confirm the owning mod is listed, and test a vanilla scenario to isolate the fault. |
| The server crashes after an addon update. | A newly released or pinned-inconsistently mod conflicts with the game or another addon. | Remove or roll back the suspect addon, restart, and reintroduce additions one at a time. Keep the last known-good configuration available. |
| Players receive addon-load errors. | Their local copy is incomplete or differs from the server’s release. | Have affected players refresh or delete the broken local copy and join again. Restart the server after any server-side mod update. |
| A download appears stuck. | A large addon, version mismatch, incomplete download, storage limit, or recent game update is delaying or blocking installation. | Allow more time, check available storage and logs, reduce the mod list for a test, and compare client and server versions before changing unrelated settings. |
| Console players cannot join a cross-play server. | At least one required addon does not support the target console platform. | Review platform support for every direct mod and dependency, then remove or replace the incompatible requirement. |
How should I update and maintain a mod list?
Maintenance is easier when the configuration is treated as a small, versioned manifest rather than an ad hoc list. Keep a dated copy of each working config.json, record the Workshop release selected for every pinned entry, and note the scenario and dependency relationships.
- Before an update: stop the server, back up the configuration, and check Workshop notes for breaking changes or platform restrictions.
- After an update: restart during a maintenance window, watch the complete startup log, and run the scenario yourself before announcing availability.
- When an update breaks play: restore the previous file or pin the last known-good release, then test the suspect addon separately.
- When removing a mod: remove its scenario reference first or select a compatible scenario, then remove the mod object and restart.
- When adding several mods: add them in small groups so a dependency or conflict can be identified without rebuilding the entire list.
Do not keep obsolete pins indefinitely. A release can disappear from the Workshop, and clients who update may no longer match it. Periodically test whether each pin is still downloadable and whether the associated mission remains compatible with the current game version.
Can I test local mods without changing the production server?
Yes. Bohemia documents a local testing path that uses the server executable with -server, -addonsDir, and -addons. This is separate from the normal Workshop-ID workflow for a production dedicated server and is useful when developing or staging content.
Use a separate test installation and configuration so experimental addons cannot overwrite the live server’s files. Keep the test instance off the public port, load the scenario locally, and promote only a validated Workshop release and its required IDs to production. Player-hosted sessions can also be started through the in-game host flow, but they do not provide the same persistent process and administrative control as a dedicated server.
What should I check before opening the server to players?
- Every
modIdis copied from the intended Workshop entry and has the expected 16-character hexadecimal format. - All documented dependencies are present as their own entries.
- JSON validation passes, and the active launch command points to the file you edited.
- The server restarts without addon or scenario errors.
- The selected
scenarioIdis complete, including braces, and its owning mod is installed. - Any explicit
versionpins are still available and match the release you intend to run. - Every required addon supports the platforms you plan to allow, especially for cross-play.
- There is enough storage for the server’s downloads and for clients to install them.
- A test player can join, finish the required downloads, and load into the selected scenario.
If all nine checks pass, the server is using the supported Workshop configuration path rather than relying on undocumented file copying or a stale local cache.
Frequently Asked Questions
Can I add a Workshop collection instead of individual mods?
The dedicated-server manifest is built from individual Workshop IDs in game.mods. A collection or favorites list can help you organize selections in the Workshop, but you still need to confirm each required addon and dependency and enter its own ID.
What happens if the mod author publishes an update while my server is online?
The running process keeps the addons it loaded until a restart. The next restart resolves the latest release unless you supplied a version pin, so schedule updates and test the mission before reopening the server.
Why can I see a Workshop mod in the browser but the server cannot download it?
Visibility can differ when an item is private, removed, restricted by platform, or unavailable to the account and environment running the server. Recheck the entry from the server’s context and verify that the exact ID has not been mistyped.
Do clients need the same optional mods as the server?
They need every mod required by the selected server content, not unrelated addons installed locally. Extra client-only content does not make a server scenario available and can still consume storage or create version confusion.
Is there a fixed maximum number of mods or a guaranteed memory requirement?
No universal limit or guaranteed RAM figure is established for all servers. Practical capacity depends on addon size, player count, storage, platform mix, update activity, and the interaction between the particular mods you load.