October DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsWindows FixRecommendedWindows errors stealing your time? Find the fix fastScan stability, cleanup and performance issues.Fix NowOctober DealsAmazon USDeal season is back - check today's better picksAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
World desk11 min

How to Run an Arma Reforger Server on a VPS (Linux, SteamCMD and Docker)

A practical, end-to-end guide to hosting Arma Reforger on a Linux VPS: install the stable dedicated server with SteamCMD, configure case-sensitive JSON networking, open UDP ports, choose native Linux or Docker, and automate restarts and updates.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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.

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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
msi Codex Z2 Gaming Desktop, AMD R7-8700F, RTX 5070, 32GB DDR5, 2TB SSD | NVIDIA GeForce RTX 5070, USB Type-C, VR-Ready, Windows 11 Home. Model A8NVP-436US
  • 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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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
Alienware Aurora Gaming Desktop, RTX 5070, Intel Core Ultra 7 265F | 1TB SSD, 32GB DDR5, Wi‑Fi 7, Bluetooth, Killer 2.5Gb Ethernet, Windows 11 Home, Wired Keyboard, ACT1250
  • 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:

  1. Create an account and directory owned by it, such as arma with an installation directory under /opt or its home directory.
  2. Run SteamCMD and download the stable build with app_update 1874900 validate, then exit SteamCMD.
  3. Use app_update 1890870 validate instead only if you intentionally selected the experimental branch.
  4. 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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Create 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 to 2001.
  • 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
SKYESEV Prebuilt Gaming Desktop PC, AMD Ryzen 5 5600, GeForce RTX 3050 6GB,32GB DDR4 3200MHz RAM, 1TB NVMe SSD, ARGB Air Cooling, Wi-Fi,Tower Computer for Gaming, Streaming, Editing
  • 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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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:

  1. Create inbound UDP rules in the VPS provider’s firewall or security-group panel.
  2. Create matching rules in the operating-system firewall. With UFW, for example, allow 2001/udp, and add 17777/udp or 19999/udp only for the features you enabled.
  3. 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
KOTIN Prebuilt Gaming PC RTX 5070 12GB, Ryzen 7 9700X, 32GB DDR5, 1TB SSD | 11.3in Smart Display, 850W 80+ Gold PSU, 360mm Liquid Cooler, WiFi 7, 1440p 4K ARGB Windows 11 Gaming Desktop Computer
  • 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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Enable and inspect it

  1. Save the unit under /etc/systemd/system/arma-reforger.service.
  2. Run sudo systemctl daemon-reload.
  3. Run sudo systemctl enable --now arma-reforger to start it now and on future boots.
  4. Check state with systemctl status arma-reforger.
  5. 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
YAWYORE Gaming PC, AMD Ryzen 7 5700X, GeForce RTX 5060 Desktop Computer
  • 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

  1. Start the container with the persistent mounts and UDP port publishing in place.
  2. Inspect container logs for startup, configuration parsing and backend-registration messages.
  3. Confirm the host is listening on the published ports and that the provider firewall allows them.
  4. From a different network, search the server browser and attempt a connection.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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

  1. Confirm the service is active and the process has loaded the intended JSON file.
  2. Check that the configured scenario, server name and player limit appear as expected.
  3. Use a network other than the VPS itself, such as a home connection or mobile hotspot, to search the server browser.
  4. If the server is listed but joining fails, compare the advertised public address and port with the provider’s public address and firewall rules.
  5. 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

  1. Provision a Linux VPS with public IPv4, suitable regional latency and persistent disk.
  2. Create the dedicated service account and install SteamCMD.
  3. Download AppID 1874900 for stable operation, or 1890870 when experimental testing is intentional.
  4. Create the case-sensitive JSON from the matching official template; set scenario, name, player limit, network values and optional services.
  5. Open UDP 2001 in the provider and operating-system firewalls. Add UDP 17777 for A2S or UDP 19999 for RCON only when enabled.
  6. Choose native systemd or Docker. For Docker, publish the UDP ports and mount configuration, profile and workshop directories.
  7. Set publicAddress and publicPort so backend registration matches the VPS address players can reach.
  8. Start the service, inspect logs and test the browser from an external network.
  9. 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.

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Leave a Reply

Your email address will not be published. Required fields are marked *

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
PC Slower Than It Used to Be?Free scan - under a minute
Outdated Drivers Are Slowing You DownFree scan - exact matches

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.