image

Installation d’un serveur Condition Zero sous Linux

lundi 15 juillet 2005.


Configuration Firewall

Nous allons détailler la configuration firewall, lorsque celui-ci est iptables sous GNU/Linux 2.4/2.6.

En entrée et sortie UDP/1200 UDP/27000 à 27015 (si le serveur tourne sur ce port) TCP/27030 à 27039


$EXTINF = Votre interface externe (Internet)
$INTINF = Votre interface au réseau local (LAN, WLAN)
$IPT = /sbin/iptables
$IPT -A INPUT -i $EXTINF-p udp --dport 1200 -j ACCEPT
$IPT -A OUTPUT -o $EXTINF -p udp --sport 1200 -j ACCEPT
$IPT -A INPUT -i $EXTINF -p udp --dport 27000:27015 -j ACCEPT
$IPT -A OUTPUT -o $EXTINF -p udp 27000:27015 -j ACCEPT

Si le serveur tourne sur le 27015


$IPT -A OUTPUT -p tcp --sport 27030:27039 -j ACCEPT
$IPT -A INPUT -p tcp --dport 27030:27039 -j ACCEPT

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


$IPT -A OUTPUT -o $EXTINF -p tcp -j ACCEPT
$IPT -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"
$IPT -t nat -A PREROUTING -p udp --dport 1200 -j DNAT --to-destination $IP_SERVEUR:1200
$IPT -t nat -A PREROUTING -p udp --dport 27000:27039 -j DNAT --to-destination $IP_SERVEUR:27000:27039
$IPT -t nat -A PREROUTING -p tcp --dport 27000:27039 -j DNAT --to-destination $IP_SERVEUR:27000:27039


Installation du serveur HLDS

La première étape consiste à télécharger le serveur, et à créer un compte Steam par la même occasion :


wget http://www.steampowered.com/download/hldsupdatetool.bin
chmod +x hldsupdatetool.bin
./hldsupdatetool.bin
[....
....]
Enter 'yes' to accept this agreement, 'no' to decline: yes
extracting steam...done

./steam -create ritalman@alphacore.net motdepasse "C'est une documentation ?" oui
Checking bootstrapper version ...
Creating Account
Account Created successfully

Ensuite, il ne reste plus qu’à mettre à jour les fichiers Condition Zero :


./steam -command update -game czero -username ritalman -password motdepasse -remember_password
Checking bootstrapper version ...
Updating Installation
Logging in as 'ritalman'
No installation record found at ./
Checking/Installing 'Condition Zero Base Content' version 14
Downloading: ./\czero\cl_dlls\client.dll
Downloading: ./\czero\dlls\cs_amd64.so
Downloading: ./\czero\dlls\cs_i386.so
Downloading: ./\czero\dlls\mp.dll
[...]
Downloading: ./\czero\decals.wad
Downloading: ./\czero\GameServerConfig.vdf
Downloading: ./\czero\hlbasics.wad
Downloading: ./\czero\liblist.gam
Downloading: ./\czero\mapcycle.txt
Downloading: ./\czero\motd.txt
Downloading: ./\czero\playlist.txt
Downloading: ./\czero\server.cfg
Downloading: ./\czero\steam.inf
Downloading: ./\czero\titles.txt
Downloading: ./\czero\tutordata.txt

No installation record found at ./
Checking/Installing 'Counter-Strike Base Content' version 15
Downloading: ./\cstrike\cl_dlls\client.dll
Downloading: ./\cstrike\dlls\cs_amd64.so
Downloading: ./\cstrike\dlls\cs_i386.so
[...]
Downloading: ./\cstrike\rebuy.txt
Downloading: ./\cstrike\server.cfg
Downloading: ./\cstrike\spectcammenu.txt
Downloading: ./\cstrike\steam.inf
Downloading: ./\cstrike\titles.txt
Downloading: ./\cstrike\torntextures.wad
Downloading: ./\cstrike\tswad.wad

