Ce tuto s'adresse à ceux qui veulent mettre en place un serveur dédié CS:GO sur Linux avec une distribution comme Debian Squeeze ou Ubuntu.
Voici les différents chapitres de ce tuto :
  • Installation des librairies nécessaires
  • Création de l'utilisateur steam et du répertoire du serveur steamcmd
  • Installation de Counter-Strike : Global Offensive via SteamCMD
  • Configuration du pare-feu
  • Installation de Metamod et Sourcemod
  • Configuration de Sourcemod
  • Configuration du serveur
  • Démarrer le serveur
  • Se connecter au serveur
  • Script de lancement du serveur
  • Cron de mise à jour du serveur
Installation des librairies nécessaires
Pour installer un dedicated server steam, les librairies ia32-libs sont nécessaires. Celles-ci concernent uniquement les serveurs Linux qui tournent avec un noyau 64-bit.
1root@server:~# apt-get install ia32-libs ia32-libs-gtk
Création de l'utilisateur steam et du répertoire du serveur steamcmd
Pour commencer on va créer un utilisateur que j'ai appelé ici steam qui aura les droits pour lancer le serveur car en root cela peut ouvrir des failles de sécurité évidentes.
1root@server:~# adduser steam
Maintenant que notre utilisateur est ajouté, on va créer le répertoire où se trouvera le serveur steam et on mettra l'utilisateur steam propriétaire de celui-ci.
1root@server:~# mkdir /var/steamcmd
2root@server:~# chown steam /var/steamcmd -R
Installation de Counter-Strike : Global Offensive via SteamCMD
Alors ici grosse différence par rapport à l'installation d'un serveur classique Steam comme pour Left 4 Dead 2 ou bien Counter-Strike 1.6. On va devoir passer par le Steam Console Client ou SteamCMD car CS:GO passe par le système de contenu Steam Pipe et n'est donc pas présent dans la liste des jeux du HLDSUpdateTool.
Pour moi SteamCMD est un système que je trouve useless bien que l'on soit obligé de s'en servir ici pour créer notre serveur dédié et vous allez comprendre pourquoi...
Allez c'est parti téléchargeons-le.
1root@server:~# su steam
2steam@server:~# cd /var/steamcmd
4steam@server:~# tar xvzf steamcmd.tar.gz
5steam@server:~# mkdir games
Alors l'URL de téléchargement pourrait vous faire peur mais elle est tout à fait "officielle" d'après le Wiki Valve Developer sur SteamCMD. C'est déjà une première chose qui pourrait nous rebuter...
Maintenant nous allons installer CS:GO dans le répertoire games via la console Steam. Pour cela exécutez steam.sh en tapant :
1steam@server:~# ./steam.sh
Si ça ne fonctionne pas et que vous avez une erreur de ce style :
./steam.sh: line 60: /var/steamcmd/linux32/steam: Aucun fichier ou dossier de ce type
Alors essayez la commande :
1steam@server:~# STEAMEXE=steamcmd ./steam.sh
Cette commande mettra à jour Steam et initialisera la console avec le prompt Steam>
Une fois sur le prompt Steam, il va falloir vous connecter avec votre compte Steam et c'est le point que je trouve vraiment useless pour monter un serveur dédié surtout que vous devez être déconnecté de tout client Steam sinon ça ne fonctionnera pas... Bref faisons :
1Steam> login username password
Remplacez username et password par vos identifiants Steam. Si vous avez un message disant Logging in user 'username' to Steam Public...Login Failure: Account Logon Denied, c'est soit que vous vous êtes trompé de mot de passe soit que votre compte utilise Steam Guard et alors vous avez dû recevoir un e-mail avec le code pour authentifier la nouvelle machine. Pour entrer le code, vous aurez juste à le rajouter après le mot de passe :
1Steam> login username password code
Il doit être marqué Logging in user 'username' to Steam Public...Success... et vous arrivez à nouveau sur le prompt Steam. Maintenant on va (enfin) installer le jeu.
1Steam> force_install_dir ./games/csgo/
2Steam> app_update 740 validate
La première commande va indiquer où installer le jeu tandis que la seconde va télécharger ou mettre à jour votre installation de l'application ayant pour Steam Application ID 740 (ici CS:GO) et vérifier les fichiers.
Une fois que c'est fini, tapez quit pour vous déconnecter proprement de Steam.
1Steam> quit
Configuration du pare-feu
Maintenant que notre serveur est installé, on va avant tout ajouter des exceptions pour certains ports et protocoles à notre firewall via iptables. J'ai trouvé la liste des ports de Steam sur le Steam Support.
1root@server:~# /sbin/iptables -A INPUT -p udp -m udp --dport 27000:27030 -j ACCEPT
2root@server:~# /sbin/iptables -A INPUT -p tcp -m tcp --dport 27014:27050 -j ACCEPT
3root@server:~# /sbin/iptables -A INPUT -p udp -m udp --dport 4380 -j ACCEPT
4root@server:~# /sbin/iptables -A INPUT -p udp -m udp --dport 3478 -j ACCEPT
5root@server:~# /sbin/iptables -A INPUT -p udp -m udp --dport 4379 -j ACCEPT
6root@server:~# /sbin/iptables -A INPUT -p udp -m udp --dport 1200 -j ACCEPT
7root@server:~# /sbin/iptables -A INPUT -p udp -m udp --dport 4380 -j ACCEPT
Cela devrait permettre de faire tourner votre serveur de façon adéquate. Alors bien sûr il faudra trier vos règles iptables si vous faites tourner un serveur web par exemple sur votre serveur dédié. Par exemple si vous utilisez principalement votre serveur web, il faudra mettre le port 80 en début de liste pour économiser du temps CPU. Si ce n'est pas le cas alors vous n'avez pas de questions à vous poser.
Installation de Metamod et Sourcemod
On va se pencher sur l'installation de Metamod et Sourcemod qui vont nous permettre de gérer plus facilement et de façon plus intuitive l'administration du serveur à partir du jeu.
Ici nous allons prendre les versions snapshots car à l'heure actuelle ce sont les seules qui fonctionnent sous CS:GO.
1root@server:~# su steam
2steam@server:~# cd /var/steamcmd/games/csgo
5steam@server:~# tar xvzf mmsource-* && tar xvzf sourcemod-*
6steam@server:~# cp -R addons/* csgo/addons/ && rm -Rf addons
7steam@server:~# cp -R cfg/* csgo/cfg/ && rm -Rf cfg
8steam@server:~# rm mmsource-* && rm sourcemod-*
Cela installera metamod:source et sourcemod dans les répertoires adéquats. Maintenant on va devoir modifier le fichier metamod.vdf ou le créer si vous ne l'avez pas.
1steam@server:~# vi csgo/addons/metamod.vdf
Et y coller ceci :
1"Plugin"
2{
3  "file"  "../csgo/addons/metamod/bin/server"
4}
On va tester si metamod:source et sourcemod ont bien été installés.
1steam@server:~# cd /var/steamcmd/games/csgo
2steam@server:~# ./srcds_run -game csgo
Dés que votre serveur affichera VAC secure mode is activated., tapez ceci :
1meta list
Normalement cela devrait vous afficher :
1Listing 3 plugins:
2  [01] SourceMod (1.5.0-dev+3635) by AlliedModders LLC
3  [02] CS Tools (1.5.0-dev+3635) by AlliedModders LLC
4  [03] SDK Tools (1.5.0-dev+3635) by AlliedModders LLC
Configuration de Sourcemod
Maintenant nous avons besoin de configurer Sourcemod afin d'y ajouter des admins et d'ajouter/supprimer certains plugins.
1steam@server:~# vi /var/steamcmd/games/csgo/csgo/addons/sourcemod/configs/admins_simple.ini
Dans ce fichier nous allons ajouter un admin avec les droits suprêmes. Pour cela je vous conseille de vous baser sur le steam ID plutôt que sur le pseudo ou l'adresse IP. Pour connaître votre steam ID, vous pouvez vous rendre sur Steam ID Finder et y entrer par exemple votre pseudo. Par exemple pour moi ça donne :
Maintenant que vous avez votre steam ID, ajoutez à la fin du fichier ceci :
1// Votre pseudo
2"STEAM_x:x:xxxxxxxx"            "99:z"
Pensez à les identifier en mettant un pseudo au-dessus de chaque steam ID inséré si vous avez beaucoup de monde à ajouter. Pour activer le panel admin quand vous serez sur le jeu et vérifier que vous êtes bien admin, vous devrez taper dans la console du jeu sm_admin.
Ensuite pour ajouter des plugins, je vous conseille de vous rendre sur AlliedModders qui en recense un grand nombre. Vous aurez juste à suivre les instructions puis à placer vos plugins dans le répertoire /addons/sourcemod/plugins. Pour supprimer un plugin, mettez-le dans le répertoire disabled.
Configuration du serveur
On va ensuite modifier la configuration du serveur CS:GO grâce au fichier server.cfg dans un premier temps.
1steam@server:~# vi /var/steamcmd/games/csgo/csgo/cfg/server.cfg
Je vous ai fait un fichier de config basique prévu pour du simple FFA mais après taillez-le à votre sauce.
// Nom du serveur
hostname "Cr@zy Server"// RCON password pour administrer le serveur depuis le jeu, changer les maps, etc...
rcon_password "VOTRE_RCON"
// Adresse e-mail de l'admin à contacter
sv_contact "webmaster@foo.com"
// Groupe Steam sur lequel est assigner le serveur
// vous trouverez l'ID de votre groupe en éditant le profil du groupe
// NE RIEN METTRE SI VOUS VOULEZ VOTRE SERVEUR PUBLIC
//sv_steamgroup "999999"
// Créer un search_key pour rejoindre rapidement votre serveur depuis le jeu
// Essayez de le rendre unique
// NE RIEN METTRE SI VOUS VOULEZ VOTRE SERVEUR PUBLIC
//sv_search_key "crazyws-l4d2-server"
// Désactiver mode LAN
sv_lan 0
// Port du serveur (defaut 27015)
hostport 27015
// Region - This sets the lobby in which your server will be part of
// You will want to set this to the closest location to your server
// eastcoast - sv_region 0
// westcoast - sv_region 1
// south america - sv_region 2
// europe - sv_region 3
// asia - sv_region 4
// australia - sv_region 5
// middle east - sv_region 6
// africa - sv_region 7
// world - sv_region 255
sv_region 1
// Misc
sv_pure 0
sv_cheats 0
sv_clearhinthistory 0
sv_consistency 0
sv_pausable 0
sv_voiceenable 1
// Bots
bot_quota 10
bot_quota_mode fill
bot_join_after_player 0
bot_join_team any
bot_defer_to_human_items 1
bot_defer_to_human_goals 0
bot_difficulty 1
bot_dont_shoot 0
bot_chatter off
bot_autodifficulty_threshold_low -2.0
bot_autodifficulty_threshold_high 0.0
// Game
mp_afterroundmoney 0
mp_playercashawards 1
mp_teamcashawards 1
mp_timelimit 45
mp_maxrounds 0
mp_roundtime 2
mp_freezetime 5
mp_buytime 60
mp_forcecamera 0
mp_defuser_allocation 0
mp_death_drop_gun 1
mp_death_drop_grenade 2
mp_death_drop_defuser 1
mp_match_end_restart 0
mp_friendlyfire 0
// Logging
log on
sv_logecho 1
sv_logfile 1
sv_log_onefile 0
sv_logbans 1
sv_logflush 0
sv_logsdir logs
// Perfs. réseau
sv_minrate 80000
sv_maxrate 0
sv_mincmdrate 128
sv_maxcmdrate 128
// Bans
exec banned_user.cfg
exec banned_ip.cfg
writeip
writeid
Démarrer le serveur
Allez c'est parti on va lancer notre serveur et tester si tout fonctionne bien.
1steam@server:~# cd /var/steamcmd/games/csgo/
2steam@server:~# ./srcds_run -game csgo -console -usercon -secure -maxplayers_override 28 +sv_pure 0 +net_public_adr 1.2.3.4 +game_type 0 +game_mode 0 +mapgroup mg_bomb +map de_dust2
A l'heure actuelle, certains paramètres lors du lancement du serveur sont primordiales comme par exemple +sv_pure 0 et +net_public_adr. Pensez d'ailleurs à mettre l'IP de votre serveur à la place de 1.2.3.4 pour le paramètre +net_public_adr. Pour +sv_pure 0, il est nécessaire de le mettre car certains fichiers sont invérifiables par le serveur côté client ce qui empêche la connexion des joueurs.
Pour récapituler, cette commande lancera votre serveur CS:GO avec les paramètres suivants :
  • mode Classic Casual
  • map de_dust2
  • 28 joueurs
  • adresse IP : 1.2.3.4
  • console activée
  • VAC secured
