Mattermost Installieren

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen

Über Mattermost

Mattermost ist ein Chat-Server unter einer freien MIT Lizenz. Der Server ist in der Programmiersprache go implementiert.

Mattermost ist eine selbst-gehostete Alternative zum Cloud-Dienst Slack oder zum proprietären HipChat.

Vorbereitungen

Die hier beschriebene Installation benötigt bei Hostsharing die Paket-Option "Eigener Daemon". Im Bereich des Shared Hosting ist diese Option kostenpflichtig, auf einem Managed Server melden Sie den "Eigener Daemon" an. Bei der Anmeldung geben Sie einen User an, der später als Service-User dient, d.h. unter dieser User-Kennung läuft später der Mattermost-Server. Der User sollte vor der Anmeldung mit HSAdmin angelegt werden. Als User nutzen wir im Folgenden "xyz00-chat".

Ebenfalls mit HSAdmin wird ein (Sub-)Domain für den Chat-Dienst aufgeschaltet. Die Domain muss dem User "xyz00-chat" zugeordnet werden. In dieser Anleitung nutze ich die Domain "beispiel-chat.de".

Weiterhin benötigt Mattermost eine MySQL- oder eine PostgreSQL-Datenbank. Wir legen mit Hilfe von HSAdmin einen PostgreSQL-User ("xyz00_mm_user" mit Passwort "geheim") und eine Datenbank ("xyz00_mm_db" mit dem Eigentümer "xyz00_mm_user") an.

Installation

Als User "xyz00-chat" lade ich die Software herunter (aktuelle Version am 31.1.2017 ist 3.6.1):

   wget https://releases.mattermost.com/3.6.1/mattermost-3.6.1-linux-amd64.tar.gz

Die tar.gz-Datei wird ausgepackt:

   tar xzf mattermost-3.6.1-linux-amd64.tar.gz

Dann finden wir im $HOME des Users "xyz00-chat" ein Unterverzeichnis "$HOME/mattermost"

Konfiguration

Die Konfiguration von Mattermost nehmen wir in der Datei $"HOME/mattermost/config/config.json" vor:

Im Abschnitt "ServiceSettings" definieren wir die Parameter "SiteURL" und "ListenAddress":

   "ServiceSettings": {
       "SiteURL": "https://beispiel-chat.de",
       "ListenAddress": "xyz00.hostsharing.net:34567",
       ...

Dabei sei "https://beispiel-chat.de" die Domain, unter der der Chat betrieben werden soll und "34567" der Port, der vom Hostsharing-Service für den "Eigenen Daemon" zugewiesen wurde.

Im Abschnitt "TeamSettings" kann für den Chat ein Name vergeben werden:

   "TeamSettings": {
       "SiteName": "Beispiel-Chat",
       ...
  

Im Abschnitt "SqlSettings" wird die PostgreSQL Datenbank konfiguriert:

   "SqlSettings": {
       "DriverName": "postgres",
       "DataSource": "postgres://xyz00_mm_user:geheim@127.0.0.1:5432/xyz00_mm_db?sslmode=disable\u0026connect_timeout=10",
       ...

Weiter noch unter "FileSettings" und "EMailSettings":

   "FileSettings": {
       "MaxFileSize": 4096000,
       "DriverName": "local",
       "Directory": "./data/",
       ...
  "EmailSettings": {
       "EnableSignUpWithEmail": true,
       "EnableSignInWithEmail": true,
       "EnableSignInWithUsername": true,
       "SendEmailNotifications": true,
       "RequireEmailVerification": true,
       "FeedbackName": "Beispiel-Chat",
       "FeedbackEmail": "mattermost@beispiel-chat.de",
       "FeedbackOrganization": "Beispiel",
       "SMTPUsername": "",
       "SMTPPassword": "",
       "SMTPServer": "localhost",
       "SMTPPort": "25",
       ...

Im Verzeichnis "htdocs-ssl" unter "$HOME/doms/beispiel-chat.de" wird eine ".htaccess"-Datei abgelegt, die dafür sorgt, dass alle Requests an den Mattermost-Server weitergegeben werden. Dabei verwendet Mattermost auch Websocket-Verbindungen ("ws://"). Inhalt der ".htaccess":

   DirectoryIndex disabled
   RewriteEngine On
   RewriteBase /
   
   RewriteCond %{REQUEST_URI}  ^/api/v1/websocket    [NC,OR]
   RewriteCond %{HTTP:UPGRADE} ^WebSocket$           [NC,OR]
   RewriteCond %{HTTP:CONNECTION} ^Upgrade$          [NC]
   RewriteRule .* ws://xyz00.hostsharing.net:34567%{REQUEST_URI}  [proxy]
   
   RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
   RewriteRule .* http://xyz00.hostsharing.net:34567%{REQUEST_URI} [proxy]
   RequestHeader set X-Forwarded-Proto "https"

Im Verzeichnis "htdocs" wird eine ".htaccess"-Datei abgelegt, die für eine Weiterleitung auf das https-Protokoll sorgt:

   Redirect permanent / https://beispiel-chat.de/

Start des Servers

Der Chat-Server lässt sich starten mit:

   cd $HOME/mattermost
   ./bin/platform

Ein kleines Start-Skript könnte so aussehen:

   #!/bin/bash
   export HOME=/home/pacs/xyz00/users/chat
   cd $HOME/mattermost
   rm -f running.pid
   nohup ./bin/platform 1>/dev/null 2>&1 &
   echo $! > running.pid

Zum automatischen Start des Servers bei einem Reboot sollte man einen Eintrag "@reboot" in die crontab vornehmen.

32 Bit Version

Achtung: Mattermost stellt das oben benutzte Installationspaket nur mit einem 64-Bit-Programm zur Verfügung. Für die Installation im Shared Hosting wird ein 32-Bit Binary benötigt! Dazu muss man die Sourcen von Github (siehe Link unten) herunterladen und mit einer aktuellen Go-Version das Platform-Binary für "386" (env GOOS=linux GOARCH=386) kompilieren. Das Programm "$HOME/mattermost/bin/platform" in der oben beschriebenen Installation kann man gegen das selbstgebaute 32-Bit Binär-Programm austauschen.

Links