TS3-Server auf dem Uberspace

Grundlegende Informationen

Einen eigenen Teamspeak-Server einzurichten, ist in diesem Fall schwieriger als gedacht, denn es ist nicht möglich, die standartisierten Ports zu verwenden.

Es kann normalerweise auch nur ein Teamspeak-Server ohne Lizenz pro Host laufen. Bei Shared-Hosting, ist dies nicht ideal da die User, normalerweise unabhängig voneinander Anwendungen installieren können sollten.

Im folgenden werde Ich erklären, wie sich diese beiden Probleme beheben lassen.

Vorbereiten der Installation

Zunächst muss ein Ordner angelegt werden, in welchem der Teamspeak installiert werden soll.

mkdir ~/teamspeak

Nun kann der Server heruntergeladen und nach ~/teamspeak/files entpackt werden Download-Link (Direktlink verboten ...)

cd ~/teamspeak

wget <link>

tar xjvf teamspeak3-server_linux_amd64-3.0.13.6.tar.bz2

Da der enstandene Ordner, einen langen Namen hat, bennen wir ihn mit folgendem Befehl um:

mv teamspeak3-server_linux_amd64 files

Die Lizenz

Wer einen Lizenzschlüssel hat, kann die licensekey.dat nun in ~/teamspeak/files ablegen und den nachfolgenden Teil überspringen (Lizenzübersicht)

Unlizensierte Server

Das Problem liegt in den Unlizensierten Teamspeak-Servern: Es kann normalerweise nur einer pro Host laufen.

DISCLAIMER: Ich konnte nirgendwo Informationen finden, ob das nachfolgend Beschriebene verboten oder erlaubt ist. Fakt ist aber, dass IHR jeweils nur einen Virtual-Server auf diese Art betreiben solltet. Ausführen der nachfolgenden Schritte auf eigene Gefahr!

Teamspeak legt in /dev/shm eine Datei ab, welche sicherstellt, dass nur ein unlizensierter Server läuft. Wir müssen also Teamspeak im glauben lassen, dass diese Datei nicht existiert, wozu sich ein chroot eignet.

Das Problem an chroots ist, dass man root-Rechte benötigt um diese einzurichten. Es gibt jedoch eine Variante namens "fakechroot", welche wir aber zunächst toasten müssen.

toast arm fakechroot

Sollte der Download fehlschlagen, muss das Archiv manuell von GitHub heruntergeladen und in das ~/.toast/pkg/fakechroot/v2.16/archive Verzeichniss abgelegt werden. Anschließend den Befehl erneut ausführen.

Nun muss ein zweites, lokales /dev Verzeichniss erstellt werden, in welchem der Inhalt vom normalen /dev verlinkt ist. Da wir /dev/shm ersetzen müssen ist ein normaler symlink nicht genug und wir müssen die Dateien einzeln symlinken. Das nachfolgende Script, erstellt den Ordner ./dev und verlinkt den Inhalt von /dev nach ./dev und /dev/shm/${USER} nach ./dev/shm

if [ ! -e dev ]; then
    mkdir dev
fi
for file in $(find /dev -maxdepth 1 -mindepth 1); do
    if [ ! -e "."$file ]; then
        if [ $file == "/dev/shm" ]; then
            echo "creating shm subdirectory link"
            ln -sf ${file}/${USER} "."$file
        else
            echo "creating link for: "$file
            ln -sf $file "."$file
        fi
    else
        echo "file found: "$file
    fi
done

Das nachfolgende Script startet eine Bash-Konsole im chroot, in welcher die nachfolgenden Befehle (ausser den Portfreigaben), ausgeführt werden müssen. Alternativ kann "/bin/bash" auch mit anderen Befehlen ersetzt werden, um diese direkt auszuführen.

if [ ! -d /dev/shm/$USER ]; then
    mkdir /dev/shm/$USER
fi
export FAKECHROOT_EXCLUDE_PATH=/proc:/sys:/bin:/usr:/var
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/${USER}/teamspeak/files
fakechroot -e none chroot ~/teamspeak/ /bin/bash
#fakechroot -e none chroot ~/teamspeak/ <Befehl hier (für start/stop/status-Skripte)>

Das Einrichten

Zunächst müssen wir uns 3 Ports in der Firewall öffnen. (Die beiden TCP-Ports müssen nicht unbedingt geöffnet werden wenn die entsprechenden Dienste (Query und FileTransfer) nicht öffentlich erreichbar sein sollen.)

uberspace-add-port -p udp -f

uberspace-add-port -p tcp -f

uberspace-add-port -p tcp -f

Dann starten wir das erste mal unseren Server und sagen ihm er soll die Konfigurationsdatei erstellen. Beim ersten Start, wird sowohl das Password für den serveradmin-query als auch der access-token ausgegeben, welche ihr beide noch benötigen werdet.

./files/ts3server_minimal_runscript.sh createinifile=1

Der Server kann nun mit Ctl-C heruntergefahren werden. Danach müssen in die eben erstellte Konfigurationsdatei, (./files/ts3server.ini) die erhaltenen Ports eingetragen werden.

Der default_voice_port ist der UDP-Port

Der filetransfer_port ist der 1. TCP-Port

Der query_port ist der 2. TCP-Port

Die restlichen eintrage in der Konfigurationsdatei, können so belassen werden.

Der Server wird nun erneut gestartet.

./files/ts3server_startscript.sh start inifile=ts3server.ini

Wir verbinden uns jetzt, mit dem query-Interface des TeamSpeak-Servers:

telnet <HOSTNAME>.uberspace.de <query_port>

login serveradmin <vom minimal_startscript erhaltenes Passwort>

use sid=1

serveredit virtualserver_port=<UDP-Port>

serverstop sid=1

serverstart sid=1

quit

Nachwort

Nun sollte der TeamSpeak-Server auf dem UDP-Port erreichbar sein. Und ihr könnt beim joinen den Access-Token benutzen um Adminrechte zu erhalten. Ich hoffe ich konnte euch helfen und viel Spaß mit eurem Teamspeak! ;)

Fragen und Anregungen an tutorials@mechnian.menkar.uberspace.de