Ce tuto s'adresse à ceux qui veulent mettre en place un serveur dédié CS:GO sur Linux avec une distribution comme Debian Squeeze ou Ubuntu.
Voici les différents chapitres de ce tuto :
- Installation des librairies nécessaires
- Création de l'utilisateur steam et du répertoire du serveur steamcmd
- Installation de Counter-Strike : Global Offensive via SteamCMD
- Configuration du pare-feu
- Installation de Metamod et Sourcemod
- Configuration de Sourcemod
- Configuration du serveur
- Démarrer le serveur
- Se connecter au serveur
- Script de lancement du serveur
- Cron de mise à jour du serveur
Installation des librairies nécessaires
Pour installer un dedicated server steam, les librairies ia32-libs sont nécessaires. Celles-ci concernent uniquement les serveurs Linux qui tournent avec un noyau 64-bit.1 | root@server:~# apt-get install ia32-libs ia32-libs-gtk |
Création de l'utilisateur steam et du répertoire du serveur steamcmd
Pour commencer on va créer un utilisateur que j'ai appelé ici steam qui aura les droits pour lancer le serveur car en root cela peut ouvrir des failles de sécurité évidentes.1 | root@server:~# adduser steam |
1 | root@server:~# mkdir /var/steamcmd |
2 | root@server:~# chown steam /var/steamcmd -R |
Installation de Counter-Strike : Global Offensive via SteamCMD
Alors
ici grosse différence par rapport à l'installation d'un serveur
classique Steam comme pour Left 4 Dead 2 ou bien Counter-Strike 1.6. On
va devoir passer par le Steam Console Client ou SteamCMD car CS:GO passe par le système de contenu Steam Pipe et n'est donc pas présent dans la liste des jeux du HLDSUpdateTool.Pour moi SteamCMD est un système que je trouve useless bien que l'on soit obligé de s'en servir ici pour créer notre serveur dédié et vous allez comprendre pourquoi...
Allez c'est parti téléchargeons-le.
1 | root@server:~# su steam |
2 | steam@server:~# cd /var/steamcmd |
3 | steam@server:~# wget http://blog.counter-strike.net/wp-content/uploads/2012/04/steamcmd.tar.gz |
4 | steam@server:~# tar xvzf steamcmd.tar.gz |
5 | steam@server:~# mkdir games |
Maintenant nous allons installer CS:GO dans le répertoire games via la console Steam. Pour cela exécutez steam.sh en tapant :
1 | steam@server:~# ./steam.sh |
./steam.sh: line 60: /var/steamcmd/linux32/steam: Aucun fichier ou dossier de ce type
Alors essayez la commande :
1 | steam@server:~# STEAMEXE=steamcmd ./steam.sh |
Une fois sur le prompt Steam, il va falloir vous connecter avec votre compte Steam et c'est le point que je trouve vraiment useless pour monter un serveur dédié surtout que vous devez être déconnecté de tout client Steam sinon ça ne fonctionnera pas... Bref faisons :
1 | Steam> login username password |
1 | Steam> login username password code |
1 | Steam> force_install_dir ./games/csgo/ |
2 | Steam> app_update 740 validate |
Une fois que c'est fini, tapez quit pour vous déconnecter proprement de Steam.
1 | Steam> quit |
Configuration du pare-feu
Maintenant
que notre serveur est installé, on va avant tout ajouter des exceptions
pour certains ports et protocoles à notre firewall via iptables. J'ai
trouvé la liste des ports de Steam sur le Steam Support.1 | root@server:~# /sbin/iptables -A INPUT -p udp -m udp --dport 27000:27030 -j ACCEPT |
2 | root@server:~# /sbin/iptables -A INPUT -p tcp -m tcp --dport 27014:27050 -j ACCEPT |
3 | root@server:~# /sbin/iptables -A INPUT -p udp -m udp --dport 4380 -j ACCEPT |
4 | root@server:~# /sbin/iptables -A INPUT -p udp -m udp --dport 3478 -j ACCEPT |
5 | root@server:~# /sbin/iptables -A INPUT -p udp -m udp --dport 4379 -j ACCEPT |
6 | root@server:~# /sbin/iptables -A INPUT -p udp -m udp --dport 1200 -j ACCEPT |
7 | root@server:~# /sbin/iptables -A INPUT -p udp -m udp --dport 4380 -j ACCEPT |
Installation de Metamod et Sourcemod
On va se pencher sur l'installation de Metamod et Sourcemod qui vont nous permettre de gérer plus facilement et de façon plus intuitive l'administration du serveur à partir du jeu.Ici nous allons prendre les versions snapshots car à l'heure actuelle ce sont les seules qui fonctionnent sous CS:GO.
- Metamod : http://www.sourcemm.net/snapshots
- Sourcemod : http://www.sourcemod.net/snapshots.php
1 | root@server:~# su steam |
2 | steam@server:~# cd /var/steamcmd/games/csgo |
3 | steam@server:~# wget http://www.metamodsource.net/mmsdrop/1.9/mmsource-1.9.0-hg799-linux.tar.gz |
4 | steam@server:~# wget http://www.sourcemod.net/smdrop/1.5/sourcemod-1.5.0-hg3635-linux.tar.gz |
5 | steam@server:~# tar xvzf mmsource-* && tar xvzf sourcemod-* |
6 | steam@server:~# cp -R addons/* csgo/addons/ && rm -Rf addons |
7 | steam@server:~# cp -R cfg/* csgo/cfg/ && rm -Rf cfg |
8 | steam@server:~# rm mmsource-* && rm sourcemod-* |
1 | steam@server:~# vi csgo/addons/metamod.vdf |
1 | "Plugin" |
2 | { |
3 | "file" "../csgo/addons/metamod/bin/server" |
4 | } |
1 | steam@server:~# cd /var/steamcmd/games/csgo |
2 | steam@server:~# ./srcds_run -game csgo |
1 | meta list |
1 | Listing 3 plugins: |
2 | [01] SourceMod (1.5.0-dev+3635) by AlliedModders LLC |
3 | [02] CS Tools (1.5.0-dev+3635) by AlliedModders LLC |
4 | [03] SDK Tools (1.5.0-dev+3635) by AlliedModders LLC |
Configuration de Sourcemod
Maintenant nous avons besoin de configurer Sourcemod afin d'y ajouter des admins et d'ajouter/supprimer certains plugins.1 | steam@server:~# vi /var/steamcmd/games/csgo/csgo/addons/sourcemod/configs/admins_simple.ini |
1 | // Votre pseudo |
2 | "STEAM_x:x:xxxxxxxx" "99:z" |
Ensuite pour ajouter des plugins, je vous conseille de vous rendre sur AlliedModders qui en recense un grand nombre. Vous aurez juste à suivre les instructions puis à placer vos plugins dans le répertoire /addons/sourcemod/plugins. Pour supprimer un plugin, mettez-le dans le répertoire disabled.
Configuration du serveur
On va ensuite modifier la configuration du serveur CS:GO grâce au fichier server.cfg dans un premier temps.1 | steam@server:~# vi /var/steamcmd/games/csgo/csgo/cfg/server.cfg |
// Nom du serveur
hostname "Cr@zy Server"// RCON password pour administrer le serveur depuis le jeu, changer les maps, etc...
rcon_password "VOTRE_RCON"
// Adresse e-mail de l'admin à contacter
sv_contact "webmaster@foo.com"
// Groupe Steam sur lequel est assigner le serveur
// vous trouverez l'ID de votre groupe en éditant le profil du groupe
// NE RIEN METTRE SI VOUS VOULEZ VOTRE SERVEUR PUBLIC
//sv_steamgroup "999999"
// Créer un search_key pour rejoindre rapidement votre serveur depuis le jeu
// Essayez de le rendre unique
// NE RIEN METTRE SI VOUS VOULEZ VOTRE SERVEUR PUBLIC
//sv_search_key "crazyws-l4d2-server"
// Désactiver mode LAN
sv_lan 0
// Port du serveur (defaut 27015)
hostport 27015
// Region - This sets the lobby in which your server will be part of
// You will want to set this to the closest location to your server
// eastcoast - sv_region 0
// westcoast - sv_region 1
// south america - sv_region 2
// europe - sv_region 3
// asia - sv_region 4
// australia - sv_region 5
// middle east - sv_region 6
// africa - sv_region 7
// world - sv_region 255
sv_region 1
// Misc
sv_pure 0
sv_cheats 0
sv_clearhinthistory 0
sv_consistency 0
sv_pausable 0
sv_voiceenable 1
// Bots
bot_quota 10
bot_quota_mode fill
bot_join_after_player 0
bot_join_team any
bot_defer_to_human_items 1
bot_defer_to_human_goals 0
bot_difficulty 1
bot_dont_shoot 0
bot_chatter off
bot_autodifficulty_threshold_low -2.0
bot_autodifficulty_threshold_high 0.0
// Game
mp_afterroundmoney 0
mp_playercashawards 1
mp_teamcashawards 1
mp_timelimit 45
mp_maxrounds 0
mp_roundtime 2
mp_freezetime 5
mp_buytime 60
mp_forcecamera 0
mp_defuser_allocation 0
mp_death_drop_gun 1
mp_death_drop_grenade 2
mp_death_drop_defuser 1
mp_match_end_restart 0
mp_friendlyfire 0
// Logging
log on
sv_logecho 1
sv_logfile 1
sv_log_onefile 0
sv_logbans 1
sv_logflush 0
sv_logsdir logs
// Perfs. réseau
sv_minrate 80000
sv_maxrate 0
sv_mincmdrate 128
sv_maxcmdrate 128
// Bans
exec banned_user.cfg
exec banned_ip.cfg
writeip
writeid
hostname "Cr@zy Server"// RCON password pour administrer le serveur depuis le jeu, changer les maps, etc...
rcon_password "VOTRE_RCON"
// Adresse e-mail de l'admin à contacter
sv_contact "webmaster@foo.com"
// Groupe Steam sur lequel est assigner le serveur
// vous trouverez l'ID de votre groupe en éditant le profil du groupe
// NE RIEN METTRE SI VOUS VOULEZ VOTRE SERVEUR PUBLIC
//sv_steamgroup "999999"
// Créer un search_key pour rejoindre rapidement votre serveur depuis le jeu
// Essayez de le rendre unique
// NE RIEN METTRE SI VOUS VOULEZ VOTRE SERVEUR PUBLIC
//sv_search_key "crazyws-l4d2-server"
// Désactiver mode LAN
sv_lan 0
// Port du serveur (defaut 27015)
hostport 27015
// Region - This sets the lobby in which your server will be part of
// You will want to set this to the closest location to your server
// eastcoast - sv_region 0
// westcoast - sv_region 1
// south america - sv_region 2
// europe - sv_region 3
// asia - sv_region 4
// australia - sv_region 5
// middle east - sv_region 6
// africa - sv_region 7
// world - sv_region 255
sv_region 1
// Misc
sv_pure 0
sv_cheats 0
sv_clearhinthistory 0
sv_consistency 0
sv_pausable 0
sv_voiceenable 1
// Bots
bot_quota 10
bot_quota_mode fill
bot_join_after_player 0
bot_join_team any
bot_defer_to_human_items 1
bot_defer_to_human_goals 0
bot_difficulty 1
bot_dont_shoot 0
bot_chatter off
bot_autodifficulty_threshold_low -2.0
bot_autodifficulty_threshold_high 0.0
// Game
mp_afterroundmoney 0
mp_playercashawards 1
mp_teamcashawards 1
mp_timelimit 45
mp_maxrounds 0
mp_roundtime 2
mp_freezetime 5
mp_buytime 60
mp_forcecamera 0
mp_defuser_allocation 0
mp_death_drop_gun 1
mp_death_drop_grenade 2
mp_death_drop_defuser 1
mp_match_end_restart 0
mp_friendlyfire 0
// Logging
log on
sv_logecho 1
sv_logfile 1
sv_log_onefile 0
sv_logbans 1
sv_logflush 0
sv_logsdir logs
// Perfs. réseau
sv_minrate 80000
sv_maxrate 0
sv_mincmdrate 128
sv_maxcmdrate 128
// Bans
exec banned_user.cfg
exec banned_ip.cfg
writeip
writeid
Démarrer le serveur
Allez c'est parti on va lancer notre serveur et tester si tout fonctionne bien.1 | steam@server:~# cd /var/steamcmd/games/csgo/ |
2 | steam@server:~#
./srcds_run -game csgo -console -usercon -secure -maxplayers_override
28 +sv_pure 0 +net_public_adr 1.2.3.4 +game_type 0 +game_mode 0
+mapgroup mg_bomb +map de_dust2 |
Pour récapituler, cette commande lancera votre serveur CS:GO avec les paramètres suivants :
- mode Classic Casual
- map de_dust2
- 28 joueurs
- adresse IP : 1.2.3.4
- console activée
- VAC secured
Server will auto-restart if there is a crash.
LD_LIBRARY_PATH=/var/steamcmd/games/csgo/bin:/var/steamcmd/games/csgo:/var/steamcmd/games/csgo/bin:
#ConVarRef developer doesn't point to an existing ConVar
#Using breakpad minidump system
Using breakpad crash handler
#PERF WARNING: Failed to open model substitution file, cannot swap models out based on gpu_level!
#
#Console initialized.
#ConVarRef sv_alternateticks doesn't point to an existing ConVar
#Game.dll loaded for "Counter-Strike: Global Offensive"
#GameTypes: initializing game types interface from GameModes.txt.
#GameTypes: Creating new entry for maps/de_dust2_se.kv.
#GameTypes: merging game types interface from gamemodes_server.txt.
#GamesTypes: game type/mode (training/training) is missing convar "bot_quota".
Server is hibernating
[S_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.
[S_API FAIL] SteamAPI_Init() failed; unable to locate a running instance of Steam, or a local steamclient.dll.
Convar developer has conflicting FCVAR_CHEAT flags (child: no FCVAR_CHEAT, parent: has FCVAR_CHEAT, parent wins)
Particles: Missing 'particles/maps/gg_vietnam.pcf'
maxplayers set to 32
Required key "game_info" missing.
Unknown command "cl_bobamt_vert"
Unknown command "cl_bobamt_lat"
Unknown command "cl_bob_lower_amt"
Unknown command "cl_viewmodel_shift_left_amt"
Unknown command "cl_viewmodel_shift_right_amt"
Unknown command "cl_teamid_min"
Unknown command "cl_teamid_max"
Unknown command "cl_teamid_overhead"
Unknown command "cl_teamid_overhead_maxdist"
--------------------------------------------------------
sv_pure set to 0.
--------------------------------------------------------
--------------------------------------------------------
sv_pure value unchanged (current value is 0).
--------------------------------------------------------
Unknown command "mat_bloom_scalefactor_scalar"
sh: ifconfig : commande introuvable
mode MP, dedicated No, ports 27015 SV / 27005 CL
---- Host_NewGame ----
Unknown command "sv_show_bot_difficulty_in_name"
Host_NewGame on map de_dust2
L 08/28/2012 - 00:01:36: -------- Mapchange to de_dust2 --------
ConVarRef room_type doesn't point to an existing ConVar
Executing dedicated server config file
ConVarRef cl_playerspraydisable doesn't point to an existing ConVar
ConVarRef cl_enable_roundstart_autobuy doesn't point to an existing ConVar
ConVarRef spec_freeze_panel_extended_time doesn't point to an existing ConVar
ConVarRef mp_ggprogressive_win_panel_pct doesn't point to an existing ConVar
PrecacheScriptSound 'anarchist_blank' failed, no such sound script entry
PrecacheScriptSound 'balkan_blank' failed, no such sound script entry
PrecacheScriptSound 'fbihrt_blank' failed, no such sound script entry
PrecacheScriptSound 'gign_blank' failed, no such sound script entry
Attempting to precache model, but model name is NULL
Commentary: Could not find commentary data file 'maps/de_dust2_commentary.txt'.
Initializing Steam libraries for secure Internet server
[S_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.
Setting breakpad minidump AppID = 730
Forcing breakpad minidump interfaces to load
Looking up breakpad interfaces from steamclient
Calling BreakpadMiniDumpSystemInit
Installing breakpad exception handler for appid(730)/version(5038)
Looking up breakpad interfaces from steamclient
Calling BreakpadMiniDumpSystemInit
Logging into anonymous gameserver account.
--------------------------------------------------------
sv_pure value unchanged (current value is 0).
--------------------------------------------------------
Can't use cheat cvar bot_dont_shoot in multiplayer, unless the server has sv_cheats set to 1.
Unknown command "mp_friendlyfire"
Server logging enabled.
Server logging data to file logs/L1_2_3_4_27015_201208280001_000.log
L 08/28/2012 - 00:01:38: Log file started (file "logs/L1_2_3_4_27015_201208280001_000.log") (game "/var/steamcmd/games/csgo/csgo") (version "5038")
Writing cfg/banned_ip.cfg.
Writing cfg/banned_user.cfg.
Connection to Steam servers successful.
Public IP is 1.2.3.4.
Assigned anonymous gameserver Steam ID [A:1:2600696834(3066)].
VAC secure mode is activated.
Ce
qu'il faut retenir dans ce logs, ce sont les 4 dernière lignes qui
montrent que votre serveur est opérationnel. Mais pour revenir sur votre
terminal, vous devrez arrêter le serveur. Pour résoudre ce problème il
faudra utiliser la commande screen qui permettra de lancer un écran indépendant pour le serveur de jeu. On verra ça dans un prochain chapitre. LD_LIBRARY_PATH=/var/steamcmd/games/csgo/bin:/var/steamcmd/games/csgo:/var/steamcmd/games/csgo/bin:
#ConVarRef developer doesn't point to an existing ConVar
#Using breakpad minidump system
Using breakpad crash handler
#PERF WARNING: Failed to open model substitution file, cannot swap models out based on gpu_level!
#
#Console initialized.
#ConVarRef sv_alternateticks doesn't point to an existing ConVar
#Game.dll loaded for "Counter-Strike: Global Offensive"
#GameTypes: initializing game types interface from GameModes.txt.
#GameTypes: Creating new entry for maps/de_dust2_se.kv.
#GameTypes: merging game types interface from gamemodes_server.txt.
#GamesTypes: game type/mode (training/training) is missing convar "bot_quota".
Server is hibernating
[S_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.
[S_API FAIL] SteamAPI_Init() failed; unable to locate a running instance of Steam, or a local steamclient.dll.
Convar developer has conflicting FCVAR_CHEAT flags (child: no FCVAR_CHEAT, parent: has FCVAR_CHEAT, parent wins)
Particles: Missing 'particles/maps/gg_vietnam.pcf'
maxplayers set to 32
Required key "game_info" missing.
Unknown command "cl_bobamt_vert"
Unknown command "cl_bobamt_lat"
Unknown command "cl_bob_lower_amt"
Unknown command "cl_viewmodel_shift_left_amt"
Unknown command "cl_viewmodel_shift_right_amt"
Unknown command "cl_teamid_min"
Unknown command "cl_teamid_max"
Unknown command "cl_teamid_overhead"
Unknown command "cl_teamid_overhead_maxdist"
--------------------------------------------------------
sv_pure set to 0.
--------------------------------------------------------
--------------------------------------------------------
sv_pure value unchanged (current value is 0).
--------------------------------------------------------
Unknown command "mat_bloom_scalefactor_scalar"
sh: ifconfig : commande introuvable
mode MP, dedicated No, ports 27015 SV / 27005 CL
---- Host_NewGame ----
Unknown command "sv_show_bot_difficulty_in_name"
Host_NewGame on map de_dust2
L 08/28/2012 - 00:01:36: -------- Mapchange to de_dust2 --------
ConVarRef room_type doesn't point to an existing ConVar
Executing dedicated server config file
ConVarRef cl_playerspraydisable doesn't point to an existing ConVar
ConVarRef cl_enable_roundstart_autobuy doesn't point to an existing ConVar
ConVarRef spec_freeze_panel_extended_time doesn't point to an existing ConVar
ConVarRef mp_ggprogressive_win_panel_pct doesn't point to an existing ConVar
PrecacheScriptSound 'anarchist_blank' failed, no such sound script entry
PrecacheScriptSound 'balkan_blank' failed, no such sound script entry
PrecacheScriptSound 'fbihrt_blank' failed, no such sound script entry
PrecacheScriptSound 'gign_blank' failed, no such sound script entry
Attempting to precache model, but model name is NULL
Commentary: Could not find commentary data file 'maps/de_dust2_commentary.txt'.
Initializing Steam libraries for secure Internet server
[S_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.
Setting breakpad minidump AppID = 730
Forcing breakpad minidump interfaces to load
Looking up breakpad interfaces from steamclient
Calling BreakpadMiniDumpSystemInit
Installing breakpad exception handler for appid(730)/version(5038)
Looking up breakpad interfaces from steamclient
Calling BreakpadMiniDumpSystemInit
Logging into anonymous gameserver account.
--------------------------------------------------------
sv_pure value unchanged (current value is 0).
--------------------------------------------------------
Can't use cheat cvar bot_dont_shoot in multiplayer, unless the server has sv_cheats set to 1.
Unknown command "mp_friendlyfire"
Server logging enabled.
Server logging data to file logs/L1_2_3_4_27015_201208280001_000.log
L 08/28/2012 - 00:01:38: Log file started (file "logs/L1_2_3_4_27015_201208280001_000.log") (game "/var/steamcmd/games/csgo/csgo") (version "5038")
Writing cfg/banned_ip.cfg.
Writing cfg/banned_user.cfg.
Connection to Steam servers successful.
Public IP is 1.2.3.4.
Assigned anonymous gameserver Steam ID [A:1:2600696834(3066)].
VAC secure mode is activated.
Se connecter au serveur
Pour
se connecter à votre serveur une fois sur le jeu, vous pourrez soit
utiliser le navigateur de serveurs ou bien en passant par le lobby et
forcer la connexion au serveur via la commande mm_dedicated_force_servers.Avant tout vous devez avoir la console développeur active sur le jeu. Pour vérifier qu'elle soit bien active, rendez-vous dans Aide & Options > Paramètres de jeu et activez la console développeur.
Ensuite vous n'aurez plus qu'à presser la touche ² pour voir la console.
Comme je le disais, vous pouvez passer par la commande mm_dedicated_force_servers comme ça vous créez votre lobby et sans vous poser de questions, il se connectera à votre serveur. Avant de rentrer dans le lobby, ouvrez la console et tapez mm_dedicated_force_servers 1.2.3.4:27015.
Le mieux serait de faire des binds ou de mettre tout ça dans l'autoexec.cfg histoire de ne pas se retaper les commandes.
Ensuite vous avez l'habituel navigateur de serveurs (serverbrowser) où vous pourrez ajouter votre serveur en favoris en rentrant son adresse IP et son port.
Script de lancement du serveur
Pour
démarrer votre serveur je vous ai parlé de la commande screen qui sera
nécessaire. Pour simplifier les choses, j'ai vous ai fait un script qui
permettra de lancer votre serveur facilement.1 | root@server:~# vi /etc/init.d/csgo |
Copiez le contenu de csgo-server-launcher.sh dans le fichier csgo puis rendez-le exécutable.
1 | root@server:~# chmod a+x /etc/init.d/csgo |
Maintenant pour démarrer votre serveur vous aurez juste à taper cette commande :
1 | steam@server:~# /etc/init.d/csgo start |
Pour les connaitre, allez jeter un oeil au README dans la partie Usage.
Pour la commande console et pour revenir sur le prompt en se détachant du screen sans killer le serveur, il faut appuyer sur CTRL+A puis D.
Cron de mise à jour du serveur
Pour faire une mise à jour quotidienne du serveur, j'ai fait un article pour créer un cron de mise à jour d'un serveur Steam. Dans notre cas, le script de mise à jour existe déjà. C'est pourquoi le cron contiendra seulement les lignes suivantes :1 | #! /bin/bash |
2 | cd /etc/init.d/ && ./csgo update |
3 | exit 1 |
Sources
- https://support.steampowered.com/kb_article.php?ref=4321-THKV-6011
- https://support.steampowered.com/kb_article.php?ref=8571-GLVN-8711
- http://www.srcds.com/db/engine.php?subaction=showfull&id=1098643920
- https://developer.valvesoftware.com/wiki/SteamCMD
- https://developer.valvesoftware.com/wiki/Counter-Strike:_Global_Offensive_Dedicated_Servers
- https://developer.valvesoftware.com/wiki/Steam_Application_IDs
- http://www.verywiki.net/fr/Sourcemod_install_cs_go
- https://support.steampowered.com/kb_article.php?ref=5386-HMJI-5162
- https://support.steampowered.com/kb_article.php?ref=6253-IOAB-2296
- http://wallbase.cc/wallpaper/1860797

Merci pour ce super article, ton site est super !
RépondreSupprimerroot@server:~# vi /etc/init.d/csgo
RépondreSupprimer