Mattermost auf QNAP NAS

Dieser Blog soll unter anderem dazu dienen, eigenes Wissen zu bewahren. Ich freue mich natürlich über den zweiten Effekt, dass andere Leser auch Ihren Nutzen davon haben. Mittlerweile kommt ja zum einen oder anderen Thema auch schon ein kleines Gespräch zur Unterstützung zustande. Dies geschieht zum einen über direkte Kontaktaufnahme und zum anderen über Kommentare. Danke für die Beteiligung!

Hier ist nun ein Thema, dass vielleicht nicht zum allgemeinen Repertoire dieses Blogs gehört, aber Wissen enthält, das ich gesichert haben will. Vielleicht hilft es ja auch anderen.

Neben diversen Socialmedia  und Chatting-Anwendungen wie Telegram, Instagram, Signal und Whatsapp gibt es eine eher für den kleineren Kreis gedachten Anwendung: MATTERMOST

Der Vorteil von Mattermost ist neben der freien/kostenlosen Verfügbarkeit die Möglichkeit es auf einem eigenen Server hosten zu können. Damit scheidet das Schnüffeln Fremder in privaten Daten zum großen Teil aus, da die Daten ja daheim liegen.

Aber ….  So ganz einfach ist es nicht. Wen es interessiert, der darf gerne weiterlesen. Aber Vorsicht: Hier kommt Nichts mit Holz, Kunststoff, CNC, GCODE etc.

QNAP bietet für seine NAS ein fertiges Mattermost-Paket im Appstore an. Leider ist das nicht aktuell. Mit Version 5.0.0.7 ist es eher veraltet im Vergleich zur aktuellen Version 5.23. Hauptproblem bezüglich eines neuen Pakets ist die Datenbank. Auf den QNAP NAS läuft MariaDB in eine 5er Version. Damit läuft aber das aktuelle Mattermost nicht mehr.

So wird dann aus einer Baustelle gleich zwei: Eine neue Datenbank muss her, um dann ein neues Mattermost zu installieren.

Ich habe mir in den Weiten des Internets dann mal angesehen, wie man an eine aktuelle Datenbank kommt. Die MariaDB auf dem NAS zu aktualisieren geht zumindest theoretisch. Ich erinnere mich da an einen Thread mit unendlichen (gefühlt) Problemen. Außerdem ist das ein ziemlicher Eingriff in das NAS-System selbst. Das lasse ich dann lieber. Es gibt auch ein fertiges MariaDB10-Paket. Es kostet 8€. In einem Thread kann man die Entstehungsgeschichte gut miterleben und miterleiden. Es scheint aber jetzt zu laufen. Ich mochte die Lösung aber nicht. Übrigens hat der Ersteller auch ein kostenloses aktuelles Mattermost-Paket zu bieten. Da gab es wohl einen Zusammenhang.

Ich habe einen anderen Weg gewählt um in das Betriebssystem des NAS möglichst nicht einzugreifen. Über die Container Station kann man auch sogenannte Docker-Container installieren und laufen lassen. Solche Docker-Container gibt es für nahezu jeden Anwendungsfall fertig konfektioniert. Meist sogar kostenlos.

 

Ein weiterer Vorteil dieser Container ist die völlige Isolation vom sonstigen Datenverkehr auf dem NAS. Sogar eine eigene IP-Adresse lässt sich für jeden Container zuweisen.

Da viele Beispiele von Mattermost-Installationen mit PostgreSQL-Datenbanken laufen, habe ich zunächst dafür einen Container gesucht und gefunden. Leider zeigte sich dann im Verlauf, dass das Verbinden mit der Datenbankmanagement-Software (phpMyAdmin) Komplikationen aufgrund des vom Standard abweichenden Ports Schwierigkeiten bereitete.

Ein Paket mit einer aktuellen MySQL-Installation wurde ebenfalls verworfen, da das Paket bezüglich der Konfiguration undurchschaubar erschien. Problematisch war hier speziell die neue Authentifizierung ab Version 8.

Beide Datenbanken wären sicherlich geeignet, nur wollte ich kein neues Studium anfangen um eine Installation zu tätigen. Von Linux habe ich nicht sonderlich viel Ahnung.

