Back to Articles

Тимска комуникација со отворен код во голем обем: Mattermost на сопствена инфраструктура

hands typing a message on a phone in a dark room

На секои неколку години некоја фирма ќе ја погледне сметката за Slack, ќе го собере трошокот по корисник, ќе забележи дека деценија внатрешна комуникација лежи во туѓа база на податоци и во друга јурисдикција, и ќе се запраша дали има друг начин. Има. Mattermost е најубедливиот одговор што го хостирате сами, и тоа е веќе подолго време.

Тоа е и алатката што најчесто се разбира погрешно пред воведувањето, зашто бесплатното издание што мислите дека го добивате обично не е она што на крајот го вртите. Овој водич зборува за тоа што Mattermost навистина е, што бесплатната верзија навистина содржи и кои три оперативни проблеми ги стигнуваат речиси сите што го хостираат за првпат.

Што е Mattermost

Сервер во Go, база PostgreSQL, веб-клиент во React и native десктоп и мобилни апликации. Канали, нишки, споделување датотеки, пребарување, slash команди, влезни и излезни webhook-ови, ботови и рамка за приклучоци. Кој користел Slack ќе биде продуктивен за едно попладне, а и сите други, што вреди повеќе од која било листа функции кога барате од цела фирма да се пресели.

Околу тоа јадро стојат Playbooks, за работа со инциденти и процеси водена од списоци за проверка, и Calls, за аудио, видео и споделување екран. Каталогот на интеграции ги покрива вообичаените: GitLab, GitHub, Jira, Jenkins, PagerDuty. Кај ChatOps производот е навистина силен и токму затоа има толку приврзаници меѓу инженерските и оперативните тимови, како и меѓу одбранбените и јавните организации што својот сообраќај воопшто не смеат да го стават во комерцијален SaaS.

Архитектонски важниот факт е дека сето тоа работи на инфраструктура што вие ја избирате. Истиот принцип како кај самостојно хостирање на аналитиката со Matomo или маркетинг автоматизацијата со Mautic. Пораките се во вашата база, датотеките во вашето објектно складиште, и никој не може да ја смени политиката на чување или цената без да ве праша.

Сликата со лиценците, кажано директно

Тука настанува најмногу забуна, па да бидеме директни.

Team Edition е онаа со отворен код. MIT лиценца, бесплатна, без ограничување на бројот корисници, и токму неа мнозинството што хостира самостојно навистина ја врти. Добивате пораки, канали, нишки, пребарување, интеграции, webhook-ови и рамката за приклучоци. Не добивате единствена најава преку SAML или AD/LDAP, извоз за усогласеност, enterprise пребарување, кластер со висока достапност ниту гостински сметки.

Entry е бесплатно комерцијално издание. Го отклучува напредниот сет функции но ве ограничува: историјата на пораки е ограничена, бројот извршувања на playbook-ови е ограничен, поддршката е само од заедницата, а наменето е за тимови под некои педесет луѓе. Како начин да го оцените платениот производ, тоа е добро. Како начин да изградите траен дом за историјата на разговори во фирмата, лошо е, зашто ограничувањето на историјата се однесува токму на она до што на крајот ќе ви биде грижа.

Professional, Enterprise и Enterprise Advanced се платените нивоа. Professional додава SSO, MFA и напредни дозволи. Enterprise додава AD/LDAP синхронизација, автоматизација на усогласеноста, enterprise пребарување, висока достапност и Playbooks во обем. Enterprise Advanced додава ракување со класифицирани информации, zero trust контроли и поставување во изолирани мрежи, и тоа е нивото на кое се корисниците од одбраната и управата. Mattermost повеќе не објавува цена по корисник, па сметајте на разговор со продажба.

Одлуката пред која се наоѓа мнозинството тимови е поедноставна отколку што списокот нивоа сугерира. Ако ви треба SAML кон вашиот провајдер на идентитет, ќе плаќате. Ако можете да живеете со локални сметки или GitLab OAuth, Team Edition ќе издржи изненадувачки голема организација.

