Autorius: Iva Seleš

Atvirojo kodo komandos susirašinėjimas dideliu mastu: savo Mattermost diegimas

rankos telefone renka žinutę tamsiame kambaryje

Kas kelerius metus įmonė pažiūri į Slack sąskaitą, susumuoja kainą už vartotoją, pastebi, kad dešimtmetis vidinių pokalbių guli kažkieno kito duomenų bazėje kitoje jurisdikcijoje, ir paklausia, ar nėra kito kelio. Yra. Mattermost yra patikimiausias savo serveryje diegiamas sprendimas, ir toks jis jau kurį laiką.

Kartu tai įrankis, kuris prieš diegimą dažniausiai suprantamas klaidingai, nes nemokama versija, kurią žmonės tikisi gauti, paprastai nėra ta, kurią galiausiai naudoja. Šiame vadove aiškiname, kas iš tikrųjų yra Mattermost, ką iš tiesų apima nemokama versija ir kokios trys eksploatavimo problemos užklumpa beveik kiekvieną, kas pirmą kartą jį diegia pats.

Kas yra Mattermost

Go serveris, PostgreSQL duomenų bazė, React žiniatinklio klientas ir vietinės darbalaukio bei mobiliosios programėlės. Kanalai, gijos, failų bendrinimas, paieška, „slash“ komandos, įeinantys ir išeinantys webhook'ai, botai ir papildinių sistema. Jei naudojote Slack, per popietę dirbsite produktyviai, kaip ir visi kiti, o tai svarbiau už bet kokį funkcijų sąrašą, kai prašote visos įmonės persikelti.

Aplink šį branduolį yra Playbooks, skirti kontroliniais sąrašais grįstam incidentų ir procesų valdymui, ir Calls garso, vaizdo skambučiams bei ekrano bendrinimui. Nuo v11.0 Playbooks reikia vienos iš komercinių versijų (tinka ir nemokama Entry versija). Integracijų kataloge yra visi įprasti įrankiai: GitLab, GitHub, Jira, Jenkins, PagerDuty. ChatOps yra sritis, kur produktas tikrai stiprus, todėl jis toks populiarus tarp inžinerijos ir eksploatavimo komandų, taip pat gynybos ir viešojo sektoriaus organizacijų, kurios apskritai negali leisti savo srauto per komercinę SaaS paslaugą.

Svarbiausias architektūrinis faktas: visa tai veikia jūsų pasirinktoje infrastruktūroje. Tas pats principas kaip ir savo serveryje diegiant analitiką su Matomo ar rinkodaros automatizavimą su Mautic. Žinutės yra jūsų duomenų bazėje, failai jūsų objektų saugykloje, ir niekas negali pakeisti saugojimo politikos ar kainos jūsų neatsiklausęs.

Licencijos be užuolankų

Būtent čia žmonės susipainioja, todėl verta pasakyti tiesiai.

Team Edition yra atvirojo kodo versija: nemokama, dvejetainis failas platinamas pagal MIT licenciją, ir dauguma savo serveryje diegiančiųjų ja naudojasi jau daug metų. Gaunate susirašinėjimą, kanalus, gijas, paiešką, integracijas, webhook'us ir papildinių sistemą. Negaunate SAML ar AD/LDAP vieningo prisijungimo, atitikties eksporto, įmonės lygio paieškos, didelio prieinamumo klasterizavimo ir svečių paskyrų. Nuo v11.0 (2025 m. spalio mėn.) ji neteko ir GitLab vieningo prisijungimo bei Playbooks, o Mattermost dabar ją apibūdina kaip skirtą mažoms komandoms, entuziastams ir asmeniniam naudojimui: iki 250 aktyvuotų vartotojų ir kai vieningas prisijungimas (SSO) nereikalingas.

Entry yra nemokama komercinė versija su Enterprise Advanced funkcijų rinkiniu ir viso serverio apribojimais. Peržiūrėti ar ieškoti galima tik naujausių 10 000 kanalų žinučių (senesnės lieka duomenų bazėje), atitikties funkcijų ir didelio prieinamumo nėra, o pagalba teikiama tik bendruomenėje. Mattermost nurodo ir daugiau apribojimų, kurie, pasak jos, įsigalios būsimoje versijoje: 5 aktyvūs Playbook vykdymai per mėnesį, 40 minučių skambučiai, 10 000 push pranešimų per mėnesį. Ji skirta maždaug iki penkiasdešimties žmonių komandoms. Tai geras būdas išbandyti mokamą produktą. Ir blogas būdas kurti nuolatinius įmonės pokalbių istorijos namus, nes istorijos riba yra būtent tai, kas jums galiausiai rūpės.

