ubuntuusers.de

TeamSpeak-Server

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Artikel für fortgeschrittene Anwender

Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.

TeamSpeak 🇩🇪 ist eine proprietäre Sprachkonferenzsoftware, die den Benutzern ermöglicht, über das Internet oder lokales Netzwerk per Sprache und Text miteinander zu kommunizieren sowie Dateien auszutauschen. TeamSpeak ist für die Nutzung parallel zu Onlinespielen optimiert und deshalb unter Spielern sehr beliebt, da es mit sehr geringen Systemressourcen auf dem Clientrechner auskommt.

Mittlerweile ist TeamSpeak mehr als nur eine Sprachkonferenzsoftware, in dem mehrere Nutzer gleichzeitig miteinander sprechen können. Abgestufte Rechteverwaltung, Dateitransfer oder Verwaltung auch vom Client via Konsolenschnittstelle (für z.B. Bots). Das Programm ist für Privatbenutzer kostenlos und auf den meisten gängigen Plattformen verfügbar.

Für den Verbindungsaufbau zu anderen TeamSpeak-3-Clients, wird ein TeamSpeak-3-Server benötigt. Dieser Artikel beschreibt, wie man unter Ubuntu einen TeamSpeak-3-Server installiert.

Installation

Hinweis!

Fremdsoftware kann das System gefährden.

Der TeamSpeak-3-Server lässt sich nicht über die Paketverwaltung [2] installieren, sondern muss manuell heruntergeladen und installiert werden.

Da ein TeamSpeak-3-Server auch auf dedizierten und Mini-Rechner läuft, findet alles ohne GUI auf der Konsole [1] oder via SSH statt. Einige der verwendeten Befehle erfordern erhöhte Rechte und müssen zwingend ein sudo voranstehen haben oder - sofern root ein Passwort besitzt und freigeschaltet ist - mit dem Befehl su dauerhaft für die Sitzung zu diesem Benutzer root zu wechseln. Alles, was während der Installation und später auch bei einer Aktualisierung über den Benutzer teamspeak abgewickelt wird, muss zwingend über den Befehl mit dem Zusatz für eine Login-Shell temporär eingeloggt werden.

Vorbereitung

Zuerst sollte man sich folgende Gedanken machen, wobei die hier unten angegeben Namen/Verzeichnis/CPU als Beispiel für die weitere Anleitung gilt resp. davon ausgegangen wird:

Platzhalter Vorgabe Weitere Mögliche Werte
$CPUSYS amd64 (64bit) x86 (32bit)
$TS3_BINARYDIR /usr/local/bin/teamspeak3-server_linux_amd64/ /usr/local/bin/teamspeak3-server_linux_x86/
$TS3_USER teamspeak ts3, ts3server
$TS3_VERSION 3.8.0 3.8.0 (aktuelle Version 2019-05-27 06:32:09)

Sollte es nicht klar sein ob das System und CPU im 64-bit-Modus laufen, kann dieses mittels folgendem Befehl in Erfahrung bringen:

uname -m 

Die Ausgabe x86_64 oder i686 entspricht einem 64-bit resp. 32-bit-System.

Benutzer anlegen

Zuerst wird ein Benutzer teamspeak mit adduser [4] für den Betrieb des Servers mit seinem Installationsverzeichnis als Home-Verzeichnis erstellt.

sudo adduser $TS3_USER --system --home $TS3_BINARYDIR --disabled-login 

Die Ausgabe sollte dann so aussehen:

Systembenutzer »teamspeak« (UID 1xx) wird hinzugefügt …
Neuer Benutzer »teamspeak« (UID 1xx) wird mit Gruppe »nogroup« hinzugefügt …
Persönliche Ordner »/usr/local/bin/teamspeak3-server_linux_amd64« wird erstellt …

Fehlermeldungen wie diese weisen auf eine bereits bestehende Installation und/oder Verzeichnis hin:

Achtung: der von Ihnen angegebene persönliche Ordner »/usr/local/bin/teamspeak3-server_linux_amd64« ist bereits vorhanden.
...
Der persönlicher Ordner »/usr/local/bin/teamspeak3-server_linux_amd64« ist bereits vorhanden. Von »/etc/skel« werden keine Dateien kopiert.
adduser: Achtung: der persönliche Ordner »/usr/local/bin/teamspeak3-server_linux_amd64« gehört nicht dem Benutzer, den Sie gerade anlegen.

Herunterladen, Entpacken und Installieren

Installationspaket herunterladen:

cd /tmp
wget -4 --no-cache  https://files.teamspeak-services.com/releases/server/$TS3_VERSION/teamspeak3-server_linux_$CPUSYS-$TS3_VERSION.tar.bz2 

Falls der Download erfolgreich war sieht das Ganze so aus:

--2019-06-03 22:08:42--  https://files.teamspeak-services.com/releases/server/3.8.0/teamspeak3-server_linux_amd64-3.8.0.tar.bz2
Auflösen des Hostnamens files.teamspeak-services.com (files.teamspeak-services.com) … 151.139.128.10
Verbindungsaufbau zu files.teamspeak-services.com (files.teamspeak-services.com)|151.139.128.10|:443 … verbunden.
HTTP-Anforderung gesendet, auf Antwort wird gewartet … 200 OK
Länge: 8870218 (8.5M) [application/x-tar]
Wird in »teamspeak3-server_linux_amd64-3.8.0.tar.bz2« gespeichert.

