Le serveur dédié CS2 s'installe avec SteamCMD (application 730, environ 60 Go) et se lance avec cs2.sh. Prévoyez un VPS Ubuntu récent ou un PC Windows, une demi-heure d'installation et un jeton de serveur (GSLT) pour apparaître en ligne. Les sources consultées : tutoriel Hetzner Community, guides d'hébergeurs et wiki Valve (inaccessible à l'écriture, à recouper).
Installation pas à pas
Préparez la machine : Ubuntu 24.04 (ou Windows), au moins 4 vCPU, 8 Go de RAM et 80 Go de disque pour 10 à 32 joueurs.
Créez un utilisateur non-root (steam) et installez SteamCMD avec les bibliothèques 32 bits.
Créez un jeton GSLT pour l'AppID 730 sur steamcommunity.com/dev/managegameservers (un jeton par serveur).
Téléchargez le serveur avec app_update 730 validate (10 à 30 minutes).
Créez le lien steamclient.so du SDK 64 bits, puis lancez le serveur avec ./cs2.sh depuis le dossier game/.
Placez server.cfg dans game/csgo/cfg/ (voir l'outil « Générateur de server.cfg CS2 »).
Ouvrez 27015 (UDP et TCP), 27005 (UDP) et 27020 (UDP) dans ufw, le pare-feu du fournisseur et la box.
Connectez-vous depuis CS2 avec la console du jeu : connect IP:27015.
Créez un service systemd pour le démarrage automatique et planifiez sauvegardes et mises à jour.
Prérequis
- Système : Ubuntu 24.04 (utilisé par le tutoriel Hetzner) ou Windows 10/11 et Windows Server.
- Ressources : 4 vCPU, 8 Go de RAM, 80 Go de disque pour 10 à 32 joueurs (recommandation du tutoriel Hetzner) ; le téléchargement pèse environ 60 Go.
- Comptes : un compte Steam pour créer le jeton GSLT (AppID 730). Sans jeton, le serveur reste limité au réseau local.
- Attention : l'ancien serveur CS:GO utilisait l'application 740 ; CS2 utilise la 730.
Installation locale sous Windows
Téléchargez SteamCMD depuis la documentation officielle de Valve, décompressez-le dans C:\steamcmd, puis installez le serveur. Le chemin exact de cs2.exe sous Windows n'a pas pu être confirmé sur une source officielle : repérez-le dans le dossier game\bin après l'installation, lancez-le avec -dedicated -console, puis testez avec connect 127.0.0.1 dans le jeu.
cd C:\steamcmd
steamcmd +force_install_dir C:\cs2-server +login anonymous +app_update 730 validate +quitVPS Linux : utilisateur et dépendances
Commandes du tutoriel Hetzner Community (Ubuntu 24.04). Le compte steam n'a pas besoin de sudo en production : retirez ce droit une fois l'installation terminée.
sudo apt update && sudo apt upgrade -y
sudo adduser steam
sudo usermod -aG sudo steam
su - steam
sudo apt-get install lib32gcc-s1 -y
sudo add-apt-repository multiverse
sudo dpkg --add-architecture i386
sudo apt update -y
sudo apt install steamcmd -yVPS Linux : téléchargement du serveur
Le tutoriel Hetzner recommande aussi de se connecter une fois avec un compte Steam dédié (steamcmd +login VOTRE_COMPTE) ; l'installation anonyme fonctionne dans plusieurs guides, à vous de tester.
mkdir -p ~/cs2-server && cd ~/cs2-server
steamcmd +login anonymous +force_install_dir ~/cs2-server +app_update 730 validate +quit
# SDK 64 bits (ignorer si le lien existe déjà)
mkdir -p ~/.steam/sdk64
ln -s ~/.local/share/Steam/steamcmd/linux64/steamclient.so ~/.steam/sdk64/steamclient.soVPS Linux : premier démarrage
Lancez toujours ./cs2.sh (et non le binaire directement) depuis le dossier game/. Remplacez YOUR_GSLT_TOKEN. Les modes : casual 0/0, competitive 0/1, deathmatch 1/2 (+game_type/+game_mode). Le drapeau -insecure désactive VAC : réservez-le aux serveurs privés. Pour des essais, utilisez screen ou tmux (screen -S cs2).
cd ~/cs2-server/game
./cs2.sh -dedicated -port 27015 -maxplayers 10 \
+hostname "My CS2 Server" +map de_dust2 \
+game_type 0 +game_mode 1 \
+sv_setsteamaccount YOUR_GSLT_TOKENPorts à ouvrir et pare-feu Linux (ufw)
Pour changer le port de jeu, ajoutez -port N à la ligne de lancement (un port différent par instance) 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 : trafic de jeu
- 27015/tcp : RCON et pings
- 27005/udp : communication client
- 27020/udp : SourceTV (enregistrement de démos)
- Autres ports cités par le tutoriel Hetzner : 27036/tcp (Steam Remote Play), 3478/udp (NAT traversal), 4379-4380/udp (matchmaking), 22/tcp (SSH).
sudo ufw allow OpenSSH
sudo ufw allow 27015/udp
sudo ufw allow 27015/tcp
sudo ufw allow 27005/udp
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 2 27015 UDP" dir=in action=allow protocol=UDP localport=27015
netsh advfirewall firewall add rule name="Counter-Strike 2 27015 TCP" dir=in action=allow protocol=TCP localport=27015
netsh advfirewall firewall add rule name="Counter-Strike 2 27005 UDP" dir=in action=allow protocol=UDP localport=27005
netsh advfirewall firewall add rule name="Counter-Strike 2 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 2 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/cs2.service (en root), puis activez-le. Adaptez l'utilisateur et les chemins ; consultez les journaux avec journalctl -u cs2 -f.
[Unit]
Description=Counter-Strike 2 dedicated server
After=network-online.target
Wants=network-online.target
[Service]
User=steam
WorkingDirectory=/home/steam/cs2-server/game
ExecStart=/home/steam/cs2-server/game/cs2.sh -dedicated -port 27015 -maxplayers 10 +game_type 0 +game_mode 1 +map de_dust2 +sv_setsteamaccount YOUR_GSLT_TOKEN
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
# then:
# sudo systemctl daemon-reload
# sudo systemctl enable --now cs2Windows : 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 2 server" /TR "C:\cs2-server\start-cs2.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 cs2
steamcmd +force_install_dir /home/steam/cs2-server +login anonymous +app_update 730 validate +quit
sudo systemctl start cs2
# backup
tar czf ~/cs2-$(date +%F).tar.gz -C /home/steam/cs2-server game/csgo/cfg game/csgo/gamemodes_server.txt
# daily restart at 05:00 (root crontab: sudo crontab -e)
0 5 * * * systemctl restart cs2Déclarer et trouver son serveur
Ajoutez votre serveur sur https://game-rank.com/jeux/counter-strike 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
- Le serveur démarre en mode LAN ou sans visibilité : jeton GSLT absent, invalide ou réutilisé sur un autre serveur. Solution : créez un jeton propre à ce serveur pour l'AppID 730 et passez-le avec +sv_setsteamaccount.
- Le serveur plante ou ne trouve pas steamclient.so : lien du SDK 64 bits absent. Solution : créez ~/.steam/sdk64/steamclient.so comme indiqué, et lancez bien ./cs2.sh depuis game/.
- 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).
Questions fréquentes
- CS2 utilise-t-il toujours les commandes et fichiers de CS:GO ?
- En partie : le dossier de config reste game/csgo/cfg/ et la plupart des cvars mp_* existent, mais le serveur est une application différente (730) et certains éléments (plugins SourceMod, API de collections Workshop) ne se transposent pas tels quels. En cas de doute, testez sur votre build.
- Combien de joueurs et quelle machine pour un serveur CS2 ?
- Le tutoriel Hetzner vise 10 à 32 joueurs avec 4 vCPU, 8 Go de RAM et 80 Go de disque ; ajoutez +maxplayers à la ligne de lancement pour limiter les slots.
- 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 2 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.