Ein Paket mit MariaDB in Version 10 gibt es auch. Das war dann auch so handhabbar, wie ich mir das vorstelle.

25 fertige Pakete fand ich über die Suche, die man direkt in der Oberfläche der Container Station anstoßen kann. Ich habe mich für die erste, offenbar offizielle, Version entschieden.

Über „Installieren“ wird sowohl der Download als auch in der Folge die Installation gestartet. Sobald das durchgelaufen ist, löschen wir die frisch angelegte Installation auch wieder.

In der gleichen Oberfläche suchen wir jetzt (nach Deinstallation !) nochmal nach der MariaDB, diesmal aber über die Auswahl „Lokal“, denn wir wollen das bereits heruntergeladene Image nutzen. Der Vorteil dieser Installationsmethode ist, dass jetzt alle Umgebungsvariablen und erweiterten Informationen bereits befüllt sind.

Das CPU-Limit und auch das Arbeitsspeicherlimit muss nicht angepasst werden. Die Verwaltung durch die Containerstation funktioniert hervorragend. Weiter geht es mit „Erweiterte Einstellungen >>“

Die Umgebungsvariablen sind bereits eingetragen. Aber eine fügen wir über den Button „Hinzufügen“ noch hinzu. MariaDB benötigt in einer lokalisierten Version keine Angabe des root-Passworts. Wir verwenden die Datenbank aber rein netzwerktechnisch gesehen nicht lokal.

MYSQL_ROOT_PASSWORD wird mit einem Passwort der eigenen Wahl angelegt.

In der Netzwerkeinstellung muss Einiges umgestellt werden:

Der Container Hostname sollte passend gewählt werden.

Die MAC-Adresse sollte über das kleine Symbol neben der MAC-Adresse festgelegt werden. Der Button generiert immer eine neue Adresse, die dann aber fest mit dieser Instanz verbunden wird.

Der Netzwerkmodus muss auf „Bridge“ gestellt werden.

Bei der Schnittstelle wird die tatsächlich vorhandene Schnittstelle ausgewählt und es wird auf statische IP umgeschaltet. In den Feldern darunter wird die gewünschte freie IP aus dem Adressraum des eigenen Netzwerks eingetragen. Die Netzmaske kann so bleiben und das Gateway wird gegebenenfalls angepasst. In der Regel ist das die IP des Routers. Der Mattermost-Container wird später ebenfalls eine eigene IP bekommen.

Unter Freigabe … empfielt sich eine Eintragung, die einem das Leben später einmal vereinfachen kann. Die kompletten Konfigurationsdaten werden in den Untiefen des NAS abgespeichert. Damit man auch später leicht z.Bsp. auf die Konfiguration zugreifen kann, sollte man den relativen Pfad, der oben genannt wird, bei Volumen vom Host einhängen. Dazu müssen diese Ordner aber zunächst über die Filestation erzeugt werden. Dazu wiederum muss man sich für den Standardordner „Container“ zunächst über die Verwaltung die Rechte holen. Vorsicht beim Kopieren des relativen Pfades. Da ist am Schluss ggfls. ein TAB enthalten, was unten natürlich nicht stehen darf.

Nach allen diesen Änderungen darf jetzt die Datenbank erstellt werden. In der Übersicht ist sie nach kurzer Zeit mit einem grünen Kasten (Wird ausgeführt) zu sehen.

Dummerweise kann man jetzt aber noch nicht mit phpMyAdmin (normalerweise Standard-APP auf dem QNAP NAS) auf die Datenbank zugreifen. An den Setup-Assistenten kommt man auch nicht dran. Wir müssen mit putty über SSH auf das NAS zugreifen um die Konfigurationsdatei von phpMyAdmin zu ändern. Dazu verweise ich auf diesen Link, der das Vorgehen sehr gut beschreibt. Ich habe den ersten Weg, das direkte Ändern des Konfigurationsfiles, gewählt. Das Freischalten des Wizzards scheint mir wesentlich komplizierter. Der Zugriff muss mit dem „admin“-User vorgenommen werden. Es geht bei dieser Änderung darum, phpMyAdmin die neue Datenbank bekannt zu machen, also den zweiten Server einzutragen. Die Vorlage kann fast komplett übernommen werden. Lediglich die richtige IP-Adresse, – die, die wir oben gewählt haben -, muss eingetragen werden. Kein User!! Kein Password!!

