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.