Messaggistica di squadra open source su larga scala: gestire Mattermost in proprio

Ogni pochi anni un'azienda guarda la fattura di Slack, somma il costo per utente, si accorge che dieci anni di conversazioni interne stanno nel database di qualcun altro in un'altra giurisdizione, e si chiede se ci sia un'alternativa. C'è. Mattermost è la risposta self-hosted più credibile, e lo è da parecchio tempo.
È anche lo strumento più spesso frainteso prima del rilascio, perché l'edizione gratuita che si crede di ottenere di solito non è quella che si finisce per gestire. Questa guida spiega che cos'è davvero Mattermost, che cosa contiene realmente la versione gratuita e i tre problemi operativi che colpiscono quasi chiunque lo installi per la prima volta.
Che cos'è Mattermost
Un server in Go, un database PostgreSQL, un client web in React e app native per desktop e mobile. Canali, thread, condivisione di file, ricerca, comandi slash, webhook in entrata e in uscita, bot e un framework di plugin. Chi ha usato Slack sarà produttivo in un pomeriggio, e lo saranno anche tutti gli altri: conta più di qualsiasi elenco di funzioni quando chiedete a un'intera azienda di traslocare.
Attorno a questo nucleo ci sono i Playbook, per il lavoro su incidenti e processi guidato da checklist, e Calls, per audio, video e condivisione dello schermo. Il catalogo di integrazioni copre i soliti noti: GitLab, GitHub, Jira, Jenkins, PagerDuty. È sul ChatOps che il prodotto è davvero forte, ed è per questo che ha tanto seguito tra i team di sviluppo e di operations, e tra le organizzazioni della difesa e del settore pubblico che il proprio traffico non possono proprio metterlo su un SaaS commerciale.
Il fatto architetturale che conta è che tutto questo gira su un'infrastruttura scelta da voi. Stesso principio dell'analytics self-hosted con Matomo o della marketing automation con Mautic. I messaggi sono nel vostro database, i file nel vostro object storage, e nessuno può cambiare la politica di conservazione o il prezzo senza chiedervelo.
Il quadro delle licenze, detto chiaro
È qui che ci si confonde, quindi conviene essere diretti.
Team Edition è quella open source. Licenza MIT, gratuita, senza limite di utenti, ed è quella che la maggior parte di chi si autogestisce fa girare davvero. Avete messaggistica, canali, thread, ricerca, integrazioni, webhook e il framework di plugin. Non avete il single sign-on SAML o AD/LDAP, né l'export per la compliance, né la ricerca enterprise, né il cluster in alta disponibilità, né gli account ospite.
Entry è un'edizione commerciale gratuita. Sblocca l'insieme avanzato di funzioni ma vi mette un tetto: lo storico dei messaggi è limitato, il numero di esecuzioni dei playbook è limitato, il supporto è solo comunitario ed è pensata per team sotto la cinquantina di persone. È un buon modo per valutare il prodotto a pagamento. È un pessimo modo per costruire una casa permanente allo storico delle conversazioni aziendali, perché quel limite cade esattamente sulla cosa che alla fine vi interesserà.
Professional, Enterprise ed Enterprise Advanced sono i livelli a pagamento. Professional aggiunge SSO, MFA e permessi avanzati. Enterprise aggiunge la sincronizzazione AD/LDAP, l'automazione della compliance, la ricerca enterprise, l'alta disponibilità e i Playbook su scala. Enterprise Advanced aggiunge la gestione delle informazioni classificate, i controlli zero trust e il rilascio in reti isolate, ed è il livello su cui stanno gli utenti della difesa e della pubblica amministrazione. Mattermost non pubblica più il prezzo per utente, quindi mettete in conto una telefonata con un commerciale.
La decisione davanti a cui si trova la maggior parte dei team è più semplice di quanto suggerisca l'elenco dei livelli. Se vi serve SAML contro il vostro identity provider, pagherete. Se potete convivere con account locali o OAuth di GitLab, la Team Edition regge un'organizzazione sorprendentemente grande.
L'installazione
Un rilascio piccolo
Per un team da qualche decina a qualche centinaio di persone, un solo VPS ben dimensionato basta davvero. Le indicazioni di Mattermost collocano da uno a mille utenti su una vCPU e 2 GB di RAM, il che è ottimistico come lo sono sempre i minimi dichiarati dai produttori. Dategli quattro core e 8 GB e non ci penserete più.
Lo stack è Mattermost, PostgreSQL e un reverse proxy che termina il TLS. Traefik con Let's Encrypt è la strada meno faticosa:
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:
Impostate SiteURL correttamente prima di invitare chiunque. Una SiteURL sbagliata o assente rompe notifiche push, callback OAuth e anteprime dei link in modi fastidiosi da debuggare dopo e banali da evitare adesso.
Un avvertimento vale la pena ripeterlo, perché lo dice anche il produttore: i container vanno bene per la valutazione e per piccole installazioni di produzione, ma quella strada non vi dà clustering né alta disponibilità già pronti. Se vi servono, installate direttamente su Linux o usate l'operatore Kubernetes.
Un rilascio di produzione
PostgreSQL 14 o superiore. Il supporto a MySQL viene deprecato a partire dalla v11, quindi se state mettendo su qualcosa adesso non partite da MySQL. Amazon Aurora PostgreSQL è supportato ed è l'opzione gestita sensata su AWS.
Mettete i file su object storage compatibile S3 dal primo giorno. Il filesystem locale funziona ed è il valore predefinito, ed è anche ciò che silenziosamente rende il vostro server stateful, i backup enormi e la migrazione dolorosa. Cambiare dopo significa spostare file e riscrivere percorsi. Cambiare in fase di installazione significa impostare una manciata di valori di configurazione.
Per l'alta disponibilità serve il livello Enterprise: più nodi applicativi dietro un load balancer, un object store condiviso e un database con repliche di lettura. Per la ricerca su larga scala vorrete Elasticsearch o OpenSearch, anch'essi Enterprise. La ricerca full-text di PostgreSQL basta per qualche centinaio di persone e qualche milione di messaggi, e la ricerca CJK ora funziona di default su PostgreSQL, cosa che un tempo era un motivo concreto per comprare il modulo di ricerca.
Le tre cose che vanno storte
Tutto quanto sopra sta nella documentazione. Queste sono le parti che si scoprono in produzione.
Le notifiche push non sono gratuite nel modo in cui ve lo aspettate
Il push mobile deve passare per le reti di Apple e Google, il che significa che qualcosa deve custodire i certificati di firma. Mattermost gestisce un Test Push Notification Service che funziona subito e che esplicitamente non è per la produzione. L'Hosted Push Notification Service è quello di produzione e arriva con una licenza a pagamento.
La terza opzione è gestire un push proxy vostro. È ben documentato e del tutto fattibile, ma comporta costruire e distribuire una vostra app mobile con credenziali Firebase e APNs vostre: è un rapporto con gli app store e un processo di rilascio, non un pomeriggio.
Decidete quale delle tre prima di distribuire sui telefoni, non dopo che la prima persona ha chiesto perché riceve i messaggi solo con l'app aperta. Questo singolo punto manda all'aria più migrazioni verso Mattermost di qualsiasi altra cosa.
Calls ha bisogno di più di una porta
Calls ha due modalità. La modalità integrata fa girare il servizio media dentro il server Mattermost ed è consigliata sotto la cinquantina di utenti attivi. Sopra vorrete rtcd, un servizio separato che tiene il traffico media fuori dal server principale e scala in orizzontale. rtcd richiede Enterprise.
In entrambi i casi i client devono raggiungere il servizio media via UDP sulla porta 8443, e quella porta deve essere aperta sull'host che esegue il servizio media. Il vostro reverse proxy nginx non la inoltrerà, perché nginx non sta sul percorso UDP. Metà delle discussioni del tipo «le chiamate non si connettono» si riducono a una regola di firewall mai aggiunta.
Sul livello gratuito aspettatevi chiamate uno a uno con un limite di tempo, non chiamate di gruppo illimitate. Se il video per tutta l'azienda è un requisito, mettetelo a budget.
Qualcuno deve gestirlo
Il confronto onesto sui costi non è licenza contro zero. È licenza contro infrastruttura più la persona che applica le patch. Mattermost rilascia spesso, per ragioni di sicurezza vorrete restare aggiornati, e gli aggiornamenti comportano migrazioni di database che è meglio provare da qualche parte che non sia la produzione.
Per un team che già gestisce infrastruttura propria è lavoro marginale e i conti tornano nettamente. Per un'azienda di dieci persone senza capacità di operations, una fattura SaaS può davvero costare meno dei martedì pomeriggio persi. Siate onesti su quale dei due casi siete.
Uscire da Slack
Mattermost ha un percorso di import dai file di export di Slack, e funziona, con riserve che conviene conoscere prima. I messaggi dei canali pubblici e gli utenti arrivano bene. Canali privati e messaggi diretti dipendono da che cosa il vostro piano Slack vi lascia esportare. Thread, allegati, emoji personalizzate e integrazioni richiedono attenzione, e qualcuna va ricostruita.
L'approccio che funziona: importare lo storico come archivio consultabile e trattare la data di passaggio come un inizio pulito. Cercare di riprodurre ogni comportamento di Slack alla lettera è il modo in cui una migrazione di due settimane diventa di due trimestri.
Fate girare i due sistemi in parallelo per una quindicina di giorni, spostate prima una squadra e fissate pubblicamente la data di spegnimento fin dall'inizio. Le migrazioni di chat falliscono per ragioni sociali, non tecniche.
L'angolo europeo
Per le aziende dell'UE non è solo questione di costo. L'autogestione mette la comunicazione interna dentro un confine che controllate voi, e questo cambia più discorsi insieme: l'analisi dei trasferimenti secondo il GDPR, il controllo della catena di fornitura previsto da NIS2 e le domande sulla sovranità che compaiono sempre più spesso negli appalti pubblici e che sono l'intero argomento del Cloud and AI Development Act.
La chat interna è una delle concentrazioni più dense di materiale riservato che un'azienda possieda. Ci sono i dettagli degli incidenti, i nomi dei clienti, le credenziali che nessuno avrebbe dovuto incollare e che qualcuno ha incollato, e ogni trattativa commerciale in corso. Quando qualcuno chiede dove vivono quei dati, poter rispondere con una regione e un rack invece che con un elenco di subresponsabili vale qualcosa.
Quando lasciar perdere
Se siete in quindici, i requisiti di conformità sono leggeri e nessuno ha voglia di possedere un server, prendete il SaaS. Il risparmio non ripagherà l'attenzione.
Se vi serve un'integrazione profonda con un ecosistema che già abitate, guardate bene che cosa perdereste. I team dentro un parco Microsoft 365 ricevono gratis parecchie cose che dovreste ricostruire.
E se la spinta è l'antipatia di una persona rumorosa verso un fornitore invece di un requisito reale su costi, controllo o giurisdizione, la migrazione si fermerà attorno al sessanta per cento di adozione, che per uno strumento di comunicazione è il peggior esito possibile.
Come possiamo aiutarvi
Installiamo e gestiamo infrastruttura open source self-hosted per aziende che operano in Europa, comprese le parti poco affascinanti: push proxy, migrazioni verso object storage, percorsi di aggiornamento e quell'integrazione con l'identità che fa attecchire un rollout di chat.
Se volete un'installazione di Mattermost dimensionata come si deve, una migrazione da Slack pianificata da chi l'ha già fatta, o una risposta onesta sul fatto che l'autogestione convenga al vostro team, scrivete a office@c9group.dev. Altro sul nostro lavoro infrastrutturale nella pagina sull'ottimizzazione dei costi AWS.
Se state mettendo insieme uno stack self-hosted completo, lo stesso ragionamento vale per l'analytics e per la marketing automation.
Pubblicato: 8 agosto 2026 Categorie: Collaborazione, Open Source, Privacy