Поставување

Мала инсталација

За тим од неколку десетици до неколку стотини луѓе еден пристојно димензиониран VPS навистина е доволен. Самиот Mattermost за еден до илјада корисници наведува едно vCPU и 2 GB RAM, што е оптимистично онака како што минимумите на производителите секогаш се. Дајте ѝ на машината четири јадра и 8 GB и никогаш повеќе нема да помислите на неа.

Стекот го чинат Mattermost, PostgreSQL и обратно прокси што го затвора TLS. Traefik со Let's Encrypt бара најмалку работа:

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:

Поставете го SiteURL правилно пред да поканите кого било. Погрешен или отсутен SiteURL ги крши push известувањата, OAuth повратните повици и прегледот на линкови, на начин што подоцна е мачен за отстранување а сега се избегнува тривијално.

Една ограда вреди да се повтори, зашто ја изговара и производителот: контејнерите се во ред за оценување и за мали продукциски инсталации, но тој пат не ви дава кластерирање ниту висока достапност сам по себе. Ако ви требаат, инсталирајте директно на Linux или користете го Kubernetes операторот.

Продукциска инсталација

PostgreSQL 14 или понов. Поддршката за MySQL се укинува од v11, па ако сега поставувате нешто, не тргнувајте од MySQL. Amazon Aurora PostgreSQL е поддржана и е разумната управувана опција на AWS.

Датотеките сместете ги во објектно складиште компатибилно со S3 од првиот ден. Локалниот датотечен систем работи и е стандардниот избор, и токму тој тивко ја врзува состојбата за вашиот сервер, ги надувува резервните копии и ја прави миграцијата болна. Промената подоцна значи преместување датотеки и препишување патеки. Промената при инсталација значи поставување неколку вредности во конфигурацијата.

За висока достапност ви треба нивото Enterprise: повеќе апликациски јазли зад балансер на оптоварување, споделено објектно складиште и база со реплики за читање. За пребарување во обем ќе сакате Elasticsearch или OpenSearch, исто така Enterprise. Пребарувањето на цел текст во PostgreSQL е доволно за неколку стотини луѓе и неколку милиони пораки, а CJK пребарувањето сега работи стандардно на PostgreSQL, што некогаш беше вистинска причина да се купи додатокот за пребарување.

Трите работи што тргнуваат наопаку

Сè погоре стои во документацијата. Ова се деловите што луѓето ги откриваат во продукција.

Push известувањата не се бесплатни онака како што очекувате

Мобилниот push мора да помине низ мрежите на Apple и Google, што значи дека нешто мора да ги чува сертификатите за потпишување. Mattermost води Test Push Notification Service што работи веднаш и што изрично не е за продукција. Hosted Push Notification Service е продукцискиот и доаѓа со платена лиценца.

Третата можност е сопствено push прокси. Добро е документирана и сосема изводлива, но подразбира да изградите и дистрибуирате сопствена мобилна апликација со сопствени Firebase и APNs акредитиви, а тоа е однос со продавниците за апликации и процес на издавање, не едно попладне.

Одлучете која од трите пред да ја воведете алатката на телефони, а не откако првиот човек ќе праша зошто пораките пристигнуваат само додека апликацијата е отворена. Оваа единствена точка руши повеќе преселби на Mattermost од кое било друго нешто.

Calls бара повеќе од еден порт

Calls има два режима. Интегрираниот режим го врти медиумскиот сервис внатре во серверот на Mattermost и се препорачува под некои педесет активни корисници. Над тоа ќе сакате rtcd, посебен сервис што медиумскиот сообраќај го држи настрана од главниот сервер и се скалира хоризонтално. rtcd бара Enterprise.

И во двата случаја клиентите мора да го достигнат медиумскиот сервис преку UDP на портот 8443, и тој порт мора да биде отворен на машината на која тој сервис работи. Вашето nginx обратно прокси нема да го проследи, зашто nginx воопшто не е на UDP патеката. Половина од темите од типот „повиците не се воспоставуваат“ се сведуваат на правило во firewall што никогаш не било додадено.