In aller Kürze mein gewählter Weg:

Vorsicht, dieser Weg sichert nicht die alte Version! Sie arbeiten direkt am System!

Über putty mit admin-Zugang zugreifen.

Mit „cd“ zum Verzeichnis „/share/Web/phpMyAdmin“ wechseln.

Rechte anpassen mit chmod o+w config.inc.php

Mit vi config.inc.php den vi-Editor aufrufen und die Datei anpassen.

Rechte zurücksetzen mit chmod o-rw config.inc.php

Ab jetzt kann mit phpMyAdmin auch die neue Datenbank aufgerufen werden. Bei der Anmeldung gibt es jetzt unter UserID (root) und Password ein Dropdown für den zu verbindenden Datenbankserver. Der Port ist nebenbei bemerkt wieder 3306.

In phpMyAdmin muss jetzt auf der neuen MariaDB10, die wir gerade zum Laufen gebracht haben, die Datenbank für Mattermost angelegt werden. Wie diese benannt wird, ist eine Geschmacksfrage. Der Kreativität sind keine Grenzen gesetzt, – nur muss man den Namen bei Einrichtung von Mattermost kennen.

Weiter geht es mit der Anlage eines neuen Users für das Mattermost-System. Die Rechte vergeben wir lieber über die Konsole in phpMyAdmin. Irgendwie gibt es immer wieder Probleme wenn man dafür die grafische Oberfläche von phpMyAdmin benutzt:

grant all privileges on datenbankname.* to datenbankuser;
flush privileges;

datenbankname und datenbankuser muss durch Ihre Werte ersetzt werden.

Man kann natürlich alles über die Konsole machen. Also alternativ:

create database datenbankname;
create user datenbankuser identified by 'datenbankuserpw';
grant all privileges on datenbankname.* to datenbankuser;
flush privileges;

 

Nun wenden wir uns der Installation des Mattermost-Paketes zu. In weiten Teilen läuft die Installation ähnlich wie die vorherige ab. In der Oberfläche der Container Station wird zunächst das Mattermost-Paket gesucht.

 

Von Mattermost gibt es sowohl eine kostenpflichtige Version als auch die kostenfreie. Ich wähle hier die kostenfreie Version, – die Team Edition. Für den Privatmann sollte diese Version voll ausreichen.

Wiederum wird dieser Docker über diese GUI erstellt und dann auch gleich wieder in der Übersicht gelöscht. Anschließend wird dann wieder das bereits heruntergeladene Paket in „Lokal“ gesucht und mit „Erstellen“ wird der Prozess gestartet.

In den Umgebungsvariablen steht diesmal nur die Pfaderweiterung. Keine Änderung notwendig.

Zu Netzwerk gilt das oben Gesagte: Bridgemodus, feste IP. Natürlich darf die IP nicht mit der von der Datenbank übereinstimmen, aber das verhindert auch die Container Station. An den Port-Adressen sollten keine Änderungen vorgenommen werden. 8065 ist beispielsweise der Standardport, über den die Nutzer und Apps später zugreifen.

Im Abschnitt „Gerät“ gibt es auch hier nichts zu tun.

Dafür müssen aber im Abschnitt Freigabe gleich vier Einhängepunkte verbunden werden. Wie schon oben beschrieben sollten erst die Verzeichnisse mit der File Station erzeugt werden . Die Rechte dazu haben wir ja schon aus dem vorherigen Schritt. Dann erstellen wir die Links. Bei mir sehen die Zuordnungen so aus …

Auch dieser Docker wird jetzt mit diesen Einstellungen erstellt. Aber er wird so nicht in Betrieb bleiben, da er die Datenbank nicht finden kann. Dafür ist nochmal eine Konfiguration notwendig.

Mittels der Filestation und dem Text Editor (falls vorher als Paket installiert) kann man die config.json editieren. Das geht aber nur, wenn man als „admin“ eingeloggt ist. Als Schutzmaßnahme ist das bei mir aber nicht so und ich kann nur jedem raten, den Admin-User in der Oberfläche nicht zu nutzen.

Diesmal hilft uns winscp. Über dieses Verbindungstool wird mit dem Admin-User eine Verbindung zum NAS aufgebaut und dann zum richtigen Verzeichnis gewandert. Es geht natürlich auch über putty und den vi-Editor.

