Suite à de nombreux mails que j'ai reçu par rapport à la mise en place d'un serveur dédié Steam et en particulier pour des jeux Valve comme Left 4 Dead 2, je me suis pris en main pour vous faire un tutoriel complet pour créer votre serveur Left 4 Dead 2 sur votre serveur dédié Linux ayant comme distribution Debian Squeeze ou Ubuntu.
Ce tuto s'adaptera facilement pour ceux qui veulent mettre en place un serveur Counter-Strike Source, Team Fortress 2, Counter-Strike : Global Offensive, etc... Ce sera quasiment les mêmes manipulations que pour Left 4 Dead 2.
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 steam
- Installation de Steam
- Installation de Left 4 Dead 2
- 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
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.
root@server:~# apt-get install ia32-libs ia32-libs-gtk
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.
root@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.
root@server:~# mkdir /srv/steam root@server:~# chown steam /srv/steam -R
On va maintenant installer steam avec l'utilisateur que l'on vient de créer.
root@server:~# su steam steam@server:~# cd /srv/steam steam@server:~# wget http://storefront.steampowered.com/download/hldsupdatetool.bin steam@server:~# chmod +x hldsupdatetool.bin && ./hldsupdatetool.bin && ./steam
Ces commandes vont télécharger l'update tool de Steam, le rendre exécutable, l'exécuter et mettre à jour Steam.
Passons à l'installation de Left 4 Dead 2.
steam@server:~# ./steam -command update -game left4dead2 -dir . -verify_all -retry
Pour voir la liste des jeux disponibles et en installer d'autres, vous pouvez taper cette commande :
steam@server:~# ./steam -command list
Voici la liste que j'ai à ce jour :
** 'game' options for Source DS Install:
"Counter-Strike Source"
"ageofchivalry"
"alienswarm"
"cssbeta"
"diprip"
"dods"
"dystopia"
"episode1"
"esmod"
"garrysmod"
"garrysmodbeta"
"hl2mp"
"insurgency"
"l4d_full"
"left4dead"
"left4dead2"
"left4dead2_demo"
"orangebox"
"pvkii"
"smashball"
"synergy"
"tf"
"tf_beta"
"zps"
** 'game' options for HL1 DS Install:
"cstrike"
"cstrike_beta"
"czero"
"dmc"
"dod"
"gearbox"
"ricochet"
"tfc"
"valve"
** 'game' options for Third-Party game servers:
"ageofchivalry"
"aliensvspredator"
"americasarmy3"
"brink"
"darkesthour"
"darkmessiah"
"defencealliance2"
"dinodday"
"diprip"
"dystopia"
"esmod"
"garrysmod"
"garrysmodbeta"
"hauntedhellsreach"
"homefront"
"homefrontjpn"
"insurgency"
"killingfloor"
"killingfloor_beta"
"marenostrum"
"modernwarfare3"
"mondaynightcombat"
"naturalselection2"
"nexuiz"
"nucleardawn"
"pvkii"
"redorchestra"
"redorchestra2"
"redorchestra_beta"
"serioussam3"
"serioussamhdse"
"ship"
"sin"
"smashball"
"sniperelitev2"
"synergy"
"tshb"
"zps"
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.
root@server:~# /sbin/iptables -A INPUT -p udp -m udp --dport 27000:27030 -j ACCEPT root@server:~# /sbin/iptables -A INPUT -p tcp -m tcp --dport 27014:27050 -j ACCEPT root@server:~# /sbin/iptables -A INPUT -p udp -m udp --dport 4380 -j ACCEPT root@server:~# /sbin/iptables -A INPUT -p udp -m udp --dport 3478 -j ACCEPT root@server:~# /sbin/iptables -A INPUT -p udp -m udp --dport 4379 -j ACCEPT root@server:~# /sbin/iptables -A INPUT -p udp -m udp --dport 1200 -j ACCEPT root@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.
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.
root@server:~# su steam steam@server:~# cd /srv/steam steam@server:~# wget https://static.crazyws.fr/resources/blog/2012/08/mmsource-1.8.7-linux.tar.gz steam@server:~# wget https://static.crazyws.fr/resources/blog/2012/08/sourcemod-1.4.4-linux.tar.gz steam@server:~# tar xvzf mmsource-* && tar xvzf sourcemod-* steam@server:~# cp -R addons/* left4dead2/left4dead2/addons/ steam@server:~# cp -R cfg/* left4dead2/left4dead2/cfg/
Cela installera metamod:source et sourcemod dans les répertoires adéquats. Maintenant on va devoir modifier le fichier metamod.vdf.
steam@server:~# vi left4dead2/left4dead2/addons/metamod.vdf
Et y coller ceci :
"Plugin" { "file" "../left4dead2/addons/metamod/bin/server" }
On va tester si metamod:source et sourcemod ont bien été installés.
steam@server:~# cd /srv/steam/left4dead2 steam@server:~# ./srcds_run -game left4dead2
Dés que votre serveur affichera exec: couldn't exec server.cfg, tapez ceci :
meta list
Normalement cela devrait vous afficher :
Listing 2 plugins: [01] SourceMod (1.4.4) by AlliedModders LLC [02] SDK Tools (1.4.4) by AlliedModders LLC
Maintenant nous avons besoin de configurer Sourcemod afin d'y ajouter des admins et d'ajouter/supprimer certains plugins.
steam@server:~# vi /srv/steam/left4dead2/left4dead2/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 :
// Votre pseudo "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.
On va ensuite modifier la configuration du serveur Left 4 Dead 2 grâce au fichier server.cfg.
steam@server:~# vi /srv/steam/left4dead2/left4dead2/cfg/server.cfg
Je vous ai fait un fichier de config assez complet pour le jeu mais après taillez-le à votre sauce.
hostname "Cr@zy Server - Scavenge"
// 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
sv_steamgroup "999999"
// Créer un search_key pour rejoindre rapidement votre serveur depuis le jeu
// Essayez de le rendre unique
sv_search_key "crazyws-l4d2-server"
// Désactiver mode LAN
sv_lan 0
// Port du serveur (defaut 27015)
hostport 27015
// Region - Permet de limiter le lobby à une région spécifique
// Essayez de le mettre au plus proche
// 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
// Les mods du jeu
// options: versus,survival,coop,realism,teamversus,teamscavenge
sv_gametypes "teamscavenge"
// Forcer le changement du gamemod (requiert Sourcemod) : "coop,realism,versus,survival,scavenge"
// sinon utiliser la commande : map mapname gamemod
sm_cvar mp_gamemode "scavenge" //defaut coop
// Autoriser les connexions sans créer de lobby
sv_allow_lobby_connect_only 0
// Divers
sv_cheats 0
sv_clearhinthistory 0
sv_consistency 1
sv_pausable 0
sv_voiceenable 1
sv_alltalk 0
mp_disable_autokick 1
// Logging
log on
sv_logecho 1 //defaut 0
sv_logfile 1 //defaut 1
sv_log_onefile 0 //defaut 0
sv_logbans 1 //defaut 0
sv_logflush 0 //defaut 0
sv_logsdir logs //répertoire des logs
// Performances réseau
sv_minrate 15000 //defaut "5000"; 0 = illimité
sv_maxrate 30000 //defaut "0"; 0 = illimité
sv_mincmdrate 20 //defaut 0; 0 = illimité [cevo=67]
sv_maxcmdrate 33 //defaut 40; (si sv_mincmdrate is > 0), [cevo=101]
Allez c'est parti on va lancer notre serveur et tester si tout fonctionne bien.
steam@server:~# cd /srv/steam/left4dead2 steam@server:~# ./srcds_run -game left4dead2 +map c8m5_rooftop teamscavenge +maxplayers 8 -port 27015 -console -nohltv -autoupdate
Vous devriez avoir quelque chose qui ressemble à ceci :
INFO: Located steam: ../steam
Updating server using Steam.
Checking bootstrapper version ...
removing stale semaphore last operated on by process 27117 with name 0eBlobRegistryMutex_A39D66BAFEDCAA5830EED252E7D82940
removing stale semaphore last operated on by process 27117 with name 0eBlobRegistrySignal_A39D66BAFEDCAA5830EED252E7D82940
Updating Installation
Determining which depot(s) to install/update...
3 depot(s) will be installed/updated
0:01 Checking local files and building download list for depot 551 'left 4 dead 2 common' version 140
0:01 Connecting content server session for version 140
0:01 [80.239.160.42:27030] Connecting...
0:01 [80.239.160.42:27030] Connection established; handshaking...
0:01 [80.239.160.42:27030] Sending login message...
0:01 Fetching version 140 manifest
0:02 Reading version 140 checksum table
0:02 Calculating download size
0:03 No files will be downloaded
0:03 Checking local files and building download list for depot 562 'left 4 dead 2 linux dedicated server' version 88
0:03 Connecting content server session for version 88
0:03 [80.239.160.42:27030] Reusing connection
0:03 [80.239.160.42:27030] Sending login message...
0:03 Fetching version 88 manifest
0:03 Reading version 88 checksum table
0:03 Calculating download size
0:03 No files will be downloaded
0:03 Checking local files and building download list for depot 564 'left 4 dead 2 Add-on Support' version 6
0:03 Connecting content server session for version 6
0:03 [80.239.160.42:27030] Reusing connection
0:03 [80.239.160.42:27030] Sending login message...
0:04 Fetching version 6 manifest
0:04 Reading version 6 checksum table
0:04 Calculating download size
0:04 No files will be downloaded
0:04 [80.239.160.42:27030] Disconnecting
HLDS installation up to date
Running a benchmark to measure system clock frequency...
Finished RDTSC test. To prevent the startup delay from this benchmark, set the environment variable RDTSC_FREQUENCY to 1800.000000 on this system. This value is dependent upon the CPU clock speed and architecture and should be determined separately for each server. The use of this mechanism for timing can be disabled by setting RDTSC_FREQUENCY to 'disabled'.
#Using breakpad minidump system
Using breakpad crash handler
#
#Console initialized.
#Game.dll loaded for "Left 4 Dead 2"
Server is hibernating
ConVarRef test_progression_loop doesn't point to an existing ConVar
[S_API FAIL] SteamAPI_Init() failed; unable to locate a running instance of Steam, or a local steamclient.dll.
Parent cvar in server.dll not allowed (spit_scaling_min_scale)
Game supporting (2) split screen players
maxplayers set to 18
Looking up breakpad interfaces from steamclient
Calling BreakpadMiniDumpSystemInit
Installing breakpad exception handler for appid(0)/version(4777)
maxplayers set to 18
Unknown command "mat_bloom_scalefactor_scalar"
Network: IP xxx.xxx.xxx.xxx, mode MP, dedicated Yes, ports 27015 SV / 0 CL
---- Host_NewGame ----
Host_NewGame on map c8m5_rooftop
L 08/18/2012 - 18:01:20: -------- Mapchange to c8m5_rooftop --------
ConVarRef room_type doesn't point to an existing ConVar
Executing dedicated server config file
Initializing Director's script
Commentary: Loading commentary data from maps/c8m5_rooftop_commentary.txt.
Initializing Director's script
Failed to load Steam Service
ServiceStart: failed to start
Setting breakpad minidump AppID = 550
Looking up breakpad interfaces from steamclient
Calling BreakpadMiniDumpSystemInit
[SM] Changed cvar "mp_gamemode" to "scavenge".
L 08/18/2012 - 18:01:25: [basecommands.smx] "Console<0>
Server logging enabled.
Server logging data to file logs/L176_031_245_077_27015_201208181801_000.log
L 08/18/2012 - 18:01:25: Log file started (file "logs/L176_031_245_077_27015_201208181801_000.log") (game "/srv/steam/left4dead2/left4dead2") (version "4777")
Connection to Steam servers successful.
VAC secure mode is activated.
Ce qu'il faut retenir dans ce logs, ce sont les deux 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.
Pour se connecter à votre serveur une fois sur le jeu, vous pourrez soit utiliser openserverbrowser 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 Options > Clavier/Souris et autorisez la console du développeur.
Ensuite vous n'aurez plus qu'à presser la touche ² pour voir la console.
Pour afficher le server browser, tapez la commande openserverbrowser. Allez dans l'onglet Favoris, cliquez sur Ajouter un serveur et mettez l'adresse IP de votre serveur suivi du port. Par exemple 99.99.99.99:27015. Celui-ci devrait s'afficher et avec la config serveur que je vous ai donné, vous devriez avoir ceci :
Ce que je vous conseille quand même c'est de passer par la commande mm_dedicated_force_servers comma ç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 99.99.99.99: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.
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.
root@server:~# vi /etc/init.d/l4d2
Celui-ci est disponible sur le repo GitHub suivant : https://github.com/crazy-max/l4d2-server-launcher.
Copiez le contenu de l4d2-server-launcher.sh dans le fichier l4d2 puis rendez-le exécutable.
root@server:~# chmod a+x /etc/init.d/l4d2
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 :
steam@server:~# /etc/init.d/l4d2 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.
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 :
#! /bin/bash cd /etc/init.d/ && ./l4d2 update exit 1
Voilà c'est la fin de ce tutoriel, j'espère avoir été assez précis et compréhensible. Dans un prochain tutoriel, je vous montrerai comment installer les plugins sourcemod les plus connus pour Left 4 Dead 2 comme Left 4 Downtown 2 et Ready Up! ainsi que la mise en place d'un serveur war de type pWg.
Good scav
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
- http://forums.steampowered.com/forums/showthread.php?t=292495
- https://support.steampowered.com/kb_article.php?ref=5386-HMJI-5162
- https://support.steampowered.com/kb_article.php?ref=6253-IOAB-2296
- https://developer.valvesoftware.com/wiki/List_of_L4D2_Cvars
- http://www.l4dnation.com/wiki/Confogl_Installation
- http://wallbase.cc/wallpaper/387454
MISES A JOUR DE L'ARTICLE |
- Ajout des sources
- Ajout d'un chapitre pour créer un cron de mise à jour du serveur.
bonsoir.
j ai créer mon serveur l4d2 comme dit si dessus
tout c est bien passer du début jusqu'au démarrage du serveur
je me connecte sans souci la tout fonctionne a merveille
sauf la vitesse des personnes qui et multiplié par 10 au moins
il donc impossible d y jouer vue la vitesse que sa donne
pouvez-vous m aider sur ce problème
merci
cordialement
pascalou74
pas de réponse peu être suis-je pas explicite sur mon problème
une que je suis sur mon serveur tous va trop vite que se sois les personnage humains ou infecté même une fois que l ont bouge plus sa met 2 sec et ont aient inactif
merci de m aider j ai fait plusieurs forum et aucune réponse
Bonjour,
Je suis en train de réaliser une interface web permettant de piloter ce type de serveur et actuellement j'ai le même problème les personnages sont trop rapide.
Merci pour l'aide.
Ce tuto n'est plus valide pour la partie installation, il faut maintenant utiliser steamcmd et non plus hldsupdatetool.bin.
Une mise à jour serait la bienvenue
Super Tuto bravo !!
NoZ a raison, au lieux d'utiliser hldsupdatetool.bin
il suffit simplement de suivre ces instruction pour steamcmd
mais le reste du tuto est parfait :
wget http://media.steampowered.com/installer/steamcmd_l...
tar -xvzf steamcmd_linux.tar.gz
./steamcmd.sh
login anonymous
force_install_dir /home/l4d2/
app_update 222860 validate
Bon courage à TOUS !