So installierst du Mattermost auf Alma Linux 8

Mattermost ist eine kostenlose, quelloffene und sichere Plattform für Kommunikation, Zusammenarbeit und Workflow-Orchestrierung über Tools und Teams hinweg. Mattermost ist ein selbst gehosteter Chat-Dienst für Organisationen und Unternehmen, die einen internen Chat-Dienst einrichten wollen. Er bietet verschiedene nützliche Funktionen wie One-to-One-Messaging, einen unbegrenzten Suchverlauf, Dateifreigabe, Zwei-Faktor-Authentifizierung, Benachrichtigungen und vieles mehr. Wenn du nach einer alternativen Lösung für Slack suchst, ist Mattermost die beste Wahl für dich.

In diesem Tutorial zeigen wir dir, wie du Mattermost mit Nginx auf Alma Linux 8 installierst.

Voraussetzungen

  • Ein Server, auf dem Alma Linux 8 läuft.
  • Ein gültiger Domainname, der auf die IP deines Servers zeigt.
  • Ein Root-Passwort ist auf dem Server konfiguriert.

Installiere den MySQL-Server

Mattermost verwendet MySQL als Datenbank-Backend. Daher muss MySQL auf deinem Server installiert sein. Du kannst ihn installieren, indem du den folgenden Befehl ausführst:

dnf install mysql-server -y

Sobald der MySQL-Server installiert ist, starte und aktiviere den MySQL-Dienst mit dem folgenden Befehl:

systemctl start mysqld
systemctl enable mysqld

Jetzt kannst du die MySQL-Installation sichern, indem du das folgende Skript ausführst:

mysql_secure_installation

Beantworte alle Fragen wie unten gezeigt, um das MySQL-Root-Passwort festzulegen und die Installation zu sichern:

Press y|Y for Yes, any other key for No: N
Please set the password for root here.
New password: 
Re-enter new password: 
Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y

Erstelle eine Datenbank für Mattermost

Als Nächstes musst du eine Datenbank und einen Benutzer für Mattermost erstellen. Melde dich zunächst mit dem folgenden Befehl bei MySQL an:

mysql -u root -p

Sobald du eingeloggt bist, erstelle eine Datenbank und einen Benutzer mit dem folgenden Befehl:

mysql> CREATE DATABASE matterdb;
mysql> CREATE USER 'matteruser'@'localhost' IDENTIFIED BY 'password';

Als Nächstes erteilst du der Mattermost-Datenbank alle Berechtigungen:

mysql> GRANT ALL PRIVILEGES ON matterdb.* TO matteruser@localhost;

Als Nächstes löschst du die Berechtigungen und verlässt MySQL mit folgendem Befehl:

mysql> FLUSH PRIVILEGES;
mysql> EXIT;

Wenn du damit fertig bist, kannst du mit dem nächsten Schritt fortfahren.

Mattermost auf Alma Linux 8 installieren

Erstelle zunächst mit folgendem Befehl einen eigenen Benutzer, um Mattermost auszuführen:

useradd --system --user-group mattermost

Als Nächstes lädst du die neueste Version von Mattermost mit folgendem Befehl herunter:

wget https://releases.mattermost.com/6.0.2/mattermost-6.0.2-linux-amd64.tar.gz

Sobald der Download abgeschlossen ist, entpacke die heruntergeladene Datei mit dem folgenden Befehl:

tar -xf mattermost-6.0.2-linux-amd64.tar.gz

Verschiebe das extrahierte Verzeichnis in das Verzeichnis /opt:

mv mattermost /opt

Als Nächstes erstellst du ein Datenverzeichnis für Mattermost und änderst die Eigentums- und Zugriffsrechte für Mattermost:

mkdir /opt/mattermost/data
chown -R mattermost:mattermost /opt/mattermost
chmod -R g+w /opt/mattermost

Als Nächstes bearbeitest du die Mattermost-Konfigurationsdatei:

nano /opt/mattermost/config/config.json

Definiere die URL deiner Mattermost-Website wie unten gezeigt:

    "SiteURL": "http://mattermost.example.com",

Als nächstes suchst du die folgenden Zeilen:

    "DriverName": "postgres",
    "DataSource": "postgres://mmuser:mostest@localhost/mattermost_test?sslmode=disable\u0026connect_timeout=10",