Professional, Enterprise ir Enterprise Advanced yra mokamos pakopos. Professional prideda SSO, MFA ir išplėstines teises, o Mattermost ją siūlo komandoms iki 250 vartotojų. Enterprise prideda AD/LDAP sinchronizavimą, atitikties automatizavimą, įmonės lygio paiešką, didelį prieinamumą ir Playbooks dideliu mastu. Enterprise Advanced prideda įslaptintos informacijos tvarkymą, nulinio pasitikėjimo valdiklius ir diegimą izoliuotoje (air-gapped) aplinkoje; šią pakopą naudoja gynybos ir valdžios institucijos. Mattermost nebeskelbia kainų už vartotoją, tad numatykite pokalbį su pardavimų skyriumi.

Anksčiau sprendimas buvo paprastesnis, nei rodo pakopų sąrašas, bet v11 jį pakeitė. Iki maždaug 250 žmonių, su vietinėmis paskyromis ir be vieningo prisijungimo reikalavimo, Team Edition vis dar atlieka darbą. Bet koks vieningas prisijungimas (SAML, AD/LDAP, o dabar ir GitLab) reiškia komercinę versiją: Entry, kol tinka jos apribojimai, vėliau Professional arba Enterprise. Laikinas Mattermost pasiūlytas sprendimas GitLab prisijungimui buvo likti v10.11 išplėstinio palaikymo versijoje, o jos palaikymas baigėsi 2026 m. rugpjūčio 15 d. Didelė organizacija arba tokia, kuriai keliami atitikties, duomenų saugojimo ar didelio prieinamumo reikalavimai, turėtų nuo pat pradžių planuoti ir biudžete numatyti Enterprise.

Diegimas

Nedidelis diegimas

Kelių dešimčių ar kelių šimtų žmonių komandai tikrai pakanka vieno gerai sukonfigūruoto VPS. Pačios Mattermost rekomendacijos nuo vieno iki tūkstančio vartotojų numato vieną vCPU ir 2 GB RAM, ir tai optimistiška, kaip visada būna gamintojų minimalūs reikalavimai. Skirkite keturis branduolius ir 8 GB, ir daugiau apie tai negalvosite.

Steką sudaro Mattermost, PostgreSQL ir atvirkštinis tarpinis serveris, užbaigiantis TLS. Mažiausiai darbo pareikalauja Traefik su Let's Encrypt:

services:
  mattermost:
    image: mattermost/mattermost-team-edition:release-11.7
    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:

Teisingai nustatykite SiteURL prieš ką nors pakviesdami. Klaidingas ar trūkstamas SiteURL sugadina push pranešimus, OAuth grįžtamuosius iškvietimus ir nuorodų peržiūras taip, kad vėliau tai varginanti derinti, o dabar visiškai paprasta išvengti.

Viena išlyga, kurią verta pakartoti, nes ją nurodo ir pats gamintojas: konteineriai tinka išbandymui ir nedideliems gamybiniams diegimams, tačiau konteinerių kelias iš karto nesuteikia klasterizavimo ar didelio prieinamumo. Jei jų reikia, diekite tiesiai Linux sistemoje arba naudokite Kubernetes operatorių. Prisekite atvaizdą prie versijų linijos, kaip pataria oficialus Docker vadovas: pavyzdyje naudojama 11.7, dabartinė išplėstinio palaikymo versija, nes latest persijungs į v12 tą pačią dieną, kai ši bus išleista.

Gamybinis diegimas

Su v11 minimali versija yra PostgreSQL 14. Versija 12.0, numatyta 2026 m. spalio 14 d., minimalią versiją pakelia iki PostgreSQL 15, tad pradėkite nuo 15 ar naujesnės (pavyzdyje aukščiau naudojama 16). MySQL palaikymas baigėsi su v11.0 2025 m. spalio mėn., todėl naujam diegimui MySQL netinka. Amazon Aurora PostgreSQL palaikoma ir yra protingas valdomas variantas AWS aplinkoje. Jei diegiate tiesiai Linux sistemoje, atkreipkite dėmesį, kad v11.11 (2026 m. rugsėjo mėn.) yra paskutinė versija, palaikanti RHEL 7 ir RHEL 8.

