Ubuntu 16.04 Xenial Xerus
Ubuntu 14.04 Trusty Tahr
Ubuntu 12.04 Precise Pangolin
TeamSpeak ist eine proprietäre Sprachkonferenz-Software, welche es Benutzern ermöglicht, über das Internet oder ein LAN miteinander zu kommunizieren. TeamSpeak ist unter Online-Spielern sehr beliebt. Das Programm ist für Privatbenutzer und Non-Profit-Organisationen kostenlos.
Dieser Artikel beschreibt, wie man unter Ubuntu einen TeamSpeak-Server installiert, zu dem TeamSpeak-Clients eine Verbindung aufbauen können. TeamSpeak ist ein Voice-Over-IP-Chat, in dem mehrere Nutzer gleichzeitig miteinander sprechen können. Zu diesem Zweck wird ein Server benötigt, mit dem sich die Clients verbinden können. Es sollte eine Breitband Internetanbindung sowie eine geringe Verbindungslatenz vorhanden sein.
Ein TeamSpeak 3 Server ermöglicht nur Benutzern vom TeamSpeak 3 Client eine Verbindung aufzubauen. Für TeamSpeak 2 Clients benötigt man auch einen entsprechenden TeamSpeak 2 Server.
Der TeamSpeak 3 Server lässt sich nicht über die Paketverwaltung installieren, sondern muss manuell installiert werden.
Fremdsoftware kann das System gefährden.
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.
Zuerst wird ein Benutzer teamspeak
mit adduser [5] für den Betrieb des Servers mit eigenem Home-Verzeichnis erstellt. Die gewünschte Systemarchitektur (i386
/amd64
) ist anzupassen:
32-Bit:
sudo adduser teamspeak --system --home /usr/local/bin/teamspeak3-server_linux_x86 --disabled-login
64-Bit:
sudo adduser teamspeak --system --home /usr/local/bin/teamspeak3-server_linux_amd64 --disabled-login
Für das weitere Vorgehen wechselt man zum Benutzer teamspeak
:
sudo su teamspeak --shell /bin/bash
Jetzt muss der TeamSpeak3-Server von der offiziellen Downloadseite des Herstellers heruntergeladen und in das Homeverzeichnis /usr/local/bin/teamspeak3-server_linux_SYSTEMARCHITEKTUR des Benutzers teamspeak
entpackt werden [7].
Auf einem Server ohne grafische Benutzeroberfläche kann das Archiv alternativ auch direkt von der 4Player Mirror Site heruntergeladen werden. Die Versionsnummer 3.x.y.z und amd64/x86 sind an die gewünschte Version anzupassen:
cd /tmp wget http://dl.4players.de/ts/releases/3.x.y.z/teamspeak3-server_linux_SYSTEMARCHITEKTUR-3.x.y.z.tar.bz2 tar -xjf teamspeak3-server_linux_SYSTEMARCHITEKTUR-3.x.y.z.tar.bz2 -C /usr/local/bin/ rm teamspeak3-server_linux_SYSTEMARCHITEKTUR-3.x.y.z.tar.bz2 cd ~
Vor dem erstem Serverstart sollte man noch folgende Dateien von Hand anlegen bzw. bearbeiten: ts3server.ini, query_ip_whitelist.txt und query_ip_blacklist.txt. Die ts3server.ini lässt sich automatisch mit diesem Befehl erstellen (als Benutzer teamspeak
ausführen):
./ts3server createinifile=1 touch query_ip_blacklist.txt query_ip_whitelist.txt
Die angezeigten Fehlermeldungen können ignoriert werden. Der Inhalt der ts3server.ini sieht danach folgendermaßen aus:
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
Der Parameterwert von dbconnections sollte nur mit Bedacht geändert werden, da dieser die Serverperformance extrem verschlechtern kann, d.h. der Bandbreitenverbrauch steigt. (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 TeamSpeak3-Server nur noch je ein Logfile pro virtuellen Server und fügt weitere Daten nach einen Neustart an.
Mit einem zusätzlichen Eintrag dblogkeepdays kann man den Löschzyklus der Logfiles beeinflussen.
Für den ersten Start des Servers (als Benutzer teamspeak
ausführen).
./ts3server_startscript.sh start inifile=ts3server.ini
Nun erscheinen nun zwei Warnhinweise.
------------------------------------------------------------------ I M P O R T A N T ------------------------------------------------------------------ Server Query Admin Account created loginname= "serveradmin", password= "r7eSSV3i" ------------------------------------------------------------------ ------------------------------------------------------------------ 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=bgOEcvBZun5AP5bJEmHoYP0pdO7YwEIqGBbYMHN2 ------------------------------------------------------------------
Das Password für serveradmin
sollte notiert werden, denn es ermöglicht den vollständigen Zugriff auf das Serverquery des TeamSpeak3-Servers über alle Einstellungen, inklusive alle virtuellen Server. Damit man auch im TeamSpeak3-Client den Server Admin
erlangt, sollte man sich mit diesem einloggen und den "token" eingeben. Im Logfile ts3server_1.log findet man diesen Token, um diesen mittels Kopieren und Einfügen zu übertragen.
2014-01-10 20:04:46.842555|WARNING |VirtualServer | 1| -------------------------------------------------------- 2014-01-10 20:04:46.842590|WARNING |VirtualServer | 1| ServerAdmin privilege key created, please use the line below 2014-01-10 20:04:46.842621|WARNING |VirtualServer | 1| token=bgOEcvBZun5AP5bJEmHoYP0pdO7YwEIqGBbYMHN2 2014-01-10 20:04:46.842651|WARNING |VirtualServer | 1| --------------------------------------------------------
Damit man den Server nicht nach jedem Systemneustart von Hand starten muss, kann man den Server beim Booten als Dienst [6] gleich mitstarten lassen. Im Grunde wäre es auch möglich, das ./ts3server_startscript.sh
anzupassen und entsprechend zu verlinken. Leider wird das Script bei jedem Update überschrieben und der direkte Aufruf erzeugt eine Fehlermeldung, dass der TeamSpeak 3 Server als Benutzer root
gestartet wird.
WARNING ! For security reasons we advise: DO NOT RUN THE SERVER AS ROOT
Hier ein SysV-Init-Skript, das mit Root-Rechten als /etc/init.d/ts3server erstellt wird:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | #! /bin/sh ### BEGIN INIT INFO # Provides: ts3server # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: TeamSpeak 3 Server # Description: Startup Init-Script for TeamSpeak 3 Server ### END INIT INFO # PATH should only include /usr/* if it runs after the mountnfs.sh script PATH=/sbin:/usr/sbin:/bin:/usr/bin DESC="TeamSpeak 3 Server" NAME=ts3server USER=teamspeak BINARY=ts3server BINARY_BIN=/usr/local/bin/teamspeak3-server_linux_amd64 DAEMON=ts3server_startscript.sh DAEMON_ARGS=inifile=ts3server.ini PIDFILE=$BINARY_BIN/$NAME.pid SCRIPTNAME=/etc/init.d/$NAME # Exit if the package is not installed [ -x "$BINARY_BIN/$DAEMON" ] || exit 0 # Define LSB log_* functions. # Depend on lsb-base (>= 3.2-14) to ensure that this file is present # and status_of_proc is working. . /lib/lsb/init-functions # # Function that starts the daemon/service # do_start() { su $USER -s /bin/sh -c "$BINARY_BIN/$DAEMON start $DAEMON_ARGS" } # # Function that stops the daemon/service # do_stop() { su $USER -s /bin/sh -c "$BINARY_BIN/$DAEMON stop $DAEMON_ARGS" } # # Function that shows the status of to the daemon/service # do_status() { su $USER -s /bin/sh -c "$BINARY_BIN/$DAEMON status $DAEMON_ARGS" } case "$1" in start) log_daemon_msg "Starting $DESC" "" do_start case "$?" in 0|1) log_end_msg 0 ;; 2) log_end_msg 1 ;; esac ;; stop) log_daemon_msg "Stopping $DESC" "" do_stop case "$?" in 0|1) log_end_msg 0 ;; 2) log_end_msg 1 ;; esac ;; status) do_status status_of_proc "$BINARY" "$DESC" && exit 0 || exit $? ;; restart) log_daemon_msg "Restarting $DESC" "" do_stop case "$?" in 0|1) do_start case "$?" in 0) log_end_msg 0 ;; 1) log_end_msg 1 ;; # Old process is still running *) log_end_msg 1 ;; # Failed to start esac ;; *) # Failed to stop log_end_msg 1 ;; esac ;; *) echo "Usage: $SCRIPTNAME {start|stop|status|restart}" exit 3 ;; esac : |
Die gewünschte Version amd64/x86 oben im Script ist anzupassen und in die Datei ts3server zu übertragen [8]. Danach die Dateirechte [4] als ausführbar anpassen und als Init-Script im System einrichten:
sudo chmod +x ts3server sudo update-rc.d ts3server defaults 80 10
Bei erfolgreich Aufruf erhält man diese Ausgabemeldungen:
Adding system startup for /etc/init.d/ts3server ... /etc/rc0.d/K10ts3server -> ../init.d/ts3server /etc/rc1.d/K10ts3server -> ../init.d/ts3server /etc/rc6.d/K10ts3server -> ../init.d/ts3server /etc/rc2.d/S80ts3server -> ../init.d/ts3server /etc/rc3.d/S80ts3server -> ../init.d/ts3server /etc/rc4.d/S80ts3server -> ../init.d/ts3server /etc/rc5.d/S80ts3server -> ../init.d/ts3server
S80 und K10 sind bewusst gewählt, um sicher zustellen, dass der TeamSpeak3-Server erst sehr spät gestartet wird (nachdem alle andern evtl. wichtigen Dienste schon geladen wurde und früh beendet wird, damit keine Datenverluste entstehen.
Nun lässt sich der TeamSpeak3-Server bequem ohne den umständlichen Umweg über ein sudo
-Kommando starten/stoppen bzw. der Status ermitteln.
Solange sich keine licensekey.dat im Programmverzeichnis des TeamSpeak3-Servers befindet, wird im ts3server_0.log immer wieder folgende Zeile nach dem Serverstart auftauchen:
2014-01-10 20:04:28.877559|WARNING |Accounting | | Unable to find valid license key, falling back to limited functionality
Für den privaten Gebrauch kann diese Meldung ignoriert werden, allerdings bleibt der TeamSpeak3-Server auf 1 virtuellen Server mit maximal 32 Slots beschränkt. Eine Non Profit License (NLP) kann man auf der TeamSpeak Webseite beantragen. Diese ermöglicht dann den Betrieb von zwei virtuellen Servern mit maximal 512 Slots. Mittlerweile ist diese aber an diverse Bedingungen geknüpft:
eine online verfügbare, funktionierende Webseite mit einer eigenen Domain (Bsp. www.meints3server.org)
eine gültige E-Mail-Adresse verknüpft mit der eigenen Domain (Bsp. serveradmin@meints3server.org)
der NPL lizensierte Server muss an einer statischen IP-Adresse betrieben werden
wenn eine NPL bereits auf die IP-Adresse ausgestellt wurde, wird der Antrag abgelehnt
beim Überprüfen der Webseite darf keine Werbung oder Spenden-Buttons vorhanden sein
NPL-Anträge werden manuell durch das USA-Büro von Montag 09:00 bis Freitag 17:00 Pazific Time (MEZ -9h), ausser an Feiertagen und Wochenenden verarbeitet. Aufgrund der starken Auslastung kann die NPL-Verarbeitung bis zu 15 Tage dauern.
Sobald man eine E-Mail mit dem Betreff "TeamSpeak 3 Non-Profit License Issued" erhalten hat, kann man die angehängte Datei licensekey.dat in den Programmordner des TeamSpeak3-Servers kopieren und den Serverdienst neu starten.
Der TeamSpeak 3 Server verifiziert bei jedem Start durch Anfragen beim Lizenz-Verifizierungsserver, ob die NPL-Lizenz noch gültig ist. Falls diese abgelaufen ist, wird automatisch eine neue herruntergeladen. Deshalb sollten von beiden Dateien licensekey.dat und serverkey.dat in regelmässigen Abständen ein Backup erstellt werden.
Sollte man den TeamSpeak3-Server neu aufsetzen müssen und verwendet die bisherige Datei licensekey.dat wieder, wird diese vom Lizenz-Verifizierungsserver zurückgewiesen und der TeamSpeak 3 Server wieder beschränkt auf 1 VServer/32 Slots und nur der VServer 1 gestartet. Dasselbe gilt auch, wenn der Lizenz-Verifizierungsserver wegen fehlender Internetverbindung beim Start nicht erreichbar ist.
Da dies eine proprietäre Software ist, sollte jeder Server-Administrator selber darum bemüht sein, stets die aktuelle Version installiert zu haben oder zu installieren.
Das Vorgehen ist in etwa das Gleiche wie bei der Installation. Aus Sicherheitsgründen sollte von der ts3server.sqlitedb ein Backup gemacht werden, nach dem der Server gestoppt wurde. Als Benutzer root
ausführen oder mittels sudo
-Kommando:
sudo /etc/init.d/ts3server stop sudo su teamspeak --shell /bin/bash
Die Versionsnummer 3.x.y.z und amd64/x86 sind an die gewünschte Version anzupassen. Die weiteren Befehle werden nun als Benutzer teamspeak
ausgeführt:
cd ~ mkdir backup cp --backup=numbered ts3server.sqlitedb ./backup/ cd /tmp wget http://dl.4players.de/ts/releases/3.x.y.z/teamspeak3-server_linux_amd64-3.x.y.z.tar.bz2 tar -xjf teamspeak3-server_linux_amd64-3.x.y.z.tar.bz2 -C /usr/local/bin exit cd /usr/local/bin cp -r teamspeak3-server_linux_amd64/* teamspeak3-server_linux_amd64/ cd /tmp rm teamspeak3-server_linux_amd64-3.x.y.z.tar.bz2 sudo su teamspeak --shell /bin/bash cd ~
Zum Abschluss den aktualisierten TeamSpeak 3 Server wieder starten:
./ts3server_startscript.sh start
Alternativ kann man auch den Server neustarten, wenn Teamspeak als Dienst gestartet wird.
Vor der Deinstallation muss der TeamSpeak3-Server beendet werden. Als Benutzer root
ausführen oder mittels sudo
-Kommando.
sudo /etc/init.d/ts3server stop
Das Init-Script entfernen.
sudo update-rc.d -f ts3server remove
Bei erfolgreich Aufruf erhält man folgende Meldungen:
Removing any system startup links for /etc/init.d/ts3server ... /etc/rc0.d/K10ts3server /etc/rc1.d/K10ts3server /etc/rc2.d/S80ts3server /etc/rc3.d/S80ts3server /etc/rc4.d/S80ts3server /etc/rc5.d/S80ts3server /etc/rc6.d/K10ts3server
Zum Abschluss wird der Benutzer teamspeak
inklusive seines Homeverzeichnis gelöscht:
sudo userdel -f -r teamspeak
Im Gegensatz zum alten TeamSpeak2-Server gibt es für den TeamSpeak3-Server keine integrierte Weboberfläche. Fast alles lässt sich aber mit Server Admin
-Rechten über den TeamSpeak3-Client administrieren. Der eigentliche Admin-Zugang ist eine Telnet ähnliche Query-Konsole. Damit eröffnen sich weitere Möglichkeiten. Über die offizielle Addons Webseite kann man nebst nützlichen Erweiterungen für den TeamSpeak3-Client auch einige Administrator-Werkzeuge herunterladen. Mit dabei ist unter anderem eine Weboberfläche für die Administration, ein webbasierter Viewer und diverse Integrationen in Content Management Systeme.
Diese Revision wurde am 25. Januar 2017 10:20 von lukasb314 erstellt.