Mattermost Installieren
Ü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 Datenabnk 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 kompilieren. Das Programm "$HOME/mattermost/bin/platform" in der oben beschriebenen Installation kann man gegen das selbstgebaute 32-Bit Binär-Programm austauschen.