Arma 3
| 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
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.
- 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
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:
TADST is optional but helpful if you prefer a UI over manual configuration.
- Download from the Bohemia Interactive forums
- Generate your server.cfg and basic.cfg files
- Transfer the files to your server
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
| 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
-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
| 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=4
Admin 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
Related articles
CS2
How to install and configure a Counter-Strike 2 dedicated server on Linux VPS with SteamCMD
Palworld
Create a dedicated Palworld server on Linux with SteamCMD. Configuration, ports and automatic startup.
Rust
Install and manage a Rust server (Facepunch) on Linux with SteamCMD. Includes automatic updates, Oxide plugins and optimizations.
