Tutoriel : Créer son serveur TF2 (Unix/Dédié)

A – Introduction

L’installation d’un serveur TF2 sur une machine Unix, est une chose toute simple, encore faut il avoir un accès total à cette machine. D’où la nécessité de bien choisir la méthode d’hébergement qui vous correspond le mieux, pour cela je vous invite à consulter l’article de Blacky sur l’hébergement de serveur.

Nous allons considérer pour ce tutoriel que vous avez un accès complet en root sur la machine qui va héberger votre serveur. Être en root n’est pas une obligation mais facilite la chose selon votre distribution choisie, sachez qu’au minimum il vous faut un accès à la console et au ftp, en effet toutes les commandes décrites ici se font dans la console à distance de votre serveur (via putty ou autre) vous trouverez plein de tutoriels sur l’utilisation de la console à distance sur google. Je ne vais pas expliquer ici comment se connecter à la console de la machine ni au ftp, si vous avez vraiment besoin d’aide, google comblera vos lacunes.

B – Préparation de la machine & installation de Steam/hlds

Nous allons créer les répertoires pour l’install de TF2, rien de compliqué, si vous n’y connaissez rien contentez vous de suivre la procédure suivante en rentrant une à une les lignes de commande et en validant par la touche entrée (c’est pas commun ça):

cd / cd srv mkdir servertf2 cd servertf2

Voilà, comme par magie vous avez créé un répertoire pour votre installation, c’est génial on continue. Lançons le téléchargement de Half Life Dedicated Server (hlds poour les potes).

wget http://www.steampowered.com/download/hldsupdatetool.bin

Une fois le téléchargement terminé, on continue avec les joyeuses et amusantes lignes de code.

chmod +x hldsupdatetool.bin ./hldsupdatetool.bin type yes chmod +x steam

C – Téléchargement de TF2

Maintenant que Steam est installé il faut télécharger team Fortress 2, et là ça va être beaucoup plus long.

./steam -command update -game "tf" -dir .

En effet le serveur doit télécharger l’intégralité du jeu (même les commentaires audio qui sont fort utile pour un serveur comme chacun sait). Pour info cette commande indique à Steam (./steam) de mettre à jour, dans notre cas installer complètement (-command update) le jeu tf (-game « tf ») dans le répertoire actuel (-dir.).

Lorsque vous voudrez mettre à jour votre serveur, vous devrez utiliser la même ligne de commande, et vous aurez à l’utiliser puisqu’il ne semble pas être dans les priorités de valve de résoudre le bug empêchant la mise à jour automatique des serveurs.

Une fois le téléchargement terminé votre serveur est prêt à l’emploi, vous pourriez même le lancer directement, mais il convient de personnaliser tout ça et de configurer votre serveur. Toutefois, par mesure de précaution nous allons vérifier que l’installation s’est passée correctement avec la commande :

./steam -command update -game "tf" -dir . -verify_all

Ceci va vérifier tout les fichiers téléchargés, vous devriez obtenir ce message après la vérification :

HLDS installation up to date

Sinon, le plus sûr est de tout supprimer et de relancer l’installation.

D – Préparation du serveur

Maintenant que votre serveur est installé, il faut le configurer afin de l’optimiser et de le personnaliser. Tout ceci se passe dans le fichier server.cfg qui se trouve dans le répertoire ./srv/orangebox/tf/cfg/. Si ce fichier n’existe pas (ce qui peut parfois arriver) il suffit de le créer dans un éditeur de texte (notepad ou autre).

Détailler chaque fonction disponible dans un server.cfg serait très long. Donc voici un exemple d’un .cfg fonctionnel avec une explication pour chaque ligne afin que vous puissiez créez le votre.

[code]PGNvZGU+Ly8gRMOpZmluaXIgbGUgbm9tIGR1IHNlcnZldXINCmhvc3RuYW1lICJbRlJdIFRGMiBGcmFuY2hvdWlsbGFyZCBzZXJ2ZXVyIHRlc3QiDQovLyBEw6lmaW5pciB1biBtb3QgZGUgcGFzc2UgcG91ciBhY2PDqWRlciBhdSBzZXJ2ZXVyIChsYWlzc2V6ICIiIHBvdXIgZMOpc2FjdGl2ZXIgbGUgbW90IGRlIHBhc3NlKQ0Kc3ZfcGFzc3dvcmQgIiI8L2NvZGU+[/code]

