Désactiver le préchargeur
Tutoriels Linux Serveurs de jeux

Installer un serveur Arma Reforger sur Linux (Ubuntu, Debian, AlmaLinux)

Documentation / Tutoriels Linux / Serveurs de jeux / Installer un serveur Arma Reforger sur Linux (Ubuntu, Debian, AlmaLinux)
Mis à jour le 21/09/2026
10 vues
Intermédiaire
30 minutes

Prérequis

Votre serveur :

Ce guide installe le serveur dédié Arma Reforger sur Linux : SteamCMD, un utilisateur dédié, le serveur (9,6 Go), son fichier config.json (nom, mots de passe, scénario), un service qui sauvegarde la partie à l'arrêt, la sonde qui prouve qu'il répond, le pare-feu, une sauvegarde chaque nuit et la mise à jour. Choisissez votre système ci-dessus. Copiez la commande avec le bouton Copier, collez-la dans votre terminal, et comparez avec le résultat attendu.

1Mettre à jour le système et installer les bibliothèques 32 bits

SteamCMD, l'outil de Valve qui télécharge les serveurs de jeux, est un programme 32 bits : il lui faut les bibliothèques 32 bits du système. On met d'abord le système à jour ; sans cela, l'installation 32 bits échoue sur AlmaLinux, Rocky, CentOS et Fedora (conflit avec une bibliothèque plus ancienne), et SteamCMD ne peut pas joindre Steam sur une Fedora fraîche (certificats absents).

Mettre à jour le système
apt update && apt upgrade -y
Résultat attendu
...
212 upgraded, 8 newly installed, 0 to remove and 4 not upgraded.
(les nombres dépendent de l'âge de l'image)
Mettre à jour le système
dnf upgrade -y
Résultat attendu
...
Complete!
Mettre à jour le système
dnf upgrade -y
Résultat attendu
...
Complete!
Mettre à jour le système
zypper -n refresh && zypper -n update
Résultat attendu
All repositories have been refreshed.
...
Installer les bibliothèques 32 bits et curl
dpkg --add-architecture i386 && apt update && apt install -y lib32gcc-s1 lib32stdc++6 curl
Installer les bibliothèques 32 bits
dnf install -y glibc.i686 libstdc++.i686
Installer les bibliothèques 32 bits
dnf install -y glibc.i686 libstdc++.i686
Installer les bibliothèques 32 bits
zypper -n install glibc-32bit libstdc++6-32bit

openSUSE Leap 16 livre son noyau avec l'exécution des programmes 32 bits désactivée : sans cette étape, SteamCMD répond « Exec format error ». On l'active dans GRUB et on redémarre (reconnectez-vous en SSH après une minute).

Activer les programmes 32 bits dans le noyau, puis redémarrer
sed -i 's/^GRUB_CMDLINE_LINUX_DEFAULT="/GRUB_CMDLINE_LINUX_DEFAULT="ia32_emulation=1 /' /etc/default/grub && grub2-mkconfig -o /boot/grub2/grub.cfg && reboot
Après le redémarrage : vérifier que l'option est active
grep -o ia32_emulation=1 /proc/cmdline
Résultat attendu
ia32_emulation=1

2Créer un utilisateur dédié et installer SteamCMD

Le serveur ne tourne jamais en root : un utilisateur reforger, dont le dossier personnel est /opt/reforger, possède SteamCMD et le serveur. Le dossier est créé avant l'utilisateur : sur Rocky et CentOS, SELinux refuse à useradd de le créer lui-même sous /opt.

Créer les dossiers et l'utilisateur reforger
mkdir -p /opt/reforger/server /opt/reforger/steamcmd && useradd -r -s /bin/bash -d /opt/reforger reforger && chown -R reforger:reforger /opt/reforger
Télécharger SteamCMD (en tant que reforger)
su - reforger -c "cd /opt/reforger/steamcmd && curl -fsSL https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz | tar zxf - && ls"
Résultat attendu
linux32
steamcmd.sh

3Télécharger le serveur Arma Reforger (9,6 Go)

SteamCMD télécharge le serveur dédié (application 1874900) dans /opt/reforger/server : quelques minutes. Il arrive souvent que le premier passage se termine sur « ERROR! Failed to install app '1874900' (Missing configuration) » : relancez la même commande, le téléchargement reprend.