Failus nuo pirmos dienos laikykite su S3 suderinamoje objektų saugykloje. Vietinė failų sistema veikia ir yra numatytoji, bet būtent ji tyliai paverčia jūsų serverį būseną turinčiu, atsargines kopijas milžiniškomis, o migraciją skausminga. Perėjimas vėliau reiškia failų perkėlimą ir kelių perrašymą. Perėjimas diegimo metu reiškia keleto konfigūracijos reikšmių nustatymą.

Dideliam prieinamumui reikia Enterprise pakopos: kelių programos mazgų už apkrovos balansavimo įrenginio, bendros objektų saugyklos ir duomenų bazės su skaitymo replikomis. Paieškai dideliu mastu reikia Elasticsearch arba OpenSearch, taip pat Enterprise. PostgreSQL viso teksto paieškos pakanka keliems šimtams žmonių ir keliems milijonams žinučių, o CJK paieška PostgreSQL dabar veikia pagal numatytuosius nustatymus; anksčiau tai buvo rimta priežastis pirkti paieškos priedą.

Trys dalykai, kurie nepavyksta

Visa, kas parašyta aukščiau, yra dokumentacijoje. Toliau aprašyta tai, ką žmonės atranda jau gamyboje.

Push pranešimai nėra nemokami taip, kaip tikitės

Mobilieji push pranešimai turi eiti per Apple ir Google tinklus, vadinasi, kažkas turi laikyti pasirašymo sertifikatus. Mattermost valdo Test Push Notification Service, kuri veikia iš karto ir yra aiškiai ne gamybai. Gamybai skirta Hosted Push Notification Service, ir ji pateikiama su mokama licencija.

Trečias variantas yra savas push tarpinis serveris. Jis gerai dokumentuotas ir visiškai įgyvendinamas, bet reiškia, kad turite kurti ir platinti savo mobiliąją programėlę su savais Firebase ir APNs prisijungimo duomenimis, o tai yra santykiai su programėlių parduotuvėmis ir leidimų procesas, ne vienos popietės darbas.

Nuspręskite, kurį iš trijų variantų naudosite, prieš diegdami telefonuose, o ne po to, kai pirmas žmogus paklaus, kodėl žinutes gauna tik tada, kai programėlė atidaryta. Būtent dėl šios vienos problemos nutraukiama daugiau Mattermost migracijų nei dėl bet kurios kitos.

Skambučiams reikia daugiau nei prievado

Calls turi du režimus. Integruotasis režimas medijos paslaugą vykdo Mattermost serverio viduje ir rekomenduojamas iki maždaug penkiasdešimties aktyvių vartotojų. Daugiau vartotojų turint reikia rtcd: atskiros paslaugos, kuri skambučių mediją laiko atokiau nuo pagrindinio serverio ir plečiasi horizontaliai. rtcd reikia Enterprise.

Bet kuriuo atveju klientai turi pasiekti medijos paslaugą per UDP 8443 prievadą, ir tas prievadas turi būti atidarytas serveryje, kuriame veikia medijos paslauga. Jūsų nginx atvirkštinis tarpinis serveris jo nepersiųs, nes nginx nėra UDP kelyje. Pusė diskusijų „skambučiai neprisijungia“ baigiasi ugniasienės taisykle, kuri taip ir nebuvo pridėta.

Nemokamoje pakopoje tikėkitės skambučių vienas su vienu su laiko apribojimu, o ne neribotų grupinių skambučių. Jei vaizdo skambučiai visai įmonei yra reikalavimas, įtraukite tai į kainą.

Kažkas turi jį prižiūrėti

Sąžiningas kainų palyginimas nėra licencija prieš nulį. Tai licencija prieš infrastruktūrą ir žmogų, kuris ją atnaujina. Mattermost kas mėnesį išleidžia funkcijų versiją (2026 m. spalio 10 d. dabartinė yra 11.11, o išplėstinio palaikymo versija yra 11.7), dėl saugumo norėsite neatsilikti, o atnaujinimai apima duomenų bazės migracijas, kurias reikėtų išbandyti kur nors ne gamyboje.

Komandai, kuri jau pati valdo savo infrastruktūrą, tai nedidelis papildomas darbas, o ekonominė nauda akivaizdi. Dešimties žmonių įmonei be eksploatavimo pajėgumų SaaS sąskaita gali iš tikrųjų būti pigesnė už antradienio popietes. Būkite sąžiningi, kuri iš jų esate.

