SteamCMD
Le client Steam console ou SteamCMD est l'outil de Valve permettant d'installer et de mettre à jour les serveurs dédiés en ligne de commande. C'est la manière la plus fiable et flexible de créer un serveur dédié, sous Windows ou Linux, mais elle nécessite quelques connaissances.
Utilisation
Installation
1. Télécharger l'outil SteamCMD
- Windows : https://steamcdn-a.akamaihd.net/client/installer/steamcmd.zip
- Linux :
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
- Il est recommandé d'utiliser un utilisateur dédié à cet usage sous Linux. Des paquets sont à installer, voir https://developer.valvesoftware.com/wiki/SteamCMD#Linux .
2. Extraire le contenu dans un repertoire dédié.
- Windows : Copier/coller le contenu depuis explorer, ou utiliser un extracteur comme 7zip.
- Linux :
tar -xvzf steamcmd_linux.tar.gz
3. Lancer SteamCMD pour la première fois
- Ouvrez une invite de commande dans ce répertoire et lancez SteamCMD
- Windows:
steamcmd
- Linux:
./steamcmd.sh
- Il peut être nécessaire de rendre le script exécutable :
chmod +x steamcmd.sh
- Windows:
Le programme se mettra à jour et entrera dans une invite Steam>
. Entrer help
pour obtenir les commandes et informations.
4. Quitter SteamCMD (pour info)
- Entrez :
quit
Télécharger un serveur
Il vous faut d'abord connaître l'APPID du serveur.
1. Connexion à Steam Pour la plupart des serveurs, vous aurez simplement besoin de vous connecter en anonyme
login anonymous
Si la connexion en anonyme ne fonctionne pas pour un jeu, vous aurez à vous connecter avec un compte Steam
login <username>
Entrer votre mot de passe. Vérifier ensuite vos mail pour votre code d'accès Steam Guard (Ou votre téléphone pour le 2FA) et entrez-le dans l'invite (Vous n'aurez qu'à le faire une fois par ordinateur/serveur).
Vous aurez ensuite un message vous indiquant que la connexion a été validée.
2. Démarrez SteamCMD et définissez le répertoire d'installation de l'application.
force_install_dir <répertoire>
- Exemple: Dossier
cs_go
dans le répertoire courant:
force_install_dir ./cs_go/
3. Installer ou mettre à jour une application. L'<app_id> est l'identifiant Steam Application. Pour valider le contenu de l'application, il suffit d'ajouter validate
dans la commande. Pour participer au beta HLDS, ajouter -beta beta
dans la commande. Pour participer au beta SRCDS, ajouter -beta prerelease
dans la commande.
app_update <app_id>
- Exemple: installer et valider CS:GO:
app_update 740 validate
- Example: installer et valider la version beta de HLDS (CS 1.6):
app_update 90 -beta beta validate
- Example: installer et valider la version beta de CS:S:
app_update 232330 -beta prerelease validate
- Example: installer et valider CS:CZ:
app_set_config 90 mod czero app_update 90 validate
4. Une fois terminé, entrez quit
pour vous déconnecter des serveurs Steam. Ne fermez jamais l'invite sans utiliser cette commande.
Serveurs supportés
La liste la plus à jour est disponible ici.
Voici une liste (non à jour) de serveurs compatible avec SteamCMD. Chaque commande listée dans la colonne extra
est nécessaire avant la ligne app_update
.
Les extras sont nécessaires à ajouter lors de l'installation des serveurs de jeu où ils sont indiqués.
Server | APPID | Extra |
---|---|---|
HLDS pour Half-Life | 90 | |
Counter-Strike 1.6 dedicated server | 90 | +app_set_config "90 mod cstrike" |
Counter-Strike: Condition Zero Beta dedicated server | 90 | +app_set_config "90 mod czero" |
Deathmatch Classic Beta dedicated server | 90 | +app_set_config "90 mod dmc" |
Day of Defeat dedicated server | 90 | +app_set_config "90 mod dod" |
Half-Life: Opposing Force Beta dedicated server | 90 | +app_set_config "90 mod gearbox" |
Ricochet Beta dedicated server | 90 | +app_set_config "90 mod ricochet" |
Team Fortress Classic Beta dedicated server | 90 | +app_set_config "90 mod tfc" |
Counter-Strike: Global Offensive dedicated server | 740 | |
The Ship dedicated server | 2403 | |
Garry's Mod dedicated server | 4020 | |
Natural Selection 2 dedicated server | 4940 | |
Natural Selection 2 Beta dedicated server | 4940 | -beta beta |
Serious Sam 3 dedicated server | 41080 | |
Nuclear Dawn dedicated server | 111710 | |
Red Orchestra: Ostfront 41-45 Windows dedicated server | 223240 | |
Red Orchestra: Ostfront 41-45 Linux dedicated server | 223250 | |
Red Orchestra 2: Heroes of Stalingrad and Rising Storm Windows dedicated server | 212542 | |
Killing Floor Windows dedicated server | 215350 | |
Killing Floor Linux dedicated server | 215360 | |
Left 4 Dead 2 dedicated server | 222860 | |
Team Fortress 2 dedicated server | 232250 | |
Day of Defeat: Source dedicated server | 232290 | |
Counter-Strike: Source dedicated server | 232330 | |
Half-Life 2: Deathmatch dedicated server | 232370 | |
Blade Symphony Beta dedicated server | 228780 | |
Source SDK Base 2013 MP dedicated server | 244310 |
Astuce : Pour installer plusieurs mods, séparer les noms avec des virgules
.
+app_set_config 90 mod czero,dod
.
Scripter SteamCMD
Généralités
L'idée est de créer un script automatisant les fonctions d'installation, de mise à jour, et de validation du serveur. Pour ce faire, vous utiliserez le Batch sous Windows (.bat), ou le BASH sous Linux. Vous pouvez simplement exécuter plusieurs commandes vues précédemment. Pour ce-faire, vous exécuterez SteamCMD (./steamcmd sous Linux, ou steamcmd sous Windows) avec cette syntaxe (en remplaçant ce qui se trouve entre crochets) :
+login anonymous +force_install_dir <dossier_cible> +app_update <APPID> validate +quit
Pour les serveurs nécessitant la possession du jeu, vous au lieu de "+login anonymous", la syntaxe est la suivante :
+login <username> <password>
Pour les beta, il faudra ajouter "-beta beta"
. Example :
+login anonymous +force_install_dir /home/hl1server/serverfiles +app_update "90 -beta beta validate +quit
Scripts communautaires
Linux Game Server Managers
Linux est gâté avec Linux Game Server Managers ! Il s'agit d'un outil en lignes de commande puissant, permettant une installation automatisée et simplifiée, ainsi que la gestion de vos serveurs de jeu. De nombreux jeux sont supportés. Il vous faudra néanmoins comprendre un minimum l'anglais.
Fonctionnalités
- Installeur (SteamCMD)
- De nombreux paramètres de démarrage (dont le support du workshop)
- Start/Stop/Restart du serveur
- Console
- Monitoring du serveur
- Mise à jour du serveur (SteamCMD)
- Backup
- Et bien d'autres...
Serveurs supportés
- ARMA 3
- BrainBread 2
- Black Mesa: Deathmatch
- Blade Symphony
- Codename CURE
- Counter Strike
- Counter Strike: Condition Zero
- Counter Strike: Global Offensive
- Counter Strike: Source
- Double Action: Boogaloo
- Deathmatch Classic
- Day of Defeat
- Day of Defeat: Source
- Don't Starve Together
- Fistful of Frags
- Garry's Mod
- Half-Life 2: Deathmatch
- Half-Life: Deathmatch Classic
- Half-Life Deathmatch: Source
- Hurtworld
- Insurgency
- Just Cause 2
- Killing Floor
- Left 4 Dead
- Left 4 Dead 2
- No More Room in Hell
- Natural Selection 2
- Opposing Force
- Red Orchestra: Ostfront 41-45
- Team Fortress Classic
- Team Fortress 2
- Team Fortress Classic
- 7 Days to Die
- Et bien d'autres encore, et d'autres à venir...
Liste complète et instructions : http://gameservermanagers.com
GitHub : https://github.com/dgibbs64/linuxgsm
Wiki : https://github.com/dgibbs64/linuxgsm/wiki
Support : https://steamcommunity.com/groups/linuxgsm/discussions
Windows
Créer son script
Il y a deux façons d'automatiser SteamCMD.
1. Avec les arguments de lancement de SteamCMD Pour CS:GO dans le dossier csgo/ du répertoire courant (anonyme):
steamcmd +login anonymous +force_install_dir csgo/ +app_update 740 validate +quit
Pour installer un mod spécifique de HL1, comme Counter-Strike: Condition Zero:
steamcmd +login anonymous +force_install_dir czero/ +app_set_config 90 mod czero +app_update 90 validate +quit
Pour un jeu qui demande une authentification, comme Killing Floor:
steamcmd +login <username> <password> +force_install_dir KF/ +app_update 215350 validate +quit
2. Créer un script.
- a. Création des commandes dans un fichier texte. Exemple:
// maj_css.txt
//
@ShutdownOnFailedCommand 1 //mettre à 0 si mise à jour de plusieurs serveurs
@NoPromptForPassword 1
//login <username> <password>
//for servers which don't need a login
login anonymous
force_install_dir css/
app_update 232330 validate
quit
- b. Lancer SteamCMD avec l'argument
+runscript
. Exemple:
steamcmd +runscript maj_css.txt
Exemple en Batch pour Windows
::=======================::
:: SteamCMD Guardian 1.2 ::
:: ckynick254 ::
::=======================::
set programname=SteamCMD Guardian 1.1
::=======================::
:: SET YOUR VARIABLES! ::
::=======================::
set servername=
set username=
set password=
::=======================::
:: Your folder ::
:: Replace after = ::
::=======================::
set runcmd=E:\Games\
::=======================::
:: End of variables ::
::=======================::
:: This will keep the window clean and easy to read
@ECHO off
:: Sets the title of the window
title %programname% - %servername%
:: Clears the window incase there is anything there
cls
COLOR 1f
CD %runcmd%
:: Prints to the window what we are doing
ECHO %programname% has been started!
:start
ECHO.
ECHO.
ECHO ##############################################################
ECHO # Dedicated Server #
ECHO # 1 - Half-Life: Deathmatch and Counter-Strike #
ECHO # 2 - Counter-Strike: Global Offensive #
ECHO # 3 - Nuclear Dawn Dedicated Server #
ECHO # 4 - Red Orchestra Dedicated Server #
ECHO # 5 - Red Orchestra 2: Heroes of Stalingrad Dedicated Server #
ECHO # 6 - Killing Floor Dedicated Server #
ECHO # 7 - Team Fortress 2 Dedicated Server Beta #
ECHO # 8 - HELP! #
ECHO # 9 - Exit #
ECHO ##############################################################
ECHO.
ECHO.
:: Delete variable %A%
SET "A="
SET /P A=Set Your Choice And Press Enter:
ECHO Loading .........
IF "%A%"=="1" set app=90
IF "%A%"=="2" set app=740
IF "%A%"=="3" set app=111710
IF "%A%"=="4" set app=223240
IF "%A%"=="5" set app=212542
IF "%A%"=="6" set app=215350
IF "%A%"=="7" set app=229830
IF "%A%"=="8" ECHO.
IF "%A%"=="8" ECHO https://developer.valvesoftware.com/wiki/SteamCMD
IF "%A%"=="8" ECHO.
IF "%A%"=="8" PAUSE
IF "%A%"=="8" goto start
IF "%A%"=="9" EXIT
:: This is a return point in case the server crashes or is closed
:restart
ECHO.
ECHO (%date%)(%time%) %servername% is now ONLINE
ECHO Watching %servername% for crashes...
>> "%servername%.log" ECHO.
>> "%servername%.log" ECHO (%date%)(%time%) %servername% is now ONLINE
>> "%servername%.log" ECHO (%date%)(%time%) Watching %servername% for crashes...
::Start the actual update window
start /wait steamcmd +login %username% %password% +force_install_dir %runcmd%%app%Server\ +app_update %app% validate
ECHO (%time%) WARNING: srcds closed or crashed, restarting.
ECHO.
ECHO (%date%)(%time%) Crash or Close detected!
ECHO %servername% is now restarting...
>> "%servername%.log" ECHO.
>> "%servername%.log" ECHO (%date%)(%time%) Crash or Close detected!
>> "%servername%.log" ECHO (%date%)(%time%) %servername% is now restarting...
::Server crashed or closed, so we point it to the return point to start the server again
GOTO restart
Problèmes connus
Paquets manquants
SteamCMD étant un programme 32-bit, des bibliothèques 32-bit sont requises pour les système 64-bit, même si l'équivalent 64-bit est installé.
Le message d'erreur associé ressemble à celui-ci:
steamcmd: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
Les solutions correspondantes pour chacune des distributions:
Debian et dérivées (Ubuntu, Mint, etc)
En root, exécutez :
dpkg --add-architecture i386 apt-get update apt-get install lib32gcc1 libstdc++6 libstdc++6:i386
Red Hat et dérivées (RHEL, Fedora, CentOS)
En root, exécutez :
yum install glibc.i686 libstdc++ libstdc++.i686
Arch Linux
N'oubliez pas d'activer le dépôt multilib .
pacman -S lib32-gcc-libs
Login Failure: No Connection
Sur les serveurs Linux, il est possible d'obtenir l'erreur "Login Failure: No Connection". Cela peut être dû à un problème dans les règles iptables. Il est possible d'utiliser ces commandes pour permettre la connexion:
iptables -A INPUT -p udp -m udp --sport 27000:27030 --dport 1025:65355 -j ACCEPT
iptables -A INPUT -p udp -m udp --sport 4380 --dport 1025:65355 -j ACCEPT
La liste des ports peut être trouvée ici: https://support.steampowered.com/kb_article.php?ref=8571-GLVN-8711&l=french
Sur les serveurs Windows, il est possible d'obtenir "SteamUpdater: Error: Download failed: http error 0". Une solution possible est de cocher "Détecter les paramètres automatiquement" dans les options internet local.
SteamCmd startup errors
Ulimit linux startup error
Certains utilisateurs peuvent obtenir une erreur ulimit (no permission/can not open file) quand le script démarre. Cette erreur est causée par l'argument -n trop bas d'ulimit. SteamCMD utilise des commandes standard de shell-script pour changer ulimit automatiquement, mais certains serveurs peuvent être protégé sur ce point (par l'administrateur/root).
Il est possible de corriger cela en définissant ce paramètre à 2048: ulimit -n 2048
. Cette commande doit être exécutée en administrateur/root.
Pour vérifier ce paramètre, il est possible d'entrer ulimit -a, le système répondra alors avec plusieurs lignes dont une:
open files (-n) 1024
Il est aussi possible de récupérer uniquement cette ligne en utilisant ulimit -a|grep "open files". "1024" est la valeur définie par le système.
January 2024