Back to Articles

Opensource teamcommunicatie op schaal: Mattermost in eigen beheer draaien

hands typing a message on a phone in a dark room

Om de paar jaar kijkt een bedrijf naar zijn Slack-factuur, telt de kosten per gebruiker op, merkt dat tien jaar interne conversatie in de database van iemand anders staat en in een andere jurisdictie, en vraagt zich af of het ook anders kan. Dat kan. Mattermost is het meest geloofwaardige antwoord in eigen beheer, en dat is het al een tijd.

Het is ook de tool die vóór de uitrol het vaakst verkeerd wordt begrepen, want de gratis editie die je denkt te krijgen is meestal niet degene die je uiteindelijk draait. Deze gids gaat over wat Mattermost werkelijk is, wat de gratis versie echt bevat, en de drie operationele problemen waar bijna iedere eerste zelfhoster tegenaan loopt.

Wat Mattermost is

Een Go-server, een PostgreSQL-database, een React-webclient en native desktop- en mobiele apps. Kanalen, threads, bestandsdeling, zoeken, slash-commando's, inkomende en uitgaande webhooks, bots en een plugin-framework. Wie Slack heeft gebruikt is binnen een middag productief, en iedereen anders ook. Dat weegt zwaarder dan welke functielijst dan ook wanneer je een heel bedrijf vraagt te verhuizen.

Rond die kern liggen Playbooks, voor incident- en proceswerk aan de hand van checklists, en Calls, voor audio, video en schermdeling. De integratiecatalogus dekt de gebruikelijke verdachten: GitLab, GitHub, Jira, Jenkins, PagerDuty. Op ChatOps is het product echt sterk, en daarom heeft het zo'n aanhang onder engineering- en operationsteams, en onder defensie- en overheidsorganisaties die hun verkeer sowieso niet bij een commerciële SaaS mogen onderbrengen.

Het architectonisch belangrijke feit is dat dit alles draait op infrastructuur die jij kiest. Hetzelfde principe als bij je analytics in eigen beheer met Matomo of je marketingautomatisering met Mautic. De berichten staan in jouw database, de bestanden in jouw objectopslag, en niemand verandert het bewaarbeleid of de prijs zonder het te vragen.

Het licentieplaatje, ronduit gezegd

Hier raken mensen in de war, dus laten we direct zijn.

Team Edition is de opensource-variant. MIT-licentie, gratis, geen gebruikerslimiet, en dit is wat de meeste zelfhosters daadwerkelijk draaien. Je krijgt berichten, kanalen, threads, zoeken, integraties, webhooks en het plugin-framework. Je krijgt geen single sign-on via SAML of AD/LDAP, geen compliance-export, geen enterprise-zoekfunctie, geen hoogbeschikbaarheidscluster en geen gastaccounts.

Entry is een gratis commerciële editie. Die ontsluit de geavanceerde functieset maar zet een plafond: de berichtgeschiedenis is beperkt, het aantal playbook-runs is beperkt, ondersteuning loopt alleen via de community, en ze mikt op teams onder ongeveer vijftig mensen. Als manier om het betaalde product te beoordelen is dat prima. Als permanent onderkomen voor de gespreksgeschiedenis van je bedrijf is het slecht, want juist die geschiedenis is waar het uiteindelijk om gaat.

Professional, Enterprise en Enterprise Advanced zijn de betaalde niveaus. Professional voegt SSO, MFA en geavanceerde rechten toe. Enterprise voegt AD/LDAP-synchronisatie, compliance-automatisering, enterprise-zoeken, hoge beschikbaarheid en Playbooks op schaal toe. Enterprise Advanced voegt de omgang met gerubriceerde informatie, zero-trust-controles en uitrol in afgesloten netwerken toe, en dat is het niveau waarop de defensie- en overheidsgebruikers zitten. Mattermost publiceert geen prijs per gebruiker meer, dus reken op een gesprek met sales.

De keuze waar de meeste teams voor staan is eenvoudiger dan die lijst suggereert. Heb je SAML nodig tegen je identity provider, dan ga je betalen. Kun je leven met lokale accounts of GitLab-OAuth, dan draagt Team Edition een verrassend grote organisatie.

De installatie

Een kleine opzet

Voor een team van tientallen tot een paar honderd mensen volstaat één goed bemeten VPS echt. Mattermost zelf plaatst één tot duizend gebruikers op één vCPU en 2 GB RAM, wat optimistisch is zoals leveranciersminima dat altijd zijn. Geef de machine vier cores en 8 GB en je denkt er nooit meer aan.

