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

Installer un serveur Garry's Mod sur Linux (Ubuntu, Debian, AlmaLinux)

Documentation / Tutoriels Linux / Serveurs de jeux / Installer un serveur Garry's Mod sur Linux (Ubuntu, Debian, AlmaLinux)
Mis à jour le 20/09/2026
18 vues
Intermédiaire
30 minutes

Prérequis

Votre serveur :

Ce guide installe le serveur dédié Garry's Mod avec SteamCMD, l'outil de Valve : un utilisateur dédié, le serveur (6,5 Go), un service qui le démarre avec la machine, 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 gmod, dont le dossier personnel est /opt/gmod, 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 gmod
mkdir -p /opt/gmod/server /opt/gmod/steamcmd && useradd -r -s /bin/bash -d /opt/gmod gmod && chown -R gmod:gmod /opt/gmod
Télécharger SteamCMD (en tant que gmod)
su - gmod -c "cd /opt/gmod/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 Garry's Mod (6,5 Go)

SteamCMD se met à jour puis télécharge l'application 4020, le serveur dédié Garry's Mod. Comptez de deux à dix minutes selon la machine. Si la commande se termine sur une erreur, relancez-la : elle reprend où elle en était.

Installer le serveur Garry's Mod
su - gmod -c "/opt/gmod/steamcmd/steamcmd.sh +force_install_dir /opt/gmod/server +login anonymous +app_update 4020 validate +quit"
Résultat attendu
... Update state (0x61) downloading, progress: 98.22 (6764344923 / 6886764390)
Success! App '4020' fully installed.
Vérifier la taille et la présence du lanceur
du -sh /opt/gmod/server && ls -l /opt/gmod/server/srcds_run
Résultat attendu
6.5G	/opt/gmod/server
-rwxrwxr-x 1 gmod gmod 10183 Sep 20 19:24 /opt/gmod/server/srcds_run
(les droits et la date varient selon le système)

4Préparer le serveur : bibliothèque Steam, configuration, script de démarrage

Le serveur est un programme 32 bits : il cherche steamclient.so dans ~/.steam/sdk32, on y met un lien vers celui de SteamCMD. Le fichier server.cfg porte le nom du serveur et le mot de passe RCON ; changez-les.

Lier steamclient.so pour le serveur
su - gmod -c "mkdir -p ~/.steam/sdk32 && ln -sf /opt/gmod/steamcmd/linux32/steamclient.so ~/.steam/sdk32/steamclient.so"
Créer server.cfg
cat > /opt/gmod/server/garrysmod/cfg/server.cfg << 'EOF'
hostname "Mon serveur Garry's Mod"
rcon_password "ChangezMoi"
sv_password ""
sv_region 0
EOF

Le script de démarrage porte la carte, le mode de jeu et le nombre de joueurs. Avec un jeton GSLT, ajoutez +sv_setsteamaccount VOTRE_TOKEN_GSLT à la fin de la ligne exec ; sans jeton, le serveur démarre en compte anonyme, joignable par son adresse, moins bien classé dans la liste publique.

Créer start.sh
cat > /opt/gmod/start.sh << 'EOF'
#!/bin/sh
cd /opt/gmod/server
exec ./srcds_run -game garrysmod -console -condebug -norestart -ip 0.0.0.0 -port 27015 +maxplayers 16 +map gm_construct +gamemode sandbox
EOF
chmod +x /opt/gmod/start.sh && chown -R gmod:gmod /opt/gmod
+map gm_construct
La carte de départ ; gm_flatgrass est l'autre carte livrée avec le jeu
+gamemode sandbox
Le mode de jeu ; les autres viennent du Workshop
+maxplayers 16
Le nombre de joueurs
-condebug
Écrit la console du serveur dans garrysmod/console.log
+host_workshop_collection ID -authkey CLE
Charge une collection du Workshop au démarrage ; la clé vient de steamcommunity.com/dev/apikey

5Démarrer le serveur comme un service

Le service systemd lance start.sh avec l'utilisateur gmod, relance le serveur s'il plante et le démarre avec la machine.

Créer le service gmod
cat > /etc/systemd/system/gmod.service << 'EOF'
[Unit]
Description=Serveur Garry's Mod
After=network.target

