Le serveur dédié TF2 (application SteamCMD 232250) s'installe en connexion anonyme, sans posséder le jeu sur la machine, et se lance avec srcds_run -game tf. Comptez environ 8 Go de disque, une demi-heure et un jeton GSLT pour apparaître dans la liste des serveurs. Source principale : wiki.teamfortress.com (Linux dedicated server).
Installation pas à pas
Préparez une machine Linux (Ubuntu/Debian) avec au moins 8 Go de disque libre, ou un PC Windows.
Créez un utilisateur non-root (steam) et installez les bibliothèques 32 bits.
Téléchargez SteamCMD et installez le serveur avec app_update 232250.
Créez un jeton GSLT sur steamcommunity.com/dev/managegameservers (nécessaire pour être listé).
Générez la ligne de lancement avec l'outil « Ligne de lancement TF2 » et lancez srcds_run.
Éditez tf/cfg/server.cfg (outil « Générateur de server.cfg TF2 ») et tf/mapcycle.txt.
Ouvrez 27015 UDP/TCP et 27020 UDP (et 27005 UDP) dans ufw, chez le fournisseur et sur la box.
Testez avec connect 127.0.0.1 en local, puis depuis une autre connexion avec connect IP:27015.
Créez un service systemd et planifiez mises à jour et sauvegardes.
Prérequis
- Système : Linux avec glibc 2.3.6 ou plus récent et environ 8 Go de disque libre (wiki TF) ; Windows également possible.
- CPU/RAM : non précisés par le wiki consulté ; l'exemple officiel utilise 24 slots. Surveillez la charge avant d'augmenter.
- Comptes : l'installation se fait en anonyme (posséder TF2 n'est pas nécessaire sur le serveur). Un compte Steam sert à créer le jeton GSLT.
Installation locale sous Windows
Décompressez SteamCMD dans C:\steamcmd, installez le serveur puis lancez srcds.exe avec les mêmes paramètres que sous Linux. Testez avec connect 127.0.0.1 dans la console de TF2.
cd C:\steamcmd
steamcmd +force_install_dir C:\tf2ds +login anonymous +app_update 232250 validate +quit
cd C:\tf2ds
srcds.exe -console -game tf +map ctf_2fort +sv_pure 1 +maxplayers 24 +sv_setsteamaccount YOUR_GSLT_TOKENVPS Linux : utilisateur et dépendances
Paquets cités par le wiki TF pour Debian/Ubuntu 64 bits. Sur les versions récentes, libtinfo5 et libncurses5 peuvent ne plus être fournis : le wiki renvoie alors vers des téléchargements manuels.
sudo adduser steam
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y lib32z1 libncurses5:i386 libbz2-1.0:i386 lib32gcc-s1 lib32stdc++6 libtinfo5:i386 libcurl3-gnutls:i386 libsdl2-2.0-0:i386
su - steamVPS Linux : installation et premier démarrage
Commandes du wiki TF. Remplacez YOUR_GSLT_TOKEN (jeton exigé pour apparaître dans le navigateur de serveurs). Pour la branche prerelease, ajoutez -beta prerelease avant +app_update.
mkdir -p ~/steamcmd && cd ~/steamcmd
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar zxf steamcmd_linux.tar.gz
./steamcmd.sh +force_install_dir ~/hlserver/tf2 +login anonymous +app_update 232250 +quit
cd ~/hlserver/tf2
./srcds_run -console -game tf +map ctf_2fort +sv_pure 1 +maxplayers 24 +sv_setsteamaccount YOUR_GSLT_TOKENFichiers de configuration à connaître
- tf/cfg/server.cfg : nom, mot de passe RCON, limites de temps et de manches (exemple du wiki : hostname, sv_contact, rcon_password, mp_timelimit, mp_maxrounds).
- tf/mapcycle.txt : liste de rotation des cartes (le wiki n'en détaille pas le format : une carte par ligne, comme sur les autres jeux Source).
- motd.txt et pure_server_whitelist.txt : facultatifs (message d'accueil et liste blanche sv_pure).
Ports à ouvrir et pare-feu Linux (ufw)
Pour changer le port de jeu, ajoutez -port N à la ligne de lancement (un port 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 (wiki TF)
- 27015/tcp : RCON (wiki TF)
- 27020/udp : SourceTV (wiki TF)
- 27005/udp : communication client (valeur standard Source, non citée par le wiki TF consulté)
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="Team Fortress 2 27015 UDP" dir=in action=allow protocol=UDP localport=27015
netsh advfirewall firewall add rule name="Team Fortress 2 27015 TCP" dir=in action=allow protocol=TCP localport=27015
netsh advfirewall firewall add rule name="Team Fortress 2 27005 UDP" dir=in action=allow protocol=UDP localport=27005
netsh advfirewall firewall add rule name="Team Fortress 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 Team Fortress 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/tf2.service (en root), puis activez-le. Adaptez l'utilisateur et les chemins ; consultez les journaux avec journalctl -u tf2 -f.
[Unit]
Description=Team Fortress 2 dedicated server
After=network-online.target
Wants=network-online.target
[Service]
User=steam
WorkingDirectory=/home/steam/hlserver/tf2
ExecStart=/home/steam/hlserver/tf2/srcds_run -console -game tf -norestart +map ctf_2fort +sv_pure 1 +maxplayers 24 +sv_setsteamaccount YOUR_GSLT_TOKEN
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
# then:
# sudo systemctl daemon-reload
# sudo systemctl enable --now tf2Windows : 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 "Team Fortress 2 server" /TR "C:\tf2ds\start-tf2.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 tf2
steamcmd +force_install_dir /home/steam/hlserver/tf2 +login anonymous +app_update 232250 validate +quit
sudo systemctl start tf2
# backup
tar czf ~/tf2-$(date +%F).tar.gz -C /home/steam/hlserver/tf2 tf/cfg tf/addons tf/mapcycle.txt
# daily restart at 05:00 (root crontab: sudo crontab -e)
0 5 * * * systemctl restart tf2Déclarer et trouver son serveur
Ajoutez votre serveur sur https://game-rank.com/jeux/team-fortress-2 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 tourne mais n'est pas dans la liste : jeton GSLT absent ou invalide. Solution : le wiki TF exige un jeton valide ; passez-le avec +sv_setsteamaccount (ou SRCDS_TOKEN sous Docker) et redémarrez.
- Erreur de bibliothèque libtinfo.so.5 / libncurses.so.5 introuvable sur une distribution récente. Solution : installez les paquets i386 correspondants s'ils existent, sinon suivez les téléchargements manuels indiqués par le wiki TF.
- 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
- Combien de joueurs peut accueillir un serveur TF2 ?
- L'exemple officiel utilise +maxplayers 24 ; le wiki consulté ne donne pas de plafond. Réglez +maxplayers selon votre CPU et vos plugins.
- Comment mettre à jour le serveur ?
- Selon le wiki TF, relancez simplement la commande SteamCMD d'installation (+app_update 232250). La mise à jour automatique avec -autoupdate demande des paramètres supplémentaires (-steam_dir, -steamcmd_script) non détaillés : préférez une mise à jour planifiée comme dans la section dédiée.
- 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 Team Fortress 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.
