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é.