Mattermost bietet eine freie Alternative zu Slack. Es ermöglicht Teams, sich in mehreren Kanälen zu bestimmten Themen auszutauschen. Mattermost verwendet Websockets für Echtzeit-Kommunikation und unterstützt Markdown-Syntax und Datei-Anhänge. Leider unterstützt nur die kommerzeille Enterprise Edition Authentifizierung per LDAP.
Debian bietet kein Paket für Mattermost an, daher laden wir das Archiv von der Downloadseite des Projekts herunter und entpacken es im Zielverzeichnis.
version=5.22.2 cd /srv curl https://releases.mattermost.com/$version/mattermost-$version-linux-amd64.tar.gz | tar xz adduser --system --group --home /srv/mattermost mattermost chown -R mattermost.mattermost /srv/mattermost/{client,config,data,logs,plugins}
Den Chatverlauf speichern wir in PostgreSQL und erzeugen dafür einen Benutzer und eine leere Datenbank.
su postgres -c "createuser --pwprompt mattermost" su postgres -c "createdb --owner mattermost mattermost"
Die zentralle Konfiguration enthält die Zugangsdaten zu allen externen Diensten, beginnt aber mit Einstellungen zur Lokalisierung.
/opt/mattermost/config/config.json{ "ServiceSettings": { "SiteURL": "https://mattermost.illusioni.de", ListenAddress": ":8065", }, "SqlSettings": { "DriverName": "postgres", "DataSource": "postgres://mattermost:Password@localhost:5432/mattermost?connect_timeout=10", } "PasswordSettings": { "MinimumLength": 16, "Lowercase": false, "Number": false, "Uppercase": false, "Symbol": false }, "FileSettings": { "Directory": "/srv/mattermost/", }, "ComplianceSettings": { "Directory": "/srv/mattermost/", }, }
Der eingebaute Webserver lauscht auf Port 8065.
/etc/apache2/sites-enabled/mattermost.illusioni.de<VirtualHost *:443> ServerName mattermost.illusioni.de ServerAdmin webmaster@illusioni.de ErrorLog ${APACHE_LOG_DIR}/illusioni.de.error.log CustomLog ${APACHE_LOG_DIR}/illusioni.de.access.log combined Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains" SSLCertificateFile /etc/letsencrypt/live/illusioni.de/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/illusioni.de/privkey.pem Include /etc/letsencrypt/options-ssl-apache.conf ProxyPreserveHost On RewriteEngine On RewriteCond %{REQUEST_URI} /api/v[0-9]+/(users/)?websocket [NC,OR] RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC,OR] RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC] RewriteRule .* ws://127.0.0.1:8065%{REQUEST_URI} [P,QSA,L] <Location /> Require all granted ProxyPass http://127.0.0.1:8065/ ProxyPassReverse http://127.0.0.1:8065/ ProxyPassReverseCookieDomain 127.0.0.1 mattermost.illusioni.de </Location> </VirtualHost>
Wir aktivieren diese Konfiguration und das Modul für Websockets.
a2ensite mattermost.illusioni.de a2enmod proxy_wstunnel
Wir erzeugen die Unit für Systemd.
/etc/systemd/system/mattermost.service[Unit] Description=Mattermost After=network.target After=postgresql.service Requires=postgresql.service [Service] Type=notify ExecStart=/opt/mattermost/bin/mattermost TimeoutStartSec=3600 Restart=always RestartSec=10 WorkingDirectory=/opt/mattermost User=mattermost Group=mattermost LimitNOFILE=49152 [Install] WantedBy=multi-user.target
…und starten sie.
systemctl enable --now mattermost
Der erste Benutzer, der sich anmeldet und ein Team erstellt, wird automatisch zum Administrator.
Systemkonsole Authentifizierung Registrieren Aktiviere Kontoerstellung: wahr Begrenze Kontoerstellung: illusioni.de Aktiviere offenen Server: falsch Aktiviere E-Mail-Einladungen: wahr