// start rcon settings
//Définir le mot de passe administrateur pour <a href="http://tf2.franchouille.fr/2008/03/26/hlsw-surveiller-son-serveur/" target="_self">la gestion a distance</a> ou en console
rcon_password "motdepasse"
// Nombre de tentatives de mot de passe avant d'être banni
sv_rcon_maxfailures 10
// Durée du banissement en minutes
sv_rcon_banpenalty 5

// Définir un fichier d'acceuil (Message Of The Day)
motdfile "motdscout.txt"
// définir un fichier mapcycle (si vous ne voulez pas utiliser mapcycle.txt)
mapcyclefile "scoutcustomcycle.txt"

// Active l'autobalance des équipes
mp_autoteambalance 1
// Durée avant l'autobalance en secondes
mp_autoteambalance_delay 8
// Délai avant l'avertissement de l'autobalance en secondes
mp_autoteambalance_warning_delay 4
// différence du nombre de joueur activant l'autobalance
mp_teams_unbalance_limit 1

// Active le temps d'attente des joueurs
mp_enableroundwaittime 1
// Durée en seconde pour le carnage post victoire
mp_bonusroundtime 20
// Durée avant le redémarrage d'un round
mp_restartround 45
// Durée en seconde de la mort subite
mp_stalemate_timelimit 160
// Durée de jeu pour chaque carte en minutes
mp_timelimit 30

// Nombre de rounds maximale avant le changement de carte
mp_maxrounds 3
// Nombre de victoire maximum avant le changement de carte
mp_winlimit 2

// Définis le système de caméra après la mort (1 pour ne voir que son équipe, 2 pour bloquer la // vue, 0 pour pouvoir se déplacer ibrement dans la carte)
mp_forcecamera 1
// Autoriser ou non les spéctateurs (0/1)
mp_allowspectators 1
// Activer le friendly fire (0/1)
// mp_friendlyfire 0
// Désactive les cheats (0/1)
sv_cheats 0
// Durée avant d'être éjecter du serveur pour timeout
sv_timeout 150
// Vitesse maximum de déplacement des joueurs
//sv_maxspeed 320
// Force le jeu a vérifier que ses fichiers principaux sont identiques à ceux du serveur
sv_consistency 1
// durée entre chaque tag en secondes
decalfrequency 10

// Autorise la communication vocale (0/1)
sv_voiceenable 1
// Autorise le All Talk (0/1)
sv_alltalk 0
// Durée avant le changement de map ou la discussion est autorisé
mp_chattime 10

// Autorise l'upload des fichiers du serveurs vers les clients
sv_allowupload 1
// Autorise le download vers le serveurs (pour les tags)
sv_allowdownload 1
// Taille maximale des fichiers à télécharger (en Mo)
net_maxfilesize 60
// Adresse du miroir de téléchargement
sv_downloadurl "http://www.miroir.com/tf2/"

// Réglages de la bande passante
sv_minrate 20000
sv_maxrate 30000
decalfrequency 10
sv_maxupdaterate 100
sv_minupdaterate 66
sv_mincmdrate 66
sv_maxcmdrate 100

// Active l'enregistrement des logs
log on
// Enregistre les ban dans les logs
sv_logbans 1
// Affiche les logs dans la console
sv_logecho 1
// Active l'enregistrement des infos serveur dans les logs
sv_logfile 1
// Enregistre les logs dans un seul fichiers (0/1)
sv_log_onefile 0
// Répertoire ou les logs sont enregistrés
sv_logsdir "logs"

// Définit si le serveur est locale ou online (0/1)
sv_lan 0
// Indique la région ou se trouve le serveur (0/1=USA/2=Amerique du
// sud/3=europe/4=asie/5=australie/6=moyen orient/7=afrique)
sv_region 3
// Adresse mail de l'admnistrateur
sv_contact contact@mail.com
// Autorise la mise en pause du serveur (0/1)
sv_pausable 0

// Définis le niveau de sécurité du serveur (0=tout les modifications sont possibles/
// 1=les fichiers autorisé sont à définir dans whitelist.txt / 2=aucun fichiers tiers autoriséssv_pure 1
// Kick les lcients dont le contenu ne correspond pas
sv_pure_kick_clients 1

