The Arma 3 dedicated server (SteamCMD, app 233780) runs on Windows and Linux and downloads anonymously; only Workshop mods need a Steam account that owns Arma 3. Allow 30 to 60 minutes: install, server.cfg, UDP ports 2302 to 2306, automatic service.
Step-by-step installation
Prepare a 64-bit machine with a fast single-thread CPU (the server depends on it heavily).
Install SteamCMD and download app 233780 with an anonymous login.
Generate server.cfg and basic.cfg with the site's tool, then drop your missions (.pbo) into mpmissions.
Start arma3server_x64 with -config, -cfg, -port and -autoInit.
Open UDP ports 2302 to 2306 (system firewall, provider, router).
For mods, download them from the Workshop with a Steam account that owns Arma 3 and copy them as @folders.
Create a systemd service (Linux) or a scheduled task (Windows).
Schedule updates, profile backups and a daily restart.
Test from outside and list the server on game-rank.com.
Requirements
Systems: 64-bit Windows and Linux. The Arma 3 engine is mostly single-threaded: favour single-core speed over core count, 4 to 8 GB of RAM (more with large mods or heavy missions), an SSD and good upstream bandwidth. No account is needed for the server; a Steam account that owns Arma 3 is only required to download Workshop mods. These figures are indicative, not official minimums.
Local install (Windows)
With SteamCMD (Valve), install the server and start it with your configuration files; in the game use Multiplayer > Server browser > Direct connect: 127.0.0.1.
steamcmd.exe +force_install_dir C:\Arma3Server +login anonymous +app_update 233780 validate +quit
cd /d C:\Arma3Server
arma3server_x64.exe -name=server -port=2302 -config=server.cfg -cfg=basic.cfg -profiles=profiles -world=empty -autoInitInstall on a Linux VPS / dedicated server
On Ubuntu/Debian, create a non-root user and install SteamCMD (on Debian, enable “non-free” first).
sudo apt update && sudo apt install -y software-properties-common
sudo add-apt-repository -y multiverse && sudo dpkg --add-architecture i386 && sudo apt update
sudo apt install -y steamcmd lib32gcc-s1 ca-certificates
sudo adduser --disabled-password --gecos "" arma3First start
Download the server as the dedicated user, add server.cfg, basic.cfg and your missions in mpmissions, then start. -world=empty and -autoInit load the first mission of server.cfg (persistent = 1 required).
sudo -iu arma3
mkdir -p ~/server && /usr/games/steamcmd +force_install_dir ~/server +login anonymous +app_update 233780 validate +quit
cd ~/server && mkdir -p profiles
./arma3server_x64 -name=server -port=2302 -config=server.cfg -cfg=basic.cfg -profiles=profiles -world=empty -autoInitPorts to open
The default game port is 2302 (-port=); the following ports are used for Steam queries, master traffic and BattlEye (UDP range 2302 to 2306 per the Bohemia Interactive wiki). If you change -port, shift the whole range.
- 2302/UDP — game
- 2303–2305/UDP — Steam queries and master traffic
- 2306/UDP — BattlEye
Linux firewall (ufw)
sudo ufw allow 2302:2306/udp
sudo ufw status verboseWindows firewall (netsh)
netsh advfirewall firewall add rule name="Arma 3 2302-2306 UDP" dir=in action=allow protocol=UDP localport=2302-2306Provider firewall and home router (NAT)
At OVH, Hetzner, Scaleway and similar providers, also open the same ports in the provider firewall (security group / panel firewall): it filters before the machine. For home hosting, create a NAT (port forward) rule on your router for each port to the server's local IP, with the right protocol. Test from outside (mobile network); never expose administration ports (RCON) without a strong password.
Automatic start (systemd)
Create start.sh (see the site's launch tool), then this service in /etc/systemd/system/arma3.service and run: sudo systemctl daemon-reload && sudo systemctl enable --now arma3. On Windows, use a scheduled task at startup that runs your start.bat.
[Unit]
Description=Arma 3 server
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=arma3
WorkingDirectory=/home/arma3/server
ExecStart=/home/arma3/server/start.sh
Restart=on-failure
RestartSec=15
LimitNOFILE=100000
[Install]
WantedBy=multi-user.targetUpdates
Stop the service, rerun app_update, update your Workshop mods (with a Steam account that owns Arma 3), then restart. Clients must be on the same version as the server.
sudo systemctl stop arma3
sudo -u arma3 /usr/games/steamcmd +force_install_dir /home/arma3/server +login anonymous +app_update 233780 validate +quit
sudo systemctl start arma3Backups and scheduled restarts
Back up the profiles folder (profile, .Arma3Profile files, persistent mission saves) along with server.cfg and basic.cfg; schedule a daily restart (here 05:00, backup at 04:55).
# crontab -e (root)
55 4 * * * tar czf /var/backups/arma3-$(date +\%F).tgz -C /home/arma3/server profiles server.cfg basic.cfg
0 5 * * * systemctl restart arma3Listing and finding your server
Once the server is reachable from outside, add it on game-rank.com/jeux/arma-3 (the owner's site) so players can discover it.
Troubleshooting
- Server missing from the list: UDP ports 2302 to 2306 closed (firewall, provider, NAT), or a password set in server.cfg — test with direct connect.
- “Signature check failed” or players kicked: the server's mod doesn't match the client's (version, missing .bikey in the keys folder).
- Mission not loading: PBO name without .Map suffix, mission.sqm outside the root, or a server.cfg template that differs from the file name (without .pbo).
- Server lag: CPU too slow in single-thread, too much AI/scripts; consider headless clients and check basic.cfg.
- Server exits immediately: syntax error in server.cfg (missing semicolon or quote) — check the .rpt file in the profiles folder.
Frequently asked questions
- Do I need to own Arma 3 to host?
- Not for the server itself (app 233780, anonymous login). Yes to download Workshop mods, which require an account that owns the game.
- Which ports should I open?
- UDP 2302 to 2306 for the default setup (-port=2302).
- How do I install mods on the server?
- Put each mod in an @name folder, copy its .bikey files into the server's keys folder, then list it in -mod= (or -serverMod= if server-only).
- Why schedule restarts?
- A daily restart frees memory and avoids drift in long persistent sessions; do it off-peak after a backup.
