Mattermost Installieren: Unterschied zwischen den Versionen

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen
(Kasten kann keinen Link?)
 
(18 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 "individuelle Serverdienste (1 Daemon)". 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
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".
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/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-3.6.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 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:
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:


== 32 Bit Version ==
~/.config/systemd/user/mattermost.service
<syntaxhighlight lang=ini>
[Unit]
Description=mattermost chat server


Achtung: Mattermost stellt das oben benutzte Installationspaket nur mit einem 64-Bit-Programm zur Verfügung.
[Service]
Für die Installation im Shared Hosting wird ein 32-Bit Binary benötigt! Dazu muss man die Sourcen von Github
Type=exec
(siehe Link unten) herunterladen und mit einer aktuellen Go-Version das Platform-Binary für "386" (env GOOS=linux GOARCH=386) kompilieren. Das
ExecStart=/home/pacs/xyz00/users/chat/bin/mattermost
Programm "$HOME/mattermost/bin/platform" in der oben beschriebenen Installation kann man durch das selbstgebaute
</syntaxhighlight>
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 135: 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