teamspeak3-server_linux_amd64-3.8.0.t 100%[=======================================================================>]   8.46M  16.0MB/s    in 0.5s

2019-06-03 22:08:43 (16.0 MB/s) - »teamspeak3-server_linux_amd64-3.8.0.tar.bz2« gespeichert [8870218/8870218]

Installationspaket entpacken [3] und installieren:

cd /usr/local/bin
sudo tar -xjf /tmp/teamspeak3-server_linux_$CPUSYS-$TS3_VERSION.tar.bz2
sudo chown root:root -R teamspeak3-server_linux_$CPUSYS
sudo chown $TS3_USER:nogroup teamspeak3-server_linux_$CPUSYS
sudo chmod go-w -R teamspeak3-server_linux_$CPUSYS 

Das gesamte Programmpaket gehört nun dem Benutzer root und unnötige Gruppen resp. jegliche Schreibrechte [5] wurden entfernt.

Einrichten der Konfiguration

Vor dem erstem Serverstart muss man noch einige Dateien von Hand anlegen bzw. bearbeiten.

Achtung!

Aus Sicherheitsgründen sollte der TeamSpeak-3-Server niemals mit Root-Rechten gestartet werden. Sollte es jemandem gelingen, eine Sicherheitslücke in der Software auszunutzen, hätte er ansonsten Administrator-Rechte auf dem Rechner mit dem Server.

Falls doch mal geschehen erscheint in der Konsole folgender Warnhinweis:

WARNING ! For security reasons we advise: DO NOT RUN THE SERVER AS ROOT

Experten-Info:

Weiteres Vorgehen erfolgt nun mit dem Benutzer teamspeak. Direktes Einloggen mit diesen Systembenutzer ist nicht möglich. Deshalb erfolgt diese über eine temporär zugewiesene Shell mittels des Befehls sudo su $TS3_USER -s /bin/sh.

cd /usr/local/bin/teamspeak3-server_linux_$CPUSYS/
sudo su $TS3_USER -s /bin/sh 

Dieses temporäre Shell für den Benutzer teamspeak bleibt nun offen, wie auch das gewählte Arbeitsverzeichnis (Homeverzeichnis von teamspeak).

ts3server.ini

Die Standardvorlage dieser Konfigurationsdatei ist recht einfach zu erstellen.

./ts3server createinifile=1 

Die folgende Ausgabe kann vorerst ignoriert werden, mehr dazu später im Abschnitt Server-Lizenz-akzeptieren:

Please set the environment variable TS3SERVER_LICENSE to "accept" in order to accept the license agreement.
Alternatively, create a file named ".ts3server_license_accepted" in the working directory or start the server with the command line parameter "license_accepted=1".
To view the license agreement set TS3SERVER_LICENSE to "view" in order to print the license to the console.
Alternatively view the file "LICENSE" in your favorite text viewer yourself.

Die Datei ts3server.ini [7] hat nun diesen Inhalt mit Abweichungen, je nach verwendeter Version des TeamSpeak-3- Servers.

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.txt
query_ip_blacklist=query_ip_blacklist.txt
dbplugin=ts3db_sqlite3
dbpluginparameter=
dbsqlpath=sql/
dbsqlcreatepath=create_sqlite/
dbconnections=10
logpath=logs/
logquerycommands=0
dbclientkeepdays=30
logappend=0
query_skipbruteforcecheck=0
query_buffer_mb=20
http_proxy=
license_accepted=1
serverquerydocs_path=serverquerydocs/
query_ssh_ip=0.0.0.0, ::
query_ssh_port=10022
query_protocols=raw,ssh
query_ssh_rsa_host_key=ssh_host_rsa_key
query_timeout=300

Diese Parameter sollten angepasst werden, die übrigen belässt am besten auf dem Standardwert

