Angepinnt TeamSpeak Server Installation mit der MySQL/MariaDB Datenbank

    TeamSpeak Server Installation mit der MySQL/MariaDB Datenbank

    Hallo,

    seit der Version 3.0.11 (Build 1408694433) wurde die MySQL Datenbank durch den "Fork" MariaDB ersetzt. Daher möchte ich euch hier gerne zeigen, wie ihr euch einen neuen TeamSpeak Server mit der MariaDB einrichtet.

    Beachtet bitte, dass sich das Tutorial einzig und allein auf eine Neuinstallation bzw. Erst-Installation bezieht und nicht als Upgrade-Tutorial dient! Das Tutorial kann auch für die MySQL Datenbank genutzt werden. Ihr müsst hierzu dann nur immer "mariadb" durch "mysql" ersetzen. ;)

    Inhaltsverzeichnis
    1. Server vorbereiten
    2. Server einrichten/installieren
    3. Server Admin Rechte erhalten
    Hinweis: Alles wird anhand eines Debian Systems gezeigt. Unter Umständen müsst ihr also die Befehle an eure Distribution anpassen!

    Bevor wir anfangen, müssen wir erstmal den
    1. Server vorbereiten
      Wir benötigen erstmal die Server-Dateien. Hierfür laden wir sie einfach von TeamSpeak herunter und entpacken sie: TeamSpeak - Downloads (ab Version 3.0.11)
      Wichtig: Hier gelten die selben Regeln wie bei jeder anderen Installation. Siehe auch hier: Teamspeak Server auf Linux installieren

      Danach müssen wir überprüfen, ob das Paket "libmariadb2" installiert ist, denn das ist die Bibliothek, die für die MariaDB Unterstützung gebraucht wird. Hierfür führen wir auf unserem Linux System einfach folgenden Befehl aus:

      Quellcode

      1. $ dpkg -s libmariadb2
      2. dpkg-query: package 'libmariadb2' is not installed and no information is available
      3. Use dpkg --info (= dpkg-deb --info) to examine archive files,
      4. and dpkg --contents (= dpkg-deb --contents) to list their contents.

      Wie man hier sieht, ist es zum Beispiel nicht installiert.

      Ebenso sieht man das, wenn man im Verzeichnis des TeamSpeak Servers folgenden Befehl ausführt:

      Quellcode

      1. $ ldd libts3db_mariadb.so
      2. linux-vdso.so.1 (0x00007fff43fff000)
      3. libmariadb.so.2 => not found
      4. libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f211d5dd000)
      5. libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f211d234000)
      6. /lib64/ld-linux-x86-64.so.2 (0x00007f211dbe0000)


      Um es zu installieren, benötigt man den SID Repository von Debian. Oder man downloadet und installiert es manuell:

      Quellcode

      1. wget http://ftp.de.debian.org/debian/pool/main/m/mariadb-client-lgpl/libmariadb2_2.0.0-1_amd64.deb
      2. dpkg -i libmariadb2_2.0.0-1_amd64.deb


      Hier kann es vorkommen, dass man eine zu alte "libc6" Version installiert hat und dann hilft es nur, das System zu aktualisieren. Wenn es mit den aktuellen Repositorys und ohne den SID Repository bereits aktuell ist, dann müsst ihr den SID Repository noch inkludieren und das System aktualisieren. Danach könnt ihr - wie ich - das Paket einfach per Paketmanager installieren:

      Quellcode

      1. aptitude install libmariadb2


      +++ UPDATE 2014-09-04 +++
      Anstatts den SID Repository zu nutzen, kann auch folgende Repository genutzt werden: MariaDB - Setting up MariaDB Repositories
      - MariaDB

      Bei Debian Wheezy wäre das zum Beispiel folgender:

      Quellcode

      1. deb http://ftp.hosteurope.de/mirror/mariadb.org/repo/5.5/debian wheezy main
      2. deb-src http://ftp.hosteurope.de/mirror/mariadb.org/repo/5.5/debian wheezy main

      +++ UPDATE ENDE +++

      Und voila - es ist installiert/vorhanden:

      Quellcode

      1. $ ldd libts3db_mariadb.so
      2. linux-vdso.so.1 (0x00007fff4e16e000)
      3. libmariadb.so.2 => /usr/lib/x86_64-linux-gnu/libmariadb.so.2 (0x00007fa287de0000)
      4. libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fa287adf000)
      5. libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa287736000)
      6. /lib64/ld-linux-x86-64.so.2 (0x00007fa28832f000)
      7. libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fa28751b000)
      8. libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fa2872fe000)
      9. libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fa2870f9000)
      10. libssl.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0 (0x00007fa286e99000)
      11. libcrypto.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x00007fa286aa3000)


      So... Nachdem der Server prinzipiell funktionsfähig wäre, brauchen wir noch eine Datenbank. Hierfür installieren wir sie einfach mal:

      Quellcode

      1. aptitude install mariadb-server-5.5


      Dann loggen wir uns als root-User in der Datenbank ein und erstellen eine neue leere Datenbank, sowie einen extra User dafür:

      Quellcode

      1. mysql -u root -p

      Passwort eingeben, was ihr während der Installation der Datenbank gewählt habt...

      Quellcode

      1. CREATE DATABASE teamspeak;

      Die neue Datenbank heißt z.B. "teamspeak".

      Quellcode

      1. GRANT ALL PRIVILEGES ON teamspeak.* TO 'teamspeak'@'localhost' IDENTIFIED BY 'geheimesPasswort';

      Beim letzten Befehl geben wir dem User "teamspeak" alle Rechte auf die Datenbank "teamspeak".

      Danach drücken wir noch die Tastenkombination "Strg" und "D", um aus der SQL-Shell raus zu gehen.

      Okay, das war der Datenbank-Teil und somit eigentlich auch das schwierigste. ;)

      Im root unseres TeamSpeak Server-Verzeichnisses erstellen wir nun die Datei "ts3db_mariadb.ini", welche wie folgt aufgebaut ist:

      Quellcode

      1. [config]
      2. host=127.0.0.1
      3. port=3306
      4. username=teamspeak
      5. password=geheimesPasswort
      6. database=teamspeak


      Ebenso benötigen wir noch eine "ts3server.ini", welche wie folgt aufgebaut ist und im selben Verzeichnis liegt:

      Quellcode

      1. machine_id=1
      2. default_voice_port=9987
      3. voice_ip=192.168.1.20
      4. licensepath=
      5. filetransfer_port=30033
      6. filetransfer_ip=0.0.0.0
      7. query_port=10011
      8. query_ip=192.168.1.20
      9. query_ip_whitelist=query_ip_whitelist.txt
      10. query_ip_blacklist=query_ip_blacklist.txt
      11. dbplugin=ts3db_mariadb
      12. dbpluginparameter=ts3db_mariadb.ini
      13. dbsqlpath=sql/
      14. dbsqlcreatepath=create_mariadb/
      15. dblogkeepdays=90
      16. logpath=logs
      17. logquerycommands=0
      18. dbclientkeepdays=30


      Gut, jetzt haben wir die besten bzw. alle Bedingungen. ;)
    2. Server einrichten/installieren
      Sobald alle notwendigen Vorbereitungen getroffen wurden, starten wir den TeamSpeak Server einfach in folgender Reihenfolge:

      Quellcode

      1. ./ts3server_minimal_runscript.sh start inifile=ts3server.ini

      Wobei hier erstmal sehr viel Ausgabe-Text erscheint:
      2014-08-31 02:21:20.380175|INFO |ServerLibPriv | | TeamSpeak 3 Server 3.0.11 (2014-08-22 08:00:33)
      2014-08-31 02:21:20.380315|INFO |ServerLibPriv | | SystemInformation: Linux 3.2.0-4-amd64 #1 SMP Debian 3.2.60-1+deb7u1 x86_64 Binary: 64bit
      2014-08-31 02:21:20.380383|INFO |ServerLibPriv | | Using hardware aes
      2014-08-31 02:21:20.381410|INFO |DatabaseQuery | | dbPlugin name: MariaDB plugin, (c)TeamSpeak Systems GmbH
      2014-08-31 02:21:20.381483|INFO |DatabaseQuery | | dbPlugin version: 1
      2014-08-31 02:21:21.159824|INFO |SQL | | db_CreateTables() tables created

      ------------------------------------------------------------------
      I M P O R T A N T
      ------------------------------------------------------------------
      Server Query Admin Account created
      loginname= "serveradmin", password= "ZODFd+4f"
      ------------------------------------------------------------------


      2014-08-31 02:21:21.377915|WARNING |Accounting | | Unable to find valid license key, falling back to limited functionality
      2014-08-31 02:21:22.401903|INFO | | | Puzzle precompute time: 1015
      2014-08-31 02:21:22.402037|INFO |FileManager | | listening on 0.0.0.0:30033
      2014-08-31 02:21:22.406389|INFO |VirtualSvrMgr | | executing monthly interval
      2014-08-31 02:21:22.406604|INFO |VirtualSvrMgr | | reset virtualserver traffic statistics
      2014-08-31 02:21:22.560189|INFO |VirtualServer | 1| listening on 192.168.1.20:9987
      2014-08-31 02:21:22.567021|INFO |VirtualServer | 1| client 'server'(id:0) added privilege key for servergroup 'Server Admin'(id:6)
      2014-08-31 02:21:22.567050|WARNING |VirtualServer | 1| --------------------------------------------------------
      2014-08-31 02:21:22.567069|WARNING |VirtualServer | 1| ServerAdmin privilege key created, please use the line below
      2014-08-31 02:21:22.567087|WARNING |VirtualServer | 1| token=LdDrYFbLFQxBckC2baD0X2euXSF+WHRXeojLme4O
      2014-08-31 02:21:22.567103|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=LdDrYFbLFQxBckC2baD0X2euXSF+WHRXeojLme4O
      ------------------------------------------------------------------


      2014-08-31 02:21:22.576894|INFO |CIDRManager | | updated query_ip_whitelist ips: 127.0.0.1,
      2014-08-31 02:21:22.577130|INFO |Query | | listening on 192.168.1.20:9987

      Hier muss man sich dann alles rot markierte unbedingt sichern/raus schreiben bzw. kopieren!

      Sobald man das hat, kann man mit Hilfe der Tastenkombination "Strg" und "C" das Minimal-Runscript beenden.

      Als nächstes passen wir unsere "ts3server_startscript.sh" Datei so an, dass man den Parameter "inifile=ts3server.ini" nicht jedesmal angeben muss - vor allem, weil man es gerne mal vergessen kann. Hierfür bearbeiten wir die Datei in einem Text-Editor und ersetzen die folgende Zeile...

      Quellcode

      1. COMMANDLINE_PARAMETERS="${2}" #add any command line parameters you want to pass here

      ...durch diese...

      Quellcode

      1. COMMANDLINE_PARAMETERS="inifile=ts3server.ini" #add any command line parameters you want to pass here

      ...und speichern, sowie schließen die Datei. :)

      Jetzt starten wir den TeamSpeak Server ganz normal mit der MariaDB:

      Quellcode

      1. $ ./ts3server_startscript.sh start
      2. Starting the TeamSpeak 3 server
      3. TeamSpeak 3 server started, for details please view the log file


      Und siehe da, unsere Log-Datei sagt, es funktioniert:

      logs/ts3server_2014-08-31__02_29_06.991662_0.log schrieb:

      2014-08-31 02:29:06.991699|INFO |ServerLibPriv | | TeamSpeak 3 Server 3.0.11 (2014-08-22 08:00:33)
      2014-08-31 02:29:06.991765|INFO |ServerLibPriv | | SystemInformation: Linux 3.2.0-4-amd64 #1 SMP Debian 3.2.60-1+deb7u1 x86_64 Binary: 64bit
      2014-08-31 02:29:06.991787|INFO |ServerLibPriv | | Using hardware aes
      2014-08-31 02:29:06.992955|INFO |DatabaseQuery | | dbPlugin name: MariaDB plugin, (c)TeamSpeak Systems GmbH
      2014-08-31 02:29:06.992983|INFO |DatabaseQuery | | dbPlugin version: 1
      2014-08-31 02:29:06.996157|WARNING |Accounting | | Unable to find valid license key, falling back to limited functionality
      2014-08-31 02:29:07.963338|INFO | | | Puzzle precompute time: 958
      2014-08-31 02:29:07.963475|INFO |FileManager | | listening on 0.0.0.0:30033
      2014-08-31 02:29:07.982137|INFO |CIDRManager | | updated query_ip_whitelist ips: 127.0.0.1,
      2014-08-31 02:29:07.982265|INFO |Query | | listening on 192.168.1.20:9987


    3. Server Admin Rechte erhalten
      Jetzt müssen wir uns nur noch mit einem TeamSpeak Client auf unseren neuen Server verbinden und uns unsere Server Admin-Rechte holen. Hierfür geben wir einfach den Token, den wir uns vorhin raus geschrieben haben, im entsprechenden Feld ein:
      1. Rechte
      2. Berechtigungsschlüssel
    Fertig! Ich wünsche euch viel Spaß damit! ;)

    Für Fragen, Verbesserungsvorschläge und/oder Kommentare bin ich gerne offen: Schreibt's einfach in die Kommentare. Danke! :)
    Viele Grüße,
    Sebbo
    -----------------
    TS3tools - Software & Managed Service: www.ts3-tools.info
    4G-Server - Dein günstiger Prepaid Hoster: www.4g-server.eu
    Ich hatte vor, ein Migrationstutorial zu verfassen, aber wenn es nur um das Update geht, wenn man die MySQL Variante weiter nutzt, kann ich das natürlich auch machen. :)

    Werde ich mir für Freitag Abend oder den Samstag vornehmen, ok? :)
    Viele Grüße,
    Sebbo
    -----------------
    TS3tools - Software & Managed Service: www.ts3-tools.info
    4G-Server - Dein günstiger Prepaid Hoster: www.4g-server.eu
    Hi,

    sehr gute Anleitung. Mir ist aber aufgefallen, das mit

    Quellcode

    1. GRANT ALL PRIVILEGES ON *.* TO 'teamspeak'@'localhost' IDENTIFIED BY 'geheimesPasswort';
    die Rechte des Benutzers "teamspeak" global angewandt werden. Der Befehl

    Quellcode

    1. use teamspeak;
    hat daran, zumindest bei mir, nichts geändert.

    Quellcode

    1. GRANT ALL PRIVILEGES ON teamspeak.* TO 'teamspeak'@'localhost' IDENTIFIED BY 'geheimesPasswort';
    funktioniert dagegen wie gewünscht.

    Grüße
    Hallo,

    vielen Dank für dein Feedback!

    Wenn du erst die Datenbank auswählst und dann dort mit "*.*" die Rechte verteilst, dann heißt das, dass die Rechte auf die aktuell ausgewählte Datenbank für alle Tabellen gesetzt wird.

    Wenn du die Datenbank nicht selektierst und dann "teamspeak.*" ausführst, dann sagst du lediglich das selbe, nur dass du es von globaler Seite aus auf eine spezifische Datenbank setzt.

    Funktioniert also beides. "*.*" dient beim ersten nur als Platzhalter für die Datenbank und da dort eine selektiert ist, entspricht das dann "teamspeak".
    Viele Grüße,
    Sebbo
    -----------------
    TS3tools - Software & Managed Service: www.ts3-tools.info
    4G-Server - Dein günstiger Prepaid Hoster: www.4g-server.eu
    Ja ich weiß, so sollte es sein, nur hat es eben bei mir nicht funktioniert.

    Quellcode

    1. MariaDB [(none)]> use teamspeak;
    2. Database changed
    3. MariaDB [teamspeak]> grant all privileges on *.* to 'teamspeak'@'localhost' identified by 'xxx';
    Rechte wurden global erstellt.
    Das soll auch nur ein Hinweis sein, dass man die Rechte noch einmal überprüfen sollte.
    Hi,

    der Guide ist sehr gut gemacht und hat mir im Endeffekt sehr geholfen. Eine Anmerkung habe ich aber, wenn man Debian Wheezy verwendet.

    Hier kann es vorkommen, dass man eine zu alte "libc6" Version installiert hat und dann hilft es nur, das System zu aktualisieren. Wenn es mit den aktuellen Repositorys und ohne den SID Repository bereits aktuell ist, dann müsst ihr den SID Repository noch inkludieren und das System aktualisieren.


    Das stimmt so nicht. Im Ordner des Teamspeak Servers existiert ein Verzeichnis "redist". In diesem liegt eine Version der "libmariadb2.so", die man auch mit libc6 2.13 verwenden kann. Am besten erstellt man einen Symlink auf die Datei in /usr/lib oder kopiert die Datei direkt dorthin. Die erste Variante würde ich aber eher empfehlen, da man so neue Versionen die mit TS3 ausgeliefert werden direkt einbindet.

    In der Doku von Teamspeak steht zwar, dass man die Datei nur in das Hauptverzeichnis des TS kopieren soll, das hat bei mir aber nicht funktioniert (ldd findet die Datei dann nicht).