Åpen kildekode-teamkommunikasjon i stor skala: å drifte Mattermost selv

Med noen års mellomrom ser et selskap på Slack-fakturaen sin, summerer kostnaden per bruker, oppdager at ti år med intern samtale ligger i noen andres database i en annen jurisdiksjon, og spør om det finnes en annen vei. Det gjør det. Mattermost er det mest troverdige selvhostede svaret, og har vært det en god stund.
Det er også verktøyet som oftest blir misforstått før utrullingen, fordi gratisutgaven man tror man får, sjelden er den man ender opp med å drifte. Denne guiden handler om hva Mattermost faktisk er, hva gratisversjonen egentlig inneholder, og de tre driftsproblemene som tar nesten alle som hoster den for første gang.
Hva Mattermost er
En Go-server, en PostgreSQL-database, en React-webklient og native skrivebords- og mobilapper. Kanaler, tråder, fildeling, søk, skråstrekkommandoer, innkommende og utgående webhooks, boter og et rammeverk for utvidelser. Har du brukt Slack, er du produktiv på en ettermiddag, og det er alle andre også, noe som veier tyngre enn enhver funksjonsliste når du ber et helt selskap om å flytte.
Rundt denne kjernen ligger Playbooks for sjekklistedrevet hendelses- og prosessarbeid, og Calls for lyd, video og skjermdeling. Integrasjonskatalogen dekker de vanlige mistenkte: GitLab, GitHub, Jira, Jenkins, PagerDuty. Det er på ChatOps produktet virkelig er sterkt, og derfor har det så mange tilhengere blant utviklings- og driftsteam, og blant forsvars- og offentlige organisasjoner som ikke kan legge trafikken sin i en kommersiell SaaS i det hele tatt.
Det arkitektonisk viktige er at alt dette kjører på infrastruktur du velger. Samme prinsipp som når du hoster analysen din med Matomo eller markedsautomatiseringen med Mautic. Meldingene ligger i din database, filene i ditt objektlager, og ingen kan endre oppbevaringspolicy eller pris uten å spørre deg.
Lisensbildet, sagt rett ut
Det er her folk blir forvirret, så la oss være direkte.
Team Edition er den med åpen kildekode. MIT-lisens, gratis, ingen brukergrense, og det er den de fleste selvhostere faktisk kjører. Du får meldinger, kanaler, tråder, søk, integrasjoner, webhooks og utvidelsesrammeverket. Du får ikke enkeltpålogging via SAML eller AD/LDAP, etterlevelseseksport, enterprise-søk, høytilgjengelighetsklynge eller gjestekontoer.
Entry er en gratis kommersiell utgave. Den låser opp det avanserte funksjonssettet, men setter tak: meldingshistorikken er begrenset, antall playbook-kjøringer er begrenset, støtten er kun fra fellesskapet, og den sikter mot team under omtrent femti personer. Som måte å vurdere det betalte produktet på er det bra. Som måte å bygge et permanent hjem for selskapets samtalehistorikk på er det dårlig, for historikkgrensen treffer akkurat det du til slutt kommer til å bry deg om.
Professional, Enterprise og Enterprise Advanced er de betalte nivåene. Professional legger til SSO, MFA og avanserte tilganger. Enterprise legger til AD/LDAP-synkronisering, etterlevelsesautomatisering, enterprise-søk, høy tilgjengelighet og Playbooks i skala. Enterprise Advanced legger til håndtering av gradert informasjon, zero trust-kontroller og utrulling i lukkede nett, og det er nivået forsvars- og forvaltningsbrukerne sitter på. Mattermost publiserer ikke lenger pris per bruker, så regn med en samtale med salg.
Beslutningen de fleste team står overfor er enklere enn nivålisten antyder. Trenger du SAML mot identitetsleverandøren din, kommer du til å betale. Klarer du deg med lokale kontoer eller GitLab OAuth, bærer Team Edition en overraskende stor organisasjon.
Oppsettet
En liten installasjon
For et team på noen titalls til noen hundre personer holder én skikkelig dimensjonert VPS virkelig. Mattermosts egne anbefalinger setter én til tusen brukere til én vCPU og 2 GB RAM, noe som er optimistisk slik leverandørminimum alltid er. Gi maskinen fire kjerner og 8 GB, og du tenker aldri på den igjen.
Stakken består av Mattermost, PostgreSQL og en omvendt proxy som terminerer TLS. Traefik med Let's Encrypt er minst arbeid:
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:
Sett SiteURL riktig før du inviterer noen. En feil eller manglende SiteURL ødelegger push-varsler, OAuth-tilbakekall og lenkeforhåndsvisninger på måter som er irriterende å feilsøke senere og trivielle å unngå nå.
Ett forbehold er verdt å gjenta, fordi leverandøren sier det selv: containere er greit til vurdering og små produksjonsinstallasjoner, men den veien gir deg verken klynging eller høy tilgjengelighet ut av boksen. Trenger du det, installer direkte på Linux eller bruk Kubernetes-operatoren.
En produksjonsinstallasjon
PostgreSQL 14 eller nyere. MySQL-støtten fases ut fra v11, så setter du opp noe nå, ikke start på MySQL. Amazon Aurora PostgreSQL er støttet og er det fornuftige administrerte alternativet på AWS.
Legg filer i S3-kompatibelt objektlager fra dag én. Det lokale filsystemet fungerer og er standarden, og det er også det som stille og rolig gjør serveren din tilstandsbundet, sikkerhetskopiene enorme og migreringen smertefull. Å bytte senere betyr å flytte filer og skrive om stier. Å bytte ved installasjon betyr å sette en håndfull konfigurasjonsverdier.
For høy tilgjengelighet trenger du Enterprise-nivået: flere applikasjonsnoder bak en lastbalanserer, et delt objektlager og en database med lesereplikaer. For søk i skala vil du ha Elasticsearch eller OpenSearch, også Enterprise. PostgreSQLs fritekstsøk holder for et par hundre personer og et par millioner meldinger, og CJK-søk fungerer nå som standard på PostgreSQL, noe som tidligere var en reell grunn til å kjøpe søketillegget.
De tre tingene som går galt
Alt over står i dokumentasjonen. Dette er delene folk oppdager i produksjon.
Push-varsler er ikke gratis på den måten du forventer
Mobil push må gjennom nettverkene til Apple og Google, noe som betyr at noe må oppbevare signeringssertifikatene. Mattermost driver en Test Push Notification Service som virker med en gang, og som uttrykkelig ikke er ment for produksjon. Hosted Push Notification Service er produksjonstjenesten, og den kommer med en betalt lisens.
Det tredje alternativet er å kjøre sin egen push proxy. Det er godt dokumentert og fullt mulig, men det innebærer å bygge og distribuere sin egen mobilapp med egne Firebase- og APNs-nøkler, altså et forhold til appbutikkene og en utgivelsesprosess, ikke en ettermiddag.
Bestem hvilken av de tre før du ruller ut til telefoner, ikke etter at den første personen spør hvorfor meldinger bare kommer når appen er åpen. Akkurat dette punktet velter flere Mattermost-migreringer enn noe annet.
Calls trenger mer enn en port
Calls har to modi. Integrert modus kjører medietjenesten inne i Mattermost-serveren og anbefales under omtrent femti aktive brukere. Over det vil du ha rtcd, en egen tjeneste som holder anropstrafikken unna hovedserveren og skalerer horisontalt. rtcd krever Enterprise.
Uansett må klientene nå medietjenesten over UDP på port 8443, og den porten må være åpen på maskinen som kjører tjenesten. Din nginx omvendte proxy videresender den ikke, for nginx ligger ikke i UDP-stien i det hele tatt. Halvparten av alle tråder om anrop som ikke kobler seg opp, koker ned til en brannmurregel som aldri ble lagt inn.
På gratisnivået må du regne med en-til-en-samtaler med tidsbegrensning i stedet for ubegrensede gruppesamtaler. Er video for hele selskapet et krav, ta det med i budsjettet.
Noen må drifte det
Den ærlige kostnadssammenligningen er ikke lisens mot null. Det er lisens mot infrastruktur pluss personen som lapper den. Mattermost slipper hyppige versjoner, av sikkerhetshensyn vil du holde deg oppdatert, og oppgraderinger innebærer databasemigreringer som du bør teste et annet sted enn i produksjon.
For et team som allerede drifter egen infrastruktur, er dette marginalt arbeid, og regnestykket går klart opp. For et selskap på ti personer uten driftskapasitet kan en SaaS-faktura faktisk være billigere enn de tapte tirsdagsettermiddagene. Vær ærlig om hvilken av de to du er.
Bort fra Slack
Mattermost har en importvei fra Slacks eksportfiler, og den fungerer, med forbehold det er verdt å kjenne på forhånd. Meldinger fra åpne kanaler og brukere kommer godt over. Private kanaler og direktemeldinger avhenger av hva Slack-planen din i det hele tatt lar deg eksportere. Tråder, vedlegg, egne emoji og integrasjoner krever oppmerksomhet, og noe må bygges på nytt.
Tilnærmingen som fungerer: importer historikken som et søkbart arkiv, og behandle overgangsdatoen som en ren start. Å forsøke å gjenskape enhver Slack-oppførsel nøyaktig er nettopp slik en migrering på to uker blir en på to kvartaler.
Kjør begge parallelt i fjorten dager, flytt ett team først, og kunngjør avslutningsdatoen offentlig allerede fra start. Chat-migreringer feiler sosialt, ikke teknisk.
Den europeiske vinkelen
For selskaper i EU handler dette ikke bare om kostnad. Selvhosting plasserer den interne kommunikasjonen innenfor en grense du kontrollerer, og det endrer flere samtaler på én gang: overføringsanalysen under GDPR, leverandørkjedegjennomgangen under NIS2, og suverenitetsspørsmålene som stadig oftere dukker opp i offentlige anskaffelser og som er hele temaet i Cloud and AI Development Act.
Intern chat er en av de tetteste samlingene av fortrolig materiale et selskap har. Der ligger detaljer om hendelser, kundenavn, tilgangsdata ingen burde ha limt inn, men som noen limte inn likevel, og enhver pågående kommersiell forhandling. Når noen spør hvor de dataene bor, er det verdt noe å kunne svare med en region og et rack fremfor en liste over underleverandører.
Når du bør la det være
Er dere femten personer, er etterlevelseskravene lette, og vil ingen ha en server på nakken, ta SaaS-løsningen. Besparelsen dekker ikke oppmerksomheten.
Trenger du dyp integrasjon med et økosystem du allerede bor i, se nøye på hva du ville miste. Team inne i en Microsoft 365-park får mye gratis som du måtte bygge på nytt.
Og hvis drivkraften er én høylytt persons motvilje mot en leverandør snarere enn et reelt krav om kostnad, kontroll eller jurisdiksjon, stopper migreringen rundt seksti prosent oppslutning, som er det verst tenkelige utfallet for et kommunikasjonsverktøy.
Slik kan vi hjelpe
Vi setter opp og drifter selvhostet infrastruktur med åpen kildekode for selskaper som opererer i Europa, inkludert de lite glamorøse delene: push proxyer, migreringer til objektlager, oppgraderingsløp og den identitetsintegrasjonen som får en chat-utrulling til å feste seg.
Vil du ha en Mattermost-installasjon som er dimensjonert riktig, en Slack-migrering planlagt av noen som har gjort det før, eller et ærlig svar på om selvhosting er verdt det for teamet ditt, skriv til office@c9group.dev. Mer om infrastrukturarbeidet vårt på siden om AWS-kostnadsoptimalisering.
Setter du sammen en full selvhostet stakk, gjelder samme resonnement for analyse og for markedsautomatisering.
Publisert: 8. august 2026 Kategorier: Samarbeid, Åpen kildekode, Personvern