Mattermost installeren en instellen op CentOS 8

Mattermost is een gratis, open-source en zelf gehost berichtensysteem voor bedrijfsteamsamenwerking. Het is geschreven in Golang en React, en gebruikt MySQL/MariaDB/PostgreSQL als database backend. Het biedt desktop clients voor Windows, macOS, en Linux en mobiele applicaties voor iOS en Android Het lijkt erg op Slack en brengt al je teamcommunicatie op één plek. Het biedt heel handige functies, waaronder, een-op-een en groepsberichten, bestanden delen, videogesprekken, aangepaste emoji’s, webhooks & commando’s, en nog veel meer.

In deze zelfstudie laten we je zien hoe je Mattermost op CentOS 8 kunt installeren.

Vereisten

  • Een server die CentOS 8 draait.
  • Een root wachtwoord is op je server ingesteld.

Installeer en configureer de MariaDB Database

Mattermost gebruikt MariaDB/MySQL als database backend. Dus moet MariaDB op je server geïnstalleerd zijn. Als het niet geïnstalleerd is, kun je het installeren met het volgende commando:

dnf install mariadb-server -y

Eenmaal geïnstalleerd, start de MariaDB dienst en zet hem aan om te starten na systeem herstart met het volgende commando:

systemctl start mariadb
systemctl enable mariadb

MariaDB is standaard niet beveiligd en het root wachtwoord is niet ingesteld in CentOS 8. Je kunt het dus instellen met het volgende commando:

mysql_secure_installation

Beantwoord alle vragen zoals hieronder aangegeven:

Enter current password for root (enter for none):
Set root password? [Y/n] Y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Als je klaar bent, log je in op de MariaDB met root gebruiker:

mysql -u root -p

Geef je root wachtwoord op en maak dan een database en gebruiker voor Mattermost met het volgende commando:

MariaDB [(none)]> CREATE DATABASE mattermostdb;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON mattermostdb.* TO [email protected] IDENTIFIED BY 'password';

Spoel vervolgens de privileges door en verlaat de MariaDB shell met het volgende commando:

MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;

Als je klaar bent, kun je verder gaan met de volgende stap.

Installeer Mattermost

Eerst moet je een aparte gebruiker aanmaken om Mattermost te draaien. Je kunt die aanmaken met het volgende commando:

useradd -d /opt/mattermost -U -M mattermost

Download vervolgens de nieuwste versie van Mattermost met het volgende commando:

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

Als de download voltooid is, pak je het gedownloade bestand uit met het volgende commando:

tar -xvzf mattermost-5.21.0-linux-amd64.tar.gz

Verplaats vervolgens de uitgepakte map naar de /opt met het volgende commando:

mv mattermost /opt/

Maak vervolgens een gegevensmap binnen mattermost en geef de juiste rechten aan de mattermost met het volgende commando:

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

Als je klaar bent, kun je verder gaan met de volgende stap.

Configureer Mattermost

Vervolgens moet je je database in Mattermost definiëren. Je kunt dat doen door het bestand config.json te bewerken:

nano /opt/mattermost/config/config.json

