Back to Articles

Nyílt forráskódú csapatkommunikáció nagyban: a Mattermost saját üzemeltetésben

hands typing a message on a phone in a dark room

Néhány évente egy cég ránéz a Slack-számlájára, összeadja a felhasználónkénti költséget, észreveszi, hogy egy évtizednyi belső beszélgetés valaki más adatbázisában és egy másik joghatóság alatt fekszik, és felteszi a kérdést, hogy van-e más út. Van. A Mattermost a legkomolyabb saját üzemeltetésű válasz erre, és már jó ideje az.

Egyben az az eszköz is, amelyet a bevezetés előtt a leggyakrabban félreértenek, mert az ingyenes kiadás, amelyről azt hisszük, hogy megkapjuk, rendszerint nem az, amelyet a végén üzemeltetünk. Ez az útmutató arról szól, mi is valójában a Mattermost, mit tartalmaz ténylegesen az ingyenes változat, és melyik három üzemeltetési probléma éri utol szinte mindenkit, aki először hosztolja saját maga.

Mi a Mattermost

Egy Go nyelvű szerver, egy PostgreSQL adatbázis, egy React webes kliens, valamint natív asztali és mobilalkalmazások. Csatornák, szálak, fájlmegosztás, keresés, perjeles parancsok, bejövő és kimenő webhookok, botok és bővítménykeretrendszer. Aki használt Slacket, egy délután alatt produktív lesz, és mindenki más is, ami többet nyom a latban bármilyen funkciólistánál, amikor egy egész cégtől kérjük, hogy költözzön.

E mag köré épülnek a Playbookok az ellenőrzőlistás incidens- és folyamatmunkához, és a Calls a hang-, videó- és képernyőmegosztáshoz. Az integrációs katalógus lefedi a szokásos gyanúsítottakat: GitLab, GitHub, Jira, Jenkins, PagerDuty. A ChatOps területén a termék valóban erős, és ezért van akkora tábora a fejlesztői és üzemeltetői csapatok, illetve azon védelmi és közszolgálati szervezetek körében, amelyek a forgalmukat egyáltalán nem tehetik kereskedelmi SaaS-ba.

Az építészetileg fontos tény az, hogy mindez az általad választott infrastruktúrán fut. Ugyanaz az elv, mint az analitika saját üzemeltetésénél Matomóval vagy a marketingautomatizálásnál Mautickal. Az üzenetek a te adatbázisodban vannak, a fájlok a te objektumtárolódban, és senki nem változtathatja meg a megőrzési szabályt vagy az árat anélkül, hogy megkérdezne.

A licenchelyzet, kertelés nélkül

Itt szokott zavar támadni, úgyhogy legyünk egyenesek.

A Team Edition a nyílt forráskódú. MIT licenc, ingyenes, felhasználószám-korlát nélkül, és a saját üzemeltetők többsége valójában ezt futtatja. Kapsz üzenetküldést, csatornákat, szálakat, keresést, integrációkat, webhookokat és a bővítménykeretrendszert. Nem kapsz SAML vagy AD/LDAP egyszeri bejelentkezést, megfelelőségi exportot, vállalati keresést, magas rendelkezésre állású fürtöt és vendégfiókokat.

Az Entry egy ingyenes kereskedelmi kiadás. Feloldja a fejlett funkciókészletet, de plafont húz: az üzenettörténet korlátozott, a playbook-futtatások száma korlátozott, a támogatás csak közösségi, és nagyjából ötven fő alatti csapatokat céloz. A fizetős termék kipróbálására jó módszer. A cég beszélgetési előzményeinek tartós otthonaként rossz, mert a történetkorlát pontosan arra vonatkozik, ami előbb-utóbb számítani fog.

A Professional, az Enterprise és az Enterprise Advanced a fizetős szintek. A Professional hozzáadja az SSO-t, az MFA-t és a részletes jogosultságokat. Az Enterprise hozzáadja az AD/LDAP szinkronizálást, a megfelelőségi automatizálást, a vállalati keresést, a magas rendelkezésre állást és a Playbookokat nagyban. Az Enterprise Advanced hozzáadja a minősített információk kezelését, a zero trust kontrollokat és a zárt hálózatos telepítést, és ez az a szint, ahol a védelmi és közigazgatási felhasználók ülnek. A Mattermost már nem tesz közzé felhasználónkénti árat, úgyhogy számíts egy értékesítési beszélgetésre.

A döntés, amellyel a legtöbb csapat szembenéz, egyszerűbb, mint amit a szintek listája sugall. Ha SAML kell az identitásszolgáltatód felé, fizetni fogsz. Ha megélsz helyi fiókokkal vagy GitLab OAuth-tal, a Team Edition meglepően nagy szervezetet elbír.