Und ersetze sie durch die folgenden Zeilen:

    "DriverName": "mysql",
    "DataSource": "matteruser:password@tcp(localhost:3306)/matterdb?charset=utf8mb4,utf8\u0026readTimeout=30s\u0026writeTimeout=30s",

Speichere und schließe die Datei, wenn du fertig bist.

Erstelle eine Systemd-Dienstdatei für Mattermost

Als Nächstes musst du eine systemd-Dienstdatei erstellen, um den Mattermost-Dienst zu verwalten. Du kannst sie erstellen, indem du den folgenden Befehl ausführst:

nano /etc/systemd/system/mattermost.service

Füge die folgenden Zeilen ein:

[Unit]
Description=Mattermost
After=syslog.target network.target mysqld.service

[Service]
Type=notify
WorkingDirectory=/opt/mattermost
User=mattermost
ExecStart=/opt/mattermost/bin/mattermost
PIDFile=/var/spool/mattermost/pid/master.pid
TimeoutStartSec=3600
LimitNOFILE=49152

[Install]
WantedBy=multi-user.target

Speichere und schließe die Datei und lade dann den systemd-Daemon mit dem folgenden Befehl neu:

systemctl daemon-reload

Starte als Nächstes den Mattermost-Dienst und aktiviere ihn so, dass er beim Neustart des Systems gestartet wird:

systemctl start mattermost
systemctl enable mattermost

Du kannst jetzt den Status des Mattermost-Dienstes mit folgendem Befehl überprüfen:

systemctl status mattermost

Du erhältst die folgende Ausgabe:

? mattermost.service - Mattermost
   Loaded: loaded (/etc/systemd/system/mattermost.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2022-01-15 14:12:29 UTC; 7s ago
 Main PID: 15201 (mattermost)
    Tasks: 32 (limit: 11411)
   Memory: 265.2M
   CGroup: /system.slice/mattermost.service
           ??15201 /opt/mattermost/bin/mattermost
           ??15298 plugins/com.mattermost.plugin-channel-export/server/dist/plugin-linux-amd64
           ??15299 plugins/com.mattermost.nps/server/dist/plugin-linux-amd64
           ??15308 plugins/playbooks/server/dist/plugin-linux-amd64
           ??15313 plugins/focalboard/server/dist/plugin-linux-amd64

Jan 15 14:12:26 almalinux8 mattermost[15201]: {"timestamp":"2022-01-15 14:12:26.344 Z","level":"info","msg":"Sent notification of next survey>
Jan 15 14:12:26 almalinux8 mattermost[15201]: {"timestamp":"2022-01-15 14:12:26.402 Z","level":"info","msg":"Post.Message has size restrictio>
Jan 15 14:12:26 almalinux8 mattermost[15201]: {"timestamp":"2022-01-15 14:12:26.499 Z","level":"info","msg":"info [2022-01-15 14:12:26.497 Z]>
Jan 15 14:12:26 almalinux8 mattermost[15201]: {"timestamp":"2022-01-15 14:12:26.537 Z","level":"info","msg":"\n    -- collation of mattermost>
Jan 15 14:12:28 almalinux8 mattermost[15201]: {"timestamp":"2022-01-15 14:12:28.297 Z","level":"info","msg":"debug [2022-01-15 14:12:28.295 Z>
Jan 15 14:12:28 almalinux8 mattermost[15201]: {"timestamp":"2022-01-15 14:12:28.804 Z","level":"info","msg":"info [2022-01-15 14:12:28.803 Z]>
Jan 15 14:12:29 almalinux8 systemd[1]: Started Mattermost.
Jan 15 14:12:29 almalinux8 mattermost[15201]: {"timestamp":"2022-01-15 14:12:29.149 Z","level":"info","msg":"Starting Server...","caller":"ap>
Jan 15 14:12:29 almalinux8 mattermost[15201]: {"timestamp":"2022-01-15 14:12:29.150 Z","level":"info","msg":"Server is listening on [::]:8065>
Jan 15 14:12:29 almalinux8 mattermost[15201]: {"timestamp":"2022-01-15 14:12:29.150 Z","level":"info","msg":"Sending systemd READY notificati>

Zu diesem Zeitpunkt ist Mattermost gestartet und läuft auf Port 8065. Du kannst ihn mit dem folgenden Befehl überprüfen:

ss -antpl | grep 8065

Du erhältst die folgende Ausgabe:

LISTEN 0      128                *:8065             *:*    users:(("mattermost",pid=15201,fd=35))                   

Wenn du damit fertig bist, kannst du mit dem nächsten Schritt fortfahren.

Nginx als Reverse Proxy für Mattermost konfigurieren

Es wird empfohlen, Nginx als Reverse-Proxy für Mattermost zu installieren und zu konfigurieren. Dazu musst du den Nginx-Server auf deinem Server installieren. Du kannst ihn installieren, indem du den folgenden Befehl ausführst:

dnf install nginx -y

Sobald Nginx installiert ist, erstellst du mit folgendem Befehl eine Konfigurationsdatei für den virtuellen Nginx-Host:

nano /etc/nginx/conf.d/mattermost.conf

Füge die folgenden Zeilen ein:

 server {
        listen       80;
        server_name  mattermost.example.com;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
	proxy_pass http://localhost:8065/;
            index  index.html index.htm;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

Speichere und schließe die Datei und überprüfe den Nginx auf Konfigurationsfehler:

nginx -t

Wenn alles in Ordnung ist, erhältst du die folgende Ausgabe:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Starte den Nginx-Dienst und aktiviere ihn so, dass er beim Neustart des Systems gestartet wird:

systemctl start nginx
systemctl enable nginx

Du kannst den Status von Nginx mit folgendem Befehl überprüfen:

systemctl status nginx

Du erhältst die folgende Ausgabe:

? nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2022-01-15 14:14:05 UTC; 7s ago
  Process: 15356 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 15354 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
  Process: 15351 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
 Main PID: 15358 (nginx)
    Tasks: 2 (limit: 11411)
   Memory: 3.8M
   CGroup: /system.slice/nginx.service
           ??15358 nginx: master process /usr/sbin/nginx
           ??15359 nginx: worker process

Jan 15 14:14:05 almalinux8 systemd[1]: nginx.service: Succeeded.
Jan 15 14:14:05 almalinux8 systemd[1]: Stopped The nginx HTTP and reverse proxy server.
Jan 15 14:14:05 almalinux8 systemd[1]: Starting The nginx HTTP and reverse proxy server...
Jan 15 14:14:05 almalinux8 nginx[15354]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Jan 15 14:14:05 almalinux8 nginx[15354]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Jan 15 14:14:05 almalinux8 systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument
Jan 15 14:14:05 almalinux8 systemd[1]: Started The nginx HTTP and reverse proxy server.

Jetzt ist Nginx installiert und für die Bereitstellung von Mattermost konfiguriert. Du kannst jetzt mit dem nächsten Schritt fortfahren.

Firewall konfigurieren

Als Nächstes musst du Port 80 in der Firewall zulassen. Du kannst ihn mit folgendem Befehl freigeben:

firewall-cmd --add-service=http --permanent

Lade dann die Firewall neu, um die Änderungen zu übernehmen:

firewall-cmd --reload

Sobald du damit fertig bist, kannst du mit dem nächsten Schritt fortfahren.

Zugriff auf die Mattermost Web UI

Öffne nun deinen Webbrowser und rufe die Mattermost-Weboberfläche über die URL http://mattermost.example.com auf. Du wirst auf den folgenden Bildschirm weitergeleitet:

Mattermost-Anmeldeformular

Gib deine E-Mail-Adresse, deinen Admin-Benutzernamen und dein Passwort ein und klicke auf die Schaltfläche Konto erstellen. Du erhältst den folgenden Bildschirm:

Team beitreten

Klicke auf Ein Team erstellen. Du erhältst den folgenden Bildschirm:

Teamname festlegen

Gib deinen Teamnamen ein und klicke auf die Schaltfläche Weiter. Du erhältst den folgenden Bildschirm:

Team-Url in mattermost konfigurieren

Gib die URL deines Mattermost-Teams ein und klicke auf die Schaltfläche Fertig stellen. Auf dem folgenden Bildschirm siehst du das Mattermost-Dashboard:

Mattermost Dashboard

Fazit

In der obigen Anleitung hast du gelernt, wie du den Chatdienst Mattermost mit Nginx auf Alma Linux 8 installierst. Jetzt kannst du Mattermost in deinem Unternehmen einführen und als internen Chat nutzen. Wenn du noch Fragen hast, kannst du dich gerne an mich wenden.

Das könnte dich auch interessieren …