TeamSpeak 3 Server

Prérequis

Il vous faut un serveur de base de données disponible.

Installation

Pour effectuer l'installation de notre serveur TeamSpeak 3, nous commençons par créer un utilisateur dédié :

useradd -d /opt/teamspeak -m teamspeak

Nous nous rendrons ensuite sur le site de TS (http://teamspeak.com/downloads#server) pour télécharger la dernière version du serveur (en version 3.0.12.4 actuellement). Une fois télécharger nous extrayons l'archive.

cd /opt/teamspeak
tar -xf teamspeak3-server_linux_amd64-3.0.12.4.tar.bz2
mv teamspeak3-server_linux_amd64/* ./
rm teamspeak3-server_linux_amd64*

Pour palier à un problème de librairie sur le serveur, nous créons le lien symbolique suivant :

ln -s /opt/teamspeak/redist/libmariadb.so.2 /opt/teamspeak/

Nous exécutons également la commande qui suit pour vérifier que le reste des librairies sont bien installées :

ldd /opt/teamspeak3-server/libts3db_mariadb.so

Sur certains systèmes, le lien symbolique ne suffit pas et la librairie libmariadb.so.2 apparait toujours comme non trouvée.

Dans ce cas, nous utiliserons cette commande permettant d'effectuer l'installation de la dite librairie :

apt-get install libmariadb2

Après ré-exécution de la commande ldd précédente, toutes les librairies sont maintenant trouvées.

Maintenant que TeamSpeak 3 Server est installé, il nous reste à le configurer.

Configuration

Base de données

Notre serveur TeamSpeak utilisera une base de données pour stocker l'ensemble de ses informations. Nous allons donc y créer un utilisateur et une base de données de la manière suivante :

CREATE USER 'teamspeak'@'192.168.x.x' IDENTIFIED BY 'unMotDePasse';
CREATE DATABASE teamspeak;
GRANT ALL PRIVILEGES ON teamspeak.* TO 'teamspeak'@'192.168.x.x';
FLUSH PRIVILEGES;

192.168.x.x correspond à l'adresse depuis laquelle l'utilisateur à le droit de se connecter. unMotDePasse doit être remplacé par un mot de passe fort.

Fichiers de configuration

Nous allons commencé par créer les deux fichiers de protection basique du service Query de TeamSpeak via les commandes

touch query_ip_blacklist
echo 127.0.0.1 > query_ip_whitelist

Puis nous créons le fichier *ts3db_mariadb.ini*

[config]
host=127.0.0.1
port=3306
username=teamspeak
password=unMotDePasse
database=teamspeak
socket=

Finalement, nous terminons avec le fichier *ts3server.ini* dans lequel nous plaçons une configuration de base

machine_id=
default_voice_port=9987
voice_ip=0.0.0.0
licensepath=
filetransfer_port=30033
filetransfer_ip=0.0.0.0
query_port=10011
query_ip=0.0.0.0
query_ip_whitelist=query_ip_whitelist
query_ip_blacklist=query_ip_blacklist
dbsqlpath=sql/
dbplugin=ts3db_mariadb
dbsqlcreatepath=create_mariadb/
dbpluginparameter=ts3db_mariadb.ini
dbconnections=10
logpath=logs
logquerycommands=0
dbclientkeepdays=30
logappend=0
query_skipbruteforcecheck=0

Pour terminer la configuration, nous nous assurons que les droits sur l'ensemble des éléments est bien associé à l'utilisateur que nous avons dédié au service :

chown teamspeak:teamspeak ./ -R

Service

Pour rendre la gestion de notre serveur plus simple, nous procédons à la création du fichier /etc/init.d/teamspeak ayant le contenu suivant :

#!/bin/sh
### BEGIN INIT INFO
# Provides: teamspeak
# Required-Start: $local_fs $network
# Required-Stop: $local_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: Teamspeak 3 Server
### END INIT INFO
USER="teamspeak"
DIR="/opt/teamspeak"
case "$1" in
start)
su $USER -c "$DIR/ts3server_startscript.sh start"
;;
stop)
su $USER -c "$DIR/ts3server_startscript.sh stop"
;;
restart)
su $USER -c "$DIR/ts3server_startscript.sh restart"
;;
status)
su $USER -c "$DIR/ts3server_startscript.sh status"
;;
*)
echo "Usage: " >&2
exit 1
;;
esac
exit 0

Script que nous penserons à rendre exécutable

chmod +x /etc/init.d/teamspeak

Pare-feu

Reste alors à ouvrir le port sur le pare-feu si cela est nécessaire.

Le port 9987 en UDP pour la voix

Le port 30033 en TCP pour les transferts de fichiers

Le port 10011 en TCP pour le service Query

iptables -A INPUT -p udp -m udp --dport 9987 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 30033 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 10011 -j ACCEPT