Télécharger le serveur (quelques minutes)
su - reforger -c "/opt/reforger/steamcmd/steamcmd.sh +force_install_dir /opt/reforger/server +login anonymous +app_update 1874900 validate +quit"
Résultat attendu
...
Success! App '1874900' fully installed.
Vérifier qu'aucune bibliothèque ne manque au serveur
ldd /opt/reforger/server/ArmaReforgerServer | grep -c 'not found'

4Écrire config.json

Le serveur lit tout dans un fichier JSON : le port du jeu (2001), le port d'interrogation (17777, celui de la liste des serveurs), puis dans game le nom affiché, le mot de passe des joueurs, le mot de passe d'administration et le scénario. Changez les deux mots de passe avant de créer le fichier ; laissez password vide ("") pour un serveur ouvert.

Créer config.json (changez les deux mots de passe)
cat > /opt/reforger/config.json << 'EOF'
{
  "bindAddress": "0.0.0.0",
  "bindPort": 2001,
  "publicAddress": "",
  "publicPort": 2001,
  "a2s": {
    "address": "0.0.0.0",
    "port": 17777
  },
  "game": {
    "name": "Mon serveur Arma Reforger",
    "password": "ChangezMoi",
    "passwordAdmin": "ChangezMoiAussi",
    "scenarioId": "{ECC61978EDCC2B5A}Missions/23_Campaign.conf",
    "maxPlayers": 32,
    "visible": true,
    "crossPlatform": true,
    "supportedPlatforms": [
      "PLATFORM_PC",
      "PLATFORM_XBL",
      "PLATFORM_PSN"
    ],
    "gameProperties": {
      "serverMaxViewDistance": 2500,
      "serverMinGrassDistance": 50,
      "networkViewDistance": 1000,
      "disableThirdPerson": false,
      "fastValidation": true,
      "battlEye": true
    },
    "mods": []
  },
  "operating": {
    "lobbyPlayerSynchronise": true,
    "disableCrashReporter": true,
    "playerSaveTime": 120,
    "aiLimit": -1
  }
}
EOF
chown reforger:reforger /opt/reforger/config.json

Le scénario ci-dessus est Conflict sur Everon. Pour en changer, remplacez la valeur de scenarioId par l'une de celles-ci, puis redémarrez le serveur (étape 6) :

{ECC61978EDCC2B5A}Missions/23_Campaign.conf
Conflict, Everon
{C700DB41F0C546E1}Missions/23_Campaign_Arland.conf
Conflict, Arland
{59AD59368755F41A}Missions/21_GM_Eden.conf
Game Master, Everon
{2BBBE828037C6F4B}Missions/22_GM_Arland.conf
Game Master, Arland
{DAA03C6E6099D50F}Missions/24_CombatOps.conf
Combat Ops, Arland

5Démarrer le serveur comme un service

Le serveur s'enregistre auprès du service en ligne du jeu en HTTPS et cherche les certificats racines dans /etc/ssl/certs/ca-certificates.crt, un nom que ces systèmes n'utilisent pas : sans ce lien, le journal répète « Curl error=Problem with the SSL CA cert » et le serveur ne démarre jamais.

Donner au serveur le fichier des certificats sous le nom qu'il attend
ln -s /etc/pki/tls/certs/ca-bundle.crt /etc/ssl/certs/ca-certificates.crt && ls -la /etc/ssl/certs/ca-certificates.crt
Résultat attendu
lrwxrwxrwx. 1 root root 32 ... /etc/ssl/certs/ca-certificates.crt -> /etc/pki/tls/certs/ca-bundle.crt

Le serveur s'enregistre auprès du service en ligne du jeu en HTTPS et cherche les certificats racines dans /etc/ssl/certs/ca-certificates.crt, un nom qu'openSUSE n'utilise pas : sans ce lien, le journal répète « Curl error=Problem with the SSL CA cert » et le serveur ne démarre jamais.

Donner au serveur le fichier des certificats sous le nom qu'il attend
ln -s /etc/ssl/ca-bundle.pem /etc/ssl/certs/ca-certificates.crt && ls -la /etc/ssl/certs/ca-certificates.crt
Résultat attendu
lrwxrwxrwx 1 root root 22 ... /etc/ssl/certs/ca-certificates.crt -> /etc/ssl/ca-bundle.pem

