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:
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ß!