[Service]
User=gmod
Group=gmod
WorkingDirectory=/opt/gmod/server
ExecStart=/opt/gmod/start.sh
Restart=on-failure
RestartSec=15
LimitNOFILE=100000

[Install]
WantedBy=multi-user.target
EOF
Activer et démarrer le service
systemctl daemon-reload && systemctl enable --now gmod
Résultat attendu
Created symlink /etc/systemd/system/multi-user.target.wants/gmod.service → /etc/systemd/system/gmod.service.

Sous systemd, le journal du serveur s'arrête après deux lignes « SteamAPI_Init » : c'est normal, le serveur tourne. Sa console est dans garrysmod/console.log, et la preuve qu'il répond vient du port et de la sonde ci-dessous, qui l'interroge comme le fait la liste des serveurs. Remplacez 203.0.113.42 par l'adresse IP de votre serveur : la sonde ne répond pas sur 127.0.0.1.

Une minute plus tard : le serveur écoute
systemctl is-active gmod && ss -lunp | grep 27015
Résultat attendu
active
UNCONN 0      0            0.0.0.0:27015      0.0.0.0:*    users:(("srcds_linux",pid=33434,fd=7))
Interroger le serveur comme le fait la liste des serveurs
python3 - 203.0.113.42 << 'EOF'
import socket, sys
h = sys.argv[1]
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM); s.settimeout(5)
q = b'\xff\xff\xff\xffTSource Engine Query\x00'
s.sendto(q, (h, 27015)); r = s.recvfrom(4096)[0]
if r[4:5] == b'A':
    s.sendto(q + r[5:9], (h, 27015)); r = s.recvfrom(4096)[0]
p = r[6:].split(b'\x00')
print(p[0].decode(), '|', p[1].decode(), '|', p[3].decode())
EOF
Résultat attendu
Mon serveur Garry's Mod | gm_construct | Sandbox

6Ouvrir les ports dans le pare-feu

Les joueurs se connectent en UDP sur le port 27015 ; le TCP sert à RCON. 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 27015/udp && ufw allow 27015/tcp && 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=27015/udp --add-port=27015/tcp && 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=27015/udp --add-port=27015/tcp && 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=27015/udp --add-port=27015/tcp && firewall-cmd --reload
Résultat attendu
success
success

7Se connecter et administrer

  1. Lancez Garry's Mod et activez la console dans les paramètres (Clavier, Avancé, Activer la console de développement).
  2. Ouvrez la console avec la touche ~ (ou ` selon le clavier).
  3. Si le serveur a un mot de passe (sv_password), tapez d'abord : password votre_mot_de_passe
  4. Tapez : connect 203.0.113.42:27015 (l'adresse IP de votre serveur).

Depuis la console du jeu, une fois connecté, vous commandez le serveur avec le mot de passe RCON de server.cfg :

S'identifier comme administrateur (une fois par session)
rcon_password ChangezMoi
Changer de carte
rcon changelevel gm_flatgrass
Expulser un joueur
rcon kick NomDuJoueur
Voir les joueurs connectés
rcon status
Mettre un mot de passe au serveur
rcon sv_password motdepasse

8Gérer et mettre à jour le serveur

Voir l'état du service
systemctl status gmod
Voir la console du serveur en direct (Ctrl+C pour sortir)
tail -f /opt/gmod/server/garrysmod/console.log
Redémarrer
systemctl restart gmod
Arrêter
systemctl stop gmod

Après une mise à jour du jeu, les joueurs à jour ne peuvent plus entrer sur un serveur en retard : la mise à jour est la même commande que l'installation, serveur arrêté.

Mettre à jour le serveur (serveur arrêté, puis relancé)
systemctl stop gmod && su - gmod -c "/opt/gmod/steamcmd/steamcmd.sh +force_install_dir /opt/gmod/server +login anonymous +app_update 4020 +quit" && systemctl start gmod
Résultat attendu
... Success! App '4020' fully installed.
(ou « already up to date » s'il n'y a rien de neuf)

Erreurs fréquentes

Serveur prêt

Votre serveur Garry's Mod démarre avec la machine, se relance s'il tombe et écoute sur le port 27015. La même base SteamCMD sert aux autres serveurs de jeux.

💬 Écrivez-nous sur Messenger !