Installer un serveur TeamSpeak 3 sous Debian Linux

Dans ce ce billet, je vous expliquerai la démarche pour installer un serveur TeamSpeak3 complet :

  • Le server TeamSpeak de base
  • Obtenir une licence NPL pour augmenter le nombre de slots à 512
  • Le script de démarrage automatique
  • L'interface WebAdmin
  • Un script "OhShit" de récupération de mot de passe

Installation de TeamSpeak3

Récupération du programme initial

Il est très fortement conseillé d'avoir un serveur LAMP installé sur votre machine. Voir ce billet pour plus d'informations. En effet, cela est nécessaire pour l'interface WebAdmin, et une base de données est indispensable pour permettre la bonne exécution de TeamSpeak3.

Tout d'abord, commencez par créer un répertoire qui hébergera votre serveur TeamSpeak3 :

root@~> mkdir -p /srv/teamspeak3/

Téléchargez ensuite les dernières sources de TeamSpeak3 sur le site officiel en choisissant la bonne version (32 ou 64 bits). Pour connaître quelle version choisir facile :

root@~> uname -m

Si la valeur renvoyée est du style x86_64 alors prenez 64bits, sinon choisissez 32bits. Pour ma part, c'est du 64bits, et la version actuelle est la 3.0.0-beta30. Adaptez les commandes ci-dessous en fonction de la version la plus récente.

On rapatrie donc les sources du logiciel sur le serveur :

root@~> wget http://ftp.4players.de/pub/hosted/ts3/releases/beta-30/teamspeak3-server_linux-amd64-3.0.0-beta30.tar.gz

On déploie les sources dans notre répertoire /srv/teamspeak3 :