Perėjimas nuo Slack

Mattermost turi importo kelią iš Slack eksporto failų, ir jis veikia, tik su išlygomis, kurias verta žinoti iš anksto. Viešų kanalų žinutės ir vartotojai perkeliami gerai. Privatūs kanalai ir asmeninės žinutės priklauso nuo to, ką jūsų Slack planas apskritai leidžia eksportuoti. Gijoms, prisegtiems failams, pasirinktiniams jaustukams ir integracijoms reikia dėmesio, o kai kurias reikia kurti iš naujo.

Pasiteisinęs būdas: importuokite istoriją kaip archyvą, kuriame žmonės gali ieškoti, o perėjimo datą laikykite švaria pradžia. Bandymas tiksliai atkurti kiekvieną Slack elgseną paverčia dviejų savaičių migraciją dviejų ketvirčių projektu.

Dvi savaites naudokite abu lygiagrečiai, pirmiausia perkelkite vieną komandą ir pačioje pradžioje viešai paskelbkite išjungimo datą. Pokalbių migracijos žlunga dėl žmonių, o ne dėl technikos.

Europos požiūris

ES įmonėms tai ne vien kainos klausimas. Savo serveryje diegiamas sprendimas vidinę komunikaciją patalpina jūsų kontroliuojamose ribose, o tai iš karto keičia kelių diskusijų pobūdį: BDAR (GDPR) duomenų perdavimo analizę, NIS2 tiekimo grandinės patikrą ir suvereniteto klausimus, kurie vis dažniau iškyla viešuosiuose pirkimuose ir kuriems visas skirtas Debesijos ir DI plėtros aktas.

Vidiniai pokalbiai yra viena tankiausių įmonės konfidencialios informacijos sankaupų. Juose yra incidentų detalės, klientų vardai, prisijungimo duomenys, kurių žmonės neturėjo įklijuoti, bet įklijavo, ir visos vykstančios komercinės derybos. Kai kas nors paklausia, kur tie duomenys yra, galimybė atsakyti regionu ir serverių spinta, o ne subtvarkytojų sąrašu, kažko verta.

Kada neverta to daryti

Jei jūsų įmonėje penkiolika žmonių, atitikties reikalavimai nedideli ir niekas nenori prižiūrėti serverio, naudokite SaaS. Sutaupyti pinigai neatpirks sugaišto dėmesio.

Jei jums reikia glaudžios integracijos su ekosistema, kurioje jau gyvenate, gerai įvertinkite, ko netektumėte. Microsoft 365 aplinkoje dirbančios komandos daug ką gauna nemokamai, o jums tai tektų kurti iš naujo.

O jei varomoji jėga yra vieno garsaus žmogaus nemeilė tiekėjui, o ne realus kainos, kontrolės ar jurisdikcijos reikalavimas, migracija sustos ties maždaug šešiasdešimčia procentų naudotojų, o tai blogiausias įmanomas rezultatas komunikacijos įrankiui.

Pagalba

Diegiame ir prižiūrime savo serveriuose veikiančią atvirojo kodo infrastruktūrą Europoje veikiančioms įmonėms, įskaitant nepatrauklias dalis: push tarpinius serverius, objektų saugyklos migracijas, atnaujinimų kelius ir tapatybės integraciją, dėl kurios pokalbių įrankio diegimas prigyja.

Jei norite tinkamo dydžio Mattermost diegimo, Slack migracijos, kurią suplanuotų tai jau daręs žmogus, ar sąžiningo atsakymo, ar savo serverio sprendimas apsimoka jūsų komandai, rašykite office@c9group.dev. Daugiau apie mūsų infrastruktūros darbus rasite AWS išlaidų optimizavimo puslapyje.

Jei kuriate visą savo serveryje veikiantį steką, tas pats samprotavimas taikomas ir analitikai, ir rinkodaros automatizavimui.


Paskelbta: 2026 m. rugpjūčio 8 d. (atnaujinta 2026 m. spalio 10 d.) Kategorijos: bendradarbiavimas, atvirasis kodas, privatumas

Bendradarbiavimas

Nauji vadovai ir taisyklių pakeitimai el. paštu

Kai pasikeičia taisyklė, nusikelia terminas arba paskelbiame naują vadovą, atsiunčiame tai el. paštu.

Pirmiausia atsiųsime patvirtinimo nuorodą. Prenumeratos galite atsisakyti bet kada. Privatumo politika