Gaming Servers

Arma 3

Install and configure an Arma 3 dedicated server on Linux with mods

Platform Support

PlatformSupportNotes
Linux✅ NativeFull support, excellent performance
Windows✅ NativeFull 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:i386

Create a directory for the Steam user:

sudo useradd -m -s /bin/bash steam
sudo su - steam
mkdir -p ~/steamcmd
cd ~/steamcmd
steamcmd +quit

Install 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 +quit

The server will install to ~/steamcmd/steamapps/common/Arma 3 Server/.

Configuration Files

Create and configure basic.cfg:

nano ~/steamapps/common/Arma\ 3\ Server/basic.cfg

basic.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.cfg

server.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/udp

Port 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 +quit

Mods download to steamapps/workshop/content/107410/.

Example: Downloading ACE mod:

./steamcmd.sh +login your_steam_username your_steam_password +workshop_download_item 107410 463939057 +quit

Enable Mods

Create a symlink to your mods directory:

cd ~/steamapps/common/Arma\ 3\ Server/
ln -s ~/steamcmd/steamapps/workshop/content/107410 mods

Launch 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
EOF

Enable and start the service:

sudo systemctl daemon-reload
sudo systemctl enable arma3-server
sudo systemctl start arma3-server

Check status:

sudo systemctl status arma3-server
sudo journalctl -u arma3-server -f

BattlEye 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:

  1. Download from the Bohemia Interactive forums
  2. Generate your server.cfg and basic.cfg files
  3. 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-server

Monitor Performance

top
free -h
netstat -tupn | grep 2302

Troubleshooting

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 +quit

Step 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=;
pause

Step 4: Run as Service (Optional)

nssm install Arma3Server "C:\Arma3-Server\arma3server.exe" "-config=server.cfg -cfg=basic.cfg"
nssm start Arma3Server

Tips & Tweaks

server.cfg Key Parameters

ParameterValueImpact
maxPlayers16-64Adjust based on mission complexity
motdInterval300Message rotation (seconds)
vonCodecQuality1-10Voice quality (higher = more bandwidth)
disableVon0-1Disable voice comms entirely if 1
verifySignatures0-2Signature verification strictness
battlEye0-1Enable/disable anti-cheat

Mod Loading and Management

SyntaxPurpose
-mod=mod1;mod2;Load mods in order
-serverMod=mod1;Server-side only mods
@modnameRequired 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
-server

Headless client (separate machine):

arma3.exe -client -headlessClient=127.0.0.1 -password=your_password

Headless client connects locally to main server, reducing server CPU burden.

Performance Tuning Flags

FlagPurposeExample
-hugepagesEnable large memory pages (Linux)Improves memory performance
-enableHTEnable hyper-threading utilizationBetter multi-core usage
-malloc=systemUse system mallocPotentially better performance
-cpuCount=8Specify CPU thread countMatch your vCPU count

Example command:

arma3server.exe -config=server.cfg -malloc=system -hugepages -enableHT -cpuCount=4

Admin Commands (In-Game Console)

CommandPurpose
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

On this page