Comment installer un serveur TeamSpeak sur un VPS (Guide Ubuntu/CentOS)
TeamSpeak est une plateforme de communication vocale auto-hébergée à faible latence qui fonctionne comme un daemon serveur autonome sur Linux. L’installer sur un VPS vous donne un contrôle administratif complet sur les canaux, les permissions, les codecs et les politiques de sécurité — sans dépendre d’une infrastructure tierce ni de limites d’utilisation.
Ce guide couvre l’installation complète de TeamSpeak 3 Server sur Ubuntu (avec des notes pour les variantes CentOS/RHEL), notamment l’isolation des utilisateurs, la configuration du service systemd, le renforcement du mot de passe administrateur et la connexion client. Chaque commande est prête pour la production et testée sur un environnement 22.04 LTS propre.
Pourquoi auto-héberger TeamSpeak sur un VPS
Les plateformes vocales commerciales comme Discord imposent des politiques de conservation des données, une modération algorithmique et des limites de débit que les organisations ne peuvent pas contourner. Une instance TeamSpeak auto-hébergée élimine entièrement ces contraintes. Vous contrôlez :
- La qualité des codecs (Opus Voice, Opus Music) et le débit binaire par canal
- Le système de permissions avec des ACL granulaires pour les groupes de serveurs et de canaux
- Le chiffrement via TLS pour la signalisation et le chiffrement vocal optionnel
- La résidence des données — votre trafic vocal ne transite jamais par un relais tiers
- Le SLA de disponibilité — directement lié à votre fournisseur VPS, et non à un service cloud partagé
Pour les clans de jeux, les organisations d’esports, les équipes de développement à distance et les communications d’entreprise, cela se traduit par des avantages mesurables en termes de fiabilité et de conformité.
Configuration système minimale
TeamSpeak 3 Server est exceptionnellement léger. Les spécifications suivantes prennent en charge environ 50 à 100 utilisateurs simultanés sans dégradation de la qualité audio :
| Ressource | Minimum | Recommandé (100+ utilisateurs) |
|---|
| — | — | — |
|---|
| Cœurs CPU | 1 vCPU | 2 vCPU |
|---|
| RAM | 512 MB | 1 GB |
|---|
| Espace disque | 1 GB | 5 GB (logs + DB) |
|---|
| Réseau | 10 Mbps | 100 Mbps |
|---|
| OS | Ubuntu 20.04+ / CentOS 7+ | Ubuntu 22.04 LTS |
|---|
| Architecture | x86_64 (amd64) | x86_64 (amd64) |
|---|
Un plan VPS Hosting avec 1 vCPU et 512 MB de RAM est suffisant pour une petite communauté. Faites évoluer verticalement à mesure que votre nombre d’utilisateurs simultanés augmente.
Ports clés à ouvrir sur votre pare-feu :
- `9987/UDP` — données vocales (par défaut)
- `10011/TCP` — ServerQuery (raw ou SSH)
- `30033/TCP` — transfert de fichiers
Étape 1 : Préparer le serveur
Connectez-vous à votre VPS en tant que root :
“`bash
ssh root@your_server_ip -p your_ssh_port
“`
Mettez à jour tous les paquets système pour éliminer les vulnérabilités connues avant d’introduire de nouveaux logiciels :
“`bash
sudo apt update && sudo apt upgrade -y
“`
Installez `bzip2`, nécessaire pour extraire l’archive TeamSpeak :
“`bash
sudo apt install bzip2 -y
“`
Sur CentOS/AlmaLinux/Rocky Linux, remplacez ce qui précède par :
“`bash
sudo dnf update -y && sudo dnf install bzip2 wget -y
“`
Étape 2 : Créer un utilisateur système dédié
Exécuter TeamSpeak en tant que root est une erreur de sécurité critique. Si le processus est exploité, un attaquant obtient immédiatement un accès root à l’ensemble de l’hôte. Isolez-le toujours sous un utilisateur non privilégié :
“`bash
sudo adduser teamspeak
“`
Suivez les invites pour définir un mot de passe. Cet utilisateur sera propriétaire de tous les binaires TeamSpeak, des fichiers de configuration et de la base de données SQLite.
> Note de sécurité : Pour les environnements renforcés, envisagez de créer l’utilisateur avec `–disabled-login` et d’utiliser `sudo -u teamspeak` pour toutes les opérations, empêchant ainsi tout accès au shell interactif.
Étape 3 : Télécharger et extraire le binaire du serveur TeamSpeak
Basculez vers le contexte utilisateur `teamspeak` :
“`bash
sudo su – teamspeak
“`
Téléchargez la dernière version stable de TeamSpeak 3 Server pour Linux 64 bits. Vérifiez toujours le numéro de version actuel sur la page de téléchargements officielle de TeamSpeak avant d’exécuter cette commande, car la chaîne de version change à chaque publication :
“`bash
wget https://files.teamspeak-services.com/releases/server/3.13.7/teamspeak3-server_linux_amd64-3.13.7.tar.bz2 -O teamspeak-server.tar.bz2
“`
Extrayez l’archive en supprimant le répertoire de niveau supérieur afin que tous les fichiers se retrouvent directement dans le répertoire de travail actuel (`/home/teamspeak/`) :
“`bash
tar xvfj teamspeak-server.tar.bz2 –strip-components 1
“`
Acceptez le contrat de licence TeamSpeak en créant le fichier marqueur requis. Le daemon serveur refusera de démarrer sans lui :
“`bash
touch ~/.ts3server_license_accepted
“`
Revenez à l’utilisateur root :
“`bash
exit
“`
Étape 4 : Créer une unité de service systemd
La gestion de TeamSpeak via systemd garantit que le processus redémarre automatiquement après un redémarrage ou un crash, s’intègre avec `journald` pour la journalisation centralisée, et respecte l’ordre de dépendances approprié lors du démarrage.
Ouvrez un nouveau fichier d’unité de service :
“`bash
nano /etc/systemd/system/teamspeak.service
“`
Collez la configuration d’unité complète suivante :
“`ini
[Unit]
Description=TeamSpeak 3 Server
After=network.target
[Service]
WorkingDirectory=/home/teamspeak/
User=teamspeak
Group=teamspeak
Type=forking
ExecStart=/home/teamspeak/ts3server_startscript.sh start inifile=ts3server.ini
ExecStop=/home/teamspeak/ts3server_startscript.sh stop
PIDFile=/home/teamspeak/ts3server.pid
Restart=on-failure
RestartSec=10s
[Install]
WantedBy=multi-user.target
“`
Explication des directives clés :
- `After=network.target` — empêche le démarrage avant que la pile réseau soit prête, évitant les échecs de liaison sur `9987/UDP`
- `Type=forking` — correct pour le script de démarrage TeamSpeak, qui crée un processus en arrière-plan
- `Restart=on-failure` — récupère automatiquement après des crashs inattendus sans intervention manuelle
- `RestartSec=10s` — ajoute un bref délai avant les tentatives de redémarrage pour éviter les boucles de crash rapides
Enregistrez le fichier (`Ctrl+S`, puis `Ctrl+X`), puis rechargez le daemon systemd pour enregistrer la nouvelle unité :
“`bash
systemctl daemon-reload
“`
Activez le service pour qu’il démarre au démarrage et lancez-le immédiatement :
“`bash
systemctl enable –now teamspeak
“`
Vérifiez que le service est actif et en cours d’exécution :
“`bash
systemctl status teamspeak
“`
La sortie attendue inclut `Active: active (running)` avec un PID valide. Si le statut affiche `failed`, inspectez immédiatement les journaux :
“`bash
journalctl -u teamspeak -n 50 –no-pager
“`
Étape 5 : Récupérer la clé de privilège administrateur (token)
Lorsque TeamSpeak Server démarre pour la première fois, il génère une clé de privilège (token) dans ses fichiers journaux. Ce token accorde au premier client connecté les droits d’administrateur complets du serveur. Vous devez le récupérer avant que quiconque d’autre ne se connecte.
“`bash
grep -i token /home/teamspeak/logs/*
“`
La sortie contiendra une ligne similaire à :
“`
token=q1a2b3c4d5e6f7g8h9i0jKLMNOPQRSTUVWXYZ
“`
Copiez ce token. Lorsque vous vous connectez via le client TeamSpeak pour la première fois, vous serez invité à le saisir. Cela élève votre client au groupe de serveurs `Server Admin`.
> Critique : Ce token est à usage unique et est consommé lors de la première utilisation. Si vous le perdez avant de l’utiliser, vous devez définir un nouveau mot de passe administrateur manuellement (voir Étape 6). Conservez-le en lieu sûr.
Étape 6 : Définir ou réinitialiser le mot de passe ServerAdmin
Le compte `serveradmin` est utilisé pour l’accès ServerQuery — une interface TCP brute ou SSH qui permet l’administration scriptée, l’intégration de bots et des outils de gestion à distance comme YaTQA ou ts3admin.
Pour définir ou réinitialiser ce mot de passe, vous devez arrêter temporairement le service, démarrer le binaire serveur directement avec l’argument de mot de passe, puis l’arrêter à nouveau et redémarrer via systemd :
“`bash
systemctl stop teamspeak.service
“`
Basculez vers l’utilisateur teamspeak et définissez le mot de passe :
“`bash
su – teamspeak
./ts3server_startscript.sh start serveradmin_password=YourStrongPassword
“`
Attendez que le serveur s’initialise complètement (surveillez `TeamSpeak 3 Server started successfully` dans la sortie), puis arrêtez-le :
“`bash
./ts3server_startscript.sh stop
exit
“`
Redémarrez le service géré :
“`bash
systemctl start teamspeak.service
“`
Exigences relatives au mot de passe : Utilisez un minimum de 16 caractères avec des majuscules et minuscules mélangées, des chiffres et des symboles. L’interface ServerQuery est exposée sur le port TCP `10011` et est une cible courante d’attaques par force brute si elle est laissée avec un mot de passe faible.
Étape 7 : Configurer le pare-feu
Si `ufw` est actif sur votre serveur, ouvrez les ports requis :
“`bash
ufw allow 9987/udp comment "TeamSpeak voice"
ufw allow 10011/tcp comment "TeamSpeak ServerQuery"
ufw allow 30033/tcp comment "TeamSpeak file transfer"
ufw reload
“`
Pour `firewalld` (CentOS/AlmaLinux) :
“`bash
firewall-cmd –permanent –add-port=9987/udp
firewall-cmd –permanent –add-port=10011/tcp
firewall-cmd –permanent –add-port=30033/tcp
firewall-cmd –reload
“`
> Conseil de renforcement : Si vous n’avez pas besoin d’un accès ServerQuery public, restreignez le port `10011` à des IP de gestion spécifiques uniquement. L’exposer publiquement est inutile pour le fonctionnement standard d’un serveur vocal.
Étape 8 : Se connecter depuis le client TeamSpeak
- Téléchargez et installez le client TeamSpeak 3 pour votre OS de bureau (Windows, macOS, Linux).
- Ouvrez le client et naviguez vers Connexions > Se connecter.
- Entrez l’adresse IP de votre VPS comme Surnom ou adresse du serveur.
- Laissez le port sur `9987` sauf si vous l’avez modifié dans `ts3server.ini`.
- Lors de la première connexion, le client vous invitera à entrer la clé de privilège (token). Collez le token récupéré à l’Étape 5.
- Votre client est maintenant l’administrateur du serveur.
Optionnel : Utiliser le script d’installation automatisé
Pour un déploiement rapide, AlexHost fournit un script d’installation automatisé qui gère l’installation des dépendances, la création d’utilisateurs, le téléchargement des binaires et la configuration du service en une seule exécution :
“`bash
ssh root@your_server_ip -p your_ssh_port
wget https://bill.alexhost.com/downloads/teamspeak_install.sh
chmod +x teamspeak_install.sh
./teamspeak_install.sh
“`
Examinez le contenu du script avant de l’exécuter pour comprendre les modifications qu’il apporte à votre système. Les scripts automatisés sont pratiques mais ne doivent jamais être exécutés aveuglément sur une infrastructure de production.
TeamSpeak vs. Alternatives : Plateformes vocales auto-hébergées
| Fonctionnalité | TeamSpeak 3 | Mumble | Discord (cloud) |
|---|
| — | — | — | — |
|---|
| Auto-hébergé | Oui | Oui | Non |
|---|
| Utilisation RAM (inactif) | ~30 MB | ~15 MB | N/A |
|---|
| Latence | Très faible | Très faible | Faible–Moyenne |
|---|
| Chiffrement | TLS (signalisation) | DTLS + SRTP | Propriétaire |
|---|
| Système de permissions | ACL avancées | Modéré | Basé sur les rôles |
|---|
| Disponibilité du client | Win/Mac/Linux/Mobile | Win/Mac/Linux | Win/Mac/Linux/Mobile |
|---|
| Licence (serveur) | Gratuit jusqu’à 32 slots | Open source | N/A |
|---|
| Codec | Opus | Opus/CELT | Opus |
|---|
| API ServerQuery | Oui (TCP/SSH) | Non | REST API uniquement |
|---|
L’API ServerQuery de TeamSpeak est un différenciateur significatif pour les organisations qui ont besoin d’une gestion programmatique du serveur — création automatisée de canaux, intégration de bots ou modifications de permissions déclenchées par CI/CD.
Problèmes d’installation courants et solutions
Le serveur ne démarre pas — « Could not bind to port 9987 »
Un autre processus utilise le port UDP 9987, ou le service a démarré avant que le réseau soit prêt. Vérifiez avec `ss -ulnp | grep 9987` et assurez-vous que la directive `After=network.target` est présente dans votre unité de service.
Erreur de fichier de licence introuvable
Le fichier `.ts3server_license_accepted` doit exister dans le répertoire personnel de l’utilisateur exécutant le processus (`/home/teamspeak/`). Confirmez avec `ls -la /home/teamspeak/.ts3server_license_accepted`.
Token introuvable dans les journaux
Le répertoire des journaux est par défaut `/home/teamspeak/logs/`. Si vous avez extrait l’archive dans un chemin différent, ajustez la commande grep en conséquence. Les tokens n’apparaissent dans le journal que lors du tout premier démarrage — si la base de données existe déjà, aucun nouveau token n’est généré.
Connexion ServerQuery refusée
Confirmez que le port `10011/TCP` est ouvert dans votre pare-feu et que le processus serveur est en cours d’exécution. Testez localement avec `telnet 127.0.0.1 10011` — une connexion réussie retourne une bannière `TS3`.
Utilisation élevée du CPU avec de nombreux utilisateurs
TeamSpeak est mono-thread pour le mixage vocal. Si vous dépassez ~200 utilisateurs simultanés sur une seule instance de serveur virtuel, envisagez de déployer plusieurs serveurs virtuels ou de passer à un plan Serveurs Dédiés pour une vitesse d’horloge CPU garantie et sans contention de voisinage bruyant.
Sécuriser votre déploiement TeamSpeak
Au-delà de l’isolation des utilisateurs et des règles de pare-feu couvertes ci-dessus, appliquez ces mesures de renforcement :
- Changez les ports par défaut dans `ts3server.ini` pour réduire l’exposition aux scans automatisés. Mettez à jour les règles de pare-feu en conséquence.
- Restreignez ServerQuery (`10011/TCP`) aux IP de gestion en utilisant le filtrage par source du pare-feu.
- Activez l’authentification par clé SSH sur votre VPS et désactivez la connexion root par mot de passe. Consultez le panneau de contrôle de votre VPS pour les options de gestion des clés SSH.
- Surveillez les journaux via `journalctl -u teamspeak -f` pour détecter des schémas de connexion inhabituels ou des échecs répétés d’authentification ServerQuery.
- Sauvegardes régulières de `/home/teamspeak/ts3server.sqlitedb` — ce fichier contient toutes les configurations de canaux, les groupes de serveurs, les permissions et les identités des clients. Le perdre signifie reconstruire entièrement la structure de votre serveur depuis zéro.
- Maintenez le binaire à jour. TeamSpeak publie périodiquement des correctifs de sécurité. Abonnez-vous à leurs annonces de publication et répétez les Étapes 3–4 avec la nouvelle archive de version lorsque des mises à jour sont disponibles.
Si vous gérez plusieurs services sur le même VPS, envisagez d’associer votre instance TeamSpeak à une solution Panneaux de contrôle VPS pour simplifier la gestion des services, la surveillance et les tâches planifiées depuis une interface unifiée.
Matrice de décision : Cette configuration est-elle adaptée à vos besoins ?
| Scénario | Action recommandée |
|---|
| — | — |
|---|
| Moins de 32 utilisateurs simultanés, communauté de jeux | VPS d’entrée de gamme, licence gratuite TeamSpeak |
|---|
| 32–512 utilisateurs simultanés, organisation | Mise à niveau de licence TeamSpeak + VPS 2–4 vCPU |
|---|
| Isolation matérielle complète requise, 500+ utilisateurs | Serveur dédié, plusieurs instances de serveurs virtuels |
|---|
| Panneau géré + TeamSpeak souhaité | VPS avec cPanel ou DirectAdmin |
|---|
| Routage EU/US à faible latence requis | Choisissez l’emplacement du datacenter VPS le plus proche des utilisateurs |
|---|
| Présence web complémentaire nécessaire | Ajoutez un [Hébergement Web Partagé](https://alexhost.com/fr/shared-hosting/) ou un sous-domaine sur le même VPS |
|---|
| Domaine personnalisé requis pour l’adresse du serveur | [Enregistrement de domaine](https://alexhost.com/fr/domains/) + enregistrement DNS A pointant vers l’IP du VPS |
|---|
Points techniques clés à retenir
- Exécutez toujours TeamSpeak sous un utilisateur dédié non-root. C’est non négociable pour tout service exposé sur Internet.
- Le fichier marqueur `ts3server_license_accepted` doit exister avant que le daemon ne démarre — un point d’échec courant au premier démarrage.
- Utilisez `Type=forking` dans l’unité systemd, pas `Type=simple`. Le script de démarrage crée un processus en arrière-plan ; `simple` amènera systemd à mal suivre le PID.
- Récupérez le token de clé de privilège dans les journaux immédiatement après le premier démarrage. Il est consommé à la première utilisation et ne peut pas être régénéré sans une procédure manuelle de réinitialisation du mot de passe.
- Le port `9987/UDP` est le seul port requis pour le fonctionnement vocal de base. `10011/TCP` et `30033/TCP` sont optionnels selon votre cas d’utilisation.
- Sauvegardez `ts3server.sqlitedb` selon un calendrier. Toute la configuration du serveur réside dans ce fichier unique.
- Pour les déploiements en production, restreignez ServerQuery à localhost ou à un VLAN de gestion — ne l’exposez jamais publiquement sans liste d’autorisation d’IP.
—
Foire aux questions
Quel est le nombre maximum d’utilisateurs sur une licence TeamSpeak Server gratuite ?
La licence gratuite à but non lucratif prend en charge jusqu’à 32 slots simultanés. Pour les déploiements plus importants, TeamSpeak propose des licences annuelles pour 64, 128, 256 ou 512 slots, ainsi qu’une « Licence d’activation » à slots illimités pour les organisations éligibles.
Puis-je exécuter TeamSpeak Server sur un VPS avec 512 MB de RAM ?
Oui. Le daemon TeamSpeak 3 Server consomme environ 25 à 40 MB de RAM au repos et évolue modestement avec les utilisateurs simultanés. Un VPS de 512 MB est suffisant pour les communautés de moins de 50 utilisateurs simultanés, avec une marge confortable pour l’OS et les processus système.
Comment mettre à jour TeamSpeak Server sans perdre ma configuration ?
Arrêtez le service avec `systemctl stop teamspeak`, téléchargez la nouvelle archive de version en tant qu’utilisateur `teamspeak`, extrayez-la avec `–strip-components 1` dans le même répertoire (en écrasant uniquement les binaires), puis redémarrez le service. La base de données `ts3server.sqlitedb` et le fichier de configuration `ts3server.ini` ne sont pas écrasés par ce processus.
Pourquoi mon serveur TeamSpeak n’est-il pas visible dans la liste des serveurs publics ?
Par défaut, les serveurs TeamSpeak ne s’enregistrent pas dans la liste des serveurs publics. Pour activer le référencement, définissez `machine_id=` et configurez `serverip` dans `ts3server.ini`, puis activez l’option de référencement public via ServerQuery ou le panneau d’administration du serveur du client. Assurez-vous que le port UDP `9987` est accessible depuis Internet.
Le trafic TeamSpeak est-il chiffré par défaut ?
Le trafic de signalisation (établissement de connexion, chat, permissions) est chiffré via TLS. Les données vocales transmises via UDP ne sont pas chiffrées par défaut dans TeamSpeak 3. Le chiffrement vocal peut être activé par canal ou à l’échelle du serveur via les paramètres du serveur, au prix d’une légère augmentation de l’utilisation du CPU. TeamSpeak 5 (actuellement en développement) utilise le chiffrement de bout en bout par défaut.