Parameter Wert Beschreibung
machine_id Leer lassen, wird nur zusammen mit einer Serverlizenz und mehreren Servern auf der selben Hardware benötigt.
default_voice_port 9987 UDP Port, über den der Login abläuft, aber auch die Voice-Daten.
voice_ip 0.0.0.0, :: IPv4 und/oder IPv6 (kommagetrennte Liste), an die der Serverprozess gebunden werden soll.
filetransfer_port 30033 TCP Port über den der Datenaustausch erfolgt (Avatarbildern, Servericon etc.), aber auch die reine Dateitransferfunktion.
filetransfer_ip 0.0.0.0, :: IPv4 und/oder IPv6 (kommagetrennte Liste) an welche der Serverprozess gebunden werden soll.
query_port 10011 TCP Port über den die unverschlüsselten Query / Telnetzugriffr erfolgen.
query_ip 0.0.0.0, :: IPv4 und/oder IPv6 (kommagetrennte Liste) an welche der Serverprozess gebunden werden soll.
dbplugin ts3db_sqlite3 Das zu verwendende / aktive Datenbankplugin. SQLite3 ist eine lokale DB im Programmverzeichnis, für externe DB stehen ts3db_mariadb und ts3db_mysql als Möglichkeit zur Verfügung.
dbpluginparameter Plugin-spezifische Parameter, im Normalfall bleibt es leer
logquerycommands 0 Für Debugging sinnvoll, sonst gibt es nur riesige Logfiles.
dbclientkeepdays 30 Die Dauer in Tagen bis eine Client-ID aus der Datenbank wieder gelöscht wird. Betrifft nur diejenigen, die keiner Server- oder Channelgruppe zu geordnet wurden.
logappend 0 Wenn auf 1 gesetzt, wird nur noch eine ts3server_0.log resp. ts3server_1.log für alle virtuellen Server (auch nach Neustarts) erstellt.
http_proxy Wie der TeamSpeak-3-Server selbst sich ins Internet verbindet, z. B. für die Lizenzabfrage, für eine direkte Verbindung ohne Proxy leer lassen.
license_accepted 1 alternative zu Parameterübergabe in der Shell, hier bleibt es fix gespeichert.
query_ssh_ip 0.0.0.0, :: IPv4 und/oder IPv6 (kommagetrennte Liste) an der, der Serverprozess gebunden werden soll.
query_ssh_port 10022 TCP Port über den die verschlüsselten (über SSH) Query / Telnetzugriffe erfolgen.
query_protocols raw,ssh Aktiviert oder Deaktiviert die Queryverbindung über eines oder beiden Protokolle.

Der Parameterwert von dbconnections sollte nur mit Bedacht geändert werden, da dieser die Serverperformance extrem verschlechtern kann, d.h. der Bandbreitenverbrauch steigt. (Das hat aber nichts mit den maximalen Benutzerverbindungen zum TeamSpeak-3-Server zu tun!)

Möchte man die Protokolldateien übersichtlich halten, setzt man logappend=1. Dann erstellt der TeamSpeak-3-Server nur noch je ein Logfile pro virtuellen Server und fügt weitere Daten nach einen Neustart an. Sonst wird bei jedem Start ein neues Logfile mit diesem Namensformat ts3server_YYYY-MM-DD_ und _HH_MM_SS.xxxxxx_X.log erstellt. Mit einem zusätzlichen Eintrag dblogkeepdays kann man den Löschzyklus der Logfiles beeinflussen.

query_ip_whitelist.txt

Leere Datei erstellen mittels dem Befehl:

touch query_ip_whitelist.txt 

Diese enthält IPv4- und/oder IPv6-Adressen resp. Netzwerk/Subnetze, jeweils eine pro Zeile. In die Whitelist sollten alle Adressen, die besonders häufig auf die Teamspeak-3-Server-Query-Schnittstelle zugreifen. Diese werden sonst zu schnell automatisch (temporär) gebannt. Das können der lokale Webserver über das PHPFramework Library, oder aber auch Statistik-Server sein. Eintragen ist hier in der Beispieldatei die IP-Adresse von TSViewer.com 🇩🇪:

127.0.0.1
::1
192.168.0.0/16
94.23.235.222

query_ip_blacklist.txt

Experten-Info:

Besser als die Blacklisting-Variante wäre auf jeden Fall, alle per Firewallregel zu blockieren und nur die wenigen der Whiteliste als Ausnahme durchzulassen. Das minimiert die Angriffsfläche für den Server effizienter.

Der gleiche Aufbau wie die Whitelist, nur diesen Adressen und Netzwerk/Subnetzen wird dauerhaft der Zugriff verweigert. Das verhindert jedoch nicht dem Login von TeamSpeak-3-Client selbst.

Leere Datei erstellen mittels dem Befehl:

touch query_ip_blacklist.txt 

.ts3server_license_accepted

Achtung!

Ab TeamSpeak-3-Server Version 3.1.x wird der Start verweigert, wenn den Lizenzbestimmungen nicht zugestimmt wurde.

Leere Datei erstellen mittels dem Befehl:

touch .ts3server_license_accepted 

Hat den selben Effekt wie der Befehlsparameter license_accepted=1 oder dessen Eintrag in der ts3server.ini. Damit sollten nun keine Fehlermeldung zu der Lizenzierung erscheinen in der Konsole.

licensekey.dat

Sofern vorhanden muss zum Abschluss noch die Lizenz ins Programmverzeichnis kopiert werden. Erstmalig erhält man diese per E-Mail, später muss man davon regelmäßig selber ein Backup machen, da der Server diese automatisch aktualisiert. Solange diese Datei fehlt wird der Server dennoch starten, aber limitiert und im Log wird jeden Start solch ein Eintrag vorhanden sein:

...
2019-06-03 18:34:45.802284|WARNING |Accounting    |   |Unable to open licensekey.dat, falling back to limited functionality
2019-06-03 18:34:45.805880|INFO    |Accounting    |   |Licensing Information
2019-06-03 18:34:45.806046|INFO    |Accounting    |   |licensed to       : Anonymous
2019-06-03 18:34:45.806118|INFO    |Accounting    |   |type              : No License
2019-06-03 18:34:45.806204|INFO    |Accounting    |   |starting date     : Tue Jan  1 00:00:00 2019
2019-06-03 18:34:45.806275|INFO    |Accounting    |   |ending date       : Fri Jan 31 00:00:00 2020
2019-06-03 18:34:45.806339|INFO    |Accounting    |   |max virtualservers: 1
2019-06-03 18:34:45.806402|INFO    |Accounting    |   |max slots         : 32
...