root@~> tar -zxvf teamspeak3-server_linux-amd64-3.0.0-beta30.tar.gz
root@~> mv teamspeak3-server_linux-amd64/* /srv/teamspeak3

Voila, votre serveur est quasi-prêt pour être lancé

Obtenir une licence NPL

Obtenir une licence NPL (Non Profit License) permet d'obtenir une extension du nombre de slots total à 512 et de serveurs virtuels TeamSpeak3 à 10.

Pour l'obtenir, allez sur http://npl.teamspeakusa.com/ts3npl.php et cliquez sur le lien "Continue to register for an NPL...".

Une fois toutes vos informations saisies, vous recevrez par email un fichier licensekey.dat que vous devrez envoyer sur votre serveur TeamSpeak3, et le déplacer dans /srv/teamspeak3.

C'est tout :)

Configuration

TeamSpeak3 gère ses utilisateurs et autres informations dans un serveur MySQL. Il faut donc créer une base de données et rajouter un utilisateur qui aura les tous les droits dessus :

root@~> mysql
mysql: CREATE DATABASE ts3;
mysql: GRANT ALL on ts3.* to ts3@localhost IDENTIFIED BY 'un_mot_de_passe';
mysql: FLUSH PRIVILEGES;
mysql: \q

Il est maintenant temps de configurer le serveur en lui-même. Pour cela, faire comme suit :

root@~> cd /srv/teamspeak3/
root@~> echo "[config]" > ts3db_mysql.ini
root@~> echo "host=localhost" >> ts3db_mysql.ini
root@~> echo "port=3306" >> ts3db_mysql.ini
root@~> echo "username=ts3" >> ts3db_mysql.ini
root@~> echo "password=token=un_mot_de_passe" >> ts3db_mysql.ini
root@~> echo "database=ts3" >> ts3db_mysql.ini
root@~> echo "socket=" >> ts3db_mysql.ini

Ensuite, il faut modifier un autre fichier de configuration :

root@~> cd /srv/teamspeak3/
root@~> echo "machine_id=" > ts3server.ini
root@~> echo "default_voice_port=9987" >> ts3server.ini
root@~> echo "voice_ip=0.0.0.0" >> ts3server.ini
root@~> echo "liscensepath=" >> ts3server.ini
root@~> echo "filetransfer_port=30033" >> ts3server.ini
root@~> echo "filetransfer_ip=0.0.0.0" >> ts3server.ini
root@~> echo "query_port=10011" >> ts3server.ini
root@~> echo "query_ip=0.0.0.0" >> ts3server.ini
root@~> echo "dbplugin=ts3db_mysql" >> ts3server.ini
root@~> echo "dbpluginparameter=ts3db_mysql.ini" >> ts3server.ini
root@~> echo "dbsqlpath=sql/" >> ts3server.ini
root@~> echo "dbsqlcreatepath=create_mysql/" >> ts3server.ini
root@~> echo "logpath=logs" >> ts3server.ini
root@~> echo "logquerycommands=1" >> ts3server.ini

Firewall

Si vous utilisez un firewall pensez bien à ouvrir les ports suivants :

  • 9987 en UDP pour la connexion au serveur (port par défaut)
  • 10011 en TCP pour le ServerQuery (optionnel)
  • 30033 en TCP pour le FileTransfert (optionnel mais recommandé)

Pensez à ouvrir les ports de connexion au serveur en UDP en fonction des ports que vous leur affecterez.

Démarrer votre serveur

Lors du premier démarrage de votre serveur, 2 informations sont à noter absolument sous peine de ne pas pouvoir avoir les droits admin

En premier lieu, créez un utilisateur spécifique pour le lancement de TeamSpeak3, car, comme dit par Napalms, faire tourner un service tel que TeamSpeak3 en root peut ouvrir des failles de sécurité évidentes.

root@~> /usr/sbin/adduser --gecos "TeamSpeak3 launcher" --disabled-password "tslauncher" --shell /bin/bash --force-badname --home "/srv/teamspeak3"
root@~> chown tslauncher /srv/teamspeak3 -R

Nous allons procéder au premier démarrage de notre TeamSpeak3 :

root@~> cd /srv/teamspeak3/
root@~> sudo -u tslauncher ./ts3server_minimal_runscript.sh init=ts3server.ini

Si la commande vous renvoie une erreur, il est possible que vous ayez pris une version différente de la mienne, et, dans certains cas, les paramètres de lancement changent... Tentez donc de relancer avec la commande :

root@~> cd /srv/teamspeak3/
root@~> sudo -u tslauncher ./ts3server_minimal_runscript.sh inifile=ts3server.ini

Si tout se déroule comme il faut, le serveur démarre, et vous verrez 2 informations importantes parmi le fouillis de log :

Ces 2 informations doivent être notées pour avoir les droits admin

Une fois fait, tentez une connexion "de base" avec un client sur votre serveur qui tournera sur le port 9987.

Si vous vous connectez, vous êtes bien parti ;)

Créer un script de démarrage automatique

Par défaut, le serveur TeamSpeak3 ne se lance pas au démarrage de la machine... Pour cela, il faut faire la manipulation suivante.

Créez ensuite un lien symbolique de ce fichier dans /etc/init.d :

root@~> cd /etc/init.d/
root@ /etc/init.d/ > vi teamspeak3

Mettez-y le contenu suivant :

  1. #!/bin/bash
  2.  
  3. TS_DIR="/srv/teamspeak3"
  4. TS_USER="tslauncher"
  5. RUN_SCRIPT="ts3server_minimal_runscript.sh"
  6. INI_FILE="ts3server.ini"
  7.  
  8. start_ts() {
  9. echo "Lancement du server TeamSpeak"
  10. sudo -u $TS_USER $TS_DIR/$RUN_SCRIPT init=$TS_DIR/$INI_FILE > /dev/null &
  11. }
  12.  
  13. stop_ts() {
  14. echo "Arrêt du serveur TeamSpeak"
  15. killall -u $TS_USER > /dev/null
  16. }
  17.  
  18. case "$1" in
  19. start)
  20. start_ts
  21. ;;
  22. stop)
  23. stop_ts
  24. ;;
  25. restart)
  26. stop_ts
  27. sleep 2
  28. start_ts
  29. ;;
  30. *)
  31. echo "Usage du script : $0 {start|stop|restart}"
  32. ;;
  33. esac

Enfin, enregistrez-le à la liste des scripts lancés au démarrage :

root@ /etc/init.d/> chmod +x teamspeak3
root@ /etc/init.d/> update-rc.d teamspeak3 start 99 2 .

Et voilà, votre TeamSpeak3 démarrera en même temps que votre serveur

Interface WebAdmin

Télechargez l'interface WebAdmin sur ce site et déployez-le dans le dossier /var/www/ dans un sous-dossier nommé par exemple ts3admin.

Si vous ne pouvez pas lancer de navigateur, procédez comme suit :

root@~> wget -O ts3admin.zip "http://addons.teamspeak.com/index.php?option=com_mtree&task=att_download&link_id=53&cf_id=24"
root@~> mv ts3admin /var/www/
root@~> chmod go+rX /var/www/ts3admin/ -R
root@~> chmod go+w /var/www/ts3admin/templates_c/ -R

Vous n'avez plus qu'à vous connecter au site : http://votre.serveur.tld/ts3admin/

Voilà :)

Script "OhShit" de récupération de mot de passe superadmin

Enfin, un petit script de récupération du mot de passe superadmin, si vous aussi comme moi vous avez fait la bêtise de ne pas le noter :)

  1. #!/bin/bash
  2.  
  3. /usr/bin/clear
  4.  
  5. echo "This script replaces the serveradmin password to reenable access
  6. to your server. Use this script at your own risk.
  7.  
  8. Feel free to improve or extend this script. Share your modifications
  9. on teamspeak forums (http://forum.teamspeak.com). Thank you.
  10.  
  11. Press any key to continue or ctrl+c to cancel..."
  12.  
  13. read toto
  14.  
  15. echo "Current serveradmin and crypted password:"
  16.  
  17. sqlite3 ts3server.sqlitedb <<SQL_1
  18. .header ON
  19. SELECT client_login_name, client_login_password
  20. FROM clients
  21. WHERE client_id='1';
  22. SQL_1
  23.  
  24. sqlite3 ts3server.sqlitedb <<SQL_2
  25. UPDATE clients
  26. SET client_login_password = "r5oBZ3Z8s8IqjiEJ/k3o9dkSUgU="
  27. WHERE client_id = "1";
  28. SQL_2
  29.  
  30. echo "updated entry:"
  31.  
  32. sqlite3 ts3server.sqlitedb <<SQL_3
  33. SELECT client_login_name, client_login_password
  34. FROM clients
  35. WHERE client_id='1';
  36. SQL_3
  37.  
  38. echo "Server Query Admin Acccount replaced
  39.  
  40. Password: ykN+zfqD
  41.  
  42. NOTE: This password has been copied from another database and is
  43. not safe. Update it directly after logging into your query
  44. console. Use the clientsetserverquerylogin command.
  45. You can enter help clientsetserverquerylogin for details.
  46. "

Il suffit de le rendre exécutable et de le lancer pour qu'il vous donne un nouveau password A CHANGER DANS LES PLUS BREFS DELAIS

Remerciements

Je tiens à remercier l'auteur du script de récupération de mot de passe dont j'ai oublié le site et ne peut donc pas faire de lien vers celui-ci.

S'il se manifeste, ce serait avec joie que je le citerai, voire même mettrait un lien direct vers son script plutôt que de l'afficher ici.

Commentaires

1. Le jeudi, décembre 30 2010, 22:17 par Naplams

Attention à ne pas lancer sont serveur TS en root, créer un autre utilisateur pour démarré le serveur sans quoi votre serveur est exposé a une grosse faille de sécurité

2. Le vendredi, décembre 31 2010, 00:47 par Sebastien PALMA

Merci pour cette précision !

3. Le mardi, mars 8 2011, 10:18 par tekan

Bonjour!

J'ai suivis le tuto a la ligne mais j'ai l'impression que le script ne fonctionne pas. Mon serveur ne se lance pas automatiquement au reboot de mon dédié...

Une idée?

4. Le mardi, mars 8 2011, 17:08 par Sebastien PALMA

Bonjour!

En lancant le script à la main une fois démarré est-ce que TS se lance ?

/etc/init.d/teamspeak3 start

Si oui, je pense qu'il y a du avoir un problème avec la commande

update-rc.d teamspeak3 start 99 2 .

Cordialement

5. Le vendredi, mai 6 2011, 16:02 par Senka

Pour une installation sur debian, j'ai du modifier légèrement le script :

#!/bin/bash

TS_DIR="/home/teamspeak3"
TS_USER="teamspeak"
RUN_SCRIPT="ts3server_minimal_runscript.sh"
INI_FILE="ts3server.ini"

start_ts() {
echo "Lancement du server TeamSpeak"
su $TS_USER $TS_DIR/$RUN_SCRIPT init=$TS_DIR/$INI_FILE > /dev/null &
}

stop_ts() {
echo "Arrêt du serveur TeamSpeak"
skill -KILL -u $TS_USER > /dev/null
}

case "$1" in
start)
start_ts
;;
stop)
stop_ts
;;
restart)
stop_ts
sleep 2
start_ts
;;
*)
echo "Usage du script : $0 {start|stop|restart}"
;;
esac

Attention à vérifier vos option au début.
Pour ma pars, ca fonctionne nikel !

6. Le jeudi, mai 19 2011, 17:29 par anto

bonjour , voila je suis sous debian via ovh , j'essaye de faire la partie du script auto avec Vi et c'est Vi que je comprend pas comment on fais ? c'est via ssh ? et pareil pour
(Télecharger l'interface WebAdmin sur ce site et déployez-le dans le dossier /var/www/ dans un sous-dossier nommé par exemple ts3admin.)

je n'ai que var/ mais pas www aidez moi svp merci beaucoup a vous

7. Le vendredi, décembre 23 2011, 19:06 par Error69

Franchement ton tutoriel est génial !
Il ma grandement aidée pendant plus de 6 mois.
J'aimerais savoir si il était possible de te faire un don ?
Car c'est du beau boulot clap clap!
Cordialement

8. Le lundi, mars 5 2012, 22:26 par Mr.Geek

Bonjour,

Merci pour le tuto super pratique.
Mais j'ai eu quelques problèmes à utilise le fichier le conf car le mot 'init' n'était pas correct chez moi.

J'ai du utiliser 'inifile' au lieu de init.

Cordialement.

9. Le mardi, mars 20 2012, 11:17 par Joyc

Merci pour ce super tuto !
Il est très clair, cela m'a permis de m'amuser avec mon serveur linux.

Encore merci !

10. Le mardi, mars 27 2012, 00:42 par Raptor

Bonsoir et merci pour votre Tutoriel ! Je dois dire qu'il est très clair. Cependant je rencontre un souci lors de l'installation du serveur TS.

En effet j'ai loué un serveur chez OVH pour créer un serveur TS. Tous ce passe bien lorsque j'arrive au passage de démarrer le script ts3server_minimal_runscript.sh où la je recontre une erreur comme on peut le voir sur ce screen : http://img546.imageshack.us/img546/...

J'ai fouiné un peu sur le net mais rien ne m'a vraiment aidé, même si je suppose un problème avec la base de donnée.

Merci d'avance pour votre aide !

Cordialement, Raptor.

11. Le mardi, avril 17 2012, 13:30 par ChrisPhoenix

Salut,

Je suis bloqué à partir de cette commande :
root@~> sudo -u tslauncher ./ts3server_minimal_runscript.sh init=ts3server.ini

Ça me met :
sudo: ./ts3server_minimal_runscript.sh: command not found

Une idée ? Merci.

12. Le mardi, mai 1 2012, 13:10 par AngA

@ChrisPhoenix

apt-get sudo

Avant ;)

13. Le mercredi, mai 9 2012, 11:55 par Sebastien PALMA

@Raptor

J'ai rajouté un paragraphe sur la manière d'obtenir une licence NPL qui peut déjà expliquer les soucis de licence.

Ensuite, essaie de lancer en remplaçant "init=ts3server.ini" par "inifile=ts3server.ini"

Visiblement les paramètres sont pas les mêmes pour tout le monde.

Cordialement.

14. Le dimanche, septembre 2 2012, 22:00 par MoMo

je vais le autodeban ts3 plz

15. Le lundi, octobre 8 2012, 11:40 par ks13

Bonjour, ton tutoriel est super. J'ai réussi a faire marcher le serveur sans problème. Le seul souci que j'ai est qu'au moment d'ajouter le démarrage automatique insserv me renvoie une erreur :

insserv: warning: script 'K01teamspeak3' missing LSB tags and overrides
insserv: warning: script 'teamspeak3' missing LSB tags and overrides

La seule différence par rapport a ton script est le fait que mon serveur est dans le dossier /home/ts3 et le user est ts3. J'ai change les valeurs dans le script pour que ca pointe sur le bon dossier et user.

16. Le samedi, janvier 19 2013, 21:38 par Crystal

Bonjour, je voulais savoir ou l'on peu configurer le fait de mètre un mot de passe pour accéder au serveur car la tout le monde peu ce connecter

Merci de votre aide =)

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.

La discussion continue ailleurs

URL de rétrolien : https://blog.cp2i.com/?trackback/14

Fil des commentaires de ce billet