Hinweis: Nutzung auf eigene Gefahr.

Einleitung

Das alte Tutorial zum Installieren von einem TS3-Server basierte ja auf einer direkten Installation auf dem System. Das hat den Vorteil, dass es schlank ist - aber dafür ist auch mehr manuell zu pflegen. Ich habe kürzlich für jemanden einen TS3-Server inkl. automatischen Updates auf Dockerbasis aufgesetzt und finde das Setup eleganter als die bisherige Lösung, daher möchte ich es auch anderen zur Verfügung stellen.

Voraussetzungen

Auf dem Server muss Docker installiert sein. Sofern das noch nicht der Fall ist, lässt sich das einfach mit

wget -O- https://get.docker.com | sudo bash

durchführen. (Ja, das direkte Ausführen von fremdem Code als Root ist böse, aber die Quelle ist vertrauenswürdig. Trotzdem ist es empfehlenswert, das heruntergeladene Script einmal zu prüfen, bevor man es ausführt).

Sollte wget noch nicht ins alliert sein, geht das schnell mit

sudo apt-get update
sudo apt-get -y install wget

Das Tool, was zum Updaten des Containers genutzt wird, kann dir via Discord Webhooks (und diverse andere Varianten) Benachrichtigungen zu durchgeführten Updates schicken. Lege dazu einen Channel an und generiere dir einen Webhook - ich verwende hier im Beispiel die Webhook-URL https://discord.com/api/webhooks/asd/fgh.

Erstellen vom Datenverzeichnis

Die Daten für den Server sollen später unter /opt/teamspeak3/data liegen, die Compose-Datei im darüberliegenden Verzeichnis. Das lässt sich schnell mit

mkdir -p /opt/teamspeak3/data/

anlegen.

Erzeugung der Docker-Compose-Datei

Zur Verwaltung der Container nutze ich in solchen Fällen gerne Docker-Compose. Dafür muss eine Datei angelegt werden ( die docker-compose.yml), die die zu erstellenden Container inkl. Konfiguration beinhaltet. Ich nutze hier das offizielle TS3-Container-Image (von hier: https://hub.docker.com/_/teamspeak). Um das ganze möglichst pflegeleicht zu gestalten, stelle ich noch einen Watchtower-Container (von hier: https://hub.docker.com/r/containrrr/watchtower) dazu. Watchtower sorgt dafür, dass der TS3-Container immer auf dem aktuellsten Stand gehalten wird. Dazu wird in gewissen Abständen geprüft, ob es eine neue Version vom Container-Image gibt. Sofern ein Update verfügbar ist, wird das gezogen und der TS3-Container einmal frisch erzeugt.

Um den TS3-Server später nutzen zu können, musst du die Lizenzbedingungen explizit akzeptieren. Die Bedingungen kannst du dir mit dem Befehl

docker run --rm -it -e TS3SERVER_LICENSE=view teamspeak

ansehen.

Lege also die Datei docker-compose.yml unter /opt/teamspeak3/ beispielsweise mit nano /opt/teamspeak3/docker-compose.yml an. Der Inhalt sollte wie folgt aussehen:

version: '3.8'
services:
  teamspeak:
    image: teamspeak:latest
    restart: always
    ports:
      - 9987:9987/udp
      - 10011:10011
      - 30033:30033
    volumes:
      - "/opt/teamspeak3/data:/var/ts3server/"
    environment:
      TS3SERVER_LICENSE: view   # "view" durch "accept" ersetzen, um die Lizenzbedingungen zu akzeptieren
  watchtower:
    image: containrrr/watchtower:latest
    restart: always
    environment:
      WATCHTOWER_SCHEDULE: '0 0 5 * * *'   # Update-Prüfung täglich um 05:00 Uhr
      WATCHTOWER_NOTIFICATIONS: 'slack'
      WATCHTOWER_NOTIFICATION_SLACK_HOOK_URL: 'https://discord.com/api/webhooks/asd/fgh/slack' 
      WATCHTOWER_NOTIFICATION_SLACK_IDENTIFIER: 'Watchtower'
      WATCHTOWER_NOTIFICATION_SLACK_CHANNEL: '#watchtower'
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

Die Zeilen, die mit WATCHTOWER_NOTIFICATIONS beginnen, sind für die Notifications zuständig. An die Webhook-URL muss, wie im Beispiel sichtbar, noch /slack angefügt werden.

Erster Start

Wechsle zuerst in das Verzeichnis vom Server:

cd /opt/teamspeak3

starte nun einmal den TS3-Server im Attached-Modus, damit du den Serveradmin-Token sehen kannst:

docker compose up teamspeak

Nach einigen Sekunden kannst du den Server mit Strg + c wieder beenden. Das sieht dann etwa so aus:

Ausgabe vom TeamSpeak3-Server

In der Ausgabe findest du neben dem Admin-Token auch die Zugangsdaten für die Query-Schnittstelle. Bewahre diese Daten gut auf!

Finaler Start

Mit

docker compose up -d

startest du nun den Server. Der Server wird auch automatisch bei Systemstart mit gestartet, also dort ist nichts weiter zu tun.

Damit sollte der Server nun erreichbar sein und das Tutorial ist beendet. Viel Spaß!