image1

Installation d’un serveur Counter-Strike 1.6 (Steam) sous Linux pour un LAN ou Internet forwardé ou non.

lundi 23 février 2004.
 

Prérequis

-  Un système GNU/Linux opérationnel

-   Mandrake 10.1 si vous êtes débutant sous Linux Mandrakelinux-10.1-Community-Download-CD1.i586.iso

-   Debian GNU/Linux si vous souhaitez vous faire les dents et utiliser votre serveur à d’autres fins que serveur de jeu. debian-30r2-i386-binary-1_NONUS.iso

-  Le serveur dédié HLDS : hlds_l_1120.bin

Installation de GNU/Linux

Que ce soit pour la Mandrake ou la Debian, je ne vais malheureusement pas pouvoir détailler l’ensemble de l’installation. Globalement les étapes sont toujours les mêmes :

-  Partitionnement du disque dur
-  Choix des paquetages, décompression et installation de ceux-ci
-  Configuration finale : choix du mot de passe administrateur et création de comptes annexes

Attention tout de même , il faut près de 1.5 Go au serveur dédié pour fonctionner, d’autre part, il se décompresse par défaut dans la partition qui accueille le point de montage /usr, veuillez donc laisser au moins 2 Go pour avoir une marge de manoeuvre en cas d’erreur ...

Pour l’installation d’une Debian, je vous conseille l’excellent didacticiel d’Alexis Delattre :

http://www.via.ecp.fr/ alexis/formation-linux


Installation du serveur Dédié HLDS

La première étape consiste à le télécharger :

wget ftp://ftp.freenet.de/pub/4players/halflife/server/linux/hlds_l_1120_full.bin

Passez ensuite root :

su

Password:
votrepass

Il faut ensuite le rendre éxecutable pour pouvoir le décompresser et aussi créer un répertoire d’installation par défaut sans quoi vous vous verrez recevoir une erreur à l’installation :

mkdir /usr/steam

création du répertoire

chmod +x hlds_l_1120_full.bin

passer le en executable (flag x)

./hlds_l_1120_full.bin

tapez yes

Vous devez attendre que l’archive se décompresse dans le répertoire : /usr/steam


extracting /usr/steam/hlds_l_1120_full.tgz...done
Ensuite décompressez l’archive :


cd /usr/steam
tar zxvf hlds_l_1120_full.tgz

Une fois que c’est terminé, déplacez votre dossier vers une partition qui possède plus d’espace libre, si vraiment vous avez peur que ça pose un problème plus tard, à priori, sauf si vous rajoutez des cartes sur votre serveur, il y a peu de chance qu’il "gonfle".

Ex :


mv /usr/steam/hlds_l /home/

C’est un exemple comme un autre.

Configuration firewall et routeur

Si vous souhaitez forwarder votre serveur counter-strike. Soit vous avez un routeur hardware (configuration par interface web), dans ce cas, notez bien les ports suivants à faire suivre :

En entrée et sortie

UDP/1200

UDP/27000 à 27015 (si le serveur tourne sur ce port)

TCP/27030 à 27039

Faites bien attention, car ces ports ont été changés depuis Steam

La plupart des routeurs, ont par défaut tous les ports en sortie d’ouverts