A telepítés

Kis telepítés

Néhány tucattól néhány száz főig terjedő csapatnál egyetlen tisztességesen méretezett VPS valóban elég. A Mattermost saját ajánlása egytől ezer felhasználóig egy vCPU-t és 2 GB RAM-ot ad meg, ami annyira optimista, amennyire a gyártói minimumok mindig. Adj neki négy magot és 8 GB-ot, és soha többé nem gondolsz rá.

A stack Mattermostból, PostgreSQL-ből és egy TLS-t lezáró reverse proxyból áll. A Traefik Let's Encrypttel jár a legkevesebb munkával:

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:

Állítsd be helyesen a SiteURL-t, mielőtt bárkit meghívnál. A hibás vagy hiányzó SiteURL elrontja a push értesítéseket, az OAuth visszahívásokat és a linkelőnézeteket, olyan módon, amit később bosszantó hibakeresni, most viszont egy mozdulattal elkerülhető.

Egy megkötést érdemes megismételni, mert a gyártó maga is kimondja: a konténerek jók kipróbálásra és kis éles telepítésekre, de ez az út nem ad fürtözést vagy magas rendelkezésre állást a dobozból. Ha ezek kellenek, telepíts közvetlenül Linuxra, vagy használd a Kubernetes operátort.

Éles telepítés

PostgreSQL 14 vagy újabb. A MySQL támogatása a v11-től kifutó, tehát ha most építesz valamit, ne MySQL-lel indulj. Az Amazon Aurora PostgreSQL támogatott, és AWS-en ez az értelmes menedzselt megoldás.

A fájlokat az első naptól S3-kompatibilis objektumtárolóba tedd. A helyi fájlrendszer működik és ez az alapértelmezés, és egyben ez az, ami csendben állapotfüggővé teszi a szervered, hatalmassá a mentéseidet és fájdalmassá a költözésedet. Később váltani annyi, mint fájlokat mozgatni és útvonalakat átírni. Telepítéskor váltani annyi, mint néhány konfigurációs értéket beállítani.

A magas rendelkezésre álláshoz Enterprise szint kell: több alkalmazáscsomópont terheléselosztó mögött, közös objektumtár és olvasási replikákkal ellátott adatbázis. Nagy léptékű kereséshez Elasticsearch vagy OpenSearch kell, szintén Enterprise. A PostgreSQL teljes szöveges keresése néhány száz embernél és néhány millió üzenetnél bőven elég, a CJK keresés pedig immár alapból működik PostgreSQL-en, ami régen valódi ok volt a kereső kiegészítő megvásárlására.

A három dolog, ami félremegy

A fentiek mind benne vannak a dokumentációban. Ezeket viszont az emberek éles üzemben fedezik fel.

A push értesítés nem úgy ingyenes, ahogy várnád

A mobil push az Apple és a Google hálózatán kell átmenjen, ami azt jelenti, hogy valaminek tárolnia kell az aláíró tanúsítványokat. A Mattermost üzemeltet egy Test Push Notification Service-t, ami azonnal működik, és amely kifejezetten nem éles használatra való. A Hosted Push Notification Service az éles változat, és fizetős licenccel jár.

A harmadik lehetőség a saját push proxy. Jól dokumentált és teljesen kivitelezhető, de azzal jár, hogy saját mobilalkalmazást építesz és terjesztesz saját Firebase és APNs hitelesítő adatokkal, ami alkalmazásbolti kapcsolatot és kiadási folyamatot jelent, nem egy délutánt.

Döntsd el, melyik a három közül, mielőtt telefonokra vezeted be, és ne azután, hogy az első ember megkérdezi, miért csak nyitott alkalmazás mellett kap üzenetet. Ez az egyetlen pont több Mattermost-költözést borít fel, mint bármi más.

A Calls többet kíván egy portnál

A Calls két üzemmódban működik. Az integrált mód a média szolgáltatást a Mattermost szerverén belül futtatja, és nagyjából ötven aktív felhasználó alatt ajánlott. Efölött az rtcd kell, egy külön szolgáltatás, amely a hívásforgalmat távol tartja a fő szervertől és vízszintesen skálázódik. Az rtcd Enterprise előfizetést igényel.

Mindkét esetben a kliensnek UDP-n, a 8443-as porton kell elérnie a média szolgáltatást, és ezt a portot azon a gépen kell megnyitni, amelyiken az a szolgáltatás fut. Az nginx reverse proxyd nem továbbítja, mert az nginx nincs is az UDP útvonalon. A „nem épül fel a hívás” típusú fórumszálak fele egy tűzfalszabályra vezethető vissza, amelyet soha nem vettek fel.

Az ingyenes szinten egy az egyben hívásokra számíts időkorláttal, nem korlátlan csoporthívásokra. Ha a cégszintű videó követelmény, kalkuláld be.

