Le serveur Counter-Strike 1.6 est un HLDS (Half-Life Dedicated Server, application SteamCMD 90) avec le mod cstrike. Il est léger : quelques centaines de Mo, un petit VPS suffit. Sources consultées : guides Vultr, Gentoo, hébergeurs et œufs Pterodactyl ; le wiki Valve n'était pas accessible, à recouper.
Installation pas à pas
Préparez une machine Linux (Ubuntu/Debian) ou Windows ; le serveur est très léger.
Créez un utilisateur non-root (steam) et installez SteamCMD avec les bibliothèques 32 bits.
Installez HLDS avec app_set_config 90 mod cstrike puis app_update 90 validate.
Relancez app_update 90 validate plusieurs fois jusqu'à ce qu'il ne télécharge plus rien (bug connu de HLDS).
Éditez cstrike/server.cfg (outil « Générateur de server.cfg CS 1.6 ») et cstrike/mapcycle.txt (outil « Éditeur de mapcycle.txt »).
Lancez hlds_run -game cstrike (ou hlds.exe sous Windows) avec la carte et les slots voulus.
Ouvrez 27015 UDP et TCP (et 27020 UDP pour HLTV) dans ufw, chez le fournisseur et sur la box.
Testez en local (connect 127.0.0.1 dans la console du jeu), puis depuis une autre connexion.
Créez un service systemd et planifiez mises à jour et sauvegardes.
Prérequis
- Système : Linux (Ubuntu/Debian) ou Windows. HLDS est un programme 32 bits.
- Ressources : non fixées officiellement dans les sources consultées. Une machine d'1 vCPU et 1 Go de RAM suffit en général pour 16 à 32 slots sans plugins lourds (estimation, à valider).
- Comptes : installation en connexion anonyme. Aucun jeton GSLT n'est mentionné pour HLDS dans les sources consultées.
- Variante communautaire : ReHLDS (non officiel) est une alternative largement utilisée ; ce guide couvre le HLDS de Valve.
Installation locale sous Windows
Décompressez SteamCMD dans C:\steamcmd, installez HLDS (répétez la mise à jour jusqu'à ce qu'elle ne télécharge plus rien), puis lancez hlds.exe. Testez avec connect 127.0.0.1 dans la console de Counter-Strike 1.6.
cd C:\steamcmd
steamcmd +force_install_dir C:\hlds +login anonymous +app_set_config 90 mod cstrike +app_update 90 validate +quit
steamcmd +force_install_dir C:\hlds +login anonymous +app_update 90 validate +quit
cd C:\hlds
hlds.exe -console -game cstrike +maxplayers 32 +map de_dust2VPS Linux : utilisateur et dépendances
sudo adduser steam
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y lib32gcc-s1 lib32stdc++6 steamcmd
su - steamVPS Linux : installation de HLDS
Plusieurs guides (Vultr, Gentoo, hébergeurs) indiquent que HLDS doit être mis à jour plusieurs fois : la deuxième et la troisième commande répètent app_update 90 validate. Le mod est choisi par app_set_config 90 mod cstrike.
steamcmd +force_install_dir /home/steam/hlds +login anonymous +app_set_config 90 mod cstrike +app_update 90 validate +quit
steamcmd +force_install_dir /home/steam/hlds +login anonymous +app_update 90 validate +quit
steamcmd +force_install_dir /home/steam/hlds +login anonymous +app_update 90 validate +quitVPS Linux : premier démarrage
Lancez hlds_run depuis le dossier d'installation. Le serveur lit cstrike/server.cfg à chaque changement de carte et cstrike/mapcycle.txt pour la rotation ; cstrike/liblist.gam décrit le mod (voir l'outil « Éditeur de liblist.gam » pour charger Metamod).
cd /home/steam/hlds
./hlds_run -console -game cstrike +ip 0.0.0.0 +port 27015 +maxplayers 32 +map de_dust2Ports à ouvrir et pare-feu Linux (ufw)
Ces ports sont les valeurs usuelles de HLDS (non confirmées par une page officielle consultée). Pour changer le port, utilisez +port N sur la ligne de lancement et ouvrez-le à la place de 27015.
Ouvrez uniquement ce dont vous avez besoin, puis testez depuis une autre connexion (pas depuis le serveur lui-même).
- 27015/udp : jeu (port HLDS par défaut)
- 27015/tcp : RCON
- 27020/udp : HLTV (optionnel)
sudo ufw allow OpenSSH
sudo ufw allow 27015/udp
sudo ufw allow 27015/tcp
sudo ufw allow 27020/udp
sudo ufw enable
sudo ufw statusPare-feu Windows (netsh)
Dans une invite de commandes administrateur, créez une règle entrante par port (ou ouvrez « Pare-feu Windows Defender avec fonctions avancées de sécurité »).
netsh advfirewall firewall add rule name="Counter-Strike 1.6 27015 UDP" dir=in action=allow protocol=UDP localport=27015
netsh advfirewall firewall add rule name="Counter-Strike 1.6 27015 TCP" dir=in action=allow protocol=TCP localport=27015
netsh advfirewall firewall add rule name="Counter-Strike 1.6 27020 UDP" dir=in action=allow protocol=UDP localport=27020Pare-feu du fournisseur et redirection de ports (box)
Chez un hébergeur (OVH, Hetzner, Scaleway…), ouvrez aussi les mêmes ports dans le pare-feu ou le « security group » du fournisseur : ufw ne suffit pas s'il existe un pare-feu en amont. Pour un serveur à la maison, créez dans votre box une redirection (NAT) de chaque port vers l'adresse IP locale de la machine (fixez-la ou réservez-la par DHCP).
Test : depuis une autre connexion, ajoutez le serveur par « IP:port » dans le navigateur de serveurs de Counter-Strike 1.6 ou en console. Si cela échoue, vérifiez dans l'ordre : service démarré, pare-feu local, pare-feu du fournisseur, redirection NAT.
Démarrage automatique : service systemd
Créez /etc/systemd/system/cs16.service (en root), puis activez-le. Adaptez l'utilisateur et les chemins ; consultez les journaux avec journalctl -u cs16 -f.
[Unit]
Description=Counter-Strike 1.6 dedicated server
After=network-online.target
Wants=network-online.target
[Service]
User=steam
WorkingDirectory=/home/steam/hlds
ExecStart=/home/steam/hlds/hlds_run -console -game cstrike +ip 0.0.0.0 +port 27015 +maxplayers 32 +map de_dust2
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
# then:
# sudo systemctl daemon-reload
# sudo systemctl enable --now cs16Windows : tâche planifiée au démarrage
Sous Windows, une tâche planifiée lance votre script .bat à l'ouverture du système (exécutez la commande dans une invite administrateur).
schtasks /Create /TN "Counter-Strike 1.6 server" /TR "C:\hlds\start-cs16.bat" /SC ONSTART /RU SYSTEM /RL HIGHESTMises à jour, sauvegardes et redémarrages planifiés
Arrêtez le service avant de mettre à jour (même commande SteamCMD que pour l'installation), sauvegardez régulièrement les fichiers de configuration et de données, et planifiez un redémarrage quotidien si le serveur dégrade avec le temps.
sudo systemctl stop cs16
steamcmd +force_install_dir /home/steam/hlds +login anonymous +app_update 90 validate +quit
sudo systemctl start cs16
# backup
tar czf ~/cs16-$(date +%F).tar.gz -C /home/steam/hlds cstrike/server.cfg cstrike/mapcycle.txt cstrike/liblist.gam cstrike/addons cstrike/banned.cfg cstrike/listip.cfg
# daily restart at 05:00 (root crontab: sudo crontab -e)
0 5 * * * systemctl restart cs16Déclarer et trouver son serveur
Ajoutez votre serveur sur https://game-rank.com/jeux/counter-strike-1-6 pour le rendre visible à la communauté. Pour le retrouver dans le jeu, utilisez le navigateur de serveurs ou connectez-vous directement avec son adresse IP:port.
Dépannage : erreurs fréquentes
- Fichiers manquants ou serveur qui ne démarre pas après l'installation : HLDS est connu pour une première installation incomplète. Solution : relancez app_update 90 validate (avec app_set_config 90 mod cstrike) deux ou trois fois.
- Le serveur reste bloqué au changement de carte : une carte listée dans mapcycle.txt est absente de cstrike/maps/. Solution : vérifiez que chaque .bsp existe ou retirez la ligne.
- Serveur invisible depuis l'extérieur : le service tourne mais personne ne peut se connecter. Cause : port fermé (ufw, pare-feu du fournisseur ou redirection NAT manquante). Solution : ouvrez les ports listés plus haut aux trois niveaux et testez depuis une autre connexion.
- Port déjà utilisé au démarrage : une autre instance occupe le port. Solution : listez les processus avec ss -lunp | grep 27015, arrêtez l'ancienne instance, ou donnez un port différent avec -port à chaque serveur.
- SteamCMD « Failed to install app » ou téléchargement bloqué : cause fréquente, disque plein ou droits insuffisants sur le dossier. Solution : vérifiez df -h et le propriétaire du dossier, puis relancez la commande avec validate (plusieurs fois si nécessaire).
- srcds_run : « No such file or directory » ou bibliothèque 32 bits manquante : le serveur Source est un programme 32 bits. Solution : activez l'architecture i386 (dpkg --add-architecture i386) et installez lib32gcc-s1 et lib32stdc++6.
Questions fréquentes
- Quel est l'identifiant SteamCMD du serveur CS 1.6 ?
- Le HLDS est l'application 90 ; on choisit le mod avec +app_set_config 90 mod cstrike avant +app_update 90 validate.
- Où mettre Metamod ou AMX Mod X ?
- Ces modules communautaires se placent dans cstrike/addons/ et Metamod se charge via la ligne gamedll_linux (ou gamedll) de cstrike/liblist.gam. Suivez la documentation de la distribution choisie ; l'outil « Éditeur de liblist.gam » modifie cette ligne.
- Puis-je lancer le serveur en root ?
- Déconseillé : créez un utilisateur dédié (par exemple steam) sans droits administrateur, installez et lancez le serveur avec lui. Une faille du serveur ou d'un plugin ne compromet alors pas toute la machine.
- Mon serveur Counter-Strike 1.6 n'apparaît pas dans la liste : que vérifier ?
- Vérifiez d'abord que les ports sont ouverts à tous les niveaux, que le serveur n'est pas en mode LAN (sv_lan 0) et, si le jeu l'exige, qu'un jeton de serveur (GSLT) valide est fourni. La liste Steam peut mettre quelques minutes à se rafraîchir ; en attendant, connectez-vous par IP:port.
