Server Setup

Arma Reforger Linux Server Setup Guide: Ubuntu & Debian Installation

Published: 2025-11-0612 min read

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:

Solutions:

  • Open ports in firewall (see Firewall section)
  • Check router port forwarding
  • Verify publicAddress in 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

  1. Use dedicated user (not root)
  2. Keep system updated: sudo apt update && sudo apt upgrade
  3. Configure firewall (only open necessary ports)
  4. Use SSH keys instead of passwords
  5. Disable root SSH login
  6. Enable automatic security updates
  7. Regular backups (automated daily)
  8. Monitor logs for suspicious activity
  9. Strong admin passwords in config
  10. Limit RCON access by IP if possible

Helpful Resources


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!

Need Arma Reforger Server Hosting?

Get your server online in 5 minutes with xGaming Server

Instant Setup
DDoS Protection
High Performance
24/7 Support
Get 30% OFF First Month

Professional Arma Reforger hosting • No setup fees • Cancel anytime