15%

Économisez 15% sur tous les services d'hébergement

Testez vos compétences et obtenez Réduction sur tout plan d'hébergement

Utilisez le code :

Skills
Commencer
09.10.2024

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 :

RessourceMinimumRecommandé (100+ utilisateurs)
Cœurs CPU1 vCPU2 vCPU
RAM512 MB1 GB
Espace disque1 GB5 GB (logs + DB)
Réseau10 Mbps100 Mbps
OSUbuntu 20.04+ / CentOS 7+Ubuntu 22.04 LTS
Architecturex86_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

  1. Téléchargez et installez le client TeamSpeak 3 pour votre OS de bureau (Windows, macOS, Linux).
  2. Ouvrez le client et naviguez vers Connexions > Se connecter.
  3. Entrez l’adresse IP de votre VPS comme Surnom ou adresse du serveur.
  4. Laissez le port sur `9987` sauf si vous l’avez modifié dans `ts3server.ini`.
  5. 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.
  6. 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 3MumbleDiscord (cloud)
Auto-hébergéOuiOuiNon
Utilisation RAM (inactif)~30 MB~15 MBN/A
LatenceTrès faibleTrès faibleFaible–Moyenne
ChiffrementTLS (signalisation)DTLS + SRTPPropriétaire
Système de permissionsACL avancéesModéréBasé sur les rôles
Disponibilité du clientWin/Mac/Linux/MobileWin/Mac/LinuxWin/Mac/Linux/Mobile
Licence (serveur)Gratuit jusqu’à 32 slotsOpen sourceN/A
CodecOpusOpus/CELTOpus
API ServerQueryOui (TCP/SSH)NonREST 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énarioAction recommandée
Moins de 32 utilisateurs simultanés, communauté de jeuxVPS d’entrée de gamme, licence gratuite TeamSpeak
32–512 utilisateurs simultanés, organisationMise à niveau de licence TeamSpeak + VPS 2–4 vCPU
Isolation matérielle complète requise, 500+ utilisateursServeur dédié, plusieurs instances de serveurs virtuels
Panneau géré + TeamSpeak souhaitéVPS avec cPanel ou DirectAdmin
Routage EU/US à faible latence requisChoisissez l’emplacement du datacenter VPS le plus proche des utilisateurs
Présence web complémentaire nécessaireAjoutez 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.

15%

Économisez 15% sur tous les services d'hébergement

Testez vos compétences et obtenez Réduction sur tout plan d'hébergement

Utilisez le code :

Skills
Commencer