TeamSpeak 3 Server Paket

Aus

WICHTIGER HINWEIS:
Diese Methode funktioniert nicht mit Server Versionen nach 3.0.7.2. Eine Lösung habe ich bislang nicht gefunden und werde das auch nicht weiterverfolgen, weil es inzwischen gute Alternativen gibt:

  1. Man verwendet die Serverversion 3.0.7.2, die im Grunde sehr gut funktioniert, mit nachstehender Anleitung. Diese Version gibt es hier zum Download.
  2. Man installiert das Docker Paket und darin einen TS3 Server (z.B. aheil/teamspeak3-server).
  3. Ein fertiges, privat erstelltes Paket mit Anleitung auf Youtube (ich habe keine Erfahrungswerte damit, da ich die Dockervariante nutze).


Ts3 logo.png

Diese Seite beschreibt wie man sich ein Paket für einen TS3 Server macht. Aus folgenden Gründen gibt es das Paket nicht schon fertig zum Download:

  • Es ist wirklich einfach mit dieser Anleitung ein Paket zu erstellen. Speziell das Updaten auf eine neue Version dauert nur wenige Minuten.
  • Es ist 100% sicher, da man volle Kontrolle über den Inhalt hat und nur eine Datei downloaden muss, und diese ist von der offiziellen Teamspeak Seite.
  • Nachdem von den TS Entwicklern derzeit kategorisch ausgeschlossen ist, dass es ein offizielles Paket für Synology geben wird, muss das Paket bei jeder neuen Version in Privatinitiative erstellt werden. Niemand kann aber garantieren, dass er/sie dafür auch auf längere Sicht Zeit, Lust, Möglichkeit, etc. hat, bzw. dies immer zeitnah tun kann. Daher ist dies die zukunftssicherste Variante.

Vorteile eines Pakets:

  • Man benötigt für die Installation kein Telnet und kein Linuxwissen
  • Man sieht den Status im Paketmanager der Synology Adminoberfläche und kann dort den TS3 Server auch ein- und ausschalten
  • Bei einem Neustart wird der zuletzt aktive Status beibehalten (also entweder aktiviert oder deaktiviert)


Es gibt auch eine Anleitung für die manuelle Installation via Telnet (alle oben genannten Vorteile gehen dabei verloren).


ENGLISH READERS please note: if you are using a translation service (e.g. google) then do not use the code blocks (boxes with gray background) of the translated page. The code may be distorted. Always use the original German page for copy/paste!


Voraussetzungen

  • Eine DiskStation mit x86 Architektur (Liste der Prozessortypen)
  • Ein Archivierungsprogramm, wie z.B. 7-Zip (wird in dieser Anleitung verwendet)
  • Einen Texteditor, empfohlen z.B. Sublime, PSPad, etc. Windows Notepad nicht getestet (evtl. Probleme mit Sonderzeichen).
  • Es müssen Dateien ohne Dateierweiterung erstellt werden. Dies geht unter Windows verlässlich nur, wenn die Anzeige der Dateiendungen eingeschaltet ist: Win7, WinXP, Google Suche
  • Der TS3 Client sollte bereits installiert sein, zumindest wird dessen Installation hier vorausgesetzt.

Erstinstallation

  • Ein Verzeichnis TS3_Server anlegen. Dieses sollte irgendwo sicher und permanent gespeichert sein, da man es bei jedem Update des TS3 Servers wieder benötigt.
  • Eine neue Datei INFO mit Texteditor anlegen und folgenden Inhalt hineinkopieren:
package="ts3server"
displayname="TeamSpeak 3 Server"
version="3.0.6.1"
maintainer="Core package by TeamSpeak Systems GmbH"
description="TeamSpeak 3 Server for Synology x86 DS"
reloadui="yes"
arch="x86"
  • Folgende Informationen anpassen:
    • version: Die Version des Servers die man von der TeamSpeak Seite herunterlädt.
    • maintainer (optional): Hier kann man seinen eigenen Namen einsetzen. Der Parameter hat nur informativen Charakter.
  • Datei im Verzeichnis speichern (INFO in Großbuchstaben).
  • Kontrollieren, ob eine Dateiendung vorhanden ist, da manche Editoren diese automatisch anhängen. Falls ja, dann die Datei im Editor schließen und manuell die Endung entfernen. Windows fordert zur Bestätigung auf, da die Datei dann nicht mehr mit Doppelklick geöffnet werden kann. Dies mit JA bestätigen. Zum Öffnen der Datei klickt man rechts darauf, 'Öffnen mit...' und in den Programmen den Editor auswählen.
  • Folgendes Bild als PACKAGE_ICON.PNG (alles Großbuchstaben!) im Verzeichnis 'TS3_Server' speichern (Rechtsklick auf Bild und im Kontextmenü 'Grafik speichern unter...' wählen, dann Dateinamen auf Großbuchstaben ändern).
    Package icon.png
  • Unterverzeichnis scripts anlegen.
  • Nun werden nach dem gleichen Schema wie oben folgende Dateien im Verzeichnis 'scripts' angelegt. Die Dateinamen sind immer Kleinbuchstaben und auch hier hat keine der Dateien eine Endung:

preinst
Code, der vor der Installation ausgeführt wird. Der nachfolgende Code tut im Grunde nichts, dennoch sollte man diese Datei aus Gründen der Vollständigkeit und für eventuell spätere Ergänzungen anlegen. Das Weglassen der Datei wurde nicht getestet.

#!/bin/sh

exit 0

postinst
Code, der nach der Installation ausgeführt wird. Es gilt das Gleiche wie oben.

#!/bin/sh

exit 0

preupgrade
Code, der vor einem Update ausgeführt wird. Hier werden die Konfigurationsdateien gesichert, da bei dem Update alle gelöscht werden.

#!/bin/sh

DIR="/var/packages/ts3server/target/teamspeak3-server_linux-x86"
TMP="/tmp/ts3bak/"

# When upgrading, we need to backup the config files first into a temporary dir
mkdir $TMP
/bin/cp -fpR "$DIR/files/" $TMP
/bin/cp -fpR "$DIR/logs/" $TMP
/bin/cp -f "$DIR/nohup.out" $TMP
/bin/cp -f "$DIR/ts3server.sqlitedb" $TMP
/bin/cp -f "$DIR/query_ip_blacklist.txt" $TMP
/bin/cp -f "$DIR/query_ip_whitelist.txt" $TMP

exit 0

postupgrade
Code, der nach dem Update ausgeführt wird. Die Konfigurationsdaten werden wieder zurückgesichert.

#!/bin/sh

DIR="/var/packages/ts3server/target/teamspeak3-server_linux-x86"
TMP="/tmp/ts3bak/"

# Copy back the config files
cp -pR $TMP* "$DIR/"

# Remove the temporary dir
rm -R $TMP

exit 0

preuninst
Code, der vor dem Deinstallieren ausgeführt wird.

#!/bin/sh

exit 0

postuninst
Code, der nach der Deinstallation ausgeführt wird.

#!/bin/sh

exit 0

start-stop-status
Das Herzstück des Pakets. Dieses Skript wird für das Aktivieren und Deaktivieren des TS3 Servers verwendet, ebenso für die Abfrage des Status (Server läuft oder nicht) und für die Ausgabe der Protokolle. Das Paketzentrum ruft dieses Skript auf und bekommt von hier die Informationen.

#!/bin/sh
###BEGIN INIT INFO########################
#
# start-stop-status
# Starts, stops the TS3 server and
# reports status to the package manager
#
###END INIT INFO##########################

DIR="/var/packages/ts3server/target/teamspeak3-server_linux-x86"
cd "$DIR"

