Zo installeer je Mattermost – hét alternatief voor Slack

Redactie
0

Groepchatsystemen als Slack betekenen een flinke verandering voor de interne bedrijfscommunicatie. Het nadeel is is dat je geen invloed hebt op de richting die het projectteam in de toekomst inslaat en wat er allemaal met je data gebeurt. De software Mattermost is een Slack-alternatief waarmee je een vergelijkbaar chatsysteem op je eigen servers kunt opzetten. Zodoende houd je controle over je data en privacy.

Het grootste voordeel van groepchatsystemen is de lage instapdrempel. Bij de oudere chatprotocollen XMPP en IRC ben je afhankelijk van een client die je zelf moet configureren, terwijl voor Slack een browser volstaat. Een ander voordeel is de doorzoekbare gespreksgeschiedenis. Hierdoor is het mogelijk om bij gesprekken waar je halverwege invalt, eerst wat van de eerdere communicatie te lezen voordat je zelf reageert.

Marktleider op het gebied van groepschatsystemen is Slack. Een van de belangrijkste nadelen van Slack is dat je hele bedrijfsinterne chatcommunicatie op Amerikaanse servers komt te staan. Maar misschien dat je belangrijke informatie, zoals de planning van de marketingafdeling voor het komend halfjaar of nieuwe features van de R&D-afdeling, liever privé houdt.

Rondom Slack is een hele verzameling groepchatsystemen ontstaan, waaronder Hipchat, RocketChat, Let’s Chat en Mattermost. Een deel daarvan is closed-source en wordt net als Slack alleen als Software-as-a-Service (SaaS) aangeboden. De basisversie van Slack is gratis. Vanaf 5 GB opslagruimte of voor uitgebreide functies moet je maandelijks betalen. Mattermost is een alternatieve opensource-oplossing die je op je eigen server kunt draaien en snel is op te zetten. Het aantal gebruikers en berichten is onbeperkt. Voor Enterprise-features als single-sign-on via Active-Directory-authentication en twofactor-authenticatie moet je betalen. De broncode van de server staat op GitHub.

Naast het feit dat je Mattermost met nagenoeg elke browser kunt gebruiken, zijn er ook desktopclients voor Linux, Windows en macOS met een vergelijkbare functieomvang. Op mobiel gebied is er een app voor iOS en Android en vanzelfsprekend wordt TLS-encryptie ondersteund. Heel handig is dat je daarbij automatisch een certificaat door Let’s Encrypt voor je server kunt laten maken. End-to-end versleuteling zoals bij WhatsApp, Threema en Signal is er echter niet.

Daarnaast zijn er ettelijke plug-ins voor bijvoorbeeld versiebeheersysteem GitHub en GitLab en voor de populaire chatbot Hubot. De diensten versturen meldingen via de chat. Bovendien is het mogelijk dat een teamlid door een speciaal chatbericht een bepaalde actie start. Denk daarbij bijvoorbeeld aan een nieuw buildproces voor een nieuwe softwareversie.

De ontwikkelaars houden ook rekening met de compatibiliteit met de door Slackplug-ins gebruikte webhooks. Als je Slack al gebruikt, kun je met een importfunctie berichten en bestanden meenemen. Met wat geluk raak je niets kwijt. Indien er een bestaand chatsysteem op IRC- of XMPP-basis voorhanden is, kan Mattermost daar met behulp van protocol-bridges tijdelijk in integreren of – in het geval van IRC – dat zelfs vervangen. Bij ons werkte die IRC-bridge echter niet helemaal lekker.

Mattermost maakt live groepscommunicatie een stuk makkelijker.

Mattermost maakt live groepscommunicatie een stuk makkelijker.

De basis leggen

De technische eisen van Mattermost zijn relatief laag: het enige wat je nodig hebt is een Linux-server of Linux-VM met een database. De ontwikkelaars adviseren ten minste 4 GB werkgeheugen en 45 GB schijfruimte. Met een handjevol gebruikers werkte het pakket ook zonder problemen op ene server met maar 1 GB werkgeheugen, wat voor een eerste test meer dan voldoende is. Als database heb je de keuze uit MySQL en PostgreSQL. In dit voorbeeld gebruiken we MySQL; de chatsoftware vereist minimaal versie 5.6. Gebruik je Ubuntu 16.04, dan is een apt install mysql-server voldoende om MySQL 5.7 te installeren. Voer dat en alle andere commando’s als root uit of zet er telkens sudo voor. Denk er bovendien aan dat je het wachtwoord voor de database-administrator onthoudt – noteer het desnoods op papier en bewaar het onder in een la.

