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.
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.service
toevoegen :
[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.
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)