// Lance la lecture des utilisateurs et IP bannis
exec banned_user.cfg
exec banned_ip.cfg

// Autorise la mort subite sur les cartes ne l'ayant pas par défaut
mp_stalemate_enable 1

E – Lancement du serveur & screen

Pfiou, la configuration du serveur est terminée, il est temps de le lancer maintenant..

Déplacez-vous dans le repertoire orangebox.

cd orangebox

La ligne de commande est le suivante :

[code]PGNvZGU+Li9zcmNkc19ydW4gLWdhbWUgdGYgK2lwIHZvdHJlX2lwIC1wb3J0IHZvdHJlX3BvcnQgKDI3MDE1IG91IGF1dHJlIDI3MHh4KSArbWF4cGxheWVycyAyNCAoaW5kaXF1ZSBsZSBub21icmUgZGUgam91ZXVycyBtYXhpbXVtKSArbWFwIGN0Zl8yZm9ydCAoaW5kaXF1ZSBsYSBjYXJ0ZSBxdWkgc2UgbGFuY2UgYXUgZMOpYnV0Lik8L2NvZGU+[/code]

Il existe évidemment d’autres commandes possibles pour, par exemple, définir un mapcycle (+mapcyclefile cycle.cfg), un fichier config spécifique (+servercfgfile custom.cfg), etc…

Une fois la ligne lancée, la liste des fonctions activées et l’activité du serveur vont s’afficher, votre serveur est réellement lancé quand vous verrez ceci :

Voilà, il ne vous reste plus qu’à attendre que des joueurs viennent peupler votre serveur, à vous d’en faire la promotion de manière judicieuse et de savoir y faire régner une ambiance sympa.

Il peut être toutefois intéressant de pousser un peu plus loin la gestion de votre console Unix, en effet si vous lancez directement votre serveur, votre console ne sera plus disponible, d’où l’intérêt de créer des screens. Pour ceux qui n’y connaissent rien, imaginez un screen comme un onglet de firefox, vous pouvez en ouvrir le nombre que vous voulez afin de conserver un accès console pendant que votre serveur tourne en « tâche de fond ».