Als Beispiel wie es Aussehen kann, wenn man eine gültige NPL (Non Profit License) besitzt:

...
2019-03-25 05:46:53.806197|INFO    |Accounting    |   |Licensing Information
2019-03-25 05:46:53.806266|INFO    |Accounting    |   |type              : Non-Profit License
2019-03-25 05:46:53.806305|INFO    |Accounting    |   |starting date     : Fri Feb  1 00:00:00 2019
2019-03-25 05:46:53.806331|INFO    |Accounting    |   |ending date       : Wed Aug 28 00:00:00 2019
2019-03-25 05:46:53.806355|INFO    |Accounting    |   |max virtualservers: 10
2019-03-25 05:46:53.806378|INFO    |Accounting    |   |max slots         : 512
...

Hinweis:

TeamSpeak System GmbH hat mit der TeamSpeak-3-Server Version 3.1.x auch die Lizenzen für die verschiedenen Providerstufen geändert/angepasst. Teileweise funktionieren bestehende NPL-Lizenzen weiter, sofern der Server bei dem Erneuerungszyklus aktiv ist.

Die meisten Installationen ohne die licensekey.dat werden ohne weitere Einschränkungen laufen. In diesen Fall bleibt nichts anderes übrig, als den Fehler bei jedem Server-Start im Logfile zu ignorieren.

Wem ein Server mit 32 Slots nicht reichen, konnte bisher eine NPL (Non Profit License) beantragen und nutzen, die für Private auch kostenlos war. Diese gibt es leider nicht mehr. Die kleinste Lizenzlösung 🇩🇪 ist nun eine Gamer-Lizenz, sie beinhaltet max. 1-2 Server mit gesamt max. 64-1024 Slots, diese ist jedoch nicht kostenlos!

Einrichtung abschließen

Nachdem alle wichtigen Konfigurationsdateien erstellt sind, kann man die temporäre Shell vom Benutzer teamspeak wieder verlassen:

exit 

Nach dem Logout sollte man noch nicht mehr benötigte Dateien löschen.

rm /tmp/teamspeak3-server_linux_$CPUSYS-$TS3_VERSION.tar.bz2 

Der Server muss nun einmal direkt gestartet werden, nicht mit dem mitgelieferten Startskript. Der Token (Berechtigungsschlüssel) wird zwar auch im Logfile aufgeführt, nicht aber das Password für den direkten Konsolenzugriff (Query).

cd /usr/local/bin/teamspeak3-server_linux_$CPUSYS/
sudo su $TS3_USER -c "./ts3server inifile=ts3server.ini license_accepted=1" -s /bin/sh 

In der Konsole resp. im Logfile befindet sich zu Beginn der Ausgabe beim Ersten Start folgende Zeilen:

2019-06-03 18:54:05.843638|INFO    |ServerLibPriv |   |TeamSpeak 3 Server 3.8.0 (2019-05-27 06:32:09)
2019-06-03 18:54:05.844128|INFO    |ServerLibPriv |   |SystemInformation: Linux 4.15.0-51-generic #55-Ubuntu SMP Wed May 15 14:27:21 UTC 2019 x86_64 Binary: 64bit
2019-06-03 18:54:05.846312|INFO    |DatabaseQuery |   |dbPlugin name:    SQLite3 plugin, Version 3, (c)TeamSpeak Systems GmbH
2019-06-03 18:54:05.846519|INFO    |DatabaseQuery |   |dbPlugin version: 3.11.1
2019-06-03 18:54:05.847540|INFO    |DatabaseQuery |   |checking database integrity (may take a while)
2019-06-03 18:54:05.900712|INFO    |SQL           |   |db_CreateTables() tables created

------------------------------------------------------------------
                      I M P O R T A N T
------------------------------------------------------------------
               Server Query Admin Account created
         loginname= "serveradmin", password= "0xXX7xXx"
------------------------------------------------------------------

2019-06-03 18:54:06.077708|WARNING |Accounting    |   |Unable to open licensekey.dat, falling back to limited functionality
2019-06-03 18:54:06.078569|INFO    |Accounting    |   |Licensing Information
2019-06-03 18:54:06.078745|INFO    |Accounting    |   |licensed to       : Anonymous
2019-06-03 18:54:06.078898|INFO    |Accounting    |   |type              : No License
2019-06-03 18:54:06.079143|INFO    |Accounting    |   |starting date     : Tue Jan  1 00:00:00 2019
2019-06-03 18:54:06.079411|INFO    |Accounting    |   |ending date       : Fri Jan 31 00:00:00 2020
2019-06-03 18:54:06.079671|INFO    |Accounting    |   |max virtualservers: 1
2019-06-03 18:54:06.080068|INFO    |Accounting    |   |max slots         : 32
2019-06-03 18:54:06.296714|INFO    |              |   |myTeamSpeak identifier revocation list was downloaded successfully - all related features are activated
2019-06-03 18:54:11.127771|INFO    |              |   |Puzzle precompute time: 4857
2019-06-03 18:54:11.128933|INFO    |FileManager   |   |listening on 0.0.0.0:30033, [::]:30033
2019-06-03 18:54:11.131890|INFO    |VirtualSvrMgr |   |executing monthly interval
2019-06-03 18:54:11.132500|INFO    |VirtualSvrMgr |   |reset virtualserver traffic statistics
2019-06-03 18:54:11.193011|INFO    |VirtualServer |1  |listening on 0.0.0.0:9987, [::]:9987
2019-06-03 18:54:11.196074|WARNING |VirtualServer |1  |--------------------------------------------------------
2019-06-03 18:54:11.196230|WARNING |VirtualServer |1  |ServerAdmin privilege key created, please use the line below
2019-06-03 18:54:11.196362|WARNING |VirtualServer |1  |token=7Xxx7XXX9x27xxxxXXX1xlXxxx3x2XxXXXxx5XX2
2019-06-03 18:54:11.196492|WARNING |VirtualServer |1  |--------------------------------------------------------