De stack bestaat uit Mattermost, PostgreSQL en een reverse proxy die TLS afhandelt. Traefik met Let's Encrypt kost de minste moeite:

services:
  mattermost:
    image: mattermost/mattermost-team-edition:latest
    restart: unless-stopped
    environment:
      - MM_SQLSETTINGS_DRIVERNAME=postgres
      - MM_SQLSETTINGS_DATASOURCE=postgres://mmuser:your_secure_password@db:5432/mattermost?sslmode=disable
      - MM_SERVICESETTINGS_SITEURL=https://chat.example.com
    volumes:
      - mm_data:/mattermost/data
      - mm_config:/mattermost/config
    depends_on:
      - db

  db:
    image: postgres:16-alpine
    restart: unless-stopped
    environment:
      - POSTGRES_USER=mmuser
      - POSTGRES_PASSWORD=your_secure_password
      - POSTGRES_DB=mattermost
    volumes:
      - db_data:/var/lib/postgresql/data

volumes:
  mm_data:
  mm_config:
  db_data:

Zet SiteURL goed voordat je iemand uitnodigt. Een verkeerde of ontbrekende SiteURL breekt pushmeldingen, OAuth-callbacks en linkvoorbeelden, op een manier die later vervelend is om te debuggen en nu triviaal te vermijden.

Eén voorbehoud is het herhalen waard, omdat de leverancier het zelf ook zegt: containers zijn prima om te evalueren en voor kleine productie-installaties, maar die route geeft je geen clustering of hoge beschikbaarheid uit de doos. Heb je dat nodig, installeer dan rechtstreeks op Linux of gebruik de Kubernetes-operator.

Een productieopzet

PostgreSQL 14 of nieuwer. MySQL-ondersteuning wordt vanaf v11 uitgefaseerd, dus zet je nu iets op, begin dan niet op MySQL. Amazon Aurora PostgreSQL wordt ondersteund en is op AWS de verstandige beheerde optie.

Zet bestanden vanaf dag één in S3-compatibele objectopslag. Het lokale bestandssysteem werkt en is de standaard, en het is ook wat je server stilletjes stateful maakt, je back-ups enorm en je migratie pijnlijk. Later overstappen betekent bestanden verplaatsen en paden herschrijven. Bij installatie overstappen betekent een handvol configuratiewaarden invullen.

Voor hoge beschikbaarheid heb je het Enterprise-niveau nodig: meerdere applicatienodes achter een load balancer, gedeelde objectopslag en een database met leesreplica's. Voor zoeken op schaal wil je Elasticsearch of OpenSearch, eveneens Enterprise. De full-text search van PostgreSQL is prima voor een paar honderd mensen en een paar miljoen berichten, en CJK-zoeken werkt nu standaard op PostgreSQL, wat vroeger een echte reden was om de zoekmodule te kopen.

De drie dingen die misgaan

Alles hierboven staat in de documentatie. Dit zijn de delen die mensen in productie ontdekken.

Pushmeldingen zijn niet gratis op de manier die je verwacht

Mobiele push moet via de netwerken van Apple en Google, wat betekent dat iets de ondertekeningscertificaten moet beheren. Mattermost draait een Test Push Notification Service die meteen werkt en die uitdrukkelijk niet voor productie bedoeld is. De Hosted Push Notification Service is de productieversie en die komt met een betaalde licentie.

De derde optie is je eigen push proxy draaien. Dat is goed gedocumenteerd en heel goed te doen, maar het betekent je eigen mobiele app bouwen en distribueren met je eigen Firebase- en APNs-gegevens, en dat is een relatie met de appwinkels en een releaseproces, geen middagje werk.

Kies welke van de drie voordat je naar telefoons uitrolt, en niet nadat de eerste persoon vraagt waarom berichten alleen binnenkomen als de app openstaat. Dit ene punt laat meer Mattermost-migraties stranden dan wat dan ook.

Calls heeft meer nodig dan een poort

Calls kent twee modi. De geïntegreerde modus draait de mediadienst binnen de Mattermost-server en wordt aangeraden onder ongeveer vijftig actieve gebruikers. Daarboven wil je rtcd, een aparte dienst die het gespreksverkeer weghoudt bij je hoofdserver en horizontaal schaalt. rtcd vereist Enterprise.