Vous devriez avoir quelque chose qui ressemble à ceci après son exécution :
Server will auto-restart if there is a crash.
LD_LIBRARY_PATH=/var/steamcmd/games/csgo/bin:/var/steamcmd/games/csgo:/var/steamcmd/games/csgo/bin:
#ConVarRef developer doesn't point to an existing ConVar
#Using breakpad minidump system
Using breakpad crash handler
#PERF WARNING: Failed to open model substitution file, cannot swap models out based on gpu_level!
#
#Console initialized.
#ConVarRef sv_alternateticks doesn't point to an existing ConVar
#Game.dll loaded for "Counter-Strike: Global Offensive"
#GameTypes: initializing game types interface from GameModes.txt.
#GameTypes: Creating new entry for maps/de_dust2_se.kv.
#GameTypes: merging game types interface from gamemodes_server.txt.
#GamesTypes: game type/mode (training/training) is missing convar "bot_quota".
Server is hibernating
[S_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.
[S_API FAIL] SteamAPI_Init() failed; unable to locate a running instance of Steam, or a local steamclient.dll.
Convar developer has conflicting FCVAR_CHEAT flags (child: no FCVAR_CHEAT, parent: has FCVAR_CHEAT, parent wins)
Particles: Missing 'particles/maps/gg_vietnam.pcf'
maxplayers set to 32
Required key "game_info" missing.
Unknown command "cl_bobamt_vert"
Unknown command "cl_bobamt_lat"
Unknown command "cl_bob_lower_amt"
Unknown command "cl_viewmodel_shift_left_amt"
Unknown command "cl_viewmodel_shift_right_amt"
Unknown command "cl_teamid_min"
Unknown command "cl_teamid_max"
Unknown command "cl_teamid_overhead"
Unknown command "cl_teamid_overhead_maxdist"
--------------------------------------------------------
sv_pure set to 0.
--------------------------------------------------------
--------------------------------------------------------
sv_pure value unchanged (current value is 0).
--------------------------------------------------------
Unknown command "mat_bloom_scalefactor_scalar"
sh: ifconfig : commande introuvable
mode MP, dedicated No, ports 27015 SV / 27005 CL
---- Host_NewGame ----
Unknown command "sv_show_bot_difficulty_in_name"
Host_NewGame on map de_dust2
L 08/28/2012 - 00:01:36: -------- Mapchange to de_dust2 --------
ConVarRef room_type doesn't point to an existing ConVar
Executing dedicated server config file
ConVarRef cl_playerspraydisable doesn't point to an existing ConVar
ConVarRef cl_enable_roundstart_autobuy doesn't point to an existing ConVar
ConVarRef spec_freeze_panel_extended_time doesn't point to an existing ConVar
ConVarRef mp_ggprogressive_win_panel_pct doesn't point to an existing ConVar
PrecacheScriptSound 'anarchist_blank' failed, no such sound script entry
PrecacheScriptSound 'balkan_blank' failed, no such sound script entry
PrecacheScriptSound 'fbihrt_blank' failed, no such sound script entry
PrecacheScriptSound 'gign_blank' failed, no such sound script entry
Attempting to precache model, but model name is NULL
Commentary: Could not find commentary data file 'maps/de_dust2_commentary.txt'.
Initializing Steam libraries for secure Internet server
[S_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.
Setting breakpad minidump AppID = 730
Forcing breakpad minidump interfaces to load
Looking up breakpad interfaces from steamclient
Calling BreakpadMiniDumpSystemInit
Installing breakpad exception handler for appid(730)/version(5038)
Looking up breakpad interfaces from steamclient
Calling BreakpadMiniDumpSystemInit
Logging into anonymous gameserver account.
--------------------------------------------------------
sv_pure value unchanged (current value is 0).
--------------------------------------------------------
Can't use cheat cvar bot_dont_shoot in multiplayer, unless the server has sv_cheats set to 1.
Unknown command "mp_friendlyfire"
Server logging enabled.
Server logging data to file logs/L1_2_3_4_27015_201208280001_000.log
L 08/28/2012 - 00:01:38: Log file started (file "logs/L1_2_3_4_27015_201208280001_000.log") (game "/var/steamcmd/games/csgo/csgo") (version "5038")
Writing cfg/banned_ip.cfg.
Writing cfg/banned_user.cfg.
Connection to Steam servers successful.
Public IP is 1.2.3.4.
Assigned anonymous gameserver Steam ID [A:1:2600696834(3066)].
VAC secure mode is activated.
Ce qu'il faut retenir dans ce logs, ce sont les 4 dernière lignes qui montrent que votre serveur est opérationnel. Mais pour revenir sur votre terminal, vous devrez arrêter le serveur. Pour résoudre ce problème il faudra utiliser la commande screen qui permettra de lancer un écran indépendant pour le serveur de jeu. On verra ça dans un prochain chapitre. ;)
Se connecter au serveur
Pour se connecter à votre serveur une fois sur le jeu, vous pourrez soit utiliser le navigateur de serveurs ou bien en passant par le lobby et forcer la connexion au serveur via la commande mm_dedicated_force_servers.
Avant tout vous devez avoir la console développeur active sur le jeu. Pour vérifier qu'elle soit bien active, rendez-vous dans Aide & Options > Paramètres de jeu et activez la console développeur.

Ensuite vous n'aurez plus qu'à presser la touche ² pour voir la console.
Comme je le disais, vous pouvez passer par la commande mm_dedicated_force_servers comme ça vous créez votre lobby et sans vous poser de questions, il se connectera à votre serveur. Avant de rentrer dans le lobby, ouvrez la console et tapez mm_dedicated_force_servers 1.2.3.4:27015.
Le mieux serait de faire des binds ou de mettre tout ça dans l'autoexec.cfg histoire de ne pas se retaper les commandes.
Ensuite vous avez l'habituel navigateur de serveurs (serverbrowser) où vous pourrez ajouter votre serveur en favoris en rentrant son adresse IP et son port.

Script de lancement du serveur
Pour démarrer votre serveur je vous ai parlé de la commande screen qui sera nécessaire. Pour simplifier les choses, j'ai vous ai fait un script qui permettra de lancer votre serveur facilement.
1root@server:~# vi /etc/init.d/csgo
Celui-ci est disponible sur le repo GitHub suivant : https://github.com/crazy-max/csgo-server-launcher.
Copiez le contenu de csgo-server-launcher.sh dans le fichier csgo puis rendez-le exécutable.
1root@server:~# chmod a+x /etc/init.d/csgo
N'oubliez pas de changer certaines variables comme je l'indique sur le README dans la partie Installation
Maintenant pour démarrer votre serveur vous aurez juste à taper cette commande :
1steam@server:~# /etc/init.d/csgo start
D'autres commandes sont disponibles.
Pour les connaitre, allez jeter un oeil au README dans la partie Usage.
Pour la commande console et pour revenir sur le prompt en se détachant du screen sans killer le serveur, il faut appuyer sur CTRL+A puis D.
Cron de mise à jour du serveur
Pour faire une mise à jour quotidienne du serveur, j'ai fait un article pour créer un cron de mise à jour d'un serveur Steam. Dans notre cas, le script de mise à jour existe déjà. C'est pourquoi le cron contiendra seulement les lignes suivantes :
1#! /bin/bash
2cd /etc/init.d/ && ./csgo update
3exit 1

Sources
- https://support.steampowered.com/kb_article.php?ref=4321-THKV-6011
- https://support.steampowered.com/kb_article.php?ref=8571-GLVN-8711
- http://www.srcds.com/db/engine.php?subaction=showfull&id=1098643920
- https://developer.valvesoftware.com/wiki/SteamCMD
- https://developer.valvesoftware.com/wiki/Counter-Strike:_Global_Offensive_Dedicated_Servers
- https://developer.valvesoftware.com/wiki/Steam_Application_IDs
- http://www.verywiki.net/fr/Sourcemod_install_cs_go
- https://support.steampowered.com/kb_article.php?ref=5386-HMJI-5162
- https://support.steampowered.com/kb_article.php?ref=6253-IOAB-2296
- http://wallbase.cc/wallpaper/1860797

Enregistrer un commentaire

 
Top