------------------------------------------------------------------
                      I M P O R T A N T
------------------------------------------------------------------
      ServerAdmin privilege key created, please use it to gain
      serveradmin rights for your virtualserver. please
      also check the doc/privilegekey_guide.txt for details.

       token=7Xxx7XXX9x27xxxxXXX1xlXxxx3x2XxXXXxx5XX2
------------------------------------------------------------------

2019-06-03 18:54:11.197669|INFO    |Query         |   |listening for query on 0.0.0.0:10011, [::]:10011
2019-06-03 18:54:11.198661|INFO    |Query         |   |listening for query ssh on 0.0.0.0:10022, [::]:10022
2019-06-03 18:54:11.198866|INFO    |Query         |   |creating QUERY_SSH_RSA_HOST_KEY file: ssh_host_rsa_key
2019-06-03 18:54:22.395453|INFO    |CIDRManager   |   |updated query_ip_whitelist ips: 127.0.0.1/32, ::1/128, 172.16.1.0/24, 94.23.235.222/32,
2019-06-03 18:54:30.897121|INFO    |ServerMain    |   |Received signal SIGINT, shutting down.
2019-06-03 18:54:30.948034|INFO    |VirtualServerBase|1  |stopped
^C
Sitzung abgebrochen, Shell wird beendet ... ... abgebrochen.

2019-06-03 18:54:11.193011|INFO    |VirtualServer |1  |listening on 0.0.0.0:9987, [::]:9987
2019-06-03 18:54:11.196074|WARNING |VirtualServer |1  |--------------------------------------------------------
2019-06-03 18:54:11.196230|WARNING |VirtualServer |1  |ServerAdmin privilege key created, please use the line below
2019-06-03 18:54:11.196362|WARNING |VirtualServer |1  |token=7Xxx7XXX9x27xxxxXXX1xlXxxx3x2XxXXXxx5XX2
2019-06-03 18:54:11.196492|WARNING |VirtualServer |1  |--------------------------------------------------------

Mittels Tastenkombination Strg + C den Server beenden. Nun ist der Server bereit für seinen Betrieb. Starten lässt dieser mit dem eigenen Startskript.

sudo su $TS3_USER -c "/usr/local/bin/teamspeak3-server_linux_${CPU}/ts3server_startscript.sh start inifile=ts3server.ini license_accepted=1" -s /bin/sh 

Der Befehlsparameter license_accepted=1 hat den selben Effekt wie der Eintrag in der ts3server.ini oder das Anlegen der Datei .ts3server_license_accepted.

Den Status abfragen, ob der TeamSpeak-3-Server aktiv ist, lässt sich über folgenden Befehl.

/usr/local/bin/teamspeak3-server_linux_$CPUSYS/ts3server_startscript.sh status 

Jetzt muss sich nur der Server-Admin als erster Benutzer auf den TeamSepak-3-Server einloggen. Dieser erhält sofort nach dem Login ein Popupdialog, in welchen man den Token (Berechtigungsschlüssel) eingeben muss. Somit erhält derjenige den Status der Servergruppen-Admin und kann alles weitere für den Server vom Client-Programm aus konfigurieren. Im Logfile stehen dann als Bestätigung diese Zeilen:

2019-06-03 18:58:54.150718|INFO    |VirtualServer |1  |client (id:2) was added to servergroup 'Server Admin'(id:6) by client 'server'(id:0)
2019-06-03 18:58:54.153381|INFO    |VirtualServer |1  |client 'Axeaminator'(id:2) used privilege key '7Xxx7XXX9x27xxxxXXX1xlXxxx3x2XxXXXxx5XX2' and was added to servergroup 'Server Admin'(id:6)

Hinweis:

Der Token funktioniert nur einmal für einen Benutzer!

Sollte der Token abhanden gekommen sein, z.B. weil das Logfile gelöscht wurde, siehe Problembehandlung für das weitere Vorgehen.

Damit ist die Einrichtung des TeamSpeak-3-Servers abgeschlossen und der Server betriebsbereit. Im Abschnitt Automatischer Systemstart wird beschrieben, wie man den TeamSpeak-3-Server direkt mit dem Systemstart mitstarten lassen kann.

Aktualisierung