Je vais prendre le cas des serveurs CPC que je connais bien. Sur une seule machine et une seule installation de hlds sont lancés trois serveurs (Scout/Medic/Pyro), chacun dans un fenêtre de screen différente. J’ai aussi besoin d’une fenêtre pour l’administration et d’une dernière pour gérer les psychostats des serveurs, soit 5 consoles (sur lesquelles je dois pourvoir switcher sans interrompre leur fonctionnement.

Commençons par lancer le screen et ce de manière toute simple à l’invite de commande de la console nous tapons ceci :

screen

Puis quand on vous y invite, vous appuyez sur la barre d’espace. Voilà vous ne voyez pas de différence et pourtant vous êtes dans la premiere fenêtre de votre screen. Première chose à faire pour s’y retrouver, la renommer (actuellement elle s’appelle « sh »). Ppour celà, appuyez simultanément sur ctrl et sur a (vous utiliserez cette combinaison tout le temps, je l’abrègerais donc en « C+a ») ensuite appuyez sur maj+a. Dans l’invite ouverte alors, entrez le nouveau nom de la fenêtre. Par exemple Administration et validez par entrée.

Nous allons maintenant créer une nouvelle fenêtre pour lancer le serveur, faites « C+a » puis « Ctrl+c », et hop vous êtes dans une nouvelle fenêtre. Renommez-la de la même manière que pour la précédente en l’appelant cette fois ci « Serveur TF2 ». C’est dans celle-ci que vous lancerez votre serveur TF2 avec la même ligne de commande que si vous étiez dans la console classique:

[code]PGNvZGU+Li9zcmNkc19ydW4gLWdhbWUgdGYgK2lwIHZvdHJlX2lwIC1wb3J0IHZvdHJlX3BvcnQgK21heHBsYXllcnMgMjQgK21hcCBjdGZfMmZvcnQpPC9jb2RlPg==[/code]

Voilà, le minimum vital est en place et il devrait suffire à 90% des installations de serveur étant donné que peu de machines louées peuvent faire tourner plus d’un serveur.
Créons tout de même une fenêtre psychostats au cas où vous voudriez les utiliser, donc pour résumer :
« C+a » « C+c » (nouvelle fenêtre) « C+a » « shift+a » (renommez-la en « Psychostats »).

Nous avons donc créé 3 fenêtres (Administration/Serveur TF2/Psychostats), c’est bien gentil mais comment fait-on pour passer de l’une à l’autre? Rien de plus simple : « C+a » puis « , » et hop comme par magie un menu s’affiche avec la liste des fenêtres créées:

Il ne vous reste plus qu’à sélectionner votre choix avec les flèches (ou le n°) et à valider avec entrée pour rentrer dans la fenêtre correspondante. A savoir que sur la fenêtre Serveur TF2 vous pouvez suivre en direct ce qui se passe sur le serveur, évidemment c’est très peu digeste vu que tout est affiché en ligne comme dans les logs. Voici un exemple de trois fenêtre tournant en même temps dans un screen :

Screen Administration Screen Serveur TF2 Screen psychostats

Maintenant reste à savoir comment retrouver nos fenêtres lorsque l’on quitte la console. C’est très simple une fois loggé sur votre machine distante, il suffit de taper :

screen -x

et comme par magie vous vous retrouvez là ou vous aviez laissé votre machine. Pour finir, voici une sélection de commandes pour screens qui sont utiles au jour-le-jour (Ctrl=C):

screen : Lancer le logiciel
screen -x : Reprendre le screen en cours
C+a puis CTRL+c : Créer une fenêtre
C+a puis  » : Afficher le menu
C+a puis s : Splitter la console (pour accéder à plusieurs fenêtre en même temps)
C+a puis Shift+a : Renommer une fenêtre
C+a puis ? : Afficher l’aide et les commandes de screen

F – Conclusion

Finalement c’était pas si compliqué… Le principal point à retenir est évidemment la configuration du server.cfg, celui-ci va décider de toutes les règles de votre serveur, il est donc primordial d’en faire un qui corresponde à vos envies, celles de votre clan et évidemment des visiteurs qui peupleront votre serveur tout les jours. Un serveur n’est pas une entité figée, un mapcycle changeant fréquemment, des soirées un peu délirantes en instant respawn, friendly fire ou en all-talk donnent de la vie à votre serveur qui, ne l’oubliez pas, n’est qu’une ligne parmi tant d’autres dans le Steam-Browser.

9 commentaires pour “Tutoriel : Créer son serveur TF2 (Unix/Dédié)”

  1. Patouf dit :

    Absolument top ! 🙂

  2. Poney dit :

    Plop merci beaucoup pour ce tuto sinon au début du chapitre E dans la première ligne de commande il manque le « +’ip’ votre_ip » >< je me suis fait avoir ^^
    merci encore 😀

  3. Patouf dit :

    Bon ya quand même pleins d’incertitudes :S

    Je vais vous envoyer un mail, pour que le tuto soit le plus exact posible ! 🙂

  4. ¤FLB¤ YôP dit :

    ok merci
    je suis larguéééé et mon espoir d’arrêter de payer des serveurs de merde trop cher s’envole .
    mais franchement un tuto aussi bien écrit, vaut le coup d’être lu jusqu’à la fin tellement on se marre, même si l’on ne pige que dalle.
    merci encore
    YôP team FLB TF2

  5. WkaelW dit :

    Bonjour ,

    desolé mais pour moi il manque des infos la dedans comment faire restart son serveur une fois lancé les modifs Cfg son executé apres redemarrage ou pas ????
    je sais pas mais la il faudrais m expliqué un peu mieux que sa !

  6. mims dit :

    Moi je le trouve vraiment bien détailler, il manque quand meme une chose importante pour le compléter jusqu’au bout, c’est une explication détailler de la méthode a suivre pour le rendre online, bien expliquer le principe a suivre pour ouvrir les ports sur ceux qui utilisent un routeur pour rediriger le port 270xx a l’adresse IP (fixe) du PC-Serveur.

    Ça fait 2 semaine que j’ai créer mes serveurs (cs / dod /l4d /tf2) mais j’ai toujours pas trouver un tuto « complet » qui m’explique la procédure pour le rendre online 🙁

    En espérant que ça ce concrétise.

  7. Maddy34 dit :

    Hello tous!
    Merci pour ce tuto super détaillé!
    J’en avais consulté plus d’un avant celui là, mais j’ai trouvé le top! Un grand merci, donc!

    Par contre, j’ai un gros souci lors de l’installation de mon serveur.
    C’est une petite machine dédiée à jouer en LAN avec mes potes sur nos maps préférées (P3 800 / 1Go / 20Go) sur laquelle j’ai posé une Debian 6.0 de base et j’ai lancé le processus en suivant scrupuleusement les indications.
    Lorsque je lance le fameux ./steam -command update -game « tf » -dir . j’ai en retour un magnifique et déroutant « Instruction non permise »!!
    Voilà un copier-coller de ce qui se passe après l’extraction de steam:

    root@SDTF2:/steam# chmod +x steam
    root@SDTF2:/steam# ./steam -command update -game « tf » -dir .
    Checking bootstrapper version …
    Getting version 42 of Steam HLDS Update Tool
    Downloading. . . . . . . . . . . .
    Steam Linux Client updated, please retry the command
    root@SDTF2:/steam# ./steam -command update -game « tf » -dir .
    Checking bootstrapper version …
    removing stale semaphore last operated on by process 1643 with name 0eBlobRegistryMutex_07692C9F0DCCAB9B49E0AA2095A1952C
    removing stale semaphore last operated on by process 1643 with name 0eBlobRegistrySignal_07692C9F0DCCAB9B49E0AA2095A1952C
    Getting version 42 of Steam HLDS Update Tool
    Instruction non permise
    root@SDTF2:/steam#

    Que faire?
    Ca fait quelques jours que je me prends la tête avec ça, et, ne sachant pas comment désinstaller l’ensemble pour renouveler l’opération depuis le début, j’ai réinstallé totalement ma Debian une paire de fois (c’est pas pour le temps que ça prend, hein!), et j’ai toujours le même souci!

    Etant un vrai boulet en Linux, je galère à trouver la solution, quelqu’un pourra t’il m’aider??

  8. Quentin dit :

    Hello!

    J’ai un (petit) soucis: quand j’exécute la commande: « chmod +x hldsupdatetool.bin ./hldsupdatetool.bin type yes chmod +x steam », j’obtiens les messages d’erreur suivants:

    chmod: impossible d’accéder à «type»: Aucun fichier ou dossier de ce type
    chmod: impossible d’accéder à «yes»: Aucun fichier ou dossier de ce type
    chmod: impossible d’accéder à «chmod»: Aucun fichier ou dossier de ce type
    chmod: impossible d’accéder à «+x»: Aucun fichier ou dossier de ce type
    chmod: impossible d’accéder à «steam»: Aucun fichier ou dossier de ce type
    root@quentin-K7S41GX:/# ./steam -command update -game « tf » -dir
    bash: ./steam: Aucun fichier ou dossier de ce type

    Donc voilà, je suis bloqué à ce stade-là… Si je fais un « ls » dans le répertoire « servertf2 » je vois 1 fichier: « hldsupdatetool.bin »

    Quelqu’un pour m’aider? Merci d’avance! 😉

  9. Noodle dit :

    « Hello!

    J’ai un (petit) soucis: quand j’exécute la commande: « chmod +x hldsupdatetool.bin ./hldsupdatetool.bin type yes chmod +x steam », j’obtiens les messages d’erreur suivants:

    chmod: impossible d’accéder à «type»: Aucun fichier ou dossier de ce type
    chmod: impossible d’accéder à «yes»: Aucun fichier ou dossier de ce type
    chmod: impossible d’accéder à «chmod»: Aucun fichier ou dossier de ce type
    chmod: impossible d’accéder à «+x»: Aucun fichier ou dossier de ce type
    chmod: impossible d’accéder à «steam»: Aucun fichier ou dossier de ce type
    root@quentin-K7S41GX:/# ./steam -command update -game « tf » -dir
    bash: ./steam: Aucun fichier ou dossier de ce type

    Donc voilà, je suis bloqué à ce stade-là… Si je fais un « ls » dans le répertoire « servertf2″ je vois 1 fichier: « hldsupdatetool.bin »

    Quelqu’un pour m’aider? Merci d’avance! 😉 »

    La commande « sudo apt-get install lib32gcc1 » m’a réglé le pb 😉

Laisser un commentaire