case $1 in
  start)
    "$DIR/ts3server_startscript.sh" start &
    exit $?
  ;;
  stop)
    "$DIR/ts3server_startscript.sh" stop &
    exit $?
  ;;
  status)
    if [ -e "$DIR/ts3server.pid" ]; then
      if ( kill -0 $(cat "$DIR/ts3server.pid") 2> /dev/null ); then
        exit 0  # Server is running
      else
        exit 1  # Server seems to have died
      fi
    else
      exit 2  # No server running (ts3server.pid is missing)
    fi
  ;;
  log)
    cat logs/*.log > /tmp/ts3.log
    echo "/tmp/ts3.log";
    exit 0
  ;;
  *)
    exit 0
  ;;
esac

TS3 Server ins Paket integrieren

  1. Paket von der TeamSpeak Downloadseite laden: Es muss das Linux Server x86 Paket sein! Das Paket heißt z.B. teamspeak3-server_linux-x86-3.0.6.1.tar.gz.
  2. Die Datei im Verzeichnis 'TS3_Server' speichern.
  3. Datei auf package.tgz umbenennen.
  4. Mit einem Archivierprogramm öffnen. Man findet darin nur eine einzige Datei, die in etwa so heißt teamspeak3-server_linux-x86-3.0.6.1.tar. Diese Datei auf package.tar umbenennen. Archivierprogramm beenden.
  5. Zur Klarstellung:
    • Das 'TS3_Server' Verzeichnis sollte die im Bild unten ersichtlichen vier Einträge haben.
    • Im Archiv 'package.tgz' findet sich die Datei 'package.tar':
      TS3 Archive.png
    • Das 'scripts' Verzeichnis sollte so aussehen:
      TS3 Server Scripts Dir.png
  6. Fehler beim Erstellen des Vorschaubildes: Datei fehlt
    7-Zip Dialog: Als .TAR speichern
    Nun alle Dateien im 'TS3_Server' Verzeichnis markieren und zu einem Archiv hinzufügen (Rechtsklick bei 7-Zip und im Kontextmenü auswählen. Als Format muss TAR gewählt werden. Paket als TS3 Server 3.0.6.1.spk speichern (Versionsnummer anpassen). Siehe auch Bild rechts.
    Falls statt dem Bild ein Fehler angezeigt wird, dann das Bild vergrößern (Icon in der Ecke rechts unten klicken) und "Volle Auflösung" wählen.
  7. Falls das Archivierungsprogramm die Dateiendung automatisch auf TAR ergänzt, die Datei nachträchlich manuell umbennen. Das Paket muss unbedingt die Dateindung .SPK haben!

Installation

  1. Im Synology Paket-Zentrum links oben auf Installieren/Aktualisieren klicken.
  2. Die erstellte .SPK Datei öffnen, dann Weiter.
  3. Im Informationsbildschirm die Option 'Paket nach der Installation starten' aktivieren. Weiter.
  4. Es sollte die Meldung über die erfolgreiche Installation erscheinen.
  5. Im Paket-Zentrum ist nun das Logo und der Status ersichtlich. Läuft der Server nicht, dann manuell starten.

Als Server Admin registrieren

Der Server wird über einen Client verwaltet, der 'Server Admin' Rechte hat. Der erste Server Admin berechtigt sich durch Eingabe eines Berechtigungsschlüssels.

  1. Den TS3 Client starten und zur Synology DS verbinden (IP Adresse im LAN als Server angeben). Es erscheint ein Dialog zur Eingabe des Berechtigungsschlüssels. Damit macht man sich zum Server Admin und das ist Voraussetzung für die Konfiguration.
  2. Den Berechtigungsschlüssel (Token) holen:
    1. Im Paket-Zentrum beim TS3 Server auf Mehr klicken, und dann den Reiter Protokoll. Hier sollte man nun im Text folgende Stelle finden, die in etwas so aussieht:
      TS3 Server Token.png
    2. Den Code nach dem Gleichheitszeichen muss man kopieren, wobei das leider etwas schwierig ist, weil man den Text nicht einfach markieren kann. Falls folgende Schritte nicht funktionieren, dann bleibt nur das manuelle Abschreiben über (muss man nur einmal machen).
    3. Im Browser auf Suchen gehen und nach 'token=' suchen. Der gesuchte Text ist nun ausgewählt. Nun mit [Shift/Umsch]+[Cursor rechts] die Markierung erweitern, bis der ganze Schlüssel markiert ist. [Ctrl/Strg]+[C] zum Kopieren drücken.
    4. In einem Texteditor den Text einfügen und nun nur den Teil nach dem Gleichheitszeichen markieren und erneut kopieren.
    5. Im TS3 Client in das Dialogfeld für den Berechtigungsschlüssel den Code einfügen ([Strg/Ctrl]+[V])... oder eben manuell eingeben.
  3. Dokumentation zur Konfiguration des TeamSpeak 3 Servers findet man im unteren Teil der TeamSpeak FAQ.
  4. Siehe auch TeamSpeak Addons.

Erreichbarkeit von Außen

Folgende Ports müssen per NAT an die Synology DS weitergeleitet werden: Server Ports.

Als minimale Anforderung reichen:

  • Sprache: 9987 UDP
  • Dateimanager (evtl. auch nicht notwendig): 30033 TCP


Paket updaten

Folgende Schritte müssen bei jeder neuen Version des TS3 Servers gemacht werden. Voraussetzung ist, dass die einmaligen Schritte im Kapitel Erstinstallation gemacht wurden (d.h. die Dateien 'INFO', 'PACKAGE_ICON.PNG' und das Verzeichnis 'scripts' müssen vorhanden sein).

TS3 Server Update ins Paket integrieren

  1. Die alte Datei package.tgz im Verzeichnis 'TS3_Server' löschen.
  2. Paket von der TeamSpeak Downloadseite laden: Es muss das Linux Server x86 Paket sein! Das Paket heißt z.B. teamspeak3-server_linux-x86-3.0.7.2.tar.gz.
  3. Datei im Verzeichnis 'TS3_Server' speichern.
  4. Die Datei auf package.tgz umbenennen.
  5. Datei mit einem Archivierprogramm öffnen und die darin enthaltene (z.B. teamspeak3-server_linux-x86-3.0.7.2.tar) auf package.tar umbenennen, falls notwendig. Archivierprogramm beenden.
  6. Die Datei INFO mit einem Texteditor öffnen und die Version aktualisieren (z.B. version="3.0.7.2").
  7. Nun alle Dateien im 'TS3_Server' Verzeichnis zu einem Archiv hinzufügen (Rechtsklick bei 7-Zip und im Kontextmenü wählen). Archivformat ist TAR. Paket als TS3 Server 3.0.7.2.spk speichern (Versionsnummer anpassen). Das Paket muss die Dateindung .SPK haben!

Paket im Paket-Zentrum updaten

  1. Das .SPK Paket installieren (wie bei Erstinstallation über den Knopf 'Installieren/Aktualisieren').
  2. Sollte der Server danach nicht laufen, manuell starten.


Persönliche Anmerkungen

Ich kenne mich bei Linux eigentlich gar nicht aus und auch nicht wirklich mit Synology Paketen. Nachdem ich schon lange auf ein Paket warte und keines kam, habe ich mir diese Lösung nun in einem Gewaltakt erarbeitet. Es ist daher möglich, dass diese Lösung nicht in allen Punkten optimal ist oder Fehler beinhaltet (wobei bei mir bislang keine erkennbar waren). Ich hoffe auf entsprechende Ergänzungen bzw. Korrekturen von Leuten, die sich in diesen Dingen besser auskennen.

Wesentlich Anteil an der Lösung haben die Arbeiten von User Merty, der im englischsprachigen Synology Wiki eine Paketerstellungsanleitung erstellt hat, und einige eigene Pakete anbietet.