Installer un serveur Insurgency: Sandstorm sur Linux (Ubuntu, Debian, AlmaLinux)

Tutoriels Linux › Serveurs de jeux

Documentation / Tutoriels Linux / Serveurs de jeux / Installer un serveur Insurgency: Sandstorm sur Linux (Ubuntu, Debian, AlmaLinux)
Mis à jour le 08/10/2026
294 vues
Intermédiaire
30 minutes

Prérequis

Votre serveur :

Ce guide installe le serveur dédié Insurgency: Sandstorm avec SteamCMD, l'outil de Valve : un utilisateur dédié, le serveur (4,7 Go), ses réglages et ses administrateurs, un script de démarrage qui porte la carte, le scénario, le nom et les ports, un service qui l'arrête proprement, la sonde qui prouve qu'il répond, le pare-feu, la connexion depuis le jeu 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 sandstorm, dont le dossier personnel est /opt/sandstorm, 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 sandstorm
mkdir -p /opt/sandstorm/server /opt/sandstorm/steamcmd && useradd -r -s /bin/bash -d /opt/sandstorm sandstorm && chown -R sandstorm:sandstorm /opt/sandstorm
Télécharger SteamCMD (en tant que sandstorm)
su - sandstorm -c "cd /opt/sandstorm/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 Insurgency: Sandstorm (4,7 Go)

SteamCMD télécharge l'application 581330, le serveur dédié Insurgency: Sandstorm : quelques minutes. Il arrive souvent que le premier passage se termine sur « ERROR! Failed to install app '581330' (Missing configuration) » sans rien télécharger : relancez la même commande, elle passe.

Installer le serveur Insurgency: Sandstorm
su - sandstorm -c "/opt/sandstorm/steamcmd/steamcmd.sh +force_install_dir /opt/sandstorm/server +login anonymous +app_update 581330 validate +quit"
Résultat attendu
...
Success! App '581330' fully installed.
Vérifier la taille et qu'aucune bibliothèque ne manque (0 = rien ne manque)
du -sh /opt/sandstorm/server && ldd /opt/sandstorm/server/Insurgency/Binaries/Linux/InsurgencyServer-Linux-Shipping | grep -c 'not found'
Résultat attendu
4.7G	/opt/sandstorm/server
0

4Réglages et administrateurs

Les réglages de partie vont dans Insurgency/Saved/Config/LinuxServer/Game.ini, section [/Script/Insurgency.INSGameMode] ; les administrateurs dans Insurgency/Config/Server/Admins.txt, un SteamID64 par ligne. Remplacez 76561197960287930 par votre SteamID64 (17 chiffres, visible sur votre profil Steam).

Créer Game.ini et Admins.txt (remplacez le SteamID64)
mkdir -p /opt/sandstorm/server/Insurgency/Saved/Config/LinuxServer /opt/sandstorm/server/Insurgency/Config/Server
cat > /opt/sandstorm/server/Insurgency/Saved/Config/LinuxServer/Game.ini << 'EOF'
[/Script/Insurgency.INSGameMode]
bKillFeed=True
bDeadSay=True
FriendlyFireModifier=0.2
EOF
cat > /opt/sandstorm/server/Insurgency/Config/Server/Admins.txt << 'EOF'
76561197960287930
EOF
chown -R sandstorm:sandstorm /opt/sandstorm
bKillFeed=True
Affiche les éliminations à tous
bDeadSay=True
Les morts peuvent parler aux vivants
FriendlyFireModifier=0.2
Part des dégâts infligés aux coéquipiers (0 à 1)

5Créer le script de démarrage et le service

La ligne de commande porte la carte (Farmhouse), le scénario (Checkpoint, côté Security), le nombre de joueurs, le nom affiché et les deux ports : 27102 pour le jeu, 27131 pour la liste des serveurs. Changez le nom. Le serveur quitte par une erreur quand il reçoit l'ordre d'arrêt : le script relaie l'arrêt et rend 0 au service, qui affiche alors un arrêt propre.