Le service lance le serveur avec l'utilisateur reforger, avec config.json et un dossier de profil (/opt/reforger/profile) qui reçoit les journaux et les sauvegardes. À l'arrêt, le serveur sauvegarde la partie avant de quitter. Le démarrage prend une trentaine de secondes.

Créer le service reforger
cat > /etc/systemd/system/reforger.service << 'EOF'
[Unit]
Description=Serveur Arma Reforger
After=network.target

[Service]
User=reforger
Group=reforger
WorkingDirectory=/opt/reforger/server
ExecStart=/opt/reforger/server/ArmaReforgerServer -config /opt/reforger/config.json -profile /opt/reforger/profile -maxFPS 60
TimeoutStopSec=60
Restart=on-failure
RestartSec=15

[Install]
WantedBy=multi-user.target
EOF
Activer et démarrer le service
systemctl daemon-reload && systemctl enable --now reforger
Résultat attendu
Created symlink /etc/systemd/system/multi-user.target.wants/reforger.service → /etc/systemd/system/reforger.service.
Une minute plus tard : le serveur est enregistré et écoute
systemctl is-active reforger && grep -h 'Starting RPL server\|Server registered\|Entered online game state' $(ls -d /opt/reforger/profile/logs/logs_* | tail -n 1)/console.log && ss -lunp | grep enfMain | awk '{print $4}' | sort
Résultat attendu
active
21:58:52.759 NETWORK      : Starting RPL server, listening on address 0.0.0.0:2001, fastValidation=true
21:58:54.052 BACKEND      : Server registered with address: 203.0.113.42:2001
21:58:54.480 DEFAULT      : Entered online game state.
0.0.0.0:17777
0.0.0.0:2001
(l'adresse enregistrée est l'adresse IP publique de votre serveur)

La sonde ci-dessous interroge le port 17777 comme le fait la liste des serveurs du jeu.

Interroger le serveur comme le fait la liste des serveurs
python3 - << 'EOF'
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM); s.settimeout(5)
q = b'\xff\xff\xff\xffTSource Engine Query\x00'
s.sendto(q, ('127.0.0.1', 17777)); r = s.recvfrom(4096)[0]
if r[4:5] == b'A':
    s.sendto(q + r[5:9], ('127.0.0.1', 17777)); r = s.recvfrom(4096)[0]
p = r[6:].split(b'\x00')
print(p[0].decode(), '|', p[1].decode())
EOF
Résultat attendu
Mon serveur Arma Reforger | #AR-Campaign_ScenarioName_Everon

6Gérer le serveur : journal, arrêt, redémarrage

Le serveur écrit un dossier de journaux par démarrage dans /opt/reforger/profile/logs ; console.log est le journal principal. Il y a des dizaines de lignes marquées (E) sur des matériaux, des entités ou des polices : le serveur n'a pas les ressources graphiques du jeu, ces lignes sont normales.

Suivre le journal du serveur en direct (Ctrl+C pour sortir)
tail -f $(ls -d /opt/reforger/profile/logs/logs_* | tail -n 1)/console.log
Voir l'état du service
systemctl status reforger
Arrêter proprement (la partie est sauvegardée, 3 à 4 secondes)
systemctl stop reforger
Vérifier que la partie a été sauvegardée à l'arrêt
grep -h PERSISTENCE $(ls -d /opt/reforger/profile/logs/logs_* | tail -n 1)/console.log
Résultat attendu
22:00:11.648 DEFAULT      : [PERSISTENCE] Save (SHUTDOWN) started.
22:00:11.730 DEFAULT      : [PERSISTENCE] Save completed successfully.
Démarrer
systemctl start reforger
Redémarrer (après un changement de config.json)
systemctl restart reforger

7Ouvrir les ports dans le pare-feu

Les joueurs se connectent en UDP sur le port 2001 ; le port 17777 en UDP sert à la liste des serveurs. La commande active le pare-feu du système en gardant SSH autorisé, puis ouvre les ports.

