ubuntuusers.de

Du betrachtest eine alte Revision dieser Wikiseite.

TeamSpeak-Server

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


Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

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.

Hinweis:

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.

Installation

Der TeamSpeak 3 Server lässt sich nicht über die Paketverwaltung installieren, sondern muss manuell installiert werden.

Hinweis!

Fremdsoftware kann das System gefährden.

Vorbereitung

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.

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 

Herunterladen und Entpacken

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 ~ 

Einrichten der Konfiguration

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

Experten-Info:

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.

Der erste Serverstart

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| --------------------------------------------------------

Server als Dienst starten

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

Hinweis:

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.

Lizenzdatei

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

Achtung!

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.

Experten-Info:

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.

Aktualisierung

Achtung!

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.

Deinstallation

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 

Erweiterungen

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 9. Mai 2017 00:11 von ubot erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Netzwerk, Server, Kommunikation, Internet, unfreie Software, VoIP, TeamSpeak