Mattermost Installieren: Unterschied zwischen den Versionen

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen
(Kasten kann keinen Link?)
(Update auf v10.x, RAM statt DAEMON)
 
(19 dazwischenliegende Versionen von 7 Benutzern werden nicht angezeigt)
Zeile 5: Zeile 5:
Mattermost ist eine selbst-gehostete Alternative zum Cloud-Dienst [https://de.wikipedia.org/wiki/Slack_(Software) Slack] oder zum proprietären [https://en.wikipedia.org/wiki/HipChat HipChat].
Mattermost ist eine selbst-gehostete Alternative zum Cloud-Dienst [https://de.wikipedia.org/wiki/Slack_(Software) Slack] oder zum proprietären [https://en.wikipedia.org/wiki/HipChat HipChat].


{{Textkasten|rot|Achtung:|Mattermost stellt nur einen Download für 64-Bit Systeme zur Verfügung. Diese Version ist bei Hostsharing für den Einsatz auf Managed Servern geeignet. Bei den Shared Hosting Servern h01 bis h08 handelt es sich aus historischen Gründe um 32-Bit Systeme.
== Vorbereitungen ==
Beachte dazu den Hinweis am Ende dieses Artikels}}


== 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/


Die hier beschriebene Installation benötigt bei Hostsharing die Paket-Option "Eigener Daemon". Im Bereich des Shared Hosting ist
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".
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
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".
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.
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 ==
== Installation ==


Als User "xyz00-chat" lade ich die Software herunter (aktuelle Version am 31.1.2017 ist 3.6.1):
Als User "xyz00-chat" lade ich die Software herunter (aktuelle Version siehe [https://github.com/mattermost/mattermost-server/releases]):
 
    wget https://releases.mattermost.com/3.6.1/mattermost-3.6.1-linux-amd64.tar.gz


<syntaxhighlight lang=shell>
wget https://releases.mattermost.com/10.2.1/mattermost-10.2.1-linux-amd64.tar.gz
</syntaxhighlight>
Die tar.gz-Datei wird ausgepackt:
Die tar.gz-Datei wird ausgepackt:


    tar xzf mattermost-3.6.1-linux-amd64.tar.gz
<syntaxhighlight lang=shell>
tar xzf mattermost-10.2.1-linux-amd64.tar.gz
</syntaxhighlight>


Dann finden wir im $HOME des Users "xyz00-chat" ein Unterverzeichnis "$HOME/mattermost"
Dann finden wir im $HOME des Users "xyz00-chat" ein Unterverzeichnis "$HOME/mattermost"
Zeile 36: Zeile 34:
Die Konfiguration von Mattermost nehmen wir in der Datei $"HOME/mattermost/config/config.json" vor:
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":
Im Abschnitt "ServiceSettings" definieren wir die Parameter "SiteURL", "WebsocketURL" und "ListenAddress":


    "ServiceSettings": {
<syntaxhighlight lang=json line>
        "SiteURL": "https://beispiel-chat.de",
"ServiceSettings": {
        "ListenAddress": "xyz00.hostsharing.net:34567",
    "SiteURL": "https://beispiel-chat.de",
        ...
    "WebsocketURL": "wss://beispiel-chat.de",
    "ListenAddress": "127.0.0.1:34567",
    ...
</syntaxhighlight>


Dabei sei "https://beispiel-chat.de" die Domain, unter der der Chat betrieben werden soll und "34567" der Port,
Dabei sei "https://beispiel-chat.de" die Domain, unter der der Chat betrieben werden soll und "34567" der Port,
Zeile 48: Zeile 49:
Im Abschnitt "TeamSettings" kann für den Chat ein Name vergeben werden:
Im Abschnitt "TeamSettings" kann für den Chat ein Name vergeben werden:


    "TeamSettings": {
<syntaxhighlight lang=json line>
        "SiteName": "Beispiel-Chat",
"TeamSettings": {
        ...
    "SiteName": "Beispiel-Chat",
    ...
</syntaxhighlight>
    
    
Im Abschnitt "SqlSettings" wird die PostgreSQL Datenbank konfiguriert:
Im Abschnitt "SqlSettings" wird die PostgreSQL Datenbank konfiguriert:


    "SqlSettings": {
<syntaxhighlight lang=json line>
        "DriverName": "postgres",
"SqlSettings": {
        "DataSource": "postgres://xyz00_mm_user:geheim@127.0.0.1:5432/xyz00_mm_db?sslmode=disable\u0026connect_timeout=10",
    "DriverName": "postgres",
        ...
    "DataSource": "postgres://xyz00_mm_user:geheim@127.0.0.1:5432/xyz00_mm_db?sslmode=disable\u0026connect_timeout=10",
    ...
</syntaxhighlight>


Weiter noch unter "FileSettings" und "EMailSettings":
Weiter noch unter "FileSettings" und "EMailSettings":


    "FileSettings": {
<syntaxhighlight lang=json line>
        "MaxFileSize": 4096000,
"FileSettings": {
        "DriverName": "local",
    "MaxFileSize": 4096000,
        "Directory": "./data/",
    "DriverName": "local",
        ...
    "Directory": "./data/",
    ...


  "EmailSettings": {
"EmailSettings": {
        "EnableSignUpWithEmail": true,
    "EnableSignUpWithEmail": true,
        "EnableSignInWithEmail": true,
    "EnableSignInWithEmail": true,
        "EnableSignInWithUsername": true,
    "EnableSignInWithUsername": true,
        "SendEmailNotifications": true,
    "SendEmailNotifications": true,
        "RequireEmailVerification": true,
    "RequireEmailVerification": true,
        "FeedbackName": "Beispiel-Chat",
    "FeedbackName": "Beispiel-Chat",
        "FeedbackEmail": "mattermost@beispiel-chat.de",
    "FeedbackEmail": "mattermost@beispiel-chat.de",
        "FeedbackOrganization": "Beispiel",
    "FeedbackOrganization": "Beispiel",
        "SMTPUsername": "",
    "SMTPUsername": "",
        "SMTPPassword": "",
    "SMTPPassword": "",
        "SMTPServer": "localhost",
    "SMTPServer": "localhost",
        "SMTPPort": "25",
    "SMTPPort": "25",
        ...
    ...
</syntaxhighlight>


Im Verzeichnis "htdocs-ssl" unter "$HOME/doms/beispiel-chat.de" wird eine ".htaccess"-Datei abgelegt,  
Im Verzeichnis "htdocs-ssl" unter "$HOME/doms/beispiel-chat.de" wird eine ".htaccess"-Datei abgelegt,  
Zeile 86: Zeile 93:
auch Websocket-Verbindungen ("ws://"). Inhalt der ".htaccess":
auch Websocket-Verbindungen ("ws://"). Inhalt der ".htaccess":


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


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


    Redirect permanent / https://beispiel-chat.de/
<syntaxhighlight lang=apache line>
Redirect permanent / https://beispiel-chat.de/
</syntaxhighlight>


== Start des Servers ==
== Start des Servers ==
Zeile 108: Zeile 119:
Der Chat-Server lässt sich starten mit:
Der Chat-Server lässt sich starten mit:


    cd $HOME/mattermost
<syntaxhighlight lang=shell>
    ./bin/platform
cd $HOME/mattermost
./bin/mattermost
</syntaxhighlight>


Ein kleines Start-Skript könnte so aussehen:
Zum automatischen Start des Servers bei einem Reboot sollte
man einen systemd service einrichten:


    #!/bin/bash
~/.config/systemd/user/mattermost.service
    export HOME=/home/pacs/xyz00/users/chat
<syntaxhighlight lang=ini>
    cd $HOME/mattermost
[Unit]
    rm -f running.pid
Description=Mattermost Service
    nohup ./bin/platform 1>/dev/null 2>&1 &
    echo $! > running.pid


Zum automatischen Start des Servers bei einem Reboot sollte
[Service]
man einen Eintrag "@reboot" in die crontab vornehmen.
WorkingDirectory=%h/mattermost
ExecStart=%h/mattermost/bin/mattermost server -c %h/mattermost/config/config.json
TimeoutStartSec=3600
KillMode=mixed
Restart=always
RestartSec=10


== 32 Bit Version ==
[Install]
WantedBy=default.target
</syntaxhighlight>


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


== Links ==
== Links ==
Zeile 135: Zeile 154:
*[https://about.mattermost.com/ Mattermost Homepage (Englisch)]
*[https://about.mattermost.com/ Mattermost Homepage (Englisch)]
*[https://github.com/mattermost/platform git Repository bei Github]
*[https://github.com/mattermost/platform git Repository bei Github]
 
*[https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/mattermost Ansible Playbook für Hostsharing]
----
----
[[Kategorie:HSDoku]]
[[Kategorie:HSDoku]]
[[Kategorie:Installationsanleitungen]]
[[Kategorie:Installationsanleitungen]]
[[Kategorie:Ansible Playbook]]
[[Kategorie:Software]]
[[Kategorie:Software]]
[[Kategorie:Messenger]]
[[Kategorie:Eigene Daemons]]
[[Kategorie:Eigene Daemons]]

Aktuelle Version vom 13. Dezember 2024, 19:00 Uhr

Ü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