Verander de volgende regels volgens je database instellingen:

  "SqlSettings": {
    "DriverName": "mysql",
    "DataSource": "mattermost:[email protected](localhost:3306)/mattermostdb?charset=utf8mb4,utf8\u0026readTimeout=30s\u0026writeTimeout=30s",

Sla het bestand op en sluit het als je klaar bent. Verander dan de directory in /opt/mattermost en start de Mattermost server met het volgende commando:

cd /opt/mattermost
sudo -u mattermost bin/mattermost

Als de server met succes gestart is, zou je de volgende uitvoer moeten krijgen:

{"level":"info","ts":1585379681.8383002,"caller":"utils/i18n.go:83","msg":"Loaded system translations","for locale":"en","from locale":"/opt/mattermost/i18n/en.json"}
{"level":"info","ts":1585379681.83874,"caller":"app/server_app_adapters.go:58","msg":"Server is initializing..."}
{"level":"info","ts":1585379681.8470004,"caller":"sqlstore/supplier.go:221","msg":"Pinging SQL","database":"master"}
{"level":"info","ts":1585379684.7858346,"caller":"sqlstore/upgrade.go:112","msg":"The database schema version has been set","version":"5.21.0"}
{"level":"error","ts":1585379690.8182986,"caller":"app/server_app_adapters.go:129","msg":"SiteURL must be set. Some features will operate incorrectly if the SiteURL is not set. See documentation for details: http://about.mattermost.com/default-site-url"}
{"level":"info","ts":1585379690.821083,"caller":"app/license.go:39","msg":"License key from https://mattermost.com required to unlock enterprise features."}

Druk vervolgens op CTRL + C om de Mattermost server te stoppen.

Maak een Systemd Service bestand voor Mattermost

Vervolgens moet je een systemd service bestand maken om de Mattermost dienst te beheren. Je kunt het aanmaken met het volgende commando:

nano /etc/systemd/system/mattermost.service

Voeg de volgende regels toe:

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

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

[Install]
WantedBy=multi-user.target

Sla het bestand op en sluit het als je klaar bent. Herlaad dan de systemd daemon met het volgende commando:

systemctl daemon-reload

Start vervolgens de Mattermost dienst en zet hem aan om te starten na het herstarten van het systeem met het volgende commando:

systemctl start mattermost
systemctl enable mattermost

Je kunt ook de status van de Mattermost dienst controleren met het volgende commando:

systemctl status mattermost

Je zou de volgende uitvoer moeten krijgen:

? mattermost.service - Mattermost
   Loaded: loaded (/etc/systemd/system/mattermost.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2020-03-28 03:17:07 EDT; 14s ago
 Main PID: 15204 (mattermost)
    Tasks: 21 (limit: 25028)
   Memory: 120.8M
   CGroup: /system.slice/mattermost.service
           ??15204 /opt/mattermost/bin/mattermost
           ??15214 plugins/com.mattermost.nps/server/dist/plugin-linux-amd64

Mar 28 03:17:07 centos8 mattermost[15204]: {"level":"info","ts":1585379827.1131086,"caller":"app/server.go:247","msg":"Printing current workin>
Mar 28 03:17:07 centos8 mattermost[15204]: {"level":"info","ts":1585379827.1131282,"caller":"app/server.go:248","msg":"Loaded config","source">

Op dit moment draait de Mattermost server en luistert op poort 8065. Je kunt dit controleren met het volgende commando:

netstat -antup | grep 8065

Je zou de volgende uitvoer moeten krijgen:

tcp6       0      0 :::8065                 :::*                    LISTEN      15204/mattermost 

Configureer Nginx als omgekeerde proxy voor Mattermost

Het is een goed idee om Nginx te installeren en in te stellen als een omgekeerde proxy voor betere prestaties en beveiliging.

Installeer eerst de Nginx webserver met het volgende commando:

dnf install nginx -y

Nadat je de Nginx webserver geïnstalleerd hebt, start je de Nginx service en zet je hem aan om te starten na een herstart van het systeem met het volgende commando:

systemctl start nginx
systemctl enable nginx

Maak vervolgens een nieuw Nginx virtual host bestand voor Mattermost met het volgende commando:

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

Voeg de volgende regels toe:

upstream mattermost {
   server 127.0.0.1:8065;
   keepalive 32;
}

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=mattermost_cache:10m max_size=3g inactive=120m use_temp_path=off;

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

   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;
       client_body_timeout 60;
       send_timeout 300;
       lingering_timeout 5;
       proxy_connect_timeout 90;
       proxy_send_timeout 300;
       proxy_read_timeout 90s;
       proxy_pass http://mattermost;
   }
   location / {
       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_http_version 1.1;
       proxy_pass http://mattermost;
   }
}

Sla het bestand op en sluit het als je klaar bent. Controleer dan de Nginx op een eventuele syntaxfout met het volgende commando:

nginx -t

Je zou de volgende uitvoer moeten krijgen:

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

Herstart tenslotte de Nginx dienst om de veranderingen toe te passen:

systemctl restart nginx

Op dit punt is de Nginx webserver geconfigureerd om Mattermost te serveren. Je kunt nu verder gaan met de volgende stap.

Configureer SELinux en Firewalld

Standaard wordt SELinux ingeschakeld in CentOS 8. Het is aan te raden het voor Mattermost uit te schakelen. Je kunt het uitschakelen door het bestand /etc/selinux/config te bewerken:

nano /etc/selinux/config

Zoek de volgende regel:

SELINUX=enforcing

En vervang het door de volgende regel:

SELINUX=permissive

Bewaar en sluit het bestand als je klaar bent. Herstart daarna je systeem om de veranderingen toe te passen.

Vervolgens moet je poort 80 via firewalld toestaan. Je kunt het toestaan met het volgende commando:

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

Herlaad vervolgens firewalld om de veranderingen toe te passen:

firewall-cmd --reload

Toegang tot de Mattermost Web Interface

Open nu je web browser en typ de URL http://mattermost.example.com. Je zou de Mattermost gebruikersaanmaak pagina moeten zien:

Mattermost Installateur

Geef je e-mail adres, gebruikersnaam, wachtwoord en klik op de knop Create Account. Je zou de volgende pagina moeten zien:

Creëer een Team

Klik vervolgens op de knop Maak een nieuw team om je team aan te maken. Je zou de volgende pagina moeten zien:

Voer de naam van het team in

Geef je teamnaam op en klik op de knop Volgende. Je zou de volgende pagina moeten zien:

Team URL

Geef je team URL op en klik op Voltooien om de installatie te voltooien. Je zou het Mattermost dashboard moeten zien op de volgende pagina:

Mattermost Dashboard

Conclusie

Gefeliciteerd! Je hebt Mattermost met succes geïnstalleerd en geconfigureerd op CentOS 8 server. Je kunt nu een team voor je organisatie aanmaken en beginnen samen te werken met je team.