Achtung!

Da diese Software nicht über die Paketverwaltung installiert wurde, sollte jeder Server-Administrator selber darum bemüht sein, stets die aktuelle Version installiert zu haben. Nur so sind Sicherheitspatches und Fehlerbehungen auf dem aktuellen Stand.

Den TeamSpeak-3-Server beenden falls dieser noch läuft.

sudo systemctl stop ts3server.service 

Aus Sicherheitsgründen sollte von der ts3server.sqlitedb ein Backup gemacht werden, nach dem der Server gestoppt wurde.

cd /usr/local/bin/teamspeak3-server_linux_$CPUSYS
[ -d ./backup/ ] || sudo mkdir backup
sudo cp --backup=numbered ts3server.sqlitedb ./backup/ 

Danach ist das Vorgehen ähnlich wie bei beim Installieren.

cd /tmp
wget -4 --no-cache  https://files.teamspeak-services.com/releases/server/$TS3_VERSION/teamspeak3-server_linux_$CPUSYS-$TS3_VERSION.tar.bz2 

Installationspaket entpacken [3] und installieren.

cd /usr/local/bin
sudo tar -xjf /tmp/teamspeak3-server_linux_$CPUSYS-$TS3_VERSION.tar.bz2
sudo chown $TS3_USER:nogroup teamspeak3-server_linux_$CPUSYS/
sudo chmod go-w -R teamspeak3-server_linux_$CPUSYS/ 

Das gesammte Programmpaket gehört nun dem Benutzer root und unnötige Gruppen resp. jede Schreibrechte [5] wurden entfernt. Heruntergelandenes Installationspaket löschen:

rm /tmp/teamspeak3-server_linux_$CPUSYS-$TS3_VERSION.tar.bz2 

Nun nur den TeamSpeak-3-Server wieder starten.

sudo systemctl start ts3server.service 

Automatischer Systemstart

Das mit Abstand Wichtigste ist der automatische Start des TeamSpeak-3-Servers. Wobei systemd gegenüber dem alten SysVinit zu bevorzugen ist, wenn auch der Start damit immernoch funktioniert.

Für die besser Übersicht der eingenen Shellscripte erstellt man ein eingnes Unterverzeichnis innerhalb des Instalaltionsverzeichnis der TeamSpeak-3-Servers.

cd /usr/local/bin/teamspeak3-server_linux_$CPUSYS/
sudo mkdir scripts
cd scripts 

Dazu gehört eine entsprechende Konfigurationsdatei für systemd. Dazu die Datei ts3server.service erstellen resp. den Inhalt kopieren, anpassen [7] und speichern unter /usr/local/bin/teamspeak3-server_linux_$CPUSYS/scripts/.

[Unit]
Description=TeamSpeak 3 Server
After=network.target network-online.target
Requires=network-online.target

[Service]
User=teamspeak
Group=nogroup
Type=forking
WorkingDirectory=/usr/local/bin/teamspeak3-server_linux_$CPUSYS
ExecStartPre=-/usr/bin/sqlite3 -line /usr/local/bin/teamspeak3-server_linux_$CPUSYS/ts3server.sqlitedb 'pragma integrity_check;'
ExecStartPost=-/usr/bin/sqlite3 -line /usr/local/bin/teamspeak3-server_linux_$CPUSYS/ts3server.sqlitedb 'vacuum;'
ExecStart=/usr/local/bin/teamspeak3-server_linux_$CPUSYS/ts3server_startscript.sh start inifile=/usr/local/bin/teamspeak3-server_linux_$CPUSYS/ts3server.ini license_accepted=1
ExecStop=/usr/local/bin/teamspeak3-server_linux_$CPUSYS/ts3server_startscript.sh stop
ExecReload=/usr/local/bin/teamspeak3-server_linux_$CPUSYS/ts3server_startscript.sh restart inifile=/usr/local/bin/teamspeak3-server_linux_$CPUSYS/ts3server.ini license_accepted=1
PIDFile=/usr/local/bin/teamspeak3-server_linux_$CPUSYS/ts3server.pid
RestartSec=30
Restart=always

[Install]
WantedBy=multi-user.target

Achtung!

Nicht vergessen, den Platzhalter $CPUSYS durch amd64 oder x86 zu ersetzen in der eigenen Konfiguration, sonst wird der Serverstart scheitern!

Die Konfiguration beinhaltet auch einen Datenbankintegritäts-Überprüfung und einen automatischen Service-Neustart (nach Absturz oder ungewolltem Beenden). Danach die systemd-Konfiguration vom System neueinlesen lassen, die Datei ts3server.service in /etc/systemd/system verlinken und den neu hinzugefügten Service aktivieren.

sudo systemctl daemon-reload
sudo systemctl enable /usr/local/bin/teamspeak3-server_linux_amd64/scripts/ts3server.service 

Diese Ausgabe erscheint wenn der Service erfolgreich installiert wurde.

Created symlink /etc/systemd/system/multi-user.target.wants/ts3server.service -> /usr/local/bin/teamspeak3-server_linux_amd64/scripts/ts3server.service.
Created symlink /etc/systemd/system/ts3server.service -> /usr/local/bin/teamspeak3-server_linux_amd64/scripts/ts3server.service.