Als je Debian 8 Jessie gebruikt, moet je een nieuwere MySQL-versie uit de officiële repository van het project installeren. Op de website van het MySQL-project vind je onderaan na de beschrijving een Debian-pakket dat de officiële MySQL-repository voor je installeert. Zodoende ontvang je ook toekomstige updates van MySQL-server. Na het downloaden van het bestand installeer je het met dpkg -i mysql-apt-config_0.X.X-X_all.deb. Bij het configureren van het pakket kun je de gewenste versie van MySQL-server selecteren. In geval van twijfel neem je de voorselectie over. Na uitvoeren van apt update en apt upgrade zijn alle pakketten bijgewerkt naar de nieuwste versie. Met apt install mysql-community-server installeer je vervolgens de nieuwste MySQL-server.

MySQL aanzwengelen

Ongeacht of je Ubuntu of Debian gebruikt: om Mattermost data te laten opslaan, moet je een database aanmaken met een eigen databasegebruiker aanmaken. Start de MySQL-commandline-client met het commando mysql -u root -p. Na het intypen van het administratorwachtwoord van MySQL-server voer je de volgende commando’s uit:

mysql> create user

'mmuser'@'localhost'

identified by 'WACHTWOORD';

mysql> create database mattermost;

mysql> grant all privileges on

mattermost.* to

'mmuser'@'localhost';

Als alle commando’s goed zijn uitgevoerd, heb je een MySQL-gebruiker met de naam mmuser aangemaakt. Met het wachtwoord WACHTWOORD heeft die gebruiker nu toegang tot de net aangemaakte database mattermost. Verlaat de MySQL-client met exit.

Mattermost installeren

Van Mattermost bestaan kant-en-klaar gecompileerde pakketten en docker-images. Pak het meest recente bestand uit en verplaats de directory met het commando mv mattermost /opt/. naar de directory /opt. Hierin hoor je alle programma’s te zetten die niet door de pakketmanager van de distributie beheerd worden. Om ervoor te zorgen dat Mattermost gegevens kan opslaan, moet je met mkdir /opt/mattermost/data eerst een directory voor de data aanmaken. Later moet je van deze directory, de database en de directory /opt/mattermost/config/ in ieder geval regelmatig een back-up maken, zodat je bij een gecompromitteerde of gecrashte server je data weer kunt herstellen.

Omdat je Mattermost later via internet wilt kunnen bereiken, moet je een eigen gebruiker aanmaken. Met useradd --system --usergroup mattermost maak je zowel een systeemgebruiker als een groep aan met de naam mattermost. Om de gebruiker in de Mattermost-directory te laten schrijven, moet je de rechten van de directory nog instellen:

chown mattermost:mattermost

  -R /opt/mattermost

chmod g+w -R /opt/mattermost

Je wilt het project later via de HTTPS-poort 443 laten draaien. Om die reden moet je de betreffende binary nog de rechten geven om systeempoorten (onder 1024) te openen. Dat doe je met het programma Setcap:

setcap cap_net_bind_service=+ep /opt/mattermost/bin/platform

Unit-bestand maken

Mattermost heeft geen eigen Unit-bestand om het door Systemd te laten starten. Om dat te maken, moet je de volgende regels aan het bestand /etc/systemd/system/ mattermost.servicetoevoegen :

[Unit]

Description=Mattermost

After=syslog.target network.target

mysql.service

Requires=mysql.service

[Service]

Type=simple

User=mattermost

Group=mattermost

ExecStart=/opt/mattermost/bin/platform

WorkingDirectory=/opt/mattermost

Restart=always

RestartSec=10

LimitNOFILE=49152

[Install]

WantedBy=multi-user.target 

Met systemctl enable mattermost activeer je de Unit, zodat Systemd die uitvoert als het systeem opstart. De basisconfiguratie staat in /opt/mattermost/config/config.json. Pas de database-instellingen in het deel SqlSettings als volgt aan:

"DriverName": "mysql",

"DataSource":"mmuser:WACHTWOORD@

  tcp(localhost:3306)/

  mattermost?charset=utf8",

Daarna kun je het pakket de eerste keer starten. Start de service met systemctl start mattermost. Als alles goed is gegaan, is Mattermost nu bereikbaar via poort 8065. In geval van problemen vind je de output in /opt/mattermost/logs/ en in de journal van Systemd.

Configureren

Ga met je browser naar de interface en maak een gebruikersaccount en team aan. Vervolgens kun je in het teamoverzicht bij Account Settings/Display de taal eventueel op Nederlands instellen. Aangezien het op het moment van schrijven alleen nog een alfaversie was – en verre van compleet – kozen wij hier voor Engels.

Je configureert de boel via de System Console. De optie Configuration staat onder GENERAL. Naast de server-url en het poortnummer kun je ook instellen of TLS moet worden gebruikt. We raden dringend aan dat te doen. Een bijzonder prettige bijkomstigheid is de mogelijkheid om automatisch Let’s- Encrypt-certificaten te genereren. De certificaten kunnen daarnaast automatisch worden gevalideerd. Je hoeft daarvoor alleen de radiobutton bij ‘Use Let’s Encrypt’ op ‘true’ te zetten. Dan moet het veld met de ‘Site URL’ wel ingevuld zijn en mag poort 80 niet in gebruik zijn. Je kunt ook reeds aanwezige SSL-certificaten invoeren. Onder de Let’s- Encrypt-configuratie kun je daarnaast instellen of poort 80 naar poort 443 omgeleid moet worden.

Start de dienst vervolgens opnieuw op met systemctl restart mattermost. Bij de volgende oproep worden de Let’s-Encrypt-certificaten aangemaakt en is de omleiding via HTTPS actief.

Het aanmaken van Let's-Encrypt-certificaten kan door Mattermost zelf gedaan worden.

Let’s-Encrypt-certificaten kunnen ook worden gemaakt.

Finetunen

Om de beveiliging te verbeteren, moet je – voor zover mogelijk – bij ‘users and teams’ het laten aanmaken van accounts beperken tot bepaalde e-maildomeinen. Bij ‘SECURITY/ Sign Up’ kun je instellen dat het aanmaken van een nieuw account met een e-mailverificatie bevestigd moet worden.

Om privacyproblemen te voorkomen, loont het te kijken naar de instellingen bij ‘NOTIFICATIONS / Mobile Push’. De content van alle pushmeldingen loopt via de centrale servers van Apple of Google. Als je daar bedenkingen bij hebt, moet je de content van pushberichten beperken tot kanaal en gebruikersnaam. Je kunt de pushberichten ook helemaal uitschakelen. Daarmee worden gebruikers alleen niet meer direct over nieuwe meldingen geïnformeerd.

De updates, die om de paar weken verschijnen, moet je helaas handmatig installeren. Je kunt dan de bestaande Mattermost-directory simpelweg een andere naam geven en na installatie de directory’s /opt/mattermost/config en /opt/mattermost/data kopiëren naar de directory met de nieuwe versie. Na het opnieuw instellen van de gebruikersrechten moet alles dan weer werken zoals voorheen.

Daarmee houdt niets je meer tegen om je eigen chatdienst te beginnen. Als je vele duizenden gebruikers verwacht, moet je een geschiktere infrastructuur gebruiken dan in deze test. In de documentatie staat uitvoerig hoe je een Mattermost-installatie over twee of drie servers verdeelt.

(Merlin Schumacher / Noud van Kruysbergen / Marcel van der Meer)

 

Deel dit artikel

Lees ook

Met Raspberry Pi port knocking de computers in je netwerk beveiligen

Iedereen die een computer of server met het openbare internet verbindt, wordt al snel het doelwit van hackers. Sommige wetenschappers gaan ervan uit d...

TeamViewer op Ubuntu installeren & gebruiken: zo werkt het

In dit artikel tonen we hoe je op afstand je Linux-computer met Ubuntu kunt beheren door TeamViewer te gebruiken. Voor degenen die niet bekend zijn me...

0 Praat mee
avatar
  Abonneer  
Laat het mij weten wanneer er