Installation du serveur - sparda personnal page

Transcription

Installation du serveur - sparda personnal page
Installation d'un serveur CS:S sur un serveur dédié – Distribution : Debian
Installation d'un serveur « Counter Strike: Source » sous
Linux (Debian)
Tutoriel écrit le 25/02/2008
Dernière mise à jour le 06/06/2008
Testé sous une Debian Sarge 3.1, une etch 4.0 et une testing Lenny
Sparda – [email protected]
Introduction
Ce document est un tutoriel détaillant la procédure d'installation d'un serveur « Counter Strike: Source »
sous le système d'exploitation Debian. Je suppose qu'il est valide pour d'autre distribution, la plupart des
procédures n'étant pas spécifique à ce système. Ce document reste principalement destiné au débutant, le
niveau de difficulté de mise en place de ce serveur restant faible.
Vous pouvez reprendre et éditer ce document à votre guise. Il est en cour d'élaboration (fautes
d'orthographes ...) et tous commentaires ou propositions de corrections seront acceptés avec plaisir.
Ce document a été rédigé sous OpenOffice 2.4 pour ses possibilités d'exportations en html et pdf.
Les connaissances nécessaires
Si vous n'êtes pas habitué à utiliser Linux par l'intermédiaire de la console, je vous conseille de vous
documentez un peu. Ce tutoriel n'a pas pour objectif de vous apprendre à utiliser ce genre de système, les
commandes de base tel que cp, rm, nano, ls, adduser, mkdir, cd, top, su ... peuvent vous être utile. Tout
comme les références aux répertoires (/,~,.,..).
Je me permet de mettre en garde ceux qui sont débutant et souhaite ce lancer dans la création de serveurs
CS:S sur leurs serveurs dédiés fraichement installés : Des connaissances sur l'administration de votre
distribution (le fonctionnement de son système de paquet par exemple), sur le fonctionnement d'un système
Linux (qu'est ce que le noyau ?) et la sécurité en informatique (une lecture de la doc. Debian sur le sujet par
exemple) sont indispensable pour conserver une machine en bon état de fonctionnement.
La sécurité
Que vous mettiez en place un serveur local pour votre lan ou un serveur destiné au jeu en ligne, ne faites
jamais tourner un serveur CS:S sous le compte root!
Ajoutez un utilisateur et faites l'intégralité de vos manipulation sous ce compte:
adduser css
su css
Si votre serveur est destiné à être mis en ligne, évitez les mots de passe trop simple, installez fail2ban,
configurez votre sshd, vérifiez vos log et évitez d'installer tout et n'importe quoi sur votre machine. Ces
conseils ne représente qu'une toute petite partie de ce que vous devez prendre en compte. Je vous incite
donc vivement de prendre le temps de lire de la documentation fiable sur le sujet.
1
Installation d'un serveur CS:S sur un serveur dédié – Distribution : Debian
Erreurs et problèmes
Les systèmes 64bits
Si votre système est en 64bit et si vous rencontrez cette erreur:
-bash: ./hldsupdatetool.bin: No such file or directory
Exécutez:
ld hldsupdatetool.bin
Si vous obtenez ce message :
ld: warning: i386 architecture of input file `hldsupdatetool.bin' is
incompatible with i386:x86-64 output
ld: warning: cannot find entry symbol _start; defaulting to 0000000000400a90
Installez alors lib32gcc1:
aptitude update
aptitude install lib32gcc1
Option 1000hz du noyau (kernel)
Il est généralement conseiller d'avoir l'option 1000hz de votre noyau activée, notamment si vous constatez
des baisses de « ticks » et des lags après peu de temps de jeux.
NB: OVH fournis des noyaux avec l'option activée.
Screen
La majorité des utilisateur de ce tutoriel vont l'utiliser pour installer leurs serveurs sur une machine dédiée et
donc se connecter à l'aide de SSH.
Je vous conseille de vous connecter directement avec l'utilisateur sur lequel vous allez travailler car il est
possible que vous n'ayez pas la possibilité d'accéder à vos screen en réalisant un « su css » depuis le compte
root.
Screen, qu’est-ce donc ? - http://www.linux-nantes.org/Screen-qu-est-ce-donc.html
Installation du serveur
On s'assure d'être connecté en tant que l'utilisateur « css », puis on change le répertoire courant vers le
répertoire de l'utilisateur (/home/css)
su css
cd ~
On récupère l'exécutable de Steam pour Linux depuis le site internet de Steam :
wget http://storefront.steampowered.com/download/hldsupdatetool.bin
2
Installation d'un serveur CS:S sur un serveur dédié – Distribution : Debian
On lui donne les droits d'exécution :
chmod a+x hldsupdatetool.bin
Exécutez :
./hldsupdatetool.bin
Réponder « YES », un fichier "steam" devrait alors apparaître. (commande « ls » pour vérifier)
on ajoute un dossier nommé « server1 » qui contiendra l'intégralité du serveur:
mkdir server1
Téléchargement des fichiers du jeux
Il s'agit d'une mise à jour cependant l'exécutable ne détectant aucun fichier se contentera de télécharger
l'intégralité des fichiers (connections haut débit recommandée)
« -game "Counter-Strike Source" »: indique que nous installons CS:S
« -dir server1 »: indique que l'installation aura lieu dans le dossier que nous venons de créer.
Lorsque vous souhaiterez installer un second serveur, remplacer server1 par server2.
A la première exécution il vous demandera de relancer la commande :
./steam -command update -game "Counter-Strike Source" -dir server1
[...] (Steam Linux Client updated, please retry the command)
./steam -command update -game "Counter-Strike Source" -dir server1
Lors de la deuxième exécution il devrait télécharger les fichiers du jeu :
exemple:
[...]
5.60%
6.41%
6.43%
6.44%
8.77%
8.85%
8.85%
[...]
server1\cstrike\maps\cs_italy.bsp
server1\cstrike\maps\cs_italy.nav
server1\cstrike\maps\cs_italy.txt
server1\cstrike\maps\cs_militia.bsp
server1\cstrike\maps\cs_militia.nav
server1\cstrike\maps\cs_militia.txt
server1\cstrike\maps\cs_office.bsp
99.97% server1\srcds_i486
99.99% server1\srcds_i686
100.00% server1\srcds_run
HLDS installation up to date
Je vous conseille de relancer la commande à nouveau afin de vérifier que l'intégralité des fichiers ont été
téléchargés.
3
Installation d'un serveur CS:S sur un serveur dédié – Distribution : Debian
./steam -command update -game "Counter-Strike Source" -dir server1
On se deplace dans le dossier de configuration du serveur et on créer le fichier "server.cfg":
cd server1/cstrike/cfg
nano server.cfg
(CTRL + X pour fermer nano)
Un exemple de fichier server.cfg
////////////////////////////////////////////////
/// server.cfg
////////////////////////////////////////////////
sv_lan 0
sv_region 3
hostname "Fr - ffa - tick100`d2-only"
sv_password ""
sv_allowupload 1
sv_allowdownload 1
// rcon
rcon_password "urpwd"
sv_rcon_banpenalty disabled
sv_rcon_maxfailures 30
sv_rcon_minfailures 5
sv_rcon_maxfailures 30
//log
log on
sv_logbans 1
sv_logecho 1
sv_logfile 1
sv_log_onefile 1
// connection
rate 30000
sv_client_min_interp_ratio 1
sv_client_max_interp_ratio 2
sv_client_predict 1
sv_client_interpolate 1
sv_client_cmdrate_difference 30
sv_client_interp 0.01
sv_mincmdrate 66
sv_maxcmdrate 101
net_maxfilesize 256
net_queuesplits 0
sv_minupdaterate 66
sv_maxupdaterate 101
sv_minrate 5000
sv_maxrate 0
fps_max 1000
sv_unlag 1
//jeu
mp_buytime 0.75
mp_startmoney 800
mp_dynamicpricing 0
4
Installation d'un serveur CS:S sur un serveur dédié – Distribution : Debian
mp_maxrounds 0
mp_fraglimit 0
mp_winlimit 0
mp_roundtime 3
mp_c4timer 35
mp_autoteambalance 1
mp_autokick 1
mp_spawnprotectiontime 5
mp_tkpunish 0
mp_friendlyfire 1
mp_freezetime 6
mp_playerid 0
mp_flashlight 1
mp_limitteams 2
sv_cheats 0
mp_footsteps 1
mp_falldamage 1
mp_hostagepenalty 4
mp_forcecamera 0
sv_alltalk 1
sv_pausable 0
sv_consistency 0
mp_allowspectators 1
sv_voiceenable 1
sv_gravity 800
sv_maxvelocity 3500
sv_maxspeed 320
sv_timeout 65
mp_chattime 10
//exec exec mani_server.cfg
exec mani_quake_sounds.cfg
exec banned_user.cfg
exec banned_ip.cfg
writeid
writeip
On retourne dans le dossier server1 :
cd ~/server1
On peut désormais lancer le serveur (le tout sur une seule ligne):
./srcds_run -console -game cstrike +fps_max 1000 +port 27015 -autoupdate
-pingboost 3 +maxplayers 16 +map de_dust2 -tickrate 100
Cette commande a pour effet de lancer le serveur dans la fenêtre active et vous empêche alors de continuer
à travailler. Le deuxième inconvénient de taille est que la fermeture de votre terminal provoquera l'arrêt du
serveur.
C'est à cause de ces inconvénients que nous avons recours à un gestionnaire de fenêtre en mode texte
appelé « screen ».
Vérifiez qu'il est actuellement installé :
aptitude update
aptitude install screen
Pour lancer le serveur dans une fenêtre de screen dénommé « serv1 »
5
Installation d'un serveur CS:S sur un serveur dédié – Distribution : Debian
screen -AmdS serv1 ./srcds_run -console -game cstrike +fps_max 1000 +port
27015 -autoupdate -pingboost 3 +maxplayers 16 +map de_dust2 -tickrate 100
N'hésitez pas à modifier les différents paramètres de cette commande (maxplayers, port).
Pour mettre à jour le serveur manuellement, on exécute simplement la même commande que pour
l'installation
./steam -command update -game "Counter-Strike Source" -dir server1
Script de lancement/arrêt/redémarrage
Je vous propose une script basique, qui peut être amélioré (la gestion des sessions screen est imparfaite). Il
est également possible de concevoir un script qui permette de gérer l'ensemble des serveurs ou de l'intégrer
dans init.d pour permettre les démarrages et arrêts automatiques avec la machine.
Pour cela je vous invite à consulter votre ami google.
On retourne donc dans le dossier de l'utilisateur, pour récupérer le script depuis mon hébergement. Vous
pouvez l'adapter à votre guise avec nano.
Cd ~
wget http://engeldb.free.fr/files/documents/memo/server1.sh
nano server1.sh
Le script:
##!/bin/sh
#############################################
## Script de lancement du serveur ##
#############################################
usage() {
echo "---------------------------------------------------------------------"
echo "Usage: (stop|start|restart|update)"
echo "---------------------------------------------------------------------"
exit 2
}
srcds_start() {
cd ~/server1
screen -AmdS serv1 ./srcds_run -console -game cstrike +fps_max 1000
-pingboost 3 +maxplayers 11 +map de_dust2 -tickrate 100
echo "---------------------------------------------------------------------"
echo "[SERV1]started"
echo "---------------------------------------------------------------------"
}
srcds_stop() {
screen -dr serv1 -X quit
echo "---------------------------------------------------------------------"
echo "[SERV1]stopped"
echo "---------------------------------------------------------------------"
}
srcds_restart() {
srcds_stop
srcds_start
echo "---------------------------------------------------------------------"
echo "[SERV1]restarted"
6
Installation d'un serveur CS:S sur un serveur dédié – Distribution : Debian
echo "---------------------------------------------------------------------"
}
srcds_update() {
srcds_stop
cd ~/server1
./steam -command update -game "Counter-Strike Source" -dir ~/server1
srcds_start
echo "---------------------------------------------------------------------"
echo "[SERV1]updated and restarted"
echo "---------------------------------------------------------------------"
}
case $1 in
stop)
srcds_stop
;;
start)
srcds_start
;;
restart)
srcds_restart
;;
update)
srcds_update
;;
*)
usage
esac
Utilisation:
sh
sh
sh
sh
server1.sh
server1.sh
server1.sh
server1.sh
start
restart
update
stop
Ce genre de script suffit donc pour la mise en place de redémarrages automatiques (journalier par exemple)
à l'aide de « cron ». La qualité de jeux se dégrade fortement si le serveur CS:S n'ayant pas été relancer
toutes les 24h.
Évitez de lancer plusieurs fois la commande start sans avoir au préalable arrêté le serveur : le script sera
incapable d'arrêter les sessions screen portant le même nom. [TODO]
Un deuxième serveur
Pour installer un deuxième serveur, créez un deuxième dossier "server2" dans /home/css et répétez la
manipulation en remplaçant server1 et serv1 par server2 et serv2 respectivement. Pensez également à
modifier le port dans le script server2.sh.
En résumé:
Cd ~
mkdir server2
./steam -command update -game "Counter-Strike Source" -dir server2
./steam -command update -game "Counter-Strike Source" -dir server2
7
Installation d'un serveur CS:S sur un serveur dédié – Distribution : Debian
cp server1.sh server2.sh
# adaptez le script au dossier « server2 » et le nom de fenêtre screen
« serv2 », ajustez les paramètres de lancement du serveur.
nano server2.sh
Liens – Doc. Française
Automatisation des taches - Crontab - http://www.ac-creteil.fr/reseaux/systemes/linux/cron.html
Screen, qu’est-ce donc ? - http://www.linux-nantes.org/Screen-qu-est-ce-donc.html
Guide de référence pour Debian - http://www.debian.org/doc/manuals/reference/index.fr.html
Manuel de sécurisation de Debian - http://www.debian.org/doc/manuals/securing-debianhowto/index.fr.html
8