Créer start.sh (changez le nom du serveur)
cat > /opt/sandstorm/start.sh << 'EOF'
#!/bin/sh
# Le serveur quitte par une erreur (SIGSEGV) quand il recoit SIGTERM : ce script relaie
# l'arret et rend 0 au service quand c'est lui qui l'a demande.
cd /opt/sandstorm/server
./Insurgency/Binaries/Linux/InsurgencyServer-Linux-Shipping Farmhouse?Scenario=Scenario_Farmhouse_Checkpoint_Security?MaxPlayers=8 -hostname="Mon serveur Insurgency" -Port=27102 -QueryPort=27131 -log &
PID=$!
trap 'kill $PID; wait $PID; exit 0' TERM
wait $PID
EOF
chmod +x /opt/sandstorm/start.sh && chown sandstorm:sandstorm /opt/sandstorm/start.sh
Farmhouse?Scenario=Scenario_Farmhouse_Checkpoint_Security
La carte et le scénario de départ ; les 63 scénarios du cycle par défaut (Scenario_Hideout_Firefight_East, Scenario_Refinery_Push_Insurgents...) sont listés dans le journal
MaxPlayers=8
Le nombre de joueurs
-hostname=
Le nom affiché dans la liste des serveurs
-Port=27102, -QueryPort=27131
Le port du jeu et le port d'interrogation, en UDP
Créer le service sandstorm
cat > /etc/systemd/system/sandstorm.service << 'EOF'
[Unit]
Description=Serveur Insurgency: Sandstorm
After=network.target

[Service]
User=sandstorm
Group=sandstorm
WorkingDirectory=/opt/sandstorm/server
ExecStart=/opt/sandstorm/start.sh
KillMode=mixed
LimitNOFILE=100000
LimitCORE=0
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 sandstorm
Résultat attendu
Created symlink /etc/systemd/system/multi-user.target.wants/sandstorm.service → /etc/systemd/system/sandstorm.service.
Une minute plus tard : la carte est chargée et les ports écoutent
systemctl is-active sandstorm && grep -h 'listening on port\|Match State Changed from LoadingAssets' /opt/sandstorm/server/Insurgency/Saved/Logs/Insurgency.log | cut -c1-120 && ss -lunp | grep Insurg | awk '{print $4}' | sort
Résultat attendu
active
[2026.09.22-00.18.35:725][  0]LogNet: GameNetDriver IpNetDriver_2147482538 IpNetDriver listening on port 27102
[2026.09.22-00.18.37:437][  6]LogGameState: Match State Changed from LoadingAssets to WaitingToStart
0.0.0.0:27102
0.0.0.0:27131

La sonde ci-dessous interroge le port 27131 comme le fait la liste des serveurs.

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', 27131)); r = s.recvfrom(4096)[0]
if r[4:5] == b'A':
    s.sendto(q + r[5:9], ('127.0.0.1', 27131)); r = s.recvfrom(4096)[0]
p = r[6:].split(b'\x00')
print(p[0].decode(), '|', p[1].decode(), '|', p[2].decode())
EOF
Résultat attendu
Mon serveur Insurgency | Farmhouse | sandstorm

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

Suivre le journal du serveur en direct (Ctrl+C pour sortir)
tail -f /opt/sandstorm/server/Insurgency/Saved/Logs/Insurgency.log
Voir l'état du service
systemctl status sandstorm
Arrêter (quelques secondes)
systemctl stop sandstorm
Démarrer
systemctl start sandstorm
Redémarrer (après un changement de start.sh ou de Game.ini)
systemctl restart sandstorm

7Ouvrir les ports dans le pare-feu

Les joueurs se connectent en UDP sur le port 27102 ; le port 27131 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 27102/udp && ufw allow 27131/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=27102/udp --add-port=27131/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=27102/udp --add-port=27131/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=27102/udp --add-port=27131/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
27102/udp                  ALLOW       Anywhere
27131/udp                  ALLOW       Anywhere
Vérifier les règles
firewall-cmd --list-ports
Résultat attendu
27102/udp 27131/udp
Vérifier les règles
firewall-cmd --list-ports
Résultat attendu
27102/udp 27131/udp
Vérifier les règles
firewall-cmd --list-ports
Résultat attendu
27102/udp 27131/udp

8Se connecter au serveur

  1. Lancez Insurgency: Sandstorm, ouvrez la liste des serveurs communautaires et cherchez le nom donné à -hostname (Mon serveur Insurgency).
  2. Les administrateurs déclarés dans Admins.txt ont le menu d'administration dans le jeu.

9Mettre à jour le serveur

Après une mise à jour du jeu, mettez le serveur à jour : la même commande que l'installation, serveur arrêté.

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

Votre serveur Insurgency: Sandstorm démarre avec la machine, s'arrête proprement, se relance s'il tombe et écoute sur le port 27102. Donnez le nom du serveur à vos joueurs.

Erreurs fréquentes

💬 Écrivez-nous sur Messenger !