Über das Rechtsklick-Menü wird die Datei config.json editiert. Wir suchen uns folgenden Inhalt und passen ihn an.

„SqlSettings“: {
„DriverName“: „mysql“,
„DataSource“: „datenbankuser:datenbankuserpw@tcp(192.168.xxx.xxx:3306)/datenbankname?charset=utf8mb4,utf8\u0026readTimeout=30s\u0026writeTimeout=30s“,
„DataSourceReplicas“: [],

Die obigen Zeilen müssen natürlich mit den eigenen Daten für die Datenbank befüllt werden. Der Port 3306 ist der Standardport der Datenbank, sofern es MySQL oder MariaDB ist. Bei PostgreSQL ist es ein anderer Port. Bei PostgreSQL muss aber auch ein anderer Treiber angegeben werden. Es ist dann nicht mehr „mysql“. Direkt vor dem Port ist die anfangs festgelegte IP für die Datenbank anzugeben. Bitte darauf achten, dass die zusätzlichen Zeichen, wie Anführungstriche, Klammern, Slash, Backslash, Fragezeichen, Doppelpunkt, @  erhalten bleiben. Ich habe diese Zeilen aus meiner Konfig herauskopiert und nur die persönlichen Daten durch Dummies ersetzt.

Speichern nicht vergessen.

Da der Mattermost Container sicherlich nach der Installation durch die Container Station gestoppt wurde, muss er jetzt in der Übersicht wieder neu gestartet werden. Vorher sollte sichergestellt sein, dass die Datenbank läuft. 

In der Übersicht wird das laufende Paket durch einen grünen Würfel angezeigt. Sollte Mattermost nicht laufen, liegt es meist an der Datenbankanbindung. Mattermost versucht beim Start sofort die Datenbank zu finden und neben Tests auch die Konfiguration in die Datenbank zu schreiben. Schlägt das fehl, wird Mattermost wieder angehalten. Wenn man auf den Namen klickt, gelangt man zu einer Übersicht mit Konsolenansicht. Die Konsole zeigt alle Meldungen an.

Ist tatsächlich die Datenbankanbindung das Problem, muss man nochmal die config.json kontrollieren. Sind alle vorhin getätigten Anpassungen richtig eingetragen? Wenn das alles stimmt, sollte man in der Datenbank nochmal den User löschen und komplett mit den oben genannten Befehlen neu aufbauen. Oft liegt es daran, dass die über die phpMyAdmin gemachten Änderungen nicht greifen. Der Weg über die Konsole scheint aber immer zu funktionieren.

Gehen wir davon aus, dass Mattermost jetzt läuft. Dann kann über den Browser die Adresse IP_von_Mattermost:8065 aufgerufen werden. Dort kann dann der erste User angelegt werden. Der erste User ist dann zunächst auch der Administrator für diese Mattermost-Installation.

Die Konfiguration in der Mattermost-Oberfläche wird an vielen Stellen im Internet erörtert. Ich kann hier nicht auf alle Anforderungen eingehen. Natürlich ist auch die Mattermost-Seite selbst ein guter Anlaufpunkt.

Bis jetzt ist aber unser Mattermost nur im eigenen Netzwerk erreichbar. Will man Mattermost auch unterwegs nutzen, – das wird wohl der Standard sein -, braucht man in der Regel einen dyndns-Dienst. Ich kann hier selfhost.eu empfehlen. Mein Blog läuft übrigens seit seines Bestehens über diesen kostenlosen Dienst. Ist dieser Schritt getan, muss noch im Router eine Freigabe eingerichtet werden. Der Port 8065 muss auf die interne Adresse (die IP) unserer Mattermost-Installation weitergeleitet werden.

Das i-Tüpfelchen unserer Installation ist die Benutzung von Mattermost über die entsprechende APP für iOS oder Android. Viele Spaß beim Chatten und Übermitteln von Fotos und Daten!

Ich hoffe, dass ich mit diesem Beitrag nachvollziehbar erklären konnte, wie man zu einer funktionierenden Mattermost-Installation kommt. Fragen und Anregungen sind natürlich auch zu diesem Beitrag herzlich willkommen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.