Si vous utilisez un routeur qui est une machine Linux (la syntaxe BSD ne doit pas être très différente, modifiez vos règles iptables de la manière suivante :

Attention, bien veiller à ce que les ports suivants soient ouverts en entrée/sortie


$EXTINF = Votre interface externe (Internet)
$INTINF = Votre interface au réseau local (LAN, WLAN)

iptables -A INPUT -i $EXTINF-p udp --dport 1200 -j ACCEPT

iptables -A OUTPUT -o $EXTINF -p udp --sport 1200 -j ACCEPT

iptables -A INPUT -i $EXTINF -p udp --dport 27000:27015 -j ACCEPT

iptables -A OUTPUT -o $EXTINF -p udp 27000:27015 -j ACCEPT

Si le serveur tourne sur le 27015


iptables -A OUTPUT -p tcp --sport 27030:27039 -j ACCEPT

iptables -A INPUT -p tcp --dport 27030:27039 -j ACCEPT

si vous souhaitez ne pas faire de filtrage en sortie, tapez :

iptables -A OUTPUT -o $EXTINF -p tcp -j ACCEPT

iptables -A OUTPUT -o $EXTINF -p udp -j ACCEPT

Ces règles sont valables pour un serveur qui est lui même passerelle vers internet. Pour un routeur, il faut rajouter les lignes de port forwarding (Destination Network Address Translation)suivantes :

IP_SERVEUR = "Adresse IP du serveur"


iptables -t nat -A PREROUTING -p udp --dport 1200

-j DNAT --to-destination $IP_SERVEUR:1200


iptables -t nat -A PREROUTING -p udp --dport 27000:27039 -j DNAT
--to-destination $IP_SERVEUR:27000:27039


iptables -t nat -A PREROUTING -p tcp --dport 27000:27039 -j DNAT
--to-destination $IP_SERVEUR:27000:27039

L’avantage énorme de forwarder un serveur, c’est qu’on est pas obligé d’utiliser les ports ouverts sur le routeur et de le faire correspondre avec les ports ouverts sur le serveur de jeux. Par exemple, si le routeur n’autorise que le port 80 d’ouvert, il est tout à fait possible d’héberger un serveur de jeux tournant (du côté internet) sur le port 80. (En fait il va manquer des ports pour l’interrogation via les serveurs d’authentification, mais il est possible qu’il soit joignable.

Haute disponibilité

On peut aussi, en changeant le paramètre IP_SERVEUR basculer facilement d’un serveur à un autre en cas de panne, de réparation ... On peut même le faire d’une manière dynamique : si le serveur ne répond plus au ping, alors le paramètre IP_SERVER change pour une IP où un serveur de secours fonctionne. Les règles iptables sont ensuite redémarrées instantanément. Ca s’appelle du Fail Over Services, mais c’est un peu plus compliqué.

Voici une idée pour le faire :


#! /bin/sh
if test $(telnet $IP_SERVEUR 27015 < /dev/zero 2> /dev/null | grep -c
Connected) -eq 0; then
    iptables -t nat -A PREROUTING -p udp --dport 1200

-j DNAT --to-destination $IP_SERVEUR2:1200

iptables -t nat -A PREROUTING -p udp --dport 27000:27039 -j DNAT
--to-destination $IP_SERVEUR2:27000:27039

iptables -t nat -A PREROUTING -p tcp --dport 27000:27039 -j DNAT
--to-destination $IP_SERVEUR2:27000:27039
fi
Nous allons effectuer à présent les manipulations suivantes :

-  Création d’un compte FTP & Shell qui peut lancer et vous permettre d’uploader vos fichiers de configuration et vos maps

-  Installation du serveur Samba pour pouvoir modifier depuis le voisinage réseau Windows les fichiers de configuration

Création du compte


adduser hlds

Choisissez un mot de passe, répetez le. Ensuite il faut donner accès au répertoire HLDS Linux :


chown -R hlds /usr/steam/hlds_l
chmod -R 755 /usr/steam/hlds_l
ln -s /usr/steam/hlds_l /home/hlds/hlds_l
chown -R hlds /home/hlds/hlds_l
chmod -R 755 /home/hlds/hlds_l

Note : les répertoires ont été passés en lecture/écriture/execution pour l’utilisateur hlds et en lecture/écriture pour les autres. Cela afin qu’ils soient accessibles depuis Samba

Si vous avez un serveur FTP (ProFTPd d’installé, vous pourrez vous en servir pour uploader vos fichiers de configuration en vous loggant en tant que :

ftp://hlds :votrepass@ipserveur/hlds_l

Maintenant nous allons configuré le dossier sous Samba, pour qu’il soit accessible depuis le voisinage réseau

Editez le fichier de configuration


vim /etc/samba/smb.conf

Et insérez-y ces lignes de configuration :


[hlds]

comment = Serveur dédié HLDS Linux

path = /usr/steam/hlds_l

guest ok = yes

browseable = yes

writeable = yes

Sauvegardez et quittez, puis relancez le démon Samba


/etc/init.d/samba restart


Mise à jour du serveur Dédié

Les serveurs de Valve, grâce à la toute nouvelle et performante plate-forme Steam (oui oui je tartine pas mal) vous permettent de faire des mises à jour. La première est manuelle, les autres seront automatiques :)


/usr/steam/hlds_l/steam -update utilisateur@adresse ****** Y

La syntaxe de mise à jouer à été modifiée dans les versions suivantes de steam, voir la crontab

1ere mise à jour


Checking bootstrapper version ...

Getting version 4 of Steam HLDS Update Tool

Downloading. . . . . . . . . . .

Steam Linux Client updated, please retry the command

2ème mise à jour


Checking bootstrapper version ...

Updating Installation

Logging in as 'nkvd@nkvd.net'

Updating 'Linux Server Engine' from version 0 to version 7

Downloading: /usr/steam/hlds_l\core_i386.so

Downloading: /usr/steam/hlds_l\engine_amd.so

Downloading: /usr/steam/hlds_l\engine_amd64.so

Downloading: /usr/steam/hlds_l\engine_i486.so

Downloading: /usr/steam/hlds_l\engine_i686.so

Downloading: /usr/steam/hlds_l\filesystem_stdio_amd64.so

Downloading: /usr/steam/hlds_l\filesystem_stdio_i386.so

Downloading: /usr/steam/hlds_l\hlds_amd

Downloading: /usr/steam/hlds_l\hlds_amd64

Downloading: /usr/steam/hlds_l\hlds_i486

Downloading: /usr/steam/hlds_l\hlds_i686

Downloading: /usr/steam/hlds_l\hltv

Downloading: /usr/steam/hlds_l\libSteamValidateUserIDTickets_amd64.so

Downloading: /usr/steam/hlds_l\libSteamValidateUserIDTickets_i386.so

Downloading: /usr/steam/hlds_l\proxy_i386.so


Updating 'HL base content' from version 0 to version 4

Downloading: /usr/steam/hlds_l\valve\dlls\hl.dll

Downloading: /usr/steam/hlds_l\valve\dlls\hl_amd64.so            
                                                    Downloading: /usr/steam/hlds_l\valve\dlls\hl_i386.so

Downloading: /usr/steam/hlds_l\valve\liblist.gam


Updating 'cstrike content' from version 0 to version 7

Downloading: /usr/steam/hlds_l\cstrike\cl_dlls\client.dll

Downloading: /usr/steam/hlds_l\cstrike\dlls\cs_amd64.so

Downloading: /usr/steam/hlds_l\cstrike\dlls\cs_i386.so

Downloading: /usr/steam/hlds_l\cstrike\dlls\mp.dll

Downloading: /usr/steam/hlds_l\cstrike\sound\events\enemy_died.wav

Downloading: /usr/steam/hlds_l\cstrike\sound\events\friend_died.wav

Downloading: /usr/steam/hlds_l\cstrike\sound\events\task_complete.wav

Downloading: /usr/steam/hlds_l\cstrike\sound\events\tutor_msg.wav

Downloading: /usr/steam/hlds_l\cstrike\sprites\640hud7.spr

Downloading: /usr/steam/hlds_l\cstrike\sprites\shadow_circle.spr

Downloading: /usr/steam/hlds_l\cstrike\autobuy.txt

Downloading: /usr/steam/hlds_l\cstrike\rebuy.txt

Downloading: /usr/steam/hlds_l\cstrike\spectcammenu.txt

Downloading: /usr/steam/hlds_l\cstrike\steam.inf

Downloading: /usr/steam/hlds_l\cstrike\titles.txt

HLDS installation up to date

Ensuite nous ferons les mises à jour tous les 2 jours par exemple :


crontab -e

* * */2 * * /usr/steam/hlds_l/steam -command update -game cstrike -dir /usr/steam/hlds_l -username utilisateur@adresse -password ****** remember_password

Premier lancement "test" du serveur

Tapez la commande suivante : /usr/steam/hlds_l/hlds_run -game cstrike +maxplayers 12 +map de_aztec


Auto detecting CPU

Using Pentium II Optimised binary.

Auto-restarting the server on crash


Console initialized.
scandir failed:/usr/steam/hlds_l/./valve/SAVE

scandir failed:/usr/steam/hlds_l/./platform/SAVE

Protocol version 47

Exe version 1.1.2.4/Stdio (cstrike)

Exe build: 14:14:09 Feb  4 2004 (2659)

STEAM Auth Server

couldn't exec language.cfg

Server IP address 10.44.1.34:27015

Downloading Security Module from Speakeasy.net ...

Completed downloading Security Module from Speakeasy.net

Server is in Secure Mode.

scandir failed:/usr/steam/hlds_l/./valve/SAVE

scandir failed:/usr/steam/hlds_l/./platform/SAVE

Server logging data to file logs/L0225000.log

L 02/25/2004 - 14:32:54: Log file started

(file "logs/L0225000.log") (game "cstrike")

(version "47/1.1.2.4/Stdio/2659")

couldn't exec listip.cfg

couldn't exec banned.cfg

Adding auth server 65.73.232.251:27040

Adding auth server 65.73.232.253:27040

Adding master server 207.173.177.11:27010

Adding master server 207.173.177.12:27010

L 02/25/2004 - 14:32:55: Server cvar "sv_region" = "255"

L 02/25/2004 - 14:33:03: World triggered "Round_Start"

Il est important de voir si la version est bien > à la 1.1.20 qui a été téléchargée.


Configuration du serveur

Ici nous commençons vraiment à nous occuper de la partie serveur de jeux.

Edition des paramètres du serveur

Le premier fichier à éditer est : server.cfg

Modifiez les paramètres comme suit :


// Use this file to configure your DEDICATED server.

// This config file is executed on server start.

// disable autoaim

sv_aim 0

// disable clients' ability to pause the server

pausable 0

// default server name. Change to "Bob's Server", etc.

hostname ".: Team #KV CS 1.6 - http://nkvd.net"

// maximum client movement speed

sv_maxspeed 320

// 20 minute timelimit

mp_timelimit 20

sv_cheats 0

mp_logmessages 1

log on

// load ban files

exec listip.cfg

exec banned.cfg

Modifiez également le fichier motd.txt

Comme nous sommes sous la CS 1.6 le MOTD (Message Of The Day) peut être écrit en mettant du HTML et du CSS

Par exemple ici je redirige le MOTD vers la page d’accueil du site de notre team (waoou !!)


<html><head><title>. : Team #KV | http://nkvd.net :.</title>
<meta http-equiv="refresh" CONTENT="10;URL=http://nkvd.net">
</head></html>

Edition du fichier liblist.gam

Ce fichier est relativement important puisqu’il renseigne le serveur dédié sur la manière d’utiliser les modules (Dynamic Loadble Librairy ou Shared Objects)


vim /usr/steam/hlds_l/cstrike/liblist.gam

Repérez la ligne qui contient :


gamedll_linux "dlls/cs_i386.so"

et remplacez la par :


gamedll_linux "addons/metamod/dlls/metamod_i386.so"

Création du répertoire addons


cd /usr/steam/hlds_l/cstrike

mkdir addons

mkdir addons/metamod

mkdir addons/metamod/dlls

Téléchargez la dernière version de Metamod (1.17) pour Linux :


cd addons/metamod/dlls
wget http://metamod.org/dl/dlls/metamod_i386.so.gz
gunzip metamod_i386.so.gz
cd ..
vim plugins.ini

Appuyez sur la toucher insertion, puis tapez cette ligne


linux addons/amx/dlls/amxx_mm_i386.so
linux addons/hlguard/dlls/hlguard_mm_i586.so

Metamod est un meta mod. Plus généralement, du fait qu’il soit "méta", il vient au dessus des autres, c’est à dire qu’il fournit un langage pour écrire les autres modules : amx, statsme, hlguard.


Téléchargez la dernière version d’AMX Mod X


cd /usr/steam/hlds_l/cstrike
tar zxvf amxmodx-version-steam.tar.gz

L’arborescence d’AMX Mod X à quelque peu changé, mais globalement on s’y retrouve toujours :

-  configs
-  custom
-  dlls
-  documentation
-  logs
-  modules
-  modules.ini
-  plugins
-  plugins.ini
-  scripting

Détail de la configuration

Fichier configs/amxx.cfg

Ce fichier contient les paramètres globaux de configuration. Il n’y a que très peu de choses à modifier . Ci -dessous les lignes à modifier :


amx_default_access "z"

// Center typed colored messages (last parameter is a color in RRRGGGBBB format)

amx_imessage "Bienvenue sur %hostname%" "000255100"

amx_imessage "Serveur de la team #KV\nhttp://nkvd.net" "000100255"

L’accès "z" signifie que les joueurs sont des utilisateurs normaux, c’est ce qu’il nous faut.

Pour faire sauter une ligne dans l’affichage du bandeau défilant, utilisez \n c’est comme en PHP


Fichier configs/mysql.cfg

A modifier si vous utilisez des plugins se servant d’une base de données MySQL.


amx_mysql_host  "127.0.0.1"

amx_mysql_user  "root"

amx_mysql_pass  "********"

amx_mysql_db    "amx"

Attention : AMX Mod X ne fournit pas le schéma à utiliser pour créer la base de données.


Fichier configs/core.ini


; Configuration file for AMX Mod X

amxx_logdir     addons/amxx/logs

amxx_configsdir addons/amxx/configs

amxx_customdir  addons/amxx/custom

amxx_modules    addons/amxx/modules.ini

amxx_plugins    addons/amxx/plugins.ini

amxx_pluginsdir addons/amxx/plugins

amxx_modulesdir addons/amxx/modules

amxx_vault      addons/amxx/configs/vault.ini

csstats_score   addons/amxx/custom/csstats.amx

csstats         addons/amxx/custom/csstats.dat

Ce fichier ne doit à priori pas être modifié, sauf si vraiment vous en faites une utilisation particulière. Il peut aussi servir à faire migrer votre ancienne configuration des plugins et modules AMX Mod, vers une configuration AMX Mod X


Fichiers configs/clcmds.ini et cmds.ini

Ces fichiers contiennent vos raccourcis vers les commandes les plus utilisées : kick, ban, changemap ...

Ils sont à éditer en fonction de vos besoins, je ne m’attarde pas sur la configuration qui est relativement simple à comprendre.


Fichier configs/configs.ini

Ce fichier contient la liste des configurations à faire prendre au serveur pour qu’il devienne un serveur conforme aux règles Clanbase ou aux règles CPL...

Ne le modifiez pas si vous ne savez pas comment on modifie un fichier server.cfg


Fichier configs/conmotd.txt

C’est le « Connection MOTD » c’est le message affiché lors de la connexion au serveur dans la console. Ca devient obsolète avec CS 1.6 puisque par défaut on ne voit pas la console ;)

Sinon vous verrez apparaître ca :


Fichier configs/cvars.ini

Il contient toutes les variables côté serveur que l’on peut modifier via le menu : amx_menu

Modifiez les variables qui seront affichées par défaut et les choix possibles, ci-dessous, un exemple :


"mp_timelimit" "0" "30" "45" "u"

"mp_friendlyfire" "0" "1" "u"

"mp_autoteambalance" "0" "1" "2" "u"

...


Fichier configs/maps.ini

Même chose, sauf que dans ce cas, il s’agit des maps que l’on peut afficher dans le menu, ainsi qu’une brève description de celles-ci.


Fichier configs/speech.ini

C’est le fichier qui contient toutes les voix (comme : "Hey arrêtez ca !" et "T’inquiètes, on leur fera payer ça au centuple").


Fichier users.ini

C’est le fichier qui détermine qui peut faire quoi sur le serveur. Il est très puissant, et faîtes donc bien attention à qui vous donnez des droits.

Ci -dessous voici un utilisateur qui est l’administrateur tout puissant du serveur :


"#KV | RItalMan" "mot_passe" "abcdefghijklmnopqrstu" "abcde"


Fichier modules.ini

Ce fichier est lègèrement plus important, puisqu’il permet de gérer l’accès à une base MySQL par exemple. Mon fichier désactive le « Fun mode » que je trouve débile à souhait, et active l’appel à une base MySQL


; Fun - This has extra functions for "extra" stuff

;fun_amx_i386.so

; Engine - This has engine functions core to half-life

engine_amx_i386.so

; MySQL - This adds MySQL connection support

mysql_amx_i386.so

; Counter-Strike - This adds functions specific to Counter-Strike

cstrike_amx_i386.so

; CS Stats - This adds functionality for CS statistical information

csstats_amx_i386.so

Attention, par défaut, le fichier mysql_i386.so n’est pas executable, pour palier à ce problème faites :


chmod +x mysql_amx_i386.so

Voilà pour la configuration de base d’AMX Mod.

Attention, vous avez dans un fichier plugins.ini qui quand à lui vous permet de rajouter des modules compilés par vous ,ou trouvez sur internet ; ex : high ping kicker ou autre.

D’une manière général, si vous rajoutez un plugin ; n’oubliez pas de rajouter son nom *.amx dans le fichier plugins.ini


Fichier plugins.ini

Extrait de configuration :


;admin.amx               ; admin base (required for any admin-related)

admin_mysql.amx        ; admin base - MySQL version (comment admin.amx)

admincmd.amx            ; basic admin console commands

adminhelp.amx           ; help command for admin console commands

adminslots.amx          ; slot reservation

....

high_ping_kicker.amx    ;Kicks pings that are higher than 100ms

Dans le répertoire scripting vous trouverez tout le nécessaire pour pouvoir compiler vos propres plugins AMX Mod X.

Configuration d’HLGuard


cd /chemin/vers/hlds/cstrike
unzip hlguard_version.zip
cd addons/hlguard/

Le fichier a éditer est : hlguard.cfg

La configuration de base est très bonne, il n’y a pratiquement rien à changer, sauf si vous faîtes tourner le serveur en LAN ou sur Internet :


hlg_exec addons/hlguard/config/hlg_net.cfg              // InterNET mode - Bans by UniqueID
// hlg_exec addons/hlguard/config/hlg_lan.cfg           // LAN mode - Bans by IP address
// hlg_exec addons/hlguard/config/hlg_league.cfg

Commentez et décommentez donc celui qui vous convient le mieux.

Vous aurez ensuite à éditer le fichier correspondant dans le répertoire config, mais là encore, il y a peu de choses à changer.


Et si on souhaite lancer plusieurs serveur en même temps ??

Alors là, rien de plus simple :)


cd /usr/steam/hlds_l

./hlds_run -game cstrike +maxplayers 12 +map de_aztec +port 27015 &

./hlds_run -game cstrike +maxplayers 12 +map de_aztec +port 27016 &

./hlds_run -game cstrike +maxplayers 12 +map de_aztec +port 27017 &

Dans l’exemple suivant, j’ai lancé 3 serveur dédiés counter-strike, mais vous pourriez très bien lancer un serveur DoD, un serveur Counter-Strike, un TFC, bref toutes les combinaisons sont possibles, d’autant que vous pouvez mettre plus ou moins de joueur, changer la map, avoir des paramètres différents, mais dans ce cas, il faut créer plusieurs fichiers de configuration, et c’est une autre histoire :)

Je remercie Pluton et Mip pour m’avoir dit de corriger les liens, et m’avoir encouragé dans la documentation. Bonne continuation à tous les deux. En espèrant vous voir sur un serveur Steam bientôt ;)

Répondre à cet article

Forum

S'il vous plaît, contribuez à la survie de ce site

en cliquant sur ces publicités qui me permettent de payer ma connexion

Merci de votre compréhension et bonne navigation.