Arma 3
Install and configure an Arma 3 dedicated server on Linux with mods
Platform Support
| Platform | Support | Notes |
|---|---|---|
| Linux | ✅ Native | Full support, excellent performance |
| Windows | ✅ Native | Full support |
Arma 3
This guide covers setting up a dedicated Arma 3 server on a Linux VPS, including SteamCMD installation, configuration, and mod management.
System Requirements
- RAM: 4GB minimum (8GB recommended for active multiplayer servers)
- vCPU: 2+ cores
- Storage: 20GB+ available space
- Network: Stable connection, upstream bandwidth for player slots
- OS: Ubuntu 20.04+ or similar
Arma 3 is heavily CPU-bound. Performance depends significantly on single-core CPU speed, not just core count. For smooth gameplay with high player counts, prioritize single-thread performance over core count.
Install SteamCMD
First, update your system and install SteamCMD:
sudo apt update && sudo apt upgrade -y
sudo apt install -y steamcmd lib32gcc-s1 lib32stdc++6 libncurses5:i386Create a directory for the Steam user:
sudo useradd -m -s /bin/bash steam
sudo su - steam
mkdir -p ~/steamcmd
cd ~/steamcmd
steamcmd +quitInstall Arma 3 Server
The Arma 3 server requires that your Steam account owns a copy of Arma 3. You cannot download the server without owning the game.
Log in to SteamCMD and download the server:
cd ~/steamcmd
./steamcmd.sh +login your_steam_username your_steam_password +app_update 233780 validate +quitThe server will install to ~/steamcmd/steamapps/common/Arma 3 Server/.
Configuration Files
Create and configure basic.cfg:
nano ~/steamapps/common/Arma\ 3\ Server/basic.cfgbasic.cfg, contains server identity and core settings:
class Missions
{
class Mission01
{
template = "Stratis";
difficulty = "Regular";
};
};
allowedFilePatching = 0;
maxMem = 2048;
maxVRAM = 1024;Create server.cfg:
nano ~/steamapps/common/Arma\ 3\ Server/server.cfgserver.cfg, multiplayer and gameplay settings:
hostname = "DeluxHost | Arma 3 Server";
password = "your_server_password";
passwordAdmin = "your_admin_password";
maxPlayers = 32;
motd[] = { "Welcome to DeluxHost", "Visit our website: deluxhost.com" };
motdInterval = 300;
logFile = "server.log";
verifySignatures = 0;
battlEye = 1;
vonCodecQuality = 10;
disableVon = 0;Launch Parameters
Start the server with:
cd ~/steamapps/common/Arma\ 3\ Server/
./arma3server -config=server.cfg -cfg=basic.cfg -profiles=. -port=2302 -mod=;Common parameters:
-config=server.cfg: Main server configuration-cfg=basic.cfg: Basic server settings-profiles=.: Profile directory-port=2302: Game port-mod=mod1;mod2;: Load mods (semicolon-separated)-serverMod=mod1;mod2;: Load server-side mods only
Port Configuration
Open these UDP ports on your firewall:
sudo ufw allow 2302/udp
sudo ufw allow 2303/udp
sudo ufw allow 2304/udp
sudo ufw allow 2305/udp
sudo ufw allow 27016/udpPort assignments:
- 2302/UDP, Game traffic
- 2303/UDP, Game traffic (continued)
- 2304/UDP, Game traffic (continued)
- 2305/UDP, Game traffic (continued)
- 27016/UDP, Query port (optional, for server browser)
Mods Setup
Download Mods via SteamCMD
Find the mod's Workshop ID, then download it:
./steamcmd.sh +login your_steam_username your_steam_password +workshop_download_item 107410 mod_id +quitMods download to steamapps/workshop/content/107410/.
Example: Downloading ACE mod:
./steamcmd.sh +login your_steam_username your_steam_password +workshop_download_item 107410 463939057 +quitEnable Mods
Create a symlink to your mods directory:
cd ~/steamapps/common/Arma\ 3\ Server/
ln -s ~/steamcmd/steamapps/workshop/content/107410 modsLaunch server with mods:
./arma3server -config=server.cfg -cfg=basic.cfg -profiles=. -port=2302 \
-mod=mods/463939057;mods/other_mod_id;Systemd Service
Create /etc/systemd/system/arma3-server.service:
sudo tee /etc/systemd/system/arma3-server.service > /dev/null <<'EOF'
[Unit]
Description=Arma 3 Dedicated Server
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=steam
WorkingDirectory=/home/steam/steamapps/common/Arma 3 Server
ExecStart=/home/steam/steamapps/common/Arma 3 Server/arma3server \
-config=server.cfg \
-cfg=basic.cfg \
-profiles=. \
-port=2302
Restart=on-failure
RestartSec=10
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
EOFEnable and start the service:
sudo systemctl daemon-reload
sudo systemctl enable arma3-server
sudo systemctl start arma3-serverCheck status:
sudo systemctl status arma3-server
sudo journalctl -u arma3-server -fBattlEye Anti-Cheat
BattlEye is built into the server. To enable it, set in server.cfg:
battlEye = 1;The first time the server runs with BattlEye enabled, it will generate necessary files. Ensure your server account is registered at BattlEye's website for administration features.
TADST (Optional Tool)
The Arma 3 Server Configuration Tool (TADST) is a GUI tool for generating configs:
- Download from the Bohemia Interactive forums
- Generate your
server.cfgandbasic.cfgfiles - Transfer the files to your server
TADST is optional but helpful if you prefer a UI over manual configuration.
Maintenance
Backup Server
tar -czf arma3-server-backup.tar.gz \
~/steamapps/common/Arma\ 3\ Server/{server.cfg,basic.cfg,*.log}Update Server
cd ~/steamcmd
./steamcmd.sh +login your_steam_username your_steam_password +app_update 233780 validate +quit
sudo systemctl restart arma3-serverMonitor Performance
top
free -h
netstat -tupn | grep 2302Troubleshooting
Server won't start: Check logs with journalctl -u arma3-server -n 50
Low FPS/Performance: Reduce player count, lower mission complexity, or upgrade CPU
Mods not loading: Verify mod IDs are correct and paths use forward slashes
BattlEye kicks players: Verify BattlEye is properly initialized and players have latest client
Windows Server Setup
Step 1: Download Server on Windows
steamcmd +login your_steam_username your_steam_password +force_install_dir "C:\Arma3-Server" +app_update 233780 validate +quitStep 2: Create Config Files on Windows
Create C:\Arma3-Server\basic.cfg and C:\Arma3-Server\server.cfg (see Configuration Files section above).
Step 3: Create Startup Batch Script
Create C:\Arma3-Server\start-server.bat:
@echo off
cd /d C:\Arma3-Server
arma3server.exe -config=server.cfg -cfg=basic.cfg -profiles=. -port=2302 -mod=;
pauseStep 4: Run as Service (Optional)
nssm install Arma3Server "C:\Arma3-Server\arma3server.exe" "-config=server.cfg -cfg=basic.cfg"
nssm start Arma3ServerTips & Tweaks
server.cfg Key Parameters
| Parameter | Value | Impact |
|---|---|---|
maxPlayers | 16-64 | Adjust based on mission complexity |
motdInterval | 300 | Message rotation (seconds) |
vonCodecQuality | 1-10 | Voice quality (higher = more bandwidth) |
disableVon | 0-1 | Disable voice comms entirely if 1 |
verifySignatures | 0-2 | Signature verification strictness |
battlEye | 0-1 | Enable/disable anti-cheat |
Mod Loading and Management
| Syntax | Purpose |
|---|---|
-mod=mod1;mod2; | Load mods in order |
-serverMod=mod1; | Server-side only mods |
@modname | Required notation for mods |
-mod=@ACE;@CBA_A3; | Common dependency order |
Load order importance: Ensure dependencies load before dependent mods (e.g., CBA before ACE).
Headless Client Setup
Offload AI processing to dedicated headless client machine:
Main server startup:
-mod=@ACE;@CBA_A3
-serverHeadless client (separate machine):
arma3.exe -client -headlessClient=127.0.0.1 -password=your_passwordHeadless client connects locally to main server, reducing server CPU burden.
Performance Tuning Flags
| Flag | Purpose | Example |
|---|---|---|
-hugepages | Enable large memory pages (Linux) | Improves memory performance |
-enableHT | Enable hyper-threading utilization | Better multi-core usage |
-malloc=system | Use system malloc | Potentially better performance |
-cpuCount=8 | Specify CPU thread count | Match your vCPU count |
Example command:
arma3server.exe -config=server.cfg -malloc=system -hugepages -enableHT -cpuCount=4Admin Commands (In-Game Console)
| Command | Purpose |
|---|---|
addMissionEventHandler ["PlayerConnected", {...}] | Log player joins |
["kicked"] remoteExec ["BIS_fnc_log"] | Kick notification |
hint "Server message" | Display hint to players |
player setBehaviour "AWARE" | Change AI awareness |
Use scripting for advanced admin control via .sqf files.
Next Steps
- Configure headless client for large multiplayer missions
- Set up custom mission rotations
- Enable anti-cheat and configure BattlEye whitelists
- Create community mods package (ACE, CBA, etc.)
- Monitor performance and adjust maxPlayers accordingly