Installer un serveur dédié « Source » sur FreeBSD 8

Source Dedicated Server, le serveur de jeu dédié de Valve pour Team Fortress, Left 4 Dead et Counter Strike (entre autres), est un logiciel Linux ou Windows, propriétaire. Donc les choses ne se présentent pas forcément très bien pour une installation sur FreeBSD. Cependant, il n'y a pas beaucoup d'efforts à faire pour installer et faire fonctionner ce logiciel grace à la compatibilité Linux de FreeBSD.

Dans un premier temps il faut activer, si ce n'est déjà fait, la compatibilité Linux dans le noyau de FreeBSD :

# chargement manuel du module
kldload /boot/kernel/linux.ko
# activation du chargement automatique au démarrage
echo 'linux_enable="YES"' >> /etc/rc.conf 

Ensuite (et pas avant), on peut installer les librairies Linux. Pour FreeBSD 8, il faut installer la version f10 :

portinstall -PP linux_base-f10

Attention, si vous êtes en FreeBSD 64 bits (amd64), le package refusera de s'installer, il faudra alors utiliser :

portinstall linux_base-f10

On termine de préparer l'environnement de compatibilité Linux en montant le système de fichier procfs. Il faut ajouter la ligne suivante au fichier /etc/fstab

linproc         /compat/linux/proc      linprocfs       rw 0 0

puis faire un

mount -a

Enfin, on peut installer le client steam :

portinstall linux-steam

En réalité, c'est seulement un logiciel de mise à jour du client steam qui est installé, il faut lancer la mise à jour pour que la vraie commande steam soit installée. Je fais cette étape deux fois :

cd /usr/local/steam/
./steam
# on attend la fin de l'exécution
# puis on recommence 
./steam

Le binaire steam est maintenant installé, à jour, et totalement fonctionnel. Via ce client, il est possible d'installer n'importe quel jeu compatible. Voilà comment procéder pour installer Left 4 Dead 2 :

./steam -command update -game left4dead2 -dir /chemin/du/jeu

On remplacera /chemin/du/jeu par le chemin du répertoire dans le quel on souhaite stocker les fichiers du jeu. Attention, pour Left 4 Dead 2 il y a environ 8 Go à télécharger. Si vous êtes sur de l'UFS, c'est donc 8 Go de stockage qui seront consommés. Si vous êtes sur un volume ZFS avec compression GZip, il faut compter environ 4,2 Go d'espace disque consommé. Le téléchargement est assez long, faites une pause, voire même, lancez la commande avant d'aller vous coucher.

Après cela, le répertoire /chemin/du/jeu contiendra un répertoire left4dead2. Dans ce dernier se trouve un script de lancement qui permet de démarrer le serveur dédié Source : srcds_run.
Voici un exemple de lancement :

cd /chemin/du/jeu/left4dead2
./srcds_run -ip 192.168.1.1 +sv_lan 1

L'option -ip permet d'imposer l'IP sur la quelle le serveur écoute. C'est très utile car le script est d'une bêtise monumentale. En effet, pour une raison que j'ignore, le serveur dédié se lance par défaut en utilisant la toute première IP configurée dans le fichier /etc/rc.conf même si la ligne est commentée !
C'est à dire que si votre rc.conf contient les lignes suivantes :

#ifconfig_em0="inet 192.168.128.201  netmask 255.255.255.0"
ifconfig_em0="inet 193.30.227.216  netmask 255.255.255.192"

et bien cet abruti de serveur tente de se lancer sur l'IP 192.168.128.201, alors que, bien sûr, l'IP n'est pas active. Épargnez votre santé mentale, imposez dès le départ une IP à srcds.
L'option +sv_lan 1 quant à elle impose un fonctionnement sur le LAN uniquement, ce qui permet aisément de tester le fonctionnement du serveur sans l'ouvrir sur le monde.

Vous devrez veiller à quelques points de détail :

  • le firewall doit autoriser les connexions TCP et UDP sur les ports 26901 et 27015.
  • le jeu peut (doit) être lancé avec un utilisateur non privilégié. Créez un compte pour l'occasion, avec un shell /bin/nologin, et toute autre mesure de protection que vous jugerez nécessaire.
    Attention, faire tourner le jeu avec un utilisateur non privilégié n'est pas forcément très simple, surtout si vous l'avez installé en root. J'ai découvert que lancer le jeu une première fois en root peut régler certains problèmes.
  • l'utilisateur en question devra notamment pouvoir écrire dans les répertoires /chemin/du/jeu/left4dead2/update, /chemin/du/jeu/left4dead2/left4dead2 et /chemin/du/jeu/left4dead2/left4dead2/{downloads,logs} et dans les fichiers /chemin/du/jeu/left4dead2/left4dead2/*.cache
  • il devra aussi pouvoir exécuter les fichiers /chemin/du/jeu/left4dead2/srcds_run /chemin/du/jeu/left4dead2/srcds_linux

Pour un utilisateur non privilégié, en "nologin", le moyen fiable de lancer le serveur est d'utiliser sudo, dans un screen pour être tranquille :

cd /chemin/du/jeu/left4dead2/
screen nice -n -5 sudo -u utilisateur_steam ./srcds_run -ip 192.168.1.1

Avec tout ceci, votre serveur doit être fonctionnel, et permet déjà de jouer. Le plus dur reste à faire, puisque de toute l'histoire de l'informatique, ce sont les serveurs de jeu qui détiennent la triste palme des logiciels les moins bien documentés au monde. Créez un fichier /chemin/du/jeu/left4dead2/left4dead2/cfg/server.cfg et testez des combinaisons jusqu'à obtenir le résultat souhaité.

Related posts

6 comments

  1. haha, félicitations :)
    C'est dommage qu'on ne puisse pas faire "THE REAL DEAL" avec la mutation gib fest... Parce que j'ai bien l'impression que pour réussir une campagne en expert, avec réalisme, sans les M60 ça va nous prendre du temps !

  2. Ca faisait quelques temps que je cherchais un tuto clair avant de me lancer dans l'aventure "serveur dédié Source sous BSD". Tu es mon Messie. :-)
    Merci pour ce tuto complet et structuré !

  3. Héhé, merci.
    Alors attention quand même, ça pompe de la ressource à cause des avalanches d'appels système.
    Et bon, le tuto n'est pas parfait non plus, donc il y aura surement quelques essais et erreurs. Je pense notamment qu'il est bien plus simple de créer un utilisateur non privilégié au tout début, de lui donner les droits sur l'installation steam, et de faire chaque lancement avec cet utilisateur.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.