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.

    • 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


      :thumbup:


      optional:


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


    • Vorbereitung


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

      Code
      mysql -u root -p


      Code
      CREATE DATABASE teamspeak;GRANT ALL PRIVILEGES ON teamspeak.* TO teamspeak@localhost 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:

      Code
      sudo groupadd -r teamspeaksudo 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


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


      Code
      cd ~wget http://dl.4players.de/ts/releases/3.0.11.2/teamspeak3-server_linux-amd64-3.0.11.2.tar.gztar -xzf team #TAB-Key


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


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

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


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


      Code
      sudo -u teamspeak nano /opt/teamspeak/ts3db_mariadb.ini


      Inhalt ist

      Code
      [config]host=127.0.0.1port=3306username=teamspeakpassword=geheimesPasswortdatabase=teamspeak


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

      Code
      sudo -u teamspeak nano /opt/teamspeak/ts3server.ini


      Inhalt ist

      Code
      machine_id=default_voice_port=9987voice_ip=0.0.0.0licensepath=filetransfer_port=30033filetransfer_ip=0.0.0.0query_port=10011query_ip=127.0.0.1query_ip_whitelist=query_ip_whitelist.txtquery_ip_blacklist=query_ip_blacklist.txtdbplugin=ts3db_mariadbdbpluginparameter=ts3db_mariadb.inidbsqlpath=sql/dbsqlcreatepath=create_mariadb/dbconnections=5dbclientkeepdays=30dblogkeepdays=90logpath=logslogappend=1logquerycommands=0


      Fertig!!


      Lest umbedingt den nächsten Abschnitt!!


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


      Code
      sudo apt-get install supervisor


      What??? 8|


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

      Code
      [program:TS3Server]command=/opt/teamspeak/ts3server_linux_amd64 inifile=ts3server.inidirectory=/opt/teamspeakenvironment=LD_LIBRARY_PATH=/opt/teamspeak:user=teamspeakautostart=trueautorestart=truestderr_logfile=/opt/teamspeak/logs/error.logstdout_logfile=/opt/teamspeak/logs/out.log


      Code
      [program:TS3_DNS]command=/opt/teamspeak/tsdns/tsdnsserver_linux_amd64directory=/opt/teamspeak/tsdnsenvironment=LD_LIBRARY_PATH=/opt/teamspeak/tsdns:user=teamspeakautostart=trueautorestart=truestderr_logfile=/opt/teamspeak/logs/tsdns_error.logstdout_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.


      Code
      sudo supervisorctl reread
      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

    • [Platzhalter für Migration]
    • Official Post

    Richtig gut! Vielen Dank für das super Tutorial! :)


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


    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

    • Official Post

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

    Code
    [program:teamspeak_srv01]
    user=teamspeak
    directory=/home/teamspeak/srv01/
    command=/home/teamspeak/srv01/ts3server inifile=ts3server.ini
    environment=LD_LIBRARY_PATH=/home/teamspeak/srv01/:
    startsecs=15
    autostart=true
    autorestart=true
    redirect_stderr=true
    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. ;)