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:
Geef je admin e-mail adres, gebruikersnaam en wachtwoord op, en klik op de knop Create Account. Je zou de volgende pagina moeten zien:
Klik nu op de knop Ga naar Systeemconsole. Je wordt doorgestuurd naar het Mattermost dashboard zoals hieronder:
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.