Installer un serveur TeamSpeak 3 sous Debian Linux
Par zokar le mardi, janvier 4 2011, 03:32 - Sysadmin - Lien permanent
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 :
- une chaine de caractères "token=une série de caractères"
- un compte superadmin avec un mot de passe associé
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 :
#!/bin/bash TS_DIR="/srv/teamspeak3" TS_USER="tslauncher" RUN_SCRIPT="ts3server_minimal_runscript.sh" INI_FILE="ts3server.ini" start_ts() { echo "Lancement du server TeamSpeak" sudo -u $TS_USER $TS_DIR/$RUN_SCRIPT init=$TS_DIR/$INI_FILE > /dev/null & } stop_ts() { echo "Arrêt du serveur TeamSpeak" killall -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
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
#!/bin/bash /usr/bin/clear echo "This script replaces the serveradmin password to reenable access to your server. Use this script at your own risk. Feel free to improve or extend this script. Share your modifications on teamspeak forums (http://forum.teamspeak.com). Thank you. Press any key to continue or ctrl+c to cancel..." read toto echo "Current serveradmin and crypted password:" sqlite3 ts3server.sqlitedb <<SQL_1 .header ON SELECT client_login_name, client_login_password FROM clients WHERE client_id='1'; SQL_1 sqlite3 ts3server.sqlitedb <<SQL_2 UPDATE clients SET client_login_password = "r5oBZ3Z8s8IqjiEJ/k3o9dkSUgU=" WHERE client_id = "1"; SQL_2 echo "updated entry:" sqlite3 ts3server.sqlitedb <<SQL_3 SELECT client_login_name, client_login_password FROM clients WHERE client_id='1'; SQL_3 echo "Server Query Admin Acccount replaced Password: ykN+zfqD NOTE: This password has been copied from another database and is not safe. Update it directly after logging into your query console. Use the clientsetserverquerylogin command. You can enter help clientsetserverquerylogin for details. "
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
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é
Merci pour cette précision !
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?
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
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 !
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
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
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.
Merci pour ce super tuto !
Il est très clair, cela m'a permis de m'amuser avec mon serveur linux.
Encore merci !
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.
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.
@ChrisPhoenix
apt-get sudo
Avant
@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.
je vais le autodeban ts3 plz
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.
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 =)