Valakinek üzemeltetnie kell

A tisztességes költség-összehasonlítás nem licenc kontra nulla. Licenc kontra infrastruktúra plusz az az ember, aki foltozza. A Mattermost sűrűn ad ki verziókat, biztonsági okokból naprakész akarsz maradni, a frissítések pedig adatbázis-migrációkkal járnak, amiket jobb valahol máshol tesztelni, mint élesben.

Egy csapatnál, amely amúgy is saját infrastruktúrát üzemeltet, ez határköltség, és a számítás egyértelműen kijön. Egy tízfős cégnél, ahol nincs üzemeltetési kapacitás, egy SaaS-számla tényleg olcsóbb lehet, mint az elvesztett keddi délutánok. Legyél őszinte azzal kapcsolatban, melyik eset vagy.

Kilépés a Slackből

A Mattermostnak van importálási útvonala a Slack exportfájljaiból, és működik, olyan megkötésekkel, amelyeket érdemes előre ismerni. A nyilvános csatornák üzenetei és a felhasználók jól átjönnek. A privát csatornák és a közvetlen üzenetek attól függenek, hogy a Slack csomagod egyáltalán mit enged exportálni. A szálak, a csatolmányok, az egyéni emojik és az integrációk figyelmet igényelnek, és némelyiket újra kell építeni.

A működő megközelítés: importáld az előzményeket kereshető archívumként, az átállás napját pedig kezeld tiszta kezdésként. Ha minden Slack-viselkedést pontosan reprodukálni próbálsz, egy kéthetes költözés két negyedéves lesz.

Futtasd a kettőt párhuzamosan két hétig, először egy csapatot költöztess, és a lekapcsolás dátumát már az elején jelentsd be nyilvánosan. A chatköltözések társas okokból buknak el, nem technikaiakból.

Az európai szempont

Az EU-s cégeknél ez nem csak költségkérdés. A saját üzemeltetés a belső kommunikációt egy általad ellenőrzött határon belülre teszi, és ez egyszerre több beszélgetést változtat meg: a GDPR szerinti adattovábbítási elemzést, a NIS2 szerinti ellátási lánc vizsgálatát, és azokat a szuverenitási kérdéseket, amelyek egyre gyakrabban bukkannak fel a közbeszerzésben, és amelyek a Cloud and AI Development Act teljes tárgyát adják.

A belső chat a bizalmas anyag egyik legsűrűbb gyűjtőhelye, amivel egy cég rendelkezik. Ott vannak az incidensek részletei, ügyfélnevek, hozzáférési adatok, amiket senkinek nem lett volna szabad bemásolnia, de valaki mégis bemásolt, és minden folyamatban lévő üzleti tárgyalás. Amikor valaki megkérdezi, hol él ez az adat, ér valamit, ha egy régióval és egy rackkel tudsz válaszolni, nem egy alfeldolgozói listával.

Mikor ne bajlódj vele

Ha tizenöten vagytok, a megfelelőségi elvárások könnyűek, és senki nem akar szervert a nyakába venni, vegyétek a SaaS-t. A megtakarítás nem fedezi a ráfordított figyelmet.

Ha mély integráció kell egy olyan ökoszisztémával, amelyben már benne éltek, nézzétek meg jól, mit veszítenétek. A Microsoft 365 birtokán belüli csapatok sok mindent ingyen kapnak, amit újra kellene építeni.

És ha a hajtóerő egyetlen hangos ember viszolygása egy szállítótól, nem pedig valódi költség-, kontroll- vagy joghatósági követelmény, a költözés hatvan százalék körüli elfogadottságnál elakad, ami egy kommunikációs eszköznél a lehető legrosszabb kimenet.

Hogyan segíthetünk

Saját üzemeltetésű nyílt forráskódú infrastruktúrát telepítünk és futtatunk Európában működő cégeknek, beleértve a csillogásmentes részeket is: push proxykat, objektumtárolóra való migrációkat, frissítési útvonalakat és azt az identitásintegrációt, amitől egy chatbevezetés meg is ragad.

Ha rendesen méretezett Mattermost-telepítést szeretnél, olyan Slack-migrációt, amit már csinált valaki, vagy őszinte választ arra, hogy megéri-e a csapatodnak a saját üzemeltetés, írj a office@c9group.dev címre. Az infrastruktúrás munkánkról bővebben az AWS költségoptimalizálás oldalon.

Ha teljes saját üzemeltetésű stacket állítasz össze, ugyanez a gondolatmenet érvényes az analitikára és a marketingautomatizálásra is.


Közzétéve: 2026. augusztus 8. Kategóriák: Együttműködés, Nyílt forráskód, Adatvédelem