Open source teamkommunikation i stor skala: at drive Mattermost selv

Med få års mellemrum kigger en virksomhed på sin Slack-regning, lægger prisen per bruger sammen, opdager at ti års intern samtale ligger i en andens database i en anden jurisdiktion, og spørger sig selv, om der findes en anden vej. Det gør der. Mattermost er det mest troværdige selvhostede svar, og det har den været længe.
Det er også det værktøj, der oftest bliver misforstået inden udrulningen, fordi den gratis udgave, man tror man får, sjældent er den, man ender med at drive. Denne guide handler om, hvad Mattermost faktisk er, hvad gratisversionen reelt indeholder, og de tre driftsproblemer, der rammer næsten alle, der hoster den for første gang.
Hvad Mattermost er
En Go-server, en PostgreSQL-database, en React-webklient og native desktop- og mobilapps. Kanaler, tråde, fildeling, søgning, slash-kommandoer, indgående og udgående webhooks, bots og et plugin-framework. Har man brugt Slack, er man produktiv på en eftermiddag, og det er alle andre også, hvilket vejer tungere end nogen funktionsliste, når man beder en hel virksomhed om at flytte.
Rundt om den kerne ligger Playbooks til checklistedreven hændelses- og procesarbejde, og Calls til lyd, video og skærmdeling. Integrationskataloget dækker de sædvanlige mistænkte: GitLab, GitHub, Jira, Jenkins, PagerDuty. Det er på ChatOps, produktet virkelig er stærkt, og derfor har det så stor tilslutning blandt udviklings- og driftsteams, og blandt forsvars- og myndighedsorganisationer, der slet ikke må lægge deres trafik i en kommerciel SaaS.
Det arkitektonisk vigtige er, at det hele kører på infrastruktur, du vælger. Samme princip som ved at hoste sin analytics med Matomo eller sin marketingautomatisering med Mautic. Beskederne ligger i din database, filerne i dit objektlager, og ingen kan ændre opbevaringspolitik eller pris uden at spørge dig.
Licensbilledet, sagt lige ud
Det er her, folk bliver forvirrede, så lad os være direkte.
Team Edition er den open source. MIT-licens, gratis, ingen brugerbegrænsning, og det er den, de fleste selvhostere reelt kører. Du får beskeder, kanaler, tråde, søgning, integrationer, webhooks og plugin-frameworket. Du får ikke single sign-on via SAML eller AD/LDAP, compliance-eksport, enterprise-søgning, højtilgængelighedsklynge eller gæstekonti.
Entry er en gratis kommerciel udgave. Den låser det avancerede funktionssæt op, men sætter loft: beskedhistorikken er begrænset, antallet af playbook-kørsler er begrænset, support er kun via fællesskabet, og den sigter mod teams under omkring halvtreds personer. Som måde at evaluere det betalte produkt på er det fint. Som måde at bygge et permanent hjem for virksomhedens samtalehistorik på er det skidt, for netop historikgrænsen rammer præcis det, du ender med at bekymre dig om.
Professional, Enterprise og Enterprise Advanced er de betalte niveauer. Professional tilføjer SSO, MFA og avancerede rettigheder. Enterprise tilføjer AD/LDAP-synkronisering, compliance-automatisering, enterprise-søgning, høj tilgængelighed og Playbooks i skala. Enterprise Advanced tilføjer håndtering af klassificerede oplysninger, zero trust-kontroller og udrulning i lukkede netværk, og det er niveauet, hvor forsvars- og myndighedsbrugerne sidder. Mattermost offentliggør ikke længere pris per bruger, så regn med en samtale med salg.
Beslutningen, de fleste teams står over for, er enklere, end niveaulisten antyder. Har du brug for SAML mod din identitetsudbyder, kommer du til at betale. Kan du leve med lokale konti eller GitLab OAuth, bærer Team Edition en overraskende stor organisation.
Opsætningen
En lille installation
For et team på nogle få snese til nogle få hundrede personer er én ordentligt dimensioneret VPS rigeligt. Mattermosts egne anbefalinger sætter én til tusind brugere til én vCPU og 2 GB RAM, hvilket er optimistisk på den måde, leverandørminimum altid er. Giv maskinen fire kerner og 8 GB, og du tænker aldrig på den igen.
Stakken består af Mattermost, PostgreSQL og en reverse proxy, der afslutter TLS. Traefik med Let's Encrypt er mindst arbejde:
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:
Sæt SiteURL rigtigt, før du inviterer nogen. En forkert eller manglende SiteURL ødelægger push-notifikationer, OAuth-callbacks og linkforhåndsvisninger på måder, der er irriterende at fejlfinde senere og trivielle at undgå nu.
Ét forbehold er værd at gentage, fordi leverandøren selv siger det: containere er fine til evaluering og små produktionsinstallationer, men den vej giver dig hverken klyngedrift eller høj tilgængelighed ud af boksen. Har du brug for det, så installer direkte på Linux eller brug Kubernetes-operatoren.
En produktionsinstallation
PostgreSQL 14 eller nyere. MySQL-understøttelsen udfases fra v11, så sætter du noget op nu, skal du ikke starte på MySQL. Amazon Aurora PostgreSQL er understøttet og er den fornuftige managed-løsning på AWS.
Læg filer i S3-kompatibelt objektlager fra dag ét. Det lokale filsystem virker og er standarden, og det er også det, der stille og roligt gør din server tilstandsbunden, dine backups enorme og din migrering smertefuld. At skifte senere betyder at flytte filer og skrive stier om. At skifte ved installationen betyder at sætte en håndfuld konfigurationsværdier.
Til høj tilgængelighed skal du bruge Enterprise-niveauet: flere applikationsnoder bag en load balancer, et delt objektlager og en database med læsereplikaer. Til søgning i skala vil du have Elasticsearch eller OpenSearch, også Enterprise. PostgreSQL-fritekstsøgning er fin til et par hundrede personer og et par millioner beskeder, og CJK-søgning virker nu som standard på PostgreSQL, hvilket tidligere var en reel grund til at købe søgetilkøbet.
De tre ting, der går galt
Alt ovenstående står i dokumentationen. Det her er de dele, folk opdager i produktion.
Push-notifikationer er ikke gratis på den måde, du forventer
Mobil push skal gennem Apples og Googles netværk, hvilket betyder, at noget skal opbevare signeringscertifikaterne. Mattermost driver en Test Push Notification Service, som virker med det samme og udtrykkeligt ikke er til produktion. Hosted Push Notification Service er produktionsudgaven, og den følger med en betalt licens.
Den tredje mulighed er at køre sin egen push proxy. Det er veldokumenteret og helt gennemførligt, men det indebærer at bygge og distribuere sin egen mobilapp med egne Firebase- og APNs-legitimationsoplysninger, og det er et forhold til app-butikkerne og en releaseproces, ikke en eftermiddag.
Beslut hvilken af de tre, før du ruller ud til telefoner, ikke efter at den første person spørger, hvorfor beskeder kun kommer, når appen er åben. Netop dette punkt vælter flere Mattermost-migreringer end noget andet.
Calls kræver mere end en port
Calls har to tilstande. Integreret tilstand kører medietjenesten inde i Mattermost-serveren og anbefales under omkring halvtreds aktive brugere. Derover vil du have rtcd, en separat tjeneste, der holder opkaldstrafikken væk fra hovedserveren og skalerer vandret. rtcd kræver Enterprise.
Uanset hvad skal klienterne nå medietjenesten over UDP på port 8443, og den port skal være åben på den maskine, der kører tjenesten. Din nginx reverse proxy videresender den ikke, for nginx ligger slet ikke i UDP-stien. Halvdelen af alle tråde om opkald, der ikke forbinder, koger ned til en firewallregel, der aldrig blev tilføjet.
På det gratis niveau skal du forvente en-til-en-opkald med tidsbegrænsning frem for ubegrænsede gruppeopkald. Er video for hele virksomheden et krav, skal det med i budgettet.
Nogen skal drive det
Den ærlige omkostningssammenligning er ikke licens mod nul. Det er licens mod infrastruktur plus den person, der patcher. Mattermost udgiver ofte, af sikkerhedshensyn vil du gerne være opdateret, og opgraderinger indebærer databasemigreringer, som du bør teste et andet sted end i produktion.
For et team, der i forvejen driver egen infrastruktur, er det marginalt arbejde, og regnestykket falder klart ud. For en virksomhed med ti ansatte uden driftskapacitet kan en SaaS-regning reelt være billigere end de tabte tirsdagseftermiddage. Vær ærlig om, hvilken af de to du er.
Væk fra Slack
Mattermost har en importvej fra Slacks eksportfiler, og den virker, med forbehold, der er værd at kende på forhånd. Beskeder fra offentlige kanaler og brugere kommer godt med. Private kanaler og direkte beskeder afhænger af, hvad din Slack-plan overhovedet lader dig eksportere. Tråde, vedhæftede filer, egne emoji og integrationer kræver opmærksomhed, og noget af det skal bygges om.
Den tilgang, der virker: importer historikken som et søgbart arkiv, og behandl skiftedatoen som en ren start. At ville gengive enhver Slack-adfærd nøjagtigt er præcis, hvordan en migrering på to uger bliver til en på to kvartaler.
Kør begge dele parallelt i fjorten dage, flyt ét team først, og meld slukkedatoen offentligt ud allerede fra start. Chatmigreringer fejler socialt, ikke teknisk.
Den europæiske vinkel
For virksomheder i EU handler det ikke kun om pris. Selvhosting placerer den interne kommunikation inden for en grænse, du kontrollerer, og det ændrer flere samtaler på én gang: overførselsanalysen under GDPR, leverandørkædekontrollen under NIS2, og de suverænitetsspørgsmål, der i stigende grad dukker op i offentlige udbud, og som er hele emnet for Cloud and AI Development Act.
Intern chat er en af de tætteste ansamlinger af fortroligt materiale, en virksomhed har. Der ligger detaljer om hændelser, kundenavne, adgangsoplysninger, ingen burde have indsat, men gjorde alligevel, og enhver igangværende kommerciel forhandling. Når nogen spørger, hvor de data bor, er det noget værd at kunne svare med en region og et rack frem for en liste over underdatabehandlere.
Hvornår du skal lade være
Er I femten personer, er jeres compliancekrav lette, og vil ingen have en server på nakken, så tag SaaS-løsningen. Besparelsen dækker ikke opmærksomheden.
Har du brug for dyb integration med et økosystem, du allerede bor i, så se grundigt på, hvad du ville miste. Teams inde i en Microsoft 365-installation får en masse gratis, som du skulle bygge igen.
Og hvis drivkraften er én højtråbende persons modvilje mod en leverandør snarere end et reelt krav om pris, kontrol eller jurisdiktion, går migreringen i stå omkring tres procent udbredelse, hvilket er det værst tænkelige udfald for et kommunikationsværktøj.
Sådan kan vi hjælpe
Vi opsætter og driver selvhostet open source-infrastruktur for virksomheder i Europa, inklusive de uglamourøse dele: push proxies, migreringer til objektlager, opgraderingsveje og den identitetsintegration, der får en chatudrulning til at sætte sig fast.
Vil du have en Mattermost-installation, der er dimensioneret ordentligt, en Slack-migrering planlagt af nogen, der har gjort det før, eller et ærligt svar på, om selvhosting er besværet værd for dit team, så skriv til office@c9group.dev. Mere om vores infrastrukturarbejde på siden om AWS-omkostningsoptimering.
Sætter du en fuld selvhostet stak sammen, gælder samme ræsonnement for analytics og for marketingautomatisering.
Udgivet: 8. august 2026 Kategorier: Samarbejde, Open Source, Privatliv