Mattermost installeren op Debian 11

Mattermost is een gratis en open-source samenwerkings- en berichtenplatform dat gemaakt is met beveiliging in het achterhoofd. Het is een alternatief voor Discord of Slack en biedt veel nuttige functies, waaronder, één-op-één berichtgeving, onbeperkte zoekgeschiedenis en mogelijkheden om bestanden te delen, twee-factor autorisatie, en meldingen. Het is een zelf gehoste online chatdienst, geschreven in Golang en React. Het is speciaal ontworpen voor organisaties en bedrijven en stelt teams in staat veilig van overal te communiceren.

In deze zelfstudie laten we je zien hoe je de Mattermost Chat server op Debian 11 kunt installeren.

Vereisten

  • Een server met Debian 11.
  • Een geldige domeinnaam die wijst naar het IP van je server.
  • Een root wachtwoord is op de server ingesteld.

Installeer en configureer de MariaDB Database Server

Mattermost gebruikt MySQL of MariaDB als database backend. Je zult dus de MariaDB server op je server moeten installeren. Je kunt het installeren met het volgende commando:

apt-get install mariadb-server -y

Als de MariaDB geïnstalleerd is, start je de MariaDB service en schakel je hem in om te starten bij het herstarten van het systeem:

systemctl start mariadb
systemctl enable mariadb

Maak vervolgens verbinding met de MariaDB shell met het volgende commando:

mysql

Zodra je verbonden bent, maak je een database en een gebruiker met het volgende commando:

MariaDB [(none)]> create database mattermost;
MariaDB [(none)]> create user mattermost@localhost identified by 'password';

Verleen vervolgens alle rechten aan de Mattermost database met het volgende commando:

MariaDB [(none)]> grant all privileges on mattermost.* to mattermost@localhost;

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

Maak eerst een speciale gebruiker voor Mattermost aan met het volgende commando:

useradd --system --user-group mattermost

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

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

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

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

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

mv mattermost /opt

Maak vervolgens een gegevensmap voor mattermost met het volgende commando:

mkdir /opt/mattermost/data

Verander vervolgens het eigendom van de mattermost directory met het volgende commando:

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

Bewerk vervolgens het config.json bestand met het volgende commando:

nano /opt/mattermost/config/config.json

Zoek de volgende regels:

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

En vervang ze door de volgende regels volgens je database instellingen:

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

Bewaar en sluit het bestand als je klaar bent.

Maak een Systemd Service bestand voor Mattermost

Vervolgens moet je een systemd service bestand maken voor Mattermost. 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 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

Bewaar en sluit het bestand en herlaad dan de systemd daemon om de veranderingen toe te passen:

systemctl daemon-reload

Start vervolgens de Mattermost en zet hem aan om te starten bij het herstarten van het systeem:

systemctl start mattermost
systemctl enable mattermost

Controleer vervolgens de status van de Mattermost met het volgende commando:

systemctl status mattermost

Je krijgt de volgende uitvoer:

? mattermost.service - Mattermost
     Loaded: loaded (/etc/systemd/system/mattermost.service; disabled; vendor preset: enabled)
     Active: active (running) since Fri 2021-11-12 13:56:25 UTC; 4s ago
   Main PID: 2888 (mattermost)
      Tasks: 31 (limit: 4679)
     Memory: 273.3M
        CPU: 12.191s
     CGroup: /system.slice/mattermost.service
             ??2888 /opt/mattermost/bin/mattermost
             ??2915 plugins/com.mattermost.plugin-channel-export/server/dist/plugin-linux-amd64
             ??2925 plugins/playbooks/server/dist/plugin-linux-amd64
             ??2931 plugins/focalboard/server/dist/plugin-linux-amd64

