Angepinnt TS3Server mit MariaDB Datenbank (Ubunut 14.04) Tutorial

    TS3Server mit MariaDB Datenbank (Ubunut 14.04) Tutorial

    Noch eins? JA!

    Lest es euch durch und entscheidet ob es euch hilft oder ich nur unnötig was ins Forum geschrieben habe. Mein Ziel ist es hier ein Beitrag zu finden, nach dem ich immer wieder meinen TS3Server installieren kann.
    1. Vorraussetzungen

      Ich verwende ein allen meinen Setups Ubuntu (momentan 14.04.02). Für dieses Tutorial habe ich aber auch Debian 7.8 getestet und es genau so hinbekommen.

      :: MariaDB ::
      Bitte verzeiht mir, das ich hier nicht auf die fachgerechte Installation von MariaDB eingehe. Dafür habe ich leider keine Zeit und finde andere Tutorial hierfür so wieso besser. Dennoch möchte ich euch natürlich nicht im Regen stehen lassen und gebe euch natürlich den Link von dem Tutorial, das ich auch für mich selber nutze.
      MariaDB - Setting up MariaDB Repositories
      - MariaDB


      :thumbsup:

      optional:

      Nginx (als Webserver für das admintool von Psychokiller)
      PHP5 (incl. php5-fpm)
      phpmyadmin (Ich verwende hiefür php5-mysqlnd und php5-mcrypt)

    2. Vorbereitung

      wir legen nun natürlich eine Datenbank an und geben anschließend einem DB-User auch die Rechte:

      Quellcode

      1. ​mysql -u root -p


      Quellcode

      1. ​CREATE DATABASE teamspeak;
      2. GRANT ALL PRIVILEGES ON teamspeak.* TO [email protected] IDENTIFIED BY 'geheimesPasswort';


      Für die Sicherheit aber auch zur besseren Verwaltung legen wir nun noch die passende Gruppe (vielleicht unnötig) und User an:

      Quellcode

      1. ​sudo groupadd -r teamspeak
      2. sudo useradd -r -m -d /opt/teamspeak -g teamspeak teamspeak


      Damit Ihr auch wisst was ihr da gemacht habt die Options:
      ​ -r creates a system user/group
      -m creates a home-dir
      -d defines the home-dir, else it would be /home/<user>
      -g defines main group

      Auf zum nächsten Punkt

    3. Installation

      Trotz des nun erstellten Home-Verzeichnises empfehle ich Downloads von anderen Sites immer mit eurem User zu machen. Wir laden mal Teamspeak-Server für Linux runter (ich verwende amd64, bitte bei bedarf ändern)

      Quellcode

      1. ​cd ~
      2. wget http://dl.4players.de/ts/releases/3.0.11.2/teamspeak3-server_linux-amd64-3.0.11.2.tar.gz
      3. tar -xzf team #TAB-Key


      Kopiert nun die Dateien ins TS-Home-Verzeichnis. Natürlich als teamspeak!!

      Quellcode

      1. sudo -u teamspeak cp -r ~/team #TAB-Key# /* /opt/teamspeak/​


      Nun noch 1 wichtige Sache damit die Datenbank auch funktioniert und wir keine unerklärlichen Abstürze erhalten. (Infos hierzu hier entnehmen)

      Quellcode

      1. ​sudo ln -s /opt/teamspeak3-server/redist/libmariadb.so.2 /opt/teamspeak3-server/libmariadb.so.2


    4. Konfiguration

      Um Teamspeak die Möglichkeit zu geben sein Daten in der Datenbank zu hinterlegen, muss es die Zugangsdaten bekommen und wissen wo sich die DB befindet. Hier schreiben wir eine ini-File mit dem Namen ts3db_mariadb.ini . Ich verwende nano, da es auch Copy&Pase über ssh unterstützt.

      Quellcode

      1. ​sudo -u teamspeak nano /opt/teamspeak/ts3db_mariadb.ini


      Inhalt ist

      Quellcode

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


      Teamspeak braucht dann noch die eigentliche Konfigurationsdatei. Diese heißt ts3server.ini (sie kann im Prinzip jeden beliebigen Namen haben)

      Quellcode

      1. ​sudo -u teamspeak nano /opt/teamspeak/ts3server.ini


      Inhalt ist

      Quellcode

      1. machine_id=
      2. default_voice_port=9987
      3. voice_ip=0.0.0.0
      4. licensepath=
      5. filetransfer_port=30033
      6. filetransfer_ip=0.0.0.0
      7. query_port=10011
      8. query_ip=127.0.0.1
      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. dbconnections=5
      16. dbclientkeepdays=30
      17. dblogkeepdays=90
      18. logpath=logs
      19. logappend=1
      20. logquerycommands=0​


      Fertig!!

      Lest umbedingt den nächsten Abschnitt!!


    5. Autostart
      Nun kommt der für mich wichtigste Punkt. In den meisten Tutorials wird natürlich von den berühmten init-Scripten geschrieben und davon gibt es mehr als genug - finde ich. Ich hab nach einer Lösung gesucht die einfach, verständlich und dennoch effektiv arbeitet. Dabei muss ich erwähnen das ich nun ca. seit 2 Jahren danach suche und es eigentlich auch schon so lange verwende aber einfach völlig übersehen habe. Gespannt? :D

      ssss Supervisord ddddd

      ja das ist das Zauberwort! Ihn zu installieren und zu betreiben ist einfacher als Pizza aufbacken. Hier alle was ihr tun müsst.

      Quellcode

      1. ​sudo apt-get install supervisor


      What??? 8|

      Ja das ist alles. Nun noch die passenden conf's speichern und los geht's. Hier meine:

      Quellcode

      1. ​[program:TS3Server]
      2. command=/opt/teamspeak/ts3server_linux_amd64 inifile=ts3server.ini
      3. directory=/opt/teamspeak
      4. environment=LD_LIBRARY_PATH=/opt/teamspeak:
      5. user=teamspeak
      6. autostart=true
      7. autorestart=true
      8. stderr_logfile=/opt/teamspeak/logs/error.log
      9. stdout_logfile=/opt/teamspeak/logs/out.log

      Quellcode

      1. ​[program:TS3_DNS]
      2. command=/opt/teamspeak/tsdns/tsdnsserver_linux_amd64
      3. directory=/opt/teamspeak/tsdns
      4. environment=LD_LIBRARY_PATH=/opt/teamspeak/tsdns:
      5. user=teamspeak
      6. autostart=true
      7. autorestart=true
      8. stderr_logfile=/opt/teamspeak/logs/tsdns_error.log
      9. stdout_logfile=/opt/teamspeak/logs/tsdns_out.log


      OK. Ich hab gelogen. Das ist nicht alles. Ihr müsst dies conf's in das conf.d-Verzeichnis /etc/supervisor/conf.d/ z.B. als TS3Server.conf und TSDNS.conf schreiben. Und zum starten müsst ihr natürlich auch noch ein Befehl ausführen.

      Quellcode

      1. sudo supervisorctl reread
      2. supervisorctl update​


      Doch nun sollten die Server laufen (TSDNS.conf nur erstellen wenn ihr TSDNS auch nutzt, sonst gibt es Fehler)

      Was Supervisord für einen Vorteil hat? Es startet automatisch, es startet nach einem Abbruch, es schreibt alles was auf die Konsole geleitet wird in das Log-File (hier out.log). Kann euer init-Script das auch?

      Infos zu supervisord hier

    6. [Platzhalter für Migration]
    Richtig gut! Vielen Dank für das super Tutorial! :)

    supervisor ist eine interessante Software. Vielen Dank, dass du sie uns gezeigt hast. ;)

    Quellcode

    1. $ apt-cache show supervisor
    2. Package: supervisor
    3. Version: 3.0a8-1.1+deb7u1
    4. Installed-Size: 724
    5. Maintainer: Anders Hammarquist <[email protected]>
    6. Architecture: all
    7. Depends: python (>= 2.3), python-medusa (>= 0.5.4), python-meld3, python-pkg-resources (>= 0.6c7), python-support (>= 0.90.0)
    8. Description-en: A system for controlling process state
    9. Supervisor is a system for controlling and maintaining process state,
    10. similar to what init does, but not intended as an init replacement.
    11. .
    12. It will manage individual processess or groups of processes that
    13. need to be started and stopped in order, and it is possible to
    14. control individual process state via an rpc mechanism, thus allowing
    15. ordinary users to restart processes.
    16. Description-md5: 168d26cd23fb2f34ecdf62f0eff9a3ed
    17. Homepage: http://supervisord.org/
    18. Tag: implemented-in::python, role::program
    19. Section: admin
    20. Priority: extra
    21. Filename: pool/main/s/supervisor/supervisor_3.0a8-1.1+deb7u1_all.deb
    22. Size: 186498
    23. MD5sum: 87edd6ac4053b0ba561b9e9028f453b7
    24. SHA1: 96d279d2818887f17e4ea78acac3e1064266cbf2
    25. SHA256: 0eedff7906ba47103e69bc0cb397624c15efb73d47f40a8352aedbf5ce69b238


    Ich habe es aufgrund der guten Qualität in unsere FAQ Roadmap mit aufgenommen.

    PS: Ich kann mir schon vorstellen, wie viele User an dem Tutorial verzweifeln, weil sie alles 1:1 Copy & Pasten und durch deine Kommentare "# TAB-Key" nichts passiert. :D
    Viele Grüße,
    Sebbo
    -----------------
    TS3tools - Software & Managed Service: www.ts3-tools.info
    4G-Server - Dein günstiger Prepaid Hoster: www.4g-server.eu
    @whfor: Supervisor ist ganz cool und nett, allerdings finde ich es etwas... übertrieben.

    Ich habe die Konfiguration möglichst optimiert, aber viel Spielraum gibt es da nicht:

    Quellcode

    1. ​[program:teamspeak_srv01]
    2. user=teamspeak
    3. directory=/home/teamspeak/srv01/
    4. command=/home/teamspeak/srv01/ts3server inifile=ts3server.ini
    5. environment=LD_LIBRARY_PATH=/home/teamspeak/srv01/:
    6. startsecs=15
    7. autostart=true
    8. autorestart=true
    9. redirect_stderr=true
    10. stdout_logfile=/var/log/teamspeak/teamspeak_srv01.log

    Es gibt auch noch einen "stop-command", allerdings habe ich den garnicht erst eingebaut... (siehe nachfolgend)

    Problem ist: Er führt alle 15 Sekunden (oder Standardmäßig sogar jede Sekunde) den obigen Command aus. Das heißt, er versucht regelmäßig den TS3 Server zu starten. Man kann allerdings nicht definieren, ob Supervisor das nur zu bestimmten Vorraussetzungen machen soll. Z.B. wenn "./ts3server_startscript.sh status" meldet, dass er offline ist oder Probleme hat.

    Solange er läuft, füllt Supervisor die Log-Datei regelmäßig mit ca. 14 Zeilen. 14 Zeilen pro Sekunde sind pro Stunde immerhin um die 50.400 Zeilen. 4.564 Zeilen entsprechend ca. 535 KB an Dateigröße. Insofern hast du nach einer Stunde ca. 5 MB. Auf den Tag gerechnet sind das dann täglich ca. 120 MB. Da hast du dann nach ca. 8,5 Tagen bereits 1 GB nur an Log-Dateien generiert...

    Das ist meiner Meinung nach zu viel des guten. Es gibt diverse Fälle, womit das ts3server_startscript.sh nicht klar kommt und dann kannst du den TS3 Server auch nicht starten. Ich bin mir gerade nicht sicher, wie die Binary mit solchen Problemen umgeht, aber ich persönlich nutze auch lieber die offizielle Lösung über das Startskript. ;)

    Mein Fazit ist daher, dass ich persönlich Supervisor nicht empfehlen kann. Ich bleibe da lieber bei meinem eigenen "kleinen" Skript: GitHub - TS3Tools/TS3Monitor: Monitor your TeamSpeak 3 and TSDNS server instances :)

    Das schreibt aktuell keine Log-Dateien, aber das werde ich noch implementieren. Dafür kann es bereits E-Mails versenden - immer oder nur im Fehlerfall. ;)
    Viele Grüße,
    Sebbo
    -----------------
    TS3tools - Software & Managed Service: www.ts3-tools.info
    4G-Server - Dein günstiger Prepaid Hoster: www.4g-server.eu