The reliable setup is a Linux VPS with a public IPv4 address, the stable Arma Reforger dedicated-server build installed through SteamCMD, UDP 2001 open end to end, and a service manager that restarts the process after reboots or crashes. Use Docker when you need repeatable, isolated deployments; use a native Linux process when you want the fewest networking layers.
Godlike.Host offers hosted Arma Reforger servers with its own game panel, SFTP access and free DDoS protection, if you would rather not host it yourself.
What you are building
An Arma Reforger dedicated server is headless: it runs the simulation, matchmaking registration and network synchronisation without launching a playable game client. Your VPS supplies a persistent public host so players can connect even when your desktop is turned off.
As an Amazon Associate I earn from qualifying purchases.
Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →The deployment has five parts:
- A Linux VPS with a public IPv4 address, sufficient CPU, memory, disk and bandwidth for your scenario and mods.
- SteamCMD, used to download and update the dedicated-server files.
- A case-sensitive JSON server configuration.
- Firewall rules and port mappings that expose the same UDP ports at the VPS provider and inside Linux (and inside Docker, if used).
- A supervisor such as systemd or LinuxGSM to start, monitor, restart and update the server.
There is no authoritative CPU/RAM-to-player-count benchmark in the published hosting documentation. Treat sizing as an exercise in validating your intended player count, scenario and workshop-mod set rather than buying a VPS from a single advertised number.
Choose native Linux or Docker
| Decision factor | Native Linux process | Docker container |
|---|---|---|
| Networking | Fewest layers: the process binds directly to the VPS network stack. | Requires explicit UDP publishing and correct container-to-host address registration. |
| Upgrades and repeatability | SteamCMD files and service settings are managed directly on the host. | Image, configuration and mounted data can be reproduced on another host. |
| Persistence | Keep the installation, JSON file, profile, saves, workshop downloads and logs on host storage. | Those same directories must be mounted from persistent host paths; data inside a disposable container is unsafe. |
| Troubleshooting visibility | Logs, process IDs and sockets are visible directly to Linux tools. | You must inspect both container logs and host firewall/port mappings. |
| Operations | systemd provides boot start and crash recovery; LinuxGSM can add monitoring, updates and alerts. | Use the container runtime plus systemd or LinuxGSM-style automation for restart and update policies. |
For a first server, native Linux is usually simpler. Docker is a good choice when you already operate containers or need identical deployments across several VPSs.
#1 Best Overall
- POWERHOUSE 8-CORE GAMING PERFORMANCE — Driven by the AMD Ryzen 7 8700F with 8 cores and 16 threads, boosting up to 5.0 GHz for smooth, responsive gameplay and the ability to handle AAA titles, streaming, and background tasks all at once
- NEXT-GEN BLACKWELL ARCHITECTURE — The NVIDIA GeForce RTX 5070 is powered by NVIDIA's cutting-edge Blackwell GPU architecture, delivering a massive generational leap in rasterization and ray tracing performance so you can experience your games the way they were meant to be played.
- Simplistic Design: Enjoy the latest generation of Windows 11 Home for your everyday needs. *MSI recommends Windows 11 Pro for business use.
- Cool While Gaming: In conjunction with an ARGB fan Air Cooler, the Codex R2 features four system cooling fans; three in the front and one in the rear to pull in cool air and push heat out of the PC.
- Turn on the Bright Lights: With the built-in RGB lighting, take your gaming experience to the next level by pressing the MSI LED button to cycle through lighting options. Customize lighting even further with MSI Center software.
Provision the VPS correctly
Public addressing
Order a Linux VPS with a routable public IPv4 address. A private-only instance, carrier-grade NAT or an address that is not attached to the provider firewall will prevent players from reaching the game port. If the machine has multiple interfaces, note which public address players should use; you may need to set that address explicitly in the JSON configuration.
Operating system and storage
A current 64-bit Debian- or Ubuntu-family distribution is a practical choice because SteamCMD and systemd are readily available. Reserve persistent disk for the server files, downloaded workshop content, profiles, saves and logs. Mod collections can grow substantially, so leave headroom rather than allocating only the initial download size.
Resource planning
Start with a VPS tier that gives you dedicated or consistently available CPU time, adequate RAM and fast disk I/O. Increase resources after observing server frame time, memory use and log warnings with your real scenario and mod list. Published documentation does not establish a universal player-count limit for a particular VPS size, and a heavily scripted scenario can behave very differently from a stock one.
Provider controls to verify
- A provider-level firewall that lets you create inbound UDP rules.
- A Linux firewall you can manage locally.
- Snapshots or backups for your configuration and persistent data.
- A region close to most players to reduce latency.
- Bandwidth and traffic policies that permit a continuously running game server.
Install the dedicated server with SteamCMD
Bohemia Interactive documents two dedicated-server AppIDs:
Rank #2
- Legend perfected: Modern design with a matte basalt black finish in an optimized chassis with customizable AlienFX lighting zones, including the striking stadium lighting.
- Game changing graphics: Step into the future of gaming and creation with the NVIDIA GeForce RTX 5070 graphics, powered by NVIDIA Blackwell architecture.
- Marathon gaming unlocked: This high-performance technology ensures clean energy is consistently available, unleashing the top-level power of Intel Core Ultra 7 265F processor as you game, livestream, and multi-task for hours on end.
- Total command: Alienware Command Center software allows you to create and edit AlienFX lighting across the ecosystem, choose and monitor your performance mode across distinct power states, and create custom gaming profiles for your whole library.
- Dell Services: 1 Year Onsite Service provides support when and where you need it. Dell will come to your home, office, or location of choice, if an issue covered by Limited Hardware Warranty cannot be resolved remotely.
| Build | Steam AppID | When to use it |
|---|---|---|
| Stable | 1874900 |
Normal public server operation. |
| Experimental | 1890870 |
Only when you deliberately want the experimental branch and accept its compatibility risks. |
Install SteamCMD using your distribution’s package method or the official SteamCMD archive, then create a dedicated, non-root account for the server. A typical installation sequence is:
- Create an account and directory owned by it, such as
armawith an installation directory under/optor its home directory. - Run SteamCMD and download the stable build with
app_update 1874900 validate, then exit SteamCMD. - Use
app_update 1890870 validateinstead only if you intentionally selected the experimental branch. - Record the installed executable path and keep the SteamCMD installation location consistent with your service or container configuration.
Do not mix files from the two AppIDs in one installation directory. When changing branches, stop the server, back up the configuration and persistent data, and update deliberately so that a branch change does not leave an incompatible mod or executable set.
Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Clear out junk files and repair common Windows errors3Fix the driver behind crashes, sound loss and screen glitchesCreate the JSON server configuration
Arma Reforger’s configuration is JSON and key names are case-sensitive. Start from the configuration template that matches your server build instead of inventing a schema. Set the scenario, server name, player limit and any password or visibility options in that template.
Network keys that matter
bindAddress: normally leave this empty. An empty value allows the process to listen on all interfaces. Set a specific interface only when the VPS has a deliberate multi-interface design.bindPort: the local game port. It defaults to2001.publicPort: the port registered with the backend and advertised to clients. It must match the externally reachable game port.publicAddress: the address registered for players. Set it explicitly when automatic detection could select a private address, a container address or the wrong interface.
On a straightforward VPS with one public interface, an empty bind address, bindPort 2001, publicPort 2001 and the VPS’s public IPv4 address as publicAddress are the usual arrangement. If your provider uses a one-to-one NAT, use the public address and forwarded port that players can actually reach, not an internal address.
Rank #3
- Processor specifications: Adopting AMD Ryzen 5 5600 processor, with a basic clock speed of 3.5GHz and a turbo frequency of 4.4GHz, it can achieve fast response computing performance
- Graphics Card: Features GeForce RTX 3050 graphics card with 6GB dedicated video memory for gaming and multimedia applications
- Memory configuration: Equipped with 32GB DDR4 RAM (16GB * 2), providing sufficient memory capacity for multitasking and demanding applications
- Gaming Performance: Designed to handle modern gaming titles and graphics-intensive tasks with smooth frame rates and visual quality
- Desktop System: Complete gaming desktop computer system ready for setup and use out of the box
Validation and frame rate
Keep fastValidation set to true, as the official configuration guidance recommends. You can also pass the -maxFPS startup parameter to cap the server process and save CPU performance. Choose a cap appropriate to your scenario and observe the result; the documentation does not prescribe one universal value.
Optional services
The A2S query service and RCON are optional. Configure them only when you need server-browser queries or remote administration, and protect RCON with a strong secret. Never expose an administrative port merely because it exists in a sample configuration.
Open the required UDP ports
| Port | Protocol | Purpose | Required? |
|---|---|---|---|
| 2001 | UDP | Public game traffic (default) | Yes |
| 17777 | UDP | A2S server-query traffic | Only when A2S is enabled |
| 19999 | UDP | RCON traffic | Only when RCON is enabled |
Apply the same policy in both places:
- Create inbound UDP rules in the VPS provider’s firewall or security-group panel.
- Create matching rules in the operating-system firewall. With UFW, for example, allow
2001/udp, and add17777/udpor19999/udponly for the features you enabled. - If Docker is involved, publish each UDP port from the container to the host and ensure the host firewall allows it.
The public and local ranges must agree. Opening a provider firewall while leaving UFW closed, or publishing a different Docker port from the value registered in publicPort, produces a server that appears to run locally but cannot be joined from the internet.
Run the server natively under systemd
Prepare directories and permissions
Keep the executable files separate from mutable data. Create persistent directories for the JSON configuration, profile and save data, workshop downloads and logs. Make the dedicated arma account the owner and avoid running the game server as root.
Rank #4
- POWERED BY RTX 5070 12GB + RYZEN 7 9700X - The GeForce RTX 5070 12GB GDDR7 graphics card pairs with an 8-core AMD Ryzen 7 9700X processor to drive smooth 1440p and 4K gameplay, giving this gaming PC the headroom for modern titles, streaming, and creative work.
- 32GB DDR5 6000MHz MEMORY & 1TB NVMe SSD - 32GB of high-speed DDR5 memory and a 1TB PCIe 4.0 NVMe solid state drive deliver quick load times, smooth multitasking, and generous storage, keeping this prebuilt gaming desktop responsive under heavy workloads.
- BUILT-IN 11.3-INCH Smart DISPLAY - An integrated smart screen shows real-time CPU and GPU temperatures, usage, and weather while you play, adding a distinctive and functional touch to your battlestation.
- 850W 80+ GOLD POWER SUPPLY, 360MM LIQUID COOLING & WiFi 7 - An 850W 80 Plus Gold certified power supply provides stable, efficient power with headroom for future upgrades, while a 360mm AIO liquid cooler, WiFi 7, and an ARGB mid-tower case keep the Ryzen 7 CPU cool and connected in a clean build.
- READY TO PLAY OUT OF THE BOX - Arrives fully assembled and tested with Windows 11 Home pre-installed, so your prebuilt gaming computer is ready to set up in minutes. Assembled in the USA, and backed by a one-year limited warranty and lifetime free technical support.
Create a service unit
Create a systemd unit that starts the installed Linux server, points it at your JSON file and restarts it after an unexpected exit. A representative unit is:
[Unit]
Description=Arma Reforger dedicated server
After=network-online.target
Wants=network-online.target
[Service]
User=arma
WorkingDirectory=/opt/arma-reforger
ExecStart=/opt/arma-reforger/ArmaReforgerServer -config /etc/arma-reforger/server.json -maxFPS 60
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
Use the executable name and paths created by your SteamCMD installation. The -maxFPS 60 value is an example cap, not a documented requirement; tune or remove it after observing CPU use.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Enable and inspect it
- Save the unit under
/etc/systemd/system/arma-reforger.service. - Run
sudo systemctl daemon-reload. - Run
sudo systemctl enable --now arma-reforgerto start it now and on future boots. - Check state with
systemctl status arma-reforger. - Follow logs with
journalctl -u arma-reforger -f.
A restart policy handles a crash, but it does not fix an invalid JSON file or a blocked firewall. Read the first error in the journal before repeatedly restarting.
Run it in Docker without losing data
Docker adds isolation and repeatability, but the official hosting guidance warns that a container can register its private container IP. Players and the backend then try to reach an unroutable address. Set the public address explicitly and publish the UDP ports on the VPS’s public interface.
Best Value
- CPU: AMD Ryzen7 5700X (up to 4.6GHz) 8-Core 16-Thread to easily handle multi-line tasks
- Main board: MSI B550M-A PRO motherboard provides reliable performance and stability
- GPU: Geforce RTX 5060 8GB GDDR7 Graphics Cards (Brand may vary) Support DLSS 4 multi frame generation, ray tracing, and Reflex 2 delay optimization
- RAM: 32GB DDR4 3200MHz (16GB*2) SSD: 1TB M.2 NVMe PCIe
- Power supply: 650W (80plus bronze) certified for energy efficiency and stable performance
Required container settings
- Publish UDP 2001; publish 17777 and 19999 only when A2S or RCON is configured.
- Mount the JSON configuration, profile/save directory, workshop directory and logs from persistent host paths.
- Pass the public IPv4 address and game name through the image’s documented environment variables or configuration file.
- Make the container restart after a host reboot and retain its update policy separately from ephemeral container storage.
Use the image documentation for the exact image reference and internal paths, because community images expose different variable names. The ACE community image, for example, documents environment variables for the public address and game name plus mounted profile and configuration layouts. Whatever image you select, verify that its internal game port maps to host UDP 2001 and that the generated configuration contains the public address and port players can reach.
Validate a container deployment
- Start the container with the persistent mounts and UDP port publishing in place.
- Inspect container logs for startup, configuration parsing and backend-registration messages.
- Confirm the host is listening on the published ports and that the provider firewall allows them.
- From a different network, search the server browser and attempt a connection.
Keep the server online and current
Boot and crash recovery
systemd starts a native process after boot and restarts it after a failure. For Docker, configure an equivalent restart policy and ensure the Docker service itself starts at boot. Test recovery by rebooting during a maintenance window rather than assuming the setting works.
Monitoring and updates
LinuxGSM is specifically documented as able to monitor a game server, restart it, update files and send alerts. A comparable management layer is useful if you do not want to maintain those jobs yourself. Schedule update checks during a stated maintenance window, announce disruptive updates to players, and back up the JSON file and persistent data before changing branches or large mod sets.
What to monitor
- Process or container health and restart counts.
- Server-browser visibility from an external network.
- Disk free space, especially where workshop content is stored.
- Memory and CPU pressure during a full scenario.
- Log growth and repeated authentication, mod or network errors.
Verify the deployment from outside the VPS
- Confirm the service is active and the process has loaded the intended JSON file.
- Check that the configured scenario, server name and player limit appear as expected.
- Use a network other than the VPS itself, such as a home connection or mobile hotspot, to search the server browser.
- If the server is listed but joining fails, compare the advertised public address and port with the provider’s public address and firewall rules.
- If it is not listed, inspect registration errors,
publicAddress,publicPort, UDP rules and Docker publishing before changing gameplay settings.
Testing from the VPS alone can be misleading because local traffic does not prove that an internet client can traverse the provider firewall, NAT and container boundary.
Troubleshooting by symptom
| Symptom | Likely cause | Fix |
|---|---|---|
| Server process runs, but it is absent from the browser | UDP 2001 blocked, wrong public address, or registration using a container/private IP. | Open UDP 2001 at both firewall layers, set publicAddress explicitly and verify the advertised port. |
| Browser listing appears, but clients cannot join | Public and local ports differ, Docker port is not published, or NAT forwards to the wrong host port. | Make bindPort, publicPort, provider forwarding and Docker publishing describe the same reachable path. |
| A2S tools show no response | Optional query service is disabled or UDP 17777 is blocked. | Enable A2S in the JSON and open UDP 17777 only if you need it. |
| RCON cannot connect | RCON is disabled, UDP 19999 is blocked, or the secret does not match. | Check the RCON section, open UDP 19999, and rotate the password if it was exposed. |
| Server exits immediately | Malformed or case-mismatched JSON, wrong executable path, missing files or permissions. | Read the first startup error, validate the JSON against the build’s template, correct ownership and run the executable manually as the service account. |
| Server returns after a reboot only when started manually | systemd is not enabled, or the container runtime is not starting the container. | Enable the service, reload systemd after edits and test a controlled reboot. |
| Performance degrades as mods or players increase | CPU, memory, disk I/O or bandwidth pressure. | Measure during the real scenario, cap frame rate with -maxFPS, reduce unnecessary mods or move to a stronger VPS. |
Security and maintenance checklist
- Run the process under a dedicated unprivileged account.
- Allow only the UDP ports you use; do not expose SSH broadly without key authentication and provider-level protection.
- Use a long, unique RCON password and change it if it appears in logs, backups or chat.
- Back up the JSON configuration, profiles, saves and any custom scripts before updates.
- Keep workshop data on persistent storage and monitor disk capacity.
- Record whether the installation is stable or experimental so an update does not silently change branches.
- Test browser visibility and a real client connection after every port, address, Docker or provider-firewall change.
A repeatable deployment runbook
- Provision a Linux VPS with public IPv4, suitable regional latency and persistent disk.
- Create the dedicated service account and install SteamCMD.
- Download AppID
1874900for stable operation, or1890870when experimental testing is intentional. - Create the case-sensitive JSON from the matching official template; set scenario, name, player limit, network values and optional services.
- Open UDP 2001 in the provider and operating-system firewalls. Add UDP 17777 for A2S or UDP 19999 for RCON only when enabled.
- Choose native systemd or Docker. For Docker, publish the UDP ports and mount configuration, profile and workshop directories.
- Set
publicAddressandpublicPortso backend registration matches the VPS address players can reach. - Start the service, inspect logs and test the browser from an external network.
- Add restart, monitoring, alerting and scheduled update procedures through systemd, LinuxGSM or an equivalent management layer.
Following that sequence keeps the important contracts aligned: the AppID matches the intended branch, the JSON matches the server build, the registered address matches the VPS network path, and every required UDP port is open at each layer.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