Checking/Installing 'Linux Server Engine' version 15

Checking/Installing 'Half-Life Base Content' version 7

HLDS installation up to date

Le serveur est à jour, passons à sa configuration :


Configuration du serveur

La première étape consiste à éditer le fichier czero/server.cfg


sv_aim 0

// disable clients' ability to pause the server
pausable 0

// default server name. Change to "Bob's Server", etc.
hostname "Serveur Condition Zero"

// maximum client movement speed
sv_maxspeed 320

// 20 minute timelimit
mp_timelimit 20

sv_cheats 0

// load ban files
exec listip.cfg
exec banned.cfg

Vous pouvez rajouter plein d'options dans ce fichier : adresse IP sur laquelle écouter, port, mapcycle...


Fichier liblist.gam

Nous allons le modifier pour qu’il supporte Metamod


game "Condition Zero"
url_info "www.cs-conditionzero.com"
url_dl ""
version "1.0"
size "184000000"
svonly "0"
secure "1"
type "multiplayer_only"
cldll "1"
hlversion "1111"
nomodels "1"
nohimodel "1"
mpentity "info_player_start"
gamedll "dlls\mp.dll"
gamedll_linux "addons/metamod/dlls/metamod_i386.so"
trainmap "tr_1"
fallback_dir "cstrike"
detailed_textures "1"


Installation de Metamod

Le metamod permet de lancer d’autres mods utiles pour l'administration/l'amélioration du serveur.


cd /chemin/vers/hlds/
cd czero
mkdir addons
mkdir addons/metamod
mkdir addons/metamod/dlls
cd addons/metamod/dlls
tar zxvf metamod-version-linux.tar.gz
cd ..
touch plugins.ini

Editez le fichier plugins.ini


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


Configuration d’Amx Mod X

cd /home/hlds/czero/
tar zxvf amxmodx-version-steam.tar.gz
cd addons/amxx/

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 :


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

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 (Hey arrêtez ca !) (T’inquiètes, on leur fera payer ca au centuple) Ceux-là je vous laisse les modifier pour faire rigoler tout le monde.

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/czero
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.


Vous pouvez bien sûr lancer tout plein d’autres mods et vous amuser à les configurer, le principe est toujours le même.


Lancement test du serveur

Vous pouvez, une fois la configuration terminée, lancer votre serveur ainsi :


cd /home/hlds
./hlds_run -game czero +maxplayers 12 +map de_aztec
Auto detecting CPU
Using AMD Optimised binary.
Auto-restarting the server on crash

Console initialized.
scandir failed:/home/florian/hlds/./cstrike/SAVE
scandir failed:/home/florian/hlds/./valve/SAVE
scandir failed:/home/florian/hlds/./platform/SAVE
Protocol version 47
Exe version 1.0.0.2/Stdio (czero)
Exe build: 02:38:45 Jul  7 2004 (2738)
STEAM Auth Server
couldn't exec language.cfg
Server IP address 192.168.0.3:27015

  Metamod version 1.17.2  Copyright (c) 2001-2004 Will Day <willday@metamod.org>
  Metamod comes with ABSOLUTELY NO WARRANTY; for details type `meta gpl'.
  This is free software, and you are welcome to redistribute it
  under certain conditions; type `meta gpl' for details.

Downloading Security Module from Speakeasy.net ...
Completed downloading Security Module from Speakeasy.net
Server is in Secure Mode.
scandir failed:/home/florian/hlds/./cstrike/SAVE
scandir failed:/home/florian/hlds/./valve/SAVE
scandir failed:/home/florian/hlds/./platform/SAVE
scandir failed:/home/florian/hlds/cstrike/SAVE
Navigation map loaded.

couldn't exec listip.cfg
couldn't exec banned.cfg
Adding auth server 65.73.232.253:27040
Adding master server 207.173.177.12:27010
Adding master server 69.28.151.178:27010

source:http://alphacore.net/spip/article.php3?id_article=62