Teamspeak
Installation und Konfiguration
Eine genauere Anleitung für Ubuntu habe ich hier gefunden und selber auch benutzt.
Eine Lizenz benutzen wir nicht, da wir bisher nie mehr als 32 Slots benötigt haben.
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.13.1 | 3.13.1 (aktuelle Version 2020-11-11 09:54:16) |
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_allowlist=query_ip_allowlist.txt query_ip_denylist=query_ip_denylist.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 ServerQuery-Zugriffe über Telnet 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 die Werte ts3db_mariadb für MariaDB und ts3db_mysql für 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 ServerQuery-Zugriffe über SSH 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_allowlist.txt
Leere Datei erstellen mittels dem Befehl:
touch query_ip_allowlist.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-ServerQuery-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_denylist.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_denylist.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_allowlist 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 eine bessere Übersicht der eigenen Shellscripte erstellt man ein eigenes Unterverzeichnis innerhalb des Installationsverzeichnis des 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
Befehl zum Installieren der Pakete:
sudo apt-get install sqlite3
Oder mit apturl installieren, Link: apt://sqlite3
Damit sollte dieser Fehler behoben sein.
Upgrade
- Laufenden Server beenden:
/etc/init.d/ts3server stop
- Backup des aktuellen Verzeichnisses: /home/teamspeak3/ts3server
- Neue Version herunterladen: https://www.teamspeak.de/download/teamspeak-3-amd64-server-linux/
- Alle Dateien aus dem Archiv in bestehendes Teamspeak3 Verzeichnis kopieren und alles überschreiben
- Server wieder starten
/etc/init.d/ts3server start
Fehlerbehebung
TS3 Server can´t start
failed to register local accounting service
root@nginx01-a:/usr/local/bin/teamspeak3-server_linux_amd64# systemctl stop ts3server.service
root@nginx01-a:/usr/local/bin/teamspeak3-server_linux_amd64# ls -al /dev/shm/
total 4
drwxrwxrwt 2 root root 60 Jan 27 18:06 .
drwxr-xr-x 18 root root 3340 Jan 25 06:43 ..
-rw-r--r-- 1 root root 128 Jan 27 18:06 7gbhujb54g8z9hu43jre8
root@nginx01-a:/usr/local/bin/teamspeak3-server_linux_amd64# rm -f /dev/shm/7gbhujb54g8z9hu43jre8
root@nginx01-a:/usr/local/bin/teamspeak3-server_linux_amd64# systemctl start ts3server.service
root@nginx01-a:/usr/local/bin/teamspeak3-server_linux_amd64# tail -f logs/ts3server_2022-01-27__17_1
ts3server_2022-01-27__17_10_00.802754_0.log ts3server_2022-01-27__17_11_00.478223_1.log ts3server_2022-01-27__17_12_22.966452_1.log ts3server_2022-01-27__17_13_45.208442_1.log
ts3server_2022-01-27__17_11_00.478223_0.log ts3server_2022-01-27__17_12_22.966452_0.log ts3server_2022-01-27__17_13_45.208442_0.log ts3server_2022-01-27__17_14_52.011307_0.log
root@nginx01-a:/usr/local/bin/teamspeak3-server_linux_amd64# tail -f logs/ts3server_2022-01-27__17_14_52.011307_0.log
2022-01-27 17:14:52.017133|INFO |DatabaseQuery | |checking database integrity (may take a while)
2022-01-27 17:14:52.130047|WARNING |Accounting | |Unable to open licensekey.dat, falling back to limited functionality
2022-01-27 17:14:52.130439|INFO |Accounting | |Licensing Information
2022-01-27 17:14:52.130461|INFO |Accounting | |licensed to : Anonymous
2022-01-27 17:14:52.130471|INFO |Accounting | |type : No License
2022-01-27 17:14:52.130487|INFO |Accounting | |starting date : Thu Oct 1 00:00:00 2020
2022-01-27 17:14:52.130497|INFO |Accounting | |ending date : Tue Nov 1 00:00:00 2022
2022-01-27 17:14:52.130505|INFO |Accounting | |max virtualservers: 1
2022-01-27 17:14:52.130513|INFO |Accounting | |max slots : 32
2022-01-27 17:14:52.161750|INFO |DatabaseQuery | |database busy, waiting for finishing index tasks, may take some time!
2022-01-27 17:15:43.734417|INFO | | |Puzzle precompute time: 1544
2022-01-27 17:15:43.735082|INFO |FileManager | |listening on 0.0.0.0:30033, [::]:30033
2022-01-27 17:15:43.738282|INFO |Query | |Using a query thread pool size of 2
2022-01-27 17:15:43.822931|INFO |Query | |listening for query on 0.0.0.0:10011, [::]:10011
2022-01-27 17:15:43.823646|INFO |Query | |listening for ssh query on 0.0.0.0:10022, [::]:10022
2022-01-27 17:15:43.823956|INFO |Query | |listening for http query on 0.0.0.0:10080, [::]:10080
2022-01-27 17:15:43.824185|INFO |CIDRManager | |updated query_ip_allowlist ips: 127.0.0.1/32, ::1/128, 91.9.27.121/32,
Lösung:
- Ts3 Server stoppen
- Datei mit random Namen unter /dev/shm/xxxxxxx löschen
- Ts3 Server starten