Mattermost Installieren: Unterschied zwischen den Versionen

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen
(→‎32 Bit Version: Klarstellung dass kein 32-Bit mehr im Managed Hosting)
 
(13 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt)
Zeile 4: Zeile 4:


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 und im Managed Webspace geeignet.}}


== Vorbereitungen ==
== Vorbereitungen ==
Zeile 19: Zeile 17:
== Installation ==
== Installation ==


Als User "xyz00-chat" lade ich die Software herunter (aktuelle Version am 07.12.2020 ist 5.29.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/5.29.1/mattermost-5.29.1-linux-amd64.tar.gz


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


    tar xzf mattermost-5.29.1-linux-amd64.tar.gz
<syntaxhighlight lang=shell>
tar xzf mattermost-7.9.2-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 33: 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 45: 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 83: 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 105: 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:
Ein kleines Start-Skript könnte so aussehen:


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


Zum automatischen Start des Servers bei einem Reboot sollte  
Zum automatischen Start des Servers bei einem Reboot sollte  
man einen Eintrag "@reboot" in die crontab vornehmen.
man einen systemd service einrichten:
 
~/.config/systemd/user/mattermost.service
<syntaxhighlight lang=ini>
[Unit]
Description=mattermost chat server


== 32 Bit Version ==
[Service]
Type=exec
ExecStart=/home/pacs/xyz00/users/chat/bin/mattermost
</syntaxhighlight>


Hostsharing bietet keine 32-Bit-Systeme im Managed Hosting mehr an. Falls dennoch jemand ein solches nutzen will, beachtet bitte das Folgende. Für die Installation auf einem 32-Bit-System wird das entsprechende 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 durch das selbstgebaute 32-Bit Binär-Programm austauschen.
Service aktivieren und starten:
<syntaxhighlight lang=shell>
$ systemctl --user enable mattermost.service
$ systemctl --user start mattermost.service
</syntaxhighlight>


== Links ==
== Links ==
Zeile 128: Zeile 158:
*[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 3. Dezember 2024, 13:17 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 "individuelle Serverdienste (1 Daemon)". Im Managed Webspace ist diese Option kostenpflichtig: https://www.hostsharing.net/angebote/managed-webspace/

Auf einem Managed Server melden Sie einfach die kostenlose Option "Eigener Daemon" an. Bei der Anmeldung geben Sie einen User an (dient als Admin/Service-User). Unter dieser User-Kennung läuft später der Mattermost-Server. Der User sollte vor der Anmeldung mit HSAdmin angelegt werden. 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/7.9.2/mattermost-7.9.2-linux-amd64.tar.gz

Die tar.gz-Datei wird ausgepackt:

tar xzf mattermost-7.9.2-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

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/mattermost 1>/dev/null 2>&1 &
echo $! > running.pid

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

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

[Unit]
Description=mattermost chat server

[Service]
Type=exec
ExecStart=/home/pacs/xyz00/users/chat/bin/mattermost

Service aktivieren und starten:

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

Links