Mattermost ist eine Open-Source-Instant-Messaging-Plattform, eine selbst gehostete Slack-Alternative. Es ist in Golang und React geschrieben und kann MySQL oder PostgreSQL als Datenbank-Backend verwenden. Mattermost bringt Ihre gesamte Teamkommunikation an einen Ort und bietet verschiedene Funktionen, darunter Dateifreigabe, Einzel- und Gruppennachrichten, benutzerdefinierte Emojis, Videoanrufe und mehr. In diesem Tutorial zeigen wir Ihnen, wie Sie Mattermost auf einem CentOS 7-Server bereitstellen und Nginx als SSL-Reverse-Proxy konfigurieren.
Voraussetzungen #
Stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllt haben, bevor Sie mit diesem Lernprogramm fortfahren:
- Sie sind als Benutzer mit sudo-Berechtigungen angemeldet.
- Sie haben einen Domänennamen, der auf Ihre Server-IP-Adresse verweist. Wir werden
linuxize-test.com
verwenden . - Sie haben Nginx installiert, wenn nicht, lesen Sie diese Anleitung.
- Sie haben ein SSL-Zertifikat für Ihre Domain installiert. Sie können ein kostenloses SSL-Zertifikat von Let’s Encrypt installieren, indem Sie dieser Anleitung folgen.
Mysql-Datenbank erstellen #
Wir werden MariaDB 10.3 als Datenbank-Backend verwenden. Mattermost funktioniert nicht mit MariaDB Version 5.5.
Wenn Sie MariaDB 10.3 nicht auf Ihrem Server installiert haben, können Sie diese Anleitung lesen.
Melden Sie sich bei der MySQL-Shell an:
mysql -u root -p
Und führen Sie die folgenden Befehle aus, um eine neue Datenbank und einen neuen Benutzer für unsere Mattermost-Installation zu erstellen:
create database mattermost;
GRANT ALL ON mattermost.* TO mattermost@localhost IDENTIFIED BY 'P4ssvv0rD';
Neuen Systembenutzer # erstellen
So erstellen Sie einen neuen Benutzer und eine neue Gruppe mit dem Namen mattermost
, wodurch die Mattermost-Installation ausgeführt wird, führen Sie den folgenden Befehl aus:
sudo useradd -U -M -d /opt/mattermost mattermost
Installieren Sie Mattermost Server #
Zum Zeitpunkt des Schreibens dieses Artikels ist die neueste stabile Version von Mattermost Version 5.4.0. Bevor Sie mit dem nächsten Schritt fortfahren, sollten Sie auf der Download-Seite von Mattermost nachsehen, ob eine neuere Version verfügbar ist.
Laden Sie das Archiv mit dem folgenden Curl-Befehl herunter:
sudo curl -L https://releases.mattermost.com/5.4.0/mattermost-5.4.0-linux-amd64.tar.gz -o /tmp/mattermost.tar.gz
Sobald der Download abgeschlossen ist, extrahieren Sie das Archiv und verschieben Sie es nach opt
Verzeichnis:
sudo tar zxf /tmp/mattermost.tar.gz -C /opt
Erstellen Sie das Speicherverzeichnis für Dateien:
sudo mkdir /opt/mattermost/data
Ändern Sie den Verzeichnisbesitz auf mattermost
Benutzer:
sudo chown -R mattermost: /opt/mattermost
Öffnen Sie die config.json
Datei mit Ihrem bevorzugten Texteditor:
sudo nano /opt/mattermost/config/config.json
Setzen Sie den Datenbanktreiber auf mysql
, geben Sie den Datenbanknamen und das Kennwort des Datenbankbenutzers ein, die wir zuvor in diesem Tutorial erstellt haben:
...
"SqlSettings": {
"DriverName": "mysql",
"DataSource": "mattermost:P4ssvv0rD@tcp(localhost:3306)/mattermost?charset=utf8mb4,utf8&readTimeout=30s&writeTimeout=30s",
"DataSourceReplicas": [],
...
Um unsere Installation zu testen, um sicherzustellen, dass alles funktioniert, bevor wir eine systemd-Einheit erstellen und einen Reverse-Proxy mit Nginx einrichten, starten wir den Mattermost-Server.
Wechseln Sie in den /opt/mattermost
Verzeichnis und starten Sie den Server :
cd /opt/mattermost
sudo -u mattermost bin/mattermost
Die Ausgabe sollte zeigen, dass der Mattermost-Server auf Port 8065
lauscht :
{"level":"info","ts":1540921243.6797202,"caller":"app/plugin.go:100","msg":"Starting up plugins"}
{"level":"info","ts":1540921244.3483207,"caller":"app/server.go:88","msg":"Starting Server..."}
{"level":"info","ts":1540921244.3488805,"caller":"app/server.go:148","msg":"Server is listening on [::]:8065"}
{"level":"info","ts":1540921244.3620636,"caller":"app/web_hub.go:75","msg":"Starting 2 websocket hubs"}
{"level":"info","ts":1540921244.451155,"caller":"jobs/workers.go:63","msg":"Starting workers"}
{"level":"info","ts":1540921244.456804,"caller":"jobs/schedulers.go:68","msg":"Starting schedulers."}
Sie können den Mattermost-Server jetzt mit CTRL+C
stoppen und fahren Sie mit den nächsten Schritten fort.
Erstellen Sie eine Systemd-Einheit #
Um unsere Mattermost-Instanz als Dienst auszuführen, erstellen wir einen mattermost.service
Unit-Datei in /etc/systemd/system/
Verzeichnis mit folgendem Inhalt:
[Unit]
Description=Mattermost
After=network.target nss-lookup.target mariadb.service
[Service]
Type=notify
WorkingDirectory=/opt/mattermost
User=mattermost
SyslogIdentifier=mattermost
ExecStart=/opt/mattermost/bin/mattermost
TimeoutStartSec=3600
LimitNOFILE=49152
[Install]
WantedBy=multi-user.target
Benachrichtigen Sie systemd, dass wir eine neue Unit-Datei erstellt haben, und starten Sie den Mattermost-Dienst, indem Sie Folgendes ausführen:
sudo systemctl daemon-reload
sudo systemctl start mattermost
Wir können jetzt den Dienststatus mit dem folgenden Befehl überprüfen:
sudo systemctl status mattermost
● mattermost.service - Mattermost
Loaded: loaded (/etc/systemd/system/mattermost.service; disabled; vendor preset: disabled)
Active: active (running) since Tue 2018-10-30 17:44:46 UTC; 3s ago
Main PID: 25959 (mattermost)
CGroup: /system.slice/mattermost.service
└─25959 /opt/mattermost/bin/mattermost
Aktivieren Sie schließlich, dass der Mattermost-Dienst beim Booten automatisch gestartet wird:
sudo systemctl enable mattermost
Richten Sie einen Reverse-Proxy mit Nginx ein #
Wenn Sie unseren Anleitungen zum Installieren von Nginx unter CentOS 7 und zum Sichern von Nginx mit Let’s Encrypt unter CentOS 7 gefolgt sind, sollte Nginx bereits installiert und mit einem SSL-Zertifikat konfiguriert sein. Jetzt müssen wir nur noch einen neuen Serverblock für unsere Mattermost-Installation erstellen.
/etc/nginx/conf.d/linuxize-test.com.confproxy_cache_path /var/cache/nginx levels=1:2 keys_zone=mattermost_cache:10m max_size=3g inactive=120m use_temp_path=off;
upstream mattermost_backend {
server 127.0.0.1:8065;
}
server {
listen 80;
server_name linuxize-test.com www.linuxize-test.com;
include snippets/letsencrypt.conf;
return 301 https://linuxize-test.com$request_uri;
}
server {
listen 443 ssl http2;
server_name www.linuxize-test.com;
ssl_certificate /etc/letsencrypt/live/linuxize-test.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/linuxize-test.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/linuxize-test.com/chain.pem;
include snippets/ssl.conf;
return 301 https://linuxize-test.com$request_uri;
}
server {
listen 443 ssl http2;
server_name linuxize-test.com;
ssl_certificate /etc/letsencrypt/live/linuxize-test.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/linuxize-test.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/linuxize-test.com/chain.pem;
include snippets/ssl.conf;
access_log /var/log/nginx/linuxize-test.com-access.log;
error_log /var/log/nginx/linuxize-test.com-error.log;
location ~ /api/v[0-9]+/(users/)?websocket$ {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
client_max_body_size 50M;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Frame-Options SAMEORIGIN;
proxy_buffers 256 16k;
proxy_buffer_size 16k;
proxy_read_timeout 600s;
proxy_pass http://mattermost_backend;
}
location / {
proxy_http_version 1.1;
client_max_body_size 50M;
proxy_set_header Connection "";
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Frame-Options SAMEORIGIN;
proxy_buffers 256 16k;
proxy_buffer_size 16k;
proxy_read_timeout 600s;
proxy_cache mattermost_cache;
proxy_cache_revalidate on;
proxy_cache_min_uses 2;
proxy_cache_use_stale timeout;
proxy_cache_lock on;
proxy_pass http://mattermost_backend;
}
}
Laden Sie den Nginx-Dienst neu, damit die Änderungen wirksam werden:
sudo systemctl reload nginx
Konfiguriere Mattermost #
Öffnen Sie Ihren Browser, geben Sie Ihre Domain ein und erstellen Sie Ihr erstes Konto:
Der erste erstellte Benutzer im System hat Administratorrechte.
Klicken Sie auf Create a new team
Link, erstellen Sie Ihr erstes Team und legen Sie die Team-URL fest:
Nachdem Sie das erste Administratorkonto und das erste Team erstellt haben, werden Sie zum Mattermost-Dashboard weitergeleitet und sind als Administrator angemeldet. Öffnen Sie die Systemkonsole, indem Sie oben im Navigationsbereich auf Ihren Benutzernamen klicken, und klicken Sie im neu geöffneten Menü auf System Console
Link:
Legen Sie die Site-URL fest, indem Sie zu Einstellungen Allgemein → Konfiguration gehen.
Aktivieren Sie E-Mail-Benachrichtigungen, indem Sie zu Benachrichtigungen → E-Mail
gehenund geben Sie Ihre SMTP-Parameter ein. Sie können alle gängigen Transaktions-E-Mail-Dienste wie SendinBlue, SendGrid, Amazon SES, Mandrill, Mailgun, Mailjet und Postmark verwenden oder Ihren eigenen Mailserver einrichten.
Schließlich müssen wir den Mattermost-Dienst neu starten, damit die Änderungen wirksam werden:
sudo systemctl restart mattermost