На бесплатното ниво очекувајте разговори еден на еден со временско ограничување, а не неограничени групни повици. Ако видеото за цела фирма е барање, пресметајте го.

Некој мора да го одржува

Чесната споредба на трошоци не е лиценца наспроти нула. Тоа е лиценца наспроти инфраструктура плус личноста што ја крпи. Mattermost издава често, од безбедносни причини ќе сакате да бидете во тек, а надградбите носат миграции на базата што е подобро да се пробаат некаде што не е продукција.

За тим што и онака води сопствена инфраструктура ова е рабна работа и сметката излегува убедливо. За фирма од десет луѓе без оперативен капацитет, сметката за SaaS може навистина да биде поевтина од изгубените вторнички попладниња. Бидете искрени кое од двете сте.

Заминување од Slack

Mattermost има пат за увоз од Slack извозните датотеки, и тој работи, со огради што е добро да се знаат однапред. Пораките од јавните канали и корисниците преминуваат добро. Приватните канали и директните пораки зависат од тоа што вашиот Slack план воопшто ви дозволува да извезете. Нишките, прилозите, сопствените емоџиња и интеграциите бараат внимание, а некои од нив треба да се градат одново.

Пристапот што работи: увезете ја историјата како архива што може да се пребарува и третирајте го датумот на префрлање како чист почеток. Обидот секое однесување на Slack да се преслика до детал е начинот на кој двонеделна преселба станува двоквартална.

Пуштете ги двата системи паралелно две недели, преселете прво еден тим, и датумот на гасење објавете го јавно уште на почетокот. Преселбите на комуникациски алатки паѓаат социјално, не технички.

Европскиот агол

За фирмите во ЕУ ова не е само прашање на трошок. Сопственото хостирање ја сместува внатрешната комуникација внатре во граница што вие ја контролирате, а тоа менува неколку разговори одеднаш: анализата на преноси според ГДПР, проверката на синџирот на снабдување според NIS2 и прашањата за суверенитет што сè почесто се појавуваат во јавните набавки и што се целата тема на Cloud and AI Development Act.

Внатрешниот чат е една од најгустите концентрации на доверлив материјал што ги има една фирма. Таму се деталите за инциденти, имињата на клиенти, акредитивите што никој не смеел да ги залепи но некој ги залепил, и секој преговор во тек. Кога некој ќе праша каде живеат тие податоци, вреди да можете да одговорите со регион и со сервер орман наместо со список на подобработувачи.

Кога не вреди

Ако сте петнаесетмина, барањата за усогласеност се благи и никој не сака да води сметка за сервер, земете SaaS. Заштедата нема да го покрие вложеното внимание.

Ако ви треба длабока интеграција со екосистем во кој веќе живеете, погледнете добро што би изгубиле. Тимовите внатре во Microsoft 365 средина добиваат бесплатно многу нешта што би морале да ги градите одново.

А ако погонот е одбивноста на едно гласно лице кон некој добавувач наместо вистинско барање околу трошок, контрола или јурисдикција, преселбата ќе запре на некои шеесет отсто прифатеност, а тоа за комуникациска алатка е најлошиот можен исход.

Како можеме да помогнеме

Поставуваме и одржуваме самостојно хостирана инфраструктура со отворен код за фирми што работат во Европа, вклучувајќи ги и непривлечните делови: push прокси, миграции кон објектно складиште, патишта за надградба и онаа интеграција со идентитет поради која воведувањето чат воопшто фаќа корен.

Ако сакате Mattermost инсталација димензионирана како што треба, преселба од Slack планирана од некој што веќе ја правел, или чесен одговор дали сопственото хостирање му се исплати на вашиот тим, пишете на office@c9group.dev. Повеќе за нашата работа со инфраструктура на страницата за оптимизација на AWS трошоците.

Ако составувате целосен самостојно хостиран стек, истото размислување важи за аналитиката и за маркетинг автоматизацијата.


Објавено: 8 август 2026 Категории: Соработка, Отворен код, Приватност