Nov 12 13:56:24 debian11 mattermost[2888]: {"timestamp":"2021-11-12 13:56:24.681 Z","level":"info","msg":"Scheduling next survey for Dec 3, 2>
Nov 12 13:56:25 debian11 mattermost[2888]: {"timestamp":"2021-11-12 13:56:25.064 Z","level":"info","msg":"Post.Message has size restrictions">
Nov 12 13:56:25 debian11 mattermost[2888]: {"timestamp":"2021-11-12 13:56:25.084 Z","level":"info","msg":"info [2021-11-12 13:56:25.083 Z] co>
Nov 12 13:56:25 debian11 mattermost[2888]: {"timestamp":"2021-11-12 13:56:25.131 Z","level":"info","msg":"\n    -- collation of mattermost's >
Nov 12 13:56:25 debian11 mattermost[2888]: {"timestamp":"2021-11-12 13:56:25.491 Z","level":"info","msg":"debug [2021-11-12 13:56:25.488 Z] i>
Nov 12 13:56:25 debian11 mattermost[2888]: {"timestamp":"2021-11-12 13:56:25.777 Z","level":"info","msg":"info [2021-11-12 13:56:25.777 Z] Se>
Nov 12 13:56:25 debian11 mattermost[2888]: {"timestamp":"2021-11-12 13:56:25.963 Z","level":"info","msg":"Starting Server...","caller":"app/s>
Nov 12 13:56:25 debian11 mattermost[2888]: {"timestamp":"2021-11-12 13:56:25.964 Z","level":"info","msg":"Server is listening on [::]:8065",">
Nov 12 13:56:25 debian11 mattermost[2888]: {"timestamp":"2021-11-12 13:56:25.964 Z","level":"info","msg":"Sending systemd READY notification.>
Nov 12 13:56:25 debian11 systemd[1]: Started Mattermost.

Configureer Nginx als een omgekeerde proxy voor Mattermost

Standaard luistert Mattermost op poort 8065. Het is dus een goed idee om Nginx te installeren en in te stellen als een omgekeerde proxy om de Mattermost op poort 80 te benaderen. Installeer eerst de Nginx met het volgende commando:

apt-get install nginx -y

Als de Nginx geïnstalleerd is, maak je een Nginx virtual host configuratiebestand met het volgende commando:

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

Voeg de volgende regels toe:

upstream mattermost {
   server localhost: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;
   }
}

Bewaar en sluit het bestand en controleer dan de Nginx configuratie op eventuele syntaxfouten met het volgende commando:

nginx -t

Je zou de volgende uitvoer moeten zien:

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

Start vervolgens de Nginx service om de veranderingen toe te passen:

systemctl start nginx

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

systemctl status nginx

Je zou de volgende uitvoer moeten krijgen:

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2021-11-12 13:57:02 UTC; 1min 12s ago
       Docs: man:nginx(8)
    Process: 3384 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 3392 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 3602 (nginx)
      Tasks: 3 (limit: 4679)
     Memory: 6.6M
        CPU: 55ms
     CGroup: /system.slice/nginx.service
             ??3602 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??3604 nginx: worker process
             ??3605 nginx: worker process

Nov 12 13:57:01 debian11 systemd[1]: Starting A high performance web server and a reverse proxy server...
Nov 12 13:57:02 debian11 systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument
Nov 12 13:57:02 debian11 systemd[1]: Started A high performance web server and a reverse proxy server.

Op dit punt is Nginx geïnstalleerd en geconfigureerd als een reverse proxy voor Mattermost. Je kunt nu verder gaan met de volgende stap.

Toegang tot de Mattermost Web Interface

Open nu je web browser en ga naar de Mattermost web interface met de URL http://mattermost.example.com. Je wordt doorgestuurd naar de volgende pagina:

Mattermost Inloggen

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

Mattermost

Klik nu op de knop Ga naar Systeemconsole. Je wordt doorgestuurd naar het Mattermost dashboard zoals hieronder:

Mattermost dashboard

Conclusie

Gefeliciteerd! Je hebt met succes Mattermost geïnstalleerd met Nginx als reverse proxy op Debian 11. Je kunt nu Mattermost in je organisatie implementeren en teams in staat stellen van overal met elkaar te communiceren.