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 "RAM". Benötigt werden etwa 512 MB. Im Managed Webspace ist diese Option kostenpflichtig: https://www.hostsharing.net/angebote/managed-webspace/

Für den Betrieb des Dienstes legen Sie einen Service-User mit Hilfe von HSAdmin an. Als User-Beispiel nutzen wir im Folgenden "xyz00-chat".

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

Weiterhin benötigt Mattermost eine MariaDB- oder eine PostgreSQL-Datenbank. Wir empfehlen PostgreSQL und legen also 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 siehe [1]):

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

Die tar.gz-Datei wird ausgepackt:

tar xzf mattermost-10.2.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", "WebsocketURL" und "ListenAddress":

"ServiceSettings": {
    "SiteURL": "https://beispiel-chat.de",
    "WebsocketURL": "wss://beispiel-chat.de",
    "ListenAddress": "127.0.0.1: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://127.0.0.1:34567%{REQUEST_URI}  [proxy]
    
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule .* http://127.0.0.1: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/mattermost

Zum automatischen Start des Servers bei einem Reboot sollte man einen systemd service einrichten:

~/.config/systemd/user/mattermost.service

[Unit]
Description=Mattermost Service

[Service]
WorkingDirectory=%h/mattermost
ExecStart=%h/mattermost/bin/mattermost server -c %h/mattermost/config/config.json
TimeoutStartSec=3600
KillMode=mixed
Restart=always
RestartSec=10

[Install]
WantedBy=default.target

Service aktivieren und starten:

$ systemctl --user enable mattermost.service
$ systemctl --user start mattermost.service

Links