Mattermost Installieren: Unterschied zwischen den Versionen
Tim00 (Diskussion | Beiträge) (→Links: Link zu Ansible Playbook hinzugefügt) |
(Update auf v10.x, RAM statt DAEMON) |
||
(6 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt) | |||
Zeile 7: | Zeile 7: | ||
== Vorbereitungen == | == Vorbereitungen == | ||
Die hier beschriebene Installation benötigt bei Hostsharing die Paket-Option " | 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". | 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". | ||
Zeile 19: | Zeile 19: | ||
Als User "xyz00-chat" lade ich die Software herunter (aktuelle Version siehe [https://github.com/mattermost/mattermost-server/releases]): | Als User "xyz00-chat" lade ich die Software herunter (aktuelle Version siehe [https://github.com/mattermost/mattermost-server/releases]): | ||
<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: | ||
<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 33: | Zeile 36: | ||
Im Abschnitt "ServiceSettings" definieren wir die Parameter "SiteURL", "WebsocketURL" und "ListenAddress": | Im Abschnitt "ServiceSettings" definieren wir die Parameter "SiteURL", "WebsocketURL" und "ListenAddress": | ||
<syntaxhighlight lang=json line> | |||
"ServiceSettings": { | |||
"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 44: | 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: | ||
<syntaxhighlight lang=json line> | |||
"TeamSettings": { | |||
"SiteName": "Beispiel-Chat", | |||
... | |||
</syntaxhighlight> | |||
Im Abschnitt "SqlSettings" wird die PostgreSQL Datenbank konfiguriert: | Im Abschnitt "SqlSettings" wird die PostgreSQL Datenbank konfiguriert: | ||
<syntaxhighlight lang=json line> | |||
"SqlSettings": { | |||
"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": | ||
<syntaxhighlight lang=json line> | |||
"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", | |||
... | |||
</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 82: | Zeile 93: | ||
auch Websocket-Verbindungen ("ws://"). Inhalt der ".htaccess": | auch Websocket-Verbindungen ("ws://"). Inhalt der ".htaccess": | ||
<syntaxhighlight lang=apache line> | |||
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" | |||
</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: | ||
<syntaxhighlight lang=apache line> | |||
Redirect permanent / https://beispiel-chat.de/ | |||
</syntaxhighlight> | |||
== Start des Servers == | == Start des Servers == | ||
Zeile 104: | Zeile 119: | ||
Der Chat-Server lässt sich starten mit: | Der Chat-Server lässt sich starten mit: | ||
<syntaxhighlight lang=shell> | |||
cd $HOME/mattermost | |||
./bin/mattermost | |||
</syntaxhighlight> | |||
Zum automatischen Start des Servers bei einem Reboot sollte | |||
man einen systemd service einrichten: | |||
~/.config/systemd/user/mattermost.service | |||
<syntaxhighlight lang=ini> | |||
[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 | |||
</syntaxhighlight> | |||
Service aktivieren und starten: | |||
<syntaxhighlight lang=shell> | |||
$ systemctl --user enable mattermost.service | |||
$ systemctl --user start mattermost.service | |||
</syntaxhighlight> | |||
== Links == | == Links == | ||
Zeile 123: | 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 | *[https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/mattermost Ansible Playbook für Hostsharing] | ||
---- | ---- | ||
[[Kategorie:HSDoku]] | [[Kategorie:HSDoku]] | ||
Zeile 129: | Zeile 160: | ||
[[Kategorie:Ansible Playbook]] | [[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