Arma Reforger Linux Server Setup Guide: Ubuntu & Debian Installation
Running an Arma Reforger dedicated server on Linux provides superior performance, stability, and cost-effectiveness compared to Windows. This comprehensive guide covers complete installation, configuration, and optimization for Ubuntu and Debian-based systems.
Why Run Arma Reforger Server on Linux?
Linux offers significant advantages for hosting Arma Reforger servers.
Benefits of Linux for Arma Reforger Servers
Performance:
- ✅ Lower RAM usage (2-3GB less than Windows)
- ✅ Better CPU efficiency (5-10% more FPS)
- ✅ Faster disk I/O
- ✅ No Windows Update disruptions
Stability:
- ✅ Uptime measured in months, not days
- ✅ No forced reboots
- ✅ Better memory management
- ✅ Fewer background processes
Cost:
- ✅ No Windows Server license ($800+)
- ✅ Lower resource requirements
- ✅ Cheaper VPS hosting
- ✅ Free and open-source
Remote Management:
- ✅ SSH access from anywhere
- ✅ Screen/tmux for persistent sessions
- ✅ Automated scripts and cron jobs
- ✅ Lower network overhead
Supported Linux Distributions
Officially tested:
- Ubuntu 20.04 LTS, 22.04 LTS, 24.04 LTS
- Debian 10, 11, 12
- CentOS Stream 8/9 (limited support)
Recommended: Ubuntu 22.04 LTS or Debian 12 for best compatibility with Arma Reforger.
Prerequisites
System Requirements
Minimum for Arma Reforger Server:
- CPU: 4 cores @ 3.0 GHz
- RAM: 8 GB
- Storage: 20 GB SSD
- Network: 10 Mbps upload
- OS: Ubuntu 20.04+ or Debian 10+
Recommended for 32-player Arma Reforger server:
- CPU: 6-8 cores @ 3.5+ GHz
- RAM: 16 GB
- Storage: 40 GB NVMe SSD
- Network: 100 Mbps upload
- OS: Ubuntu 22.04 LTS
Required Knowledge
- Basic Linux command line
- SSH connections
- Text editing (nano/vim)
- File permissions
Don't worry—we'll cover everything step by step!
Initial Setup
Update system packages:
sudo apt update && sudo apt upgrade -y
Install required dependencies:
sudo apt install -y \
lib32gcc-s1 \
lib32stdc++6 \
curl \
wget \
tar \
screen
Create dedicated user (security best practice):
sudo useradd -m -s /bin/bash arma
sudo passwd arma
Switch to arma user:
sudo su - arma
All following commands run as the arma user unless specified otherwise.
Installing SteamCMD
SteamCMD is required to download and update Arma Reforger server files.
Method 1: Manual Installation (Recommended)
Create SteamCMD directory:
mkdir -p ~/steamcmd
cd ~/steamcmd
Download SteamCMD:
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
Extract:
tar -xvzf steamcmd_linux.tar.gz
Run SteamCMD (first time downloads updates):
./steamcmd.sh
You'll see:
Steam>
Exit for now:
quit
Method 2: Package Manager
Ubuntu/Debian (alternative method):
# Add multiverse repository
sudo add-apt-repository multiverse
sudo dpkg --add-architecture i386
sudo apt update
# Install SteamCMD
sudo apt install steamcmd -y
Creates symlink at /usr/games/steamcmd
Downloading Arma Reforger Server Files
Creating Installation Directory
mkdir -p ~/arma-reforger-server
cd ~
Downloading via SteamCMD
Create download script ~/download-server.sh:
#!/bin/bash
~/steamcmd/steamcmd.sh \
+force_install_dir ~/arma-reforger-server \
+login anonymous \
+app_update 1874900 validate \
+quit
Make executable:
chmod +x ~/download-server.sh
Run download (may take 10-20 minutes):
./download-server.sh
Verify installation:
ls -la ~/arma-reforger-server/
Should contain:
ArmaReforgerServer(executable)ServerProfile/directory- Various game files
File Permissions
Make server executable:
chmod +x ~/arma-reforger-server/ArmaReforgerServer
Creating Arma Reforger Server Configuration
Generate Config.json
Create your Arma Reforger server config:
Create config directory:
mkdir -p ~/arma-reforger-server/ServerProfile
cd ~/arma-reforger-server/ServerProfile
Create config.json:
nano config.json
Paste basic config:
{
"bindAddress": "",
"bindPort": 2001,
"publicAddress": "",
"publicPort": 2001,
"game": {
"name": "My Arma Reforger Linux Server",
"password": "",
"passwordAdmin": "YourAdminPassword123",
"scenarioId": "{ECC61978EDCC2B5A}Missions/23_Campaign.conf",
"maxPlayers": 32,
"visible": true,
"crossPlatform": true,
"gameProperties": {
"serverMaxViewDistance": 2000,
"networkViewDistance": 1000,
"battlEye": true,
"fastValidation": true
}
}
}
Save: Ctrl+O, Enter, Ctrl+X
Validate JSON before starting:
python3 -m json.tool config.json
If valid, outputs formatted JSON. If errors, shows line number.
Pro tip: Use our JSON Config Generator to create config with visual interface!
Configuring Linux Firewall
Open required ports for Arma Reforger server connectivity.
Using UFW (Ubuntu/Debian)
Enable UFW (if not already):
sudo ufw enable
Allow SSH (don't lock yourself out!):
sudo ufw allow 22/tcp
Allow Arma Reforger ports:
# Game port (required)
sudo ufw allow 2001/udp
sudo ufw allow 2001/tcp
# A2S query port (optional, recommended)
sudo ufw allow 17777/udp
# RCON (only if using remote admin)
sudo ufw allow 19999/tcp
Verify rules:
sudo ufw status numbered
Using iptables (Advanced)
# Game port
sudo iptables -A INPUT -p udp --dport 2001 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 2001 -j ACCEPT
# A2S query
sudo iptables -A INPUT -p udp --dport 17777 -j ACCEPT
# RCON (optional)
sudo iptables -A INPUT -p tcp --dport 19999 -j ACCEPT
# Save rules
sudo iptables-save | sudo tee /etc/iptables/rules.v4
See our Port Forwarding Guide for detailed networking setup.
Testing Arma Reforger Server
Manual Launch
First test (foreground):
cd ~/arma-reforger-server
./ArmaReforgerServer \
-config ServerProfile/config.json \
-profile ServerProfile \
-logStats 60 \
-maxFPS 30
Watch for:
[INFO] Loading configuration from config.json
[INFO] Server name: My Arma Reforger Linux Server
[INFO] BattlEye initialized successfully
[INFO] Registering server with backend...
[INFO] Server registered successfully
[INFO] Server ready for connections
Test connection:
- Open Arma Reforger game client
- Search for your server name
- Try connecting
Stop server: Ctrl+C
Using Screen (Persistent Session)
Screen allows Arma Reforger server to run after disconnecting from SSH.
Start server in screen:
screen -S arma-server
cd ~/arma-reforger-server
./ArmaReforgerServer -config ServerProfile/config.json -profile ServerProfile
Detach from screen: Ctrl+A, then D
Reattach to screen:
screen -r arma-server
List screens:
screen -ls
Kill screen session:
screen -X -S arma-server quit
Setting Up Systemd Service (Recommended)
Systemd allows Arma Reforger server to start automatically on boot and restart on crashes.
Creating Service File
Exit arma user (need root):
exit
Create service file:
sudo nano /etc/systemd/system/arma-reforger.service
Paste configuration:
[Unit]
Description=Arma Reforger Dedicated Server
After=network.target
[Service]
Type=simple
User=arma
WorkingDirectory=/home/arma/arma-reforger-server
ExecStart=/home/arma/arma-reforger-server/ArmaReforgerServer \
-config ServerProfile/config.json \
-profile ServerProfile \
-logStats 60 \
-maxFPS 30
Restart=on-failure
RestartSec=10
StandardOutput=journal
StandardError=journal
SyslogIdentifier=arma-reforger
[Install]
WantedBy=multi-user.target
Save: Ctrl+O, Enter, Ctrl+X
Managing Systemd Service
Reload systemd:
sudo systemctl daemon-reload
Start Arma Reforger server:
sudo systemctl start arma-reforger
Check status:
sudo systemctl status arma-reforger
Should show: Active: active (running)
Enable auto-start on boot:
sudo systemctl enable arma-reforger
Stop server:
sudo systemctl stop arma-reforger
Restart server:
sudo systemctl restart arma-reforger
View logs (real-time):
journalctl -u arma-reforger -f
View last 100 lines:
journalctl -u arma-reforger -n 100
Updating Arma Reforger Server
Regular updates are critical for security, performance, and new features.
Manual Update
Stop server:
sudo systemctl stop arma-reforger
Run update script (as arma user):
sudo su - arma
~/download-server.sh
Restart server:
exit
sudo systemctl start arma-reforger
Automated Update Script
Create update script ~/update-server.sh:
#!/bin/bash
# Arma Reforger Server Auto-Update Script
echo "Stopping Arma Reforger server..."
sudo systemctl stop arma-reforger
echo "Updating server files..."
~/steamcmd/steamcmd.sh \
+force_install_dir ~/arma-reforger-server \
+login anonymous \
+app_update 1874900 validate \
+quit
echo "Starting Arma Reforger server..."
sudo systemctl start arma-reforger
echo "Update complete!"
sudo systemctl status arma-reforger
Make executable:
chmod +x ~/update-server.sh
Run update:
./update-server.sh
Scheduled Updates (Cron)
Edit crontab:
crontab -e
Add weekly update (Sundays at 3 AM):
0 3 * * 0 /home/arma/update-server.sh >> /home/arma/update.log 2>&1
Add daily restart (4 AM):
0 4 * * * /usr/bin/systemctl restart arma-reforger
Monitoring and Logs
Server Logs
Arma Reforger console logs:
ls -la ~/arma-reforger-server/ServerProfile/logs/
View latest log:
tail -f ~/arma-reforger-server/ServerProfile/logs/console_*.log
Search for errors:
grep -i "error" ~/arma-reforger-server/ServerProfile/logs/console_*.log
Systemd Journal Logs
View all Arma Reforger logs:
journalctl -u arma-reforger
Last hour:
journalctl -u arma-reforger --since "1 hour ago"
Follow in real-time:
journalctl -u arma-reforger -f
Performance Monitoring
CPU and RAM usage:
htop
Look for ArmaReforgerServer process.
Real-time stats:
watch -n 5 'ps aux | grep ArmaReforgerServer'
Disk usage:
df -h ~/arma-reforger-server/
Network connections:
sudo netstat -tupln | grep 2001
Backup and Restore
Manual Backup
Backup entire server:
cd ~
tar -czf arma-backup-$(date +%Y%m%d-%H%M%S).tar.gz arma-reforger-server/
Backup config only:
cp ~/arma-reforger-server/ServerProfile/config.json ~/config-backup-$(date +%Y%m%d).json
Automated Backup Script
Create backup script ~/backup-server.sh:
#!/bin/bash
BACKUP_DIR=~/backups
mkdir -p $BACKUP_DIR
# Remove backups older than 7 days
find $BACKUP_DIR -name "arma-*.tar.gz" -mtime +7 -delete
# Create new backup
tar -czf $BACKUP_DIR/arma-backup-$(date +%Y%m%d-%H%M%S).tar.gz \
~/arma-reforger-server/ServerProfile/
echo "Backup complete: $(ls -lh $BACKUP_DIR | tail -1)"
Make executable:
chmod +x ~/backup-server.sh
Schedule daily backup (3 AM):
crontab -e
# Add:
0 3 * * * /home/arma/backup-server.sh >> /home/arma/backup.log 2>&1
Restore from Backup
# Stop server
sudo systemctl stop arma-reforger
# Extract backup
cd ~
tar -xzf backups/arma-backup-TIMESTAMP.tar.gz
# Restart server
sudo systemctl start arma-reforger
Optimization for Linux
CPU Affinity
Pin Arma Reforger server to specific CPU cores:
Edit systemd service:
sudo nano /etc/systemd/system/arma-reforger.service
Add under [Service]:
CPUAffinity=0-3
This uses CPU cores 0-3 only.
Reload and restart:
sudo systemctl daemon-reload
sudo systemctl restart arma-reforger
Memory Management
Increase swappiness (if low on RAM):
sudo sysctl vm.swappiness=10
Make permanent:
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf
Network Optimization
Increase network buffer sizes:
sudo sysctl -w net.core.rmem_max=16777216
sudo sysctl -w net.core.wmem_max=16777216
Make permanent:
echo "net.core.rmem_max=16777216" | sudo tee -a /etc/sysctl.conf
echo "net.core.wmem_max=16777216" | sudo tee -a /etc/sysctl.conf
Disk I/O Optimization
For SSD servers, enable TRIM:
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
Troubleshooting Linux Arma Reforger Server
Issue 1: Server Won't Start
Check systemd status:
sudo systemctl status arma-reforger
Check journal logs:
journalctl -u arma-reforger -n 50
Common causes:
- Invalid config.json syntax
- Missing file permissions
- Port already in use
- Missing dependencies
Solutions:
# Validate config
python3 -m json.tool ~/arma-reforger-server/ServerProfile/config.json
# Check permissions
ls -la ~/arma-reforger-server/ArmaReforgerServer
# Check if port in use
sudo netstat -tupln | grep 2001
# Reinstall dependencies
sudo apt install --reinstall lib32gcc-s1 lib32stdc++6
Issue 2: Server Crashes Randomly
Check system resources:
free -h # RAM usage
df -h # Disk space
Enable core dumps:
ulimit -c unlimited
Check crash logs:
ls -la ~/arma-reforger-server/ServerProfile/*.dmp
Solutions:
- Increase RAM if swap being used heavily
- Free disk space (need 5GB+ free)
- Update server files
- Check for memory leaks in mods
Issue 3: High CPU Usage
Monitor in real-time:
htop
Solutions:
- Limit server FPS:
-maxFPS 30 - Reduce AI limit in config
- Lower view distances
- Remove performance-heavy mods
See our Optimization Guide for detailed performance tips.
Issue 4: Players Can't Connect
Check firewall:
sudo ufw status
Check if server listening:
sudo netstat -tupln | grep 2001
Test from outside:
- https://www.yougetsignal.com/tools/open-ports/
- Enter your public IP and port 2001
Solutions:
- Open ports in firewall (see Firewall section)
- Check router port forwarding
- Verify
publicAddressin config - Check server logs for backend registration
Advanced: Running Multiple Arma Reforger Servers
You can run multiple Arma Reforger server instances on one Linux machine.
Requirements per Server
- 4+ CPU cores
- 8 GB RAM
- Unique port (2001, 2002, 2003...)
Setup Multiple Servers
Create second server directory:
mkdir -p ~/arma-reforger-server-2
Copy files:
cp -r ~/arma-reforger-server/* ~/arma-reforger-server-2/
Create separate config with different port:
{
"bindPort": 2002,
"publicPort": 2002,
...
}
Create second systemd service:
sudo cp /etc/systemd/system/arma-reforger.service /etc/systemd/system/arma-reforger-2.service
Edit to use new directory and port.
Open additional port:
sudo ufw allow 2002/udp
sudo ufw allow 2002/tcp
Security Best Practices
- ✅ Use dedicated user (not root)
- ✅ Keep system updated:
sudo apt update && sudo apt upgrade - ✅ Configure firewall (only open necessary ports)
- ✅ Use SSH keys instead of passwords
- ✅ Disable root SSH login
- ✅ Enable automatic security updates
- ✅ Regular backups (automated daily)
- ✅ Monitor logs for suspicious activity
- ✅ Strong admin passwords in config
- ✅ Limit RCON access by IP if possible
Helpful Resources
- Arma Reforger Server Setup Guide
- Config Generator
- Port Forwarding Guide
- Optimization Guide
- RCON Setup
- Official Docs
Last Updated: November 2025
Don't want to manage Linux servers yourself? Get fully managed Arma Reforger servers at xGaming Server with 30% OFF your first month!
Ready to configure your Linux server? Generate your config now!