Komunikator zespołowy open source na dużą skalę: Mattermost we własnej infrastrukturze

Co kilka lat jakaś firma patrzy na fakturę od Slacka, sumuje koszt na użytkownika, zauważa, że dekada wewnętrznych rozmów leży w cudzej bazie danych i w innej jurysdykcji, i pyta, czy da się inaczej. Da się. Mattermost jest najbardziej wiarygodną odpowiedzią we własnym hostingu i jest nią od dłuższego czasu.
Jest też narzędziem najczęściej źle rozumianym przed wdrożeniem, bo darmowa edycja, którą wydaje się nam, że dostajemy, zwykle nie jest tą, którą ostatecznie uruchamiamy. Ten przewodnik mówi, czym Mattermost naprawdę jest, co faktycznie zawiera wersja darmowa i jakie trzy problemy eksploatacyjne dopadają niemal każdego, kto hostuje go po raz pierwszy.
Czym jest Mattermost
Serwer w Go, baza PostgreSQL, klient webowy w Reakcie oraz natywne aplikacje desktopowe i mobilne. Kanały, wątki, udostępnianie plików, wyszukiwanie, komendy ukośnikowe, webhooki przychodzące i wychodzące, boty i framework wtyczek. Kto używał Slacka, będzie produktywny po jednym popołudniu, i wszyscy pozostali też, a to liczy się bardziej niż jakakolwiek lista funkcji, gdy prosisz całą firmę o przeprowadzkę.
Wokół tego rdzenia są Playbooki, do pracy nad incydentami i procesami według list kontrolnych, oraz Calls, do audio, wideo i udostępniania ekranu. Katalog integracji obejmuje zwykłych podejrzanych: GitLab, GitHub, Jira, Jenkins, PagerDuty. To w ChatOps produkt jest naprawdę mocny i dlatego ma tylu zwolenników wśród zespołów inżynierskich i operacyjnych oraz wśród organizacji obronnych i publicznych, które w ogóle nie mogą umieścić swojego ruchu w komercyjnym SaaS.
Kluczowy fakt architektoniczny jest taki, że wszystko to działa na infrastrukturze, którą wybierasz ty. Ta sama zasada co przy samodzielnym hostowaniu analityki z Matomo czy automatyzacji marketingu z Mautic. Wiadomości są w twojej bazie, pliki w twoim magazynie obiektowym, a nikt nie zmieni polityki retencji ani ceny bez pytania cię o zdanie.
Sytuacja licencyjna, powiedziana wprost
Tu zaczyna się zamieszanie, więc powiedzmy to bez ogródek.
Team Edition to wersja otwartoźródłowa. Licencja MIT, za darmo, bez limitu użytkowników, i to właśnie ją uruchamia większość samodzielnie hostujących. Dostajesz komunikację, kanały, wątki, wyszukiwanie, integracje, webhooki i framework wtyczek. Nie dostajesz logowania jednokrotnego przez SAML ani AD/LDAP, eksportu na potrzeby zgodności, wyszukiwania klasy enterprise, klastra wysokiej dostępności ani kont gościnnych.
Entry to darmowa edycja komercyjna. Odblokowuje zaawansowany zestaw funkcji, ale nakłada limity: historia wiadomości jest ograniczona, liczba uruchomień playbooków jest ograniczona, wsparcie tylko społecznościowe, a całość celuje w zespoły poniżej mniej więcej pięćdziesięciu osób. To dobry sposób na ocenę produktu płatnego. To zły sposób na zbudowanie trwałego domu dla historii rozmów firmy, bo limit historii dotyczy dokładnie tego, na czym w końcu ci zależy.
Professional, Enterprise i Enterprise Advanced to poziomy płatne. Professional dokłada SSO, MFA i zaawansowane uprawnienia. Enterprise dokłada synchronizację AD/LDAP, automatyzację zgodności, wyszukiwanie enterprise, wysoką dostępność i Playbooki na skalę. Enterprise Advanced dokłada obsługę informacji niejawnych, mechanizmy zero trust i wdrożenie w sieci odseparowanej, i to na tym poziomie siedzą użytkownicy z obronności i administracji. Mattermost nie publikuje już cen za użytkownika, więc zaplanuj rozmowę z działem sprzedaży.
Decyzja, przed którą stoi większość zespołów, jest prostsza, niż sugeruje ta lista. Jeśli potrzebujesz SAML wobec swojego dostawcy tożsamości, zapłacisz. Jeśli wystarczą ci konta lokalne albo OAuth GitLaba, Team Edition uniesie zaskakująco dużą organizację.
Instalacja
Małe wdrożenie
Dla zespołu liczącego od kilkudziesięciu do kilkuset osób jeden porządnie dobrany VPS naprawdę wystarczy. Sam Mattermost podaje dla od jednego do tysiąca użytkowników jeden vCPU i 2 GB RAM, co jest optymistyczne tak, jak minima producentów zawsze są. Daj maszynie cztery rdzenie i 8 GB, a już nigdy o niej nie pomyślisz.
Stos to Mattermost, PostgreSQL i reverse proxy kończące TLS. Traefik z Let's Encrypt oznacza najmniej pracy:
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:
Ustaw poprawnie SiteURL, zanim kogokolwiek zaprosisz. Błędny albo brakujący SiteURL psuje powiadomienia push, wywołania zwrotne OAuth i podglądy linków w sposób, który później męczy przy diagnozie, a teraz kosztuje jedną linijkę.
Jedno zastrzeżenie warto powtórzyć, bo mówi je sam producent: kontenery nadają się do ewaluacji i do małych instalacji produkcyjnych, ale ta droga nie daje ci klastrowania ani wysokiej dostępności od ręki. Jeśli ich potrzebujesz, instaluj bezpośrednio na Linuksie albo użyj operatora Kubernetes.
Wdrożenie produkcyjne
PostgreSQL 14 lub nowszy. Wsparcie dla MySQL jest wycofywane od v11, więc jeśli stawiasz coś teraz, nie zaczynaj od MySQL. Amazon Aurora PostgreSQL jest wspierany i to rozsądna opcja zarządzana na AWS.
Pliki umieść w magazynie obiektowym zgodnym z S3 od pierwszego dnia. Lokalny system plików działa i jest ustawieniem domyślnym, i jest też tym, co po cichu czyni twój serwer stanowym, kopie zapasowe ogromnymi, a migrację bolesną. Zmiana później oznacza przenoszenie plików i przepisywanie ścieżek. Zmiana przy instalacji oznacza ustawienie kilku wartości w konfiguracji.
Do wysokiej dostępności potrzebujesz poziomu Enterprise: kilku węzłów aplikacyjnych za load balancerem, współdzielonego magazynu obiektowego i bazy z replikami do odczytu. Do wyszukiwania na dużą skalę chcesz Elasticsearcha albo OpenSearcha, również Enterprise. Wyszukiwanie pełnotekstowe PostgreSQL wystarcza dla kilkuset osób i kilku milionów wiadomości, a wyszukiwanie CJK działa teraz domyślnie na PostgreSQL, co kiedyś było realnym powodem, by kupić dodatek wyszukiwania.
Trzy rzeczy, które idą nie tak
Wszystko powyżej jest w dokumentacji. To poniżej ludzie odkrywają na produkcji.
Powiadomienia push nie są darmowe w sposób, jakiego się spodziewasz
Push mobilny musi przejść przez sieci Apple'a i Google'a, co oznacza, że coś musi trzymać certyfikaty podpisujące. Mattermost prowadzi Test Push Notification Service, który działa od razu i wprost nie jest przeznaczony na produkcję. Hosted Push Notification Service to ten produkcyjny i wiąże się z płatną licencją.
Trzecia możliwość to własny push proxy. Jest dobrze udokumentowana i całkiem wykonalna, ale oznacza zbudowanie i dystrybucję własnej aplikacji mobilnej z własnymi poświadczeniami Firebase i APNs, czyli relację ze sklepami z aplikacjami i proces wydawniczy, a nie jedno popołudnie.
Wybierz jedną z trzech, zanim wdrożysz komunikator na telefony, a nie po tym, jak pierwsza osoba zapyta, czemu dostaje wiadomości tylko przy otwartej aplikacji. Ten jeden punkt przewraca więcej migracji na Mattermost niż cokolwiek innego.
Calls potrzebuje czegoś więcej niż portu
Calls ma dwa tryby. Tryb zintegrowany uruchamia usługę mediów wewnątrz serwera Mattermost i jest zalecany poniżej mniej więcej pięćdziesięciu aktywnych użytkowników. Powyżej chcesz rtcd, osobną usługę, która trzyma ruch mediów z dala od głównego serwera i skaluje się poziomo. rtcd wymaga Enterprise.
W obu przypadkach klienci muszą sięgnąć usługi mediów po UDP na porcie 8443, a ten port musi być otwarty na hoście, na którym ta usługa działa. Twoje reverse proxy w nginksie go nie przekaże, bo nginx w ogóle nie leży na ścieżce UDP. Połowa wątków w stylu „połączenia się nie zestawiają” sprowadza się do reguły firewalla, której nigdy nie dodano.
Na poziomie darmowym spodziewaj się rozmów jeden na jeden z limitem czasu, a nie nielimitowanych rozmów grupowych. Jeśli wideo dla całej firmy jest wymogiem, wyceń je.
Ktoś musi to utrzymywać
Uczciwe porównanie kosztów to nie licencja kontra zero. To licencja kontra infrastruktura plus osoba, która ją łata. Mattermost wydaje często, ze względów bezpieczeństwa będziesz chciał być na bieżąco, a aktualizacje niosą migracje bazy, które lepiej przetestować gdzieś poza produkcją.
Dla zespołu, który i tak prowadzi własną infrastrukturę, to praca marginalna, a rachunek wychodzi bezdyskusyjnie. Dla dziesięcioosobowej firmy bez zdolności operacyjnych faktura za SaaS może naprawdę wyjść taniej niż stracone wtorkowe popołudnia. Bądź szczery co do tego, którym z tych dwóch przypadków jesteś.
Wyjście ze Slacka
Mattermost ma ścieżkę importu z plików eksportu Slacka i ona działa, z zastrzeżeniami, które warto znać wcześniej. Wiadomości z kanałów publicznych i użytkownicy przenoszą się dobrze. Kanały prywatne i wiadomości bezpośrednie zależą od tego, co twój plan Slacka w ogóle pozwala wyeksportować. Wątki, załączniki, własne emoji i integracje wymagają uwagi, a część trzeba zbudować od nowa.
Podejście, które działa: zaimportuj historię jako przeszukiwalne archiwum i potraktuj datę przełączenia jako czysty start. Próba odtworzenia każdego zachowania Slacka co do joty to sposób, w jaki dwutygodniowa migracja staje się dwukwartalna.
Puść oba systemy równolegle przez dwa tygodnie, przenieś najpierw jeden zespół i publicznie ustal datę wyłączenia już na starcie. Migracje komunikatorów przegrywają społecznie, nie technicznie.
Perspektywa europejska
Dla firm w UE to nie tylko kwestia kosztu. Własny hosting umieszcza komunikację wewnętrzną w granicy, którą kontrolujesz, a to zmienia kilka rozmów naraz: analizę transferów wedle RODO, kontrolę łańcucha dostaw wedle NIS2 oraz pytania o suwerenność, które coraz częściej pojawiają się w zamówieniach publicznych i które są całym tematem Cloud and AI Development Act.
Czat wewnętrzny to jedno z najgęstszych skupisk materiału poufnego, jakie firma posiada. Są tam szczegóły incydentów, nazwiska klientów, poświadczenia, których nikt nie powinien był wkleić, ale ktoś wkleił, i każda trwająca negocjacja handlowa. Gdy ktoś pyta, gdzie te dane żyją, możliwość odpowiedzi regionem i szafą zamiast listą podprzetwarzających jest coś warta.
Kiedy sobie odpuścić
Jeśli jest was piętnaścioro, wymogi zgodności są lekkie, a nikt nie chce mieć na głowie serwera, weźcie SaaS. Oszczędność nie pokryje uwagi.
Jeśli potrzebujesz głębokiej integracji z ekosystemem, w którym już mieszkasz, przyjrzyj się dokładnie temu, co stracisz. Zespoły wewnątrz środowiska Microsoft 365 dostają za darmo sporo rzeczy, które musiałbyś odbudować.
A jeśli napędem jest niechęć jednej głośnej osoby do dostawcy zamiast realnego wymogu co do kosztu, kontroli albo jurysdykcji, migracja utknie przy jakichś sześćdziesięciu procentach adopcji, a to najgorszy możliwy wynik dla narzędzia do komunikacji.
Jak możemy pomóc
Wdrażamy i utrzymujemy samodzielnie hostowaną infrastrukturę open source dla firm działających w Europie, łącznie z częściami mało efektownymi: push proxy, migracjami do magazynu obiektowego, ścieżkami aktualizacji i tą integracją z tożsamością, dzięki której wdrożenie komunikatora się przyjmuje.
Jeśli chcesz instalację Mattermosta dobraną jak trzeba, migrację ze Slacka zaplanowaną przez kogoś, kto już ją przeprowadził, albo uczciwą odpowiedź, czy własny hosting opłaca się twojemu zespołowi, napisz na office@c9group.dev. Więcej o naszej pracy infrastrukturalnej na stronie o optymalizacji kosztów AWS.
Jeśli składasz pełny stos we własnym hostingu, to samo rozumowanie dotyczy analityki i automatyzacji marketingu.
Opublikowano: 8 sierpnia 2026 Kategorie: Współpraca, Open Source, Prywatność