Danach den Server via systemd starten und den Status ausgeben:

sudo systemctl start ts3server.service
sudo systemctl status ts3server.service 

Diese Ausgabe erscheint wenn der Service erfolgreich installiert wurde.

● ts3server.service - TeamSpeak 3 Server
   Loaded: loaded (/usr/local/bin/teamspeak3-server_linux_amd64/scripts/ts3server.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2019-06-03 19:07:34 CEST; 3min 13s ago
  Process: 1438 ExecStartPost=/usr/bin/sqlite3 -line /usr/local/bin/teamspeak3-server_linux_amd64/ts3server.sqlitedb vacuum; (code=exited, status=0/SUCCESS)
  Process: 1422 ExecStart=/usr/local/bin/teamspeak3-server_linux_amd64/ts3server_startscript.sh start inifile=/usr/local/bin/teamspeak3-server_linux_amd64/ts3server.ini license_accepted=1 (code=exited, status=0/SUCCESS)
  Process: 1414 ExecStartPre=/usr/bin/sqlite3 -line /usr/local/bin/teamspeak3-server_linux_amd64/ts3server.sqlitedb pragma integrity_check; (code=exited, status=0/SUCCESS)
 Main PID: 1434 (ts3server)
    Tasks: 17 (limit: 4662)
   CGroup: /system.slice/ts3server.service
           └─1434 ./ts3server inifile=/usr/local/bin/teamspeak3-server_linux_amd64/ts3server.ini license_accepted=1 daemon=1 pid_file=ts3server.pid

Jun 03 19:07:34 ubuntuserver systemd[1]: Starting TeamSpeak 3 Server...
Jun 03 19:07:34 ubuntuserver sqlite3[1414]: integrity_check = ok
Jun 03 19:07:34 ubuntuserver ts3server_startscript.sh[1422]: Starting the TeamSpeak 3 server
Jun 03 19:07:34 ubuntuserver ts3server_startscript.sh[1422]: TeamSpeak 3 server started, for details please view the log file
Jun 03 19:07:34 ubuntuserver systemd[1]: Started TeamSpeak 3 Server.

Sollte eine Fehlermeldung auftauchen, ähnlich wie diese Zeile, muss noch ein Paket für SQlite3 nachinstalliert werden.

Jun 03 19:07:34 ubuntuserver systemd[2810]: ts3server.service: Executable /usr/bin/sqlite3 missing, skipping: No such file or directory
  • sqlite3

Paketliste zum Kopieren:

sudo apt-get install sqlite3 

Oder mit apturl installieren, Link: apt://sqlite3

Damit sollte dieser Fehler behoben sein.

Deinstallation

Vor der Deinstallation muss der TeamSpeak-3-Server beendet werden.

sudo systemctl stop ts3server.service 

Danach wird die systemd-Service-Konfiguration entfernt.

sudo systemctl disable ts3server.service
sudo systemctl daemon-reload 

Zum Abschluss wird der Benutzer teamspeak inklusive seines Homeverzeichnisses mit verbliebenen Dateien gelöscht.

sudo userdel -f -r $TS3_USER 

Problembehandlung

Server startet nicht

Server-Lizenz akzeptieren

In einer frischen Installation eines TeamSpeak-3-Servers aber auch nach einem Update kann es passieren, dass man eine solche Meldung in der Konsole erhält und dazu Logdateien mit ähnlichen Namen wie accept_license_error_YYYY-MM-DD__HH_MM_SS.xxxxxx.log mit dem selben Inhalt:

Please set the environment variable TS3SERVER_LICENSE to "accept" in order to accept the license agreement.
Alternatively, create a file named ".ts3server_license_accepted" in the working directory or start the server with the command line parameter "license_accepted=1".
To view the license agreement set TS3SERVER_LICENSE to "view" in order to print the license to the console.
Alternatively view the file "LICENSE" in your favorite text viewer yourself.

Steht in der ts3server.ini ein license_accepted=1 wird dieses Einstellung eingelesen, falls einer der Befehlsparameter inifile=ts3server (falls nötig mit voller Pfadangabe) lautete. Ohne werden die Standardeinstellungen verwendet und die allfällige Datei ignoriert. Optional lässt sich der Befehlsparameter license_accepted=1 mit angeben. Es funktioniert immer mit einer leeren Datei .ts3server_license_accepted im Programmverzeichnis.

Root als Benutzer

Ein Start vom TeamSpeak-3-Server mit dem Benutzer root oder einem Benutzer mit root-Privilegien erzeugt eine Warnmeldung beim Start

WARNING ! For security reasons we advise: DO NOT RUN THE SERVER AS ROOT

Das kann versehentlich beim Einrichten resp. automatische Generieren der ts3serer.ini Datei passieren. Wurde dieser nicht mit dem teamspeak-Benutzer gestartet, verweigert der TeamSpeak-3-Server später alle regulären Starts resp. stürzt nach wenigen Sekunden ohne Kommentar in den Logfiles ab. Der folgende Befehl könnte schon die Ursache aufzeigen.

ls -l /dev/shm 

-rw-r--r-- 1 root root 128 Jun 03 19:07 7gbhujb54g8z9hu43jre8

Eigentlich sollte diese Datei dem Benuter teamspeak gehören. Es wird empfohlen, diese Datei zu löschen, anstatt nur die Berechtigung anzupassen.

Achtung!

Das Löschen von Dateien mit dem Benutzer root oder als Benutzer mit Root-Privilegien soll nicht gedankenlos ausgeführt werden. Im schlimmsten Fall kann es eine instabilität des System bedeuten und eine Neuinstallation zur Folge haben.

sudo rm /dev/shm/7gbhujb54g8z9hu43jre8 

Keine Admin-Rechte

Hat man beim ersten TeamSpeak-3-Server Start keine Konsolenausgabe für den serveradminerhalten oder hat man vergessen, den Token zu notieren, muss man diese Einstellungen zurücksetzen und die Ausgabe nochmals erzwingen.

Hinweis:

serveradmin und die Standard-Servergruppe (ID 6, Server Admin) haben nicht dieselben Privilegien.

* serveradmin ist das Pendant zu root auf dem Ubuntu-Server, ist für die Verwaltung der Virtellen Serverinstanzen zuständig und hat höchsten Zugriff via Query-Schnittstelle. * Servergruppe Server Admin mit der Gruppen ID 6 auf dem ersten virtuellen Server, der eigentliche Admin der die Benutzerrechte, Channel- und Servereinstellungen diese virtuellen Server anpassen kann.

serveradmin neu einrichten

Die einfachste und radikalste Lösung ist es, einfach die ts3server.sqlitedb zu löschen. Damit sind dann aber auch alle Server-Instanzen und deren Benutzer-DB und Einstellungen weg, aber beim TeamSpeak-3-Server Start erscheint wieder die Ausgabe:

...
 ------------------------------------------------------------------
                       I M P O R T A N T
 ------------------------------------------------------------------
                Server Query Admin Account created
          loginname= "serveradmin", password= "xXxX1XXx"
 ------------------------------------------------------------------
...
 ------------------------------------------------------------------
                       I M P O R T A N T
 ------------------------------------------------------------------
       ServerAdmin privilege key created, please use it to gain
       serveradmin rights for your virtualserver. please
       also check the doc/privilegekey_guide.txt for details.
        token=XxxxXxxxXXXXx26xXx4xxxXx4xXxx68XXx5xxXxx
 ------------------------------------------------------------------
...

Zu einem ähnlichen Ziel gelangt man, wenn man mit folgenden Befehlsparameter (clear_database=1) einmalig startet. Die letzte Variante stammt von einer nicht dokummentierten Befehlsparameter serveradmin_password=test1234.

cd /usr/local/bin/teamspeak3-server_linux_$CPUSYS/
sudo systemctl stop ts3server.service
sudo su $TS3_USER -c "./ts3server inifile=ts3server.ini serveradmin_password=test1234 license_accepted=1" -s /bin/sh 

Mittels Tastenkombination Strg + C den Server beenden. Findet sich eine solche Zeile im Logfile hat es geklappt:

2019-06-03 20:46:04.563867|INFO    |ServerLibPriv |   |updated server query admin password

Nicht vergessen den TeamSpeak-3-Server danach wieder normal zu starten.

sudo systemctl start ts3server.service 

Neuen Token setzen

Hinweis:

Weiteres Vorgehen hier setzt voraus, dass man einen funktionierenden Query-Zugang mit dem serveradmin hat.

Die IP-Adresse ist gegebenfalls anzupassen, wenn der Zugriff nicht lokal erfolgt, sondern via LAN oder Internet.

Zuerst muss man sich über die Konsole entweder per Telnet,

telnet 127.0.0.1 10011 

oder per SSH einloggen:

ssh -l serveradmin -p 10022 127.0.0.1 

Da via Telnet die Verbindung unverschlüsselt ist, wird hier das weitere Vorgehen mittels SSH beschrieben

serveradmin@127.0.0.1's password:
TS3
Welcome to the TeamSpeak 3 ServerQuery interface, type "help" for a list of commands and "help <command>" for information on a specific command.
serveradmin>

Nach dem Login den Virtuellen Server auswählen.

use 1 

error id=0 msg=ok
serveradmin@9987(1):online>

Mittels dem Querykommando tokenadd. tokentype=0 setzt den Berechtigungsschlüssel (Token) für eine Servergruppe und tokenid1=6 für die Standard-Server-Admin-Gruppe.

tokenadd tokentype=0 tokenid1=6 tokenid2=0 tokendescription=renew\sAdmin\sGroup\sStatus 

token=XxX0XXXXx0xXX8XXXxxXXXxx9xXXXX1XXX0xxxxx
error id=0 msg=ok
serveradmin@9987(1):online>

Nun kann man wieder ausloggen.

quit 

error id=0 msg=ok
Connection to 127.0.0.1 closed.

Danach muss man mit dem eingeloggeten TeamSpeak-3-Client nur den neu erhaltenen Token anwenden und schon hat man Admin-Rechte resp. gehört zur Server-Admin-Gruppe.

Diese Revision wurde am 5. Februar 2020 09:10 von DJKUhpisse erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: TeamSpeak, VoIP, unfreie Software, Internet, Kommunikation, Server, Netzwerk