In beide gevallen moeten clients de mediadienst bereiken via UDP op poort 8443, en die poort moet openstaan op de host waar die dienst draait. Je nginx reverse proxy stuurt hem niet door, want nginx zit niet in het UDP-pad. De helft van alle draadjes over gesprekken die niet tot stand komen, komt neer op een firewallregel die nooit is toegevoegd.

Op het gratis niveau kun je een-op-eengesprekken met een tijdslimiet verwachten in plaats van onbeperkte groepsgesprekken. Is bedrijfsbrede video een eis, reken die dan door.

Iemand moet het beheren

De eerlijke kostenvergelijking is niet licentie tegenover nul. Het is licentie tegenover infrastructuur plus de persoon die patcht. Mattermost brengt vaak releases uit, om veiligheidsredenen wil je bij blijven, en upgrades brengen databasemigraties met zich mee die je beter ergens anders test dan in productie.

Voor een team dat toch al eigen infrastructuur draait is dit marginaal werk en valt de rekensom overtuigend uit. Voor een bedrijf van tien mensen zonder operationele capaciteit kan een SaaS-factuur werkelijk goedkoper zijn dan de verloren dinsdagmiddagen. Wees eerlijk over welke van de twee je bent.

Weg bij Slack

Mattermost heeft een importpad vanuit Slack-exportbestanden, en dat werkt, met kanttekeningen die je van tevoren wilt kennen. Berichten uit openbare kanalen en gebruikers komen goed over. Privékanalen en directe berichten hangen af van wat je Slack-abonnement überhaupt laat exporteren. Threads, bijlagen, eigen emoji en integraties vragen aandacht, en sommige moeten opnieuw worden gebouwd.

De aanpak die werkt: importeer de geschiedenis als doorzoekbaar archief en behandel de overstapdatum als een schone start. Elk Slack-gedrag exact willen nabootsen is hoe een migratie van twee weken er een van twee kwartalen wordt.

Draai beide een week of twee naast elkaar, verhuis eerst één team, en zet de uitschakeldatum meteen aan het begin publiek vast. Chatmigraties mislukken sociaal, niet technisch.

De Europese invalshoek

Voor bedrijven in de EU gaat dit niet alleen over kosten. Zelf hosten brengt de interne communicatie binnen een grens die jij beheerst, en dat verandert meerdere gesprekken tegelijk: de doorgifteanalyse onder de AVG, de toeleveringsketentoets onder NIS2, en de soevereiniteitsvragen die steeds vaker opduiken bij overheidsaanbestedingen en die het hele onderwerp zijn van de Cloud and AI Development Act.

Interne chat is een van de dichtste concentraties vertrouwelijk materiaal die een bedrijf heeft. Daar staan incidentdetails, klantnamen, inloggegevens die niemand had mogen plakken maar wel plakte, en elke lopende commerciële onderhandeling. Als iemand vraagt waar die data leeft, is het iets waard om te kunnen antwoorden met een regio en een rack in plaats van met een lijst subverwerkers.

Wanneer je het moet laten

Ben je met vijftien mensen, zijn je compliance-eisen licht en wil niemand een server bezitten, neem dan de SaaS. De besparing weegt niet op tegen de aandacht.

Heb je diepe integratie nodig met een ecosysteem waarin je al woont, kijk dan scherp naar wat je zou verliezen. Teams binnen een Microsoft 365-omgeving krijgen veel gratis dat je zou moeten herbouwen.

En als de drijfveer de afkeer van één luide persoon tegen een leverancier is in plaats van een echte eis rond kosten, controle of jurisdictie, dan strandt de migratie rond zestig procent adoptie, en dat is voor een communicatiemiddel de slechtst denkbare uitkomst.

Hulp nodig

Wij zetten opensource-infrastructuur in eigen beheer op en draaien die voor bedrijven die in Europa opereren, inclusief de weinig glamoureuze delen: push proxies, migraties naar objectopslag, upgradepaden en de identiteitskoppeling die een chatuitrol laat beklijven.

Wil je een Mattermost-installatie die goed bemeten is, een Slack-migratie gepland door iemand die het eerder heeft gedaan, of een eerlijk antwoord op de vraag of zelf hosten voor jouw team de moeite waard is, mail dan naar office@c9group.dev. Meer over ons infrastructuurwerk op de pagina over AWS-kostenoptimalisatie.

Stel je een volledige stack in eigen beheer samen, dan geldt dezelfde redenering voor analytics en voor marketingautomatisering.


Gepubliceerd: 8 augustus 2026 Categorieën: Samenwerking, Open Source, Privacy