Activer le pare-feu (SSH reste autorisé) et ouvrir les ports du jeu
apt install -y ufw && ufw allow 22/tcp && ufw allow 2001/udp && ufw allow 17777/udp && ufw --force enable
Résultat attendu
...
Firewall is active and enabled on system startup
Activer le pare-feu (SSH reste autorisé) et ouvrir les ports du jeu
dnf install -y firewalld && systemctl enable --now firewalld && firewall-cmd --permanent --add-port=2001/udp --add-port=17777/udp && firewall-cmd --reload
Résultat attendu
...
success
success
Activer le pare-feu (SSH reste autorisé) et ouvrir les ports du jeu
dnf install -y firewalld && systemctl enable --now firewalld && firewall-cmd --permanent --add-port=2001/udp --add-port=17777/udp && firewall-cmd --reload
Résultat attendu
...
success
success
Ouvrir les ports du jeu (firewalld est déjà actif sur openSUSE)
firewall-cmd --permanent --add-port=2001/udp --add-port=17777/udp && firewall-cmd --reload
Résultat attendu
success
success
Vérifier les règles
ufw status
Résultat attendu
Status: active
22/tcp                     ALLOW       Anywhere
2001/udp                   ALLOW       Anywhere
17777/udp                  ALLOW       Anywhere
Vérifier les règles
firewall-cmd --list-ports
Résultat attendu
2001/udp 17777/udp
Vérifier les règles
firewall-cmd --list-ports
Résultat attendu
2001/udp 17777/udp
Vérifier les règles
firewall-cmd --list-ports
Résultat attendu
2001/udp 17777/udp

8Se connecter au serveur

  1. Lancez Arma Reforger, ouvrez la liste des serveurs et cherchez le nom donné à game.name (Mon serveur Arma Reforger).
  2. Entrez le mot de passe de game.password.
  3. Le mot de passe de game.passwordAdmin sert à prendre les droits d'administration dans le jeu.

9Sauvegarder la partie chaque nuit

Le script archive config.json et les sauvegardes du serveur (profile/profile/.save) dans /opt/reforger/backups en gardant les 7 dernières archives ; cron le lance chaque nuit à 4 h.

Créer le script de sauvegarde
cat > /opt/reforger/backup.sh << 'EOF'
#!/bin/sh
BACKUP_DIR=/opt/reforger/backups
DATE=$(date +%Y-%m-%d_%H-%M)
mkdir -p $BACKUP_DIR
tar -czf $BACKUP_DIR/reforger-$DATE.tar.gz -C /opt/reforger config.json profile/profile/.save
cd $BACKUP_DIR && ls -t | tail -n +8 | xargs -r rm
EOF
chmod +x /opt/reforger/backup.sh && chown reforger:reforger /opt/reforger/backup.sh
Tester une sauvegarde tout de suite
su - reforger -c '/opt/reforger/backup.sh && ls -la /opt/reforger/backups'
Résultat attendu
-rw-rw-r-- 1 reforger reforger 10842 ... reforger-2026-09-21_22-00.tar.gz
(la taille grandit avec la partie)
Installer et démarrer cron
apt install -y cron && systemctl enable --now cron
Installer et démarrer cron
dnf install -y cronie && systemctl enable --now crond
Installer et démarrer cron
dnf install -y cronie && systemctl enable --now crond
Installer et démarrer cron
zypper -n install cronie && systemctl enable --now cron
Programmer la sauvegarde chaque nuit à 4 h
su - reforger -c '(crontab -l 2>/dev/null; echo "0 4 * * * /opt/reforger/backup.sh") | crontab - && crontab -l'
Résultat attendu
0 4 * * * /opt/reforger/backup.sh

10Mettre à jour le serveur

Après une mise à jour du jeu, mettez le serveur à jour. La commande arrête le serveur (ce qui sauvegarde la partie), passe par SteamCMD, puis le relance.

Mettre à jour le serveur (serveur arrêté, puis relancé)
systemctl stop reforger && su - reforger -c "/opt/reforger/steamcmd/steamcmd.sh +force_install_dir /opt/reforger/server +login anonymous +app_update 1874900 +quit" && systemctl start reforger
Résultat attendu
... Success! App '1874900' already up to date.
(ou « fully installed » quand une mise à jour a été téléchargée)

Erreurs fréquentes

Serveur prêt

Votre serveur Arma Reforger démarre avec la machine, sauvegarde la partie à l'arrêt et chaque nuit, et écoute sur les ports 2001 et 17777. Donnez le nom du serveur et son mot de passe à vos joueurs.

💬 Écrivez-nous sur Messenger !