Self-hosted альтернативи Slack: Mattermost та інші
Порівняння Mattermost, Rocket.Chat, Synapse і Zulip за RAM, базою даних, mobile push, SSO, оновленнями та ліцензією для 10 і 100 користувачів.
Яку self-hosted альтернативу Slack варто розгорнути
Self-hosted альтернативи Slack, які виправдовують витрати часу невеликої команди, — це Mattermost, Rocket.Chat, Matrix із Synapse та Zulip. Для внутрішнього командного інструмента на одному сервері використовуйте Mattermost. Для публічної спільноти — Zulip. Обирайте Matrix із Synapse, коли потрібно обмінюватися повідомленнями із серверами, якими керують інші люди. Лише в цьому випадку, оскільки федерація — це єдина функція, яку інші рішення не можуть відтворити. Вона також змінює ваші завдання як адміністратора.
Списки функцій не допоможуть розрізнити ці чотири рішення. Усі вони підтримують канали, треди, пошук, завантаження файлів і мобільні застосунки. Відмінність визначається тим, чого вони потребують від вас щомісяця: обсягом пам’яті, базою даних, яку потрібно постійно підтримувати, каналом мобільних push-сповіщень, який може бути вам непідконтрольний, і ліцензією, що визначає, чи буде потрібна вам функція доступна без оплати. Наведене нижче порівняння розглядає ці критерії для 10 і 100 користувачів.
Що насправді являє собою кожен із чотирьох
Mattermost — це сервер на Go з базою даних PostgreSQL. Один бінарний файл, одна база даних, один конфігураційний файл. Він працює подібно до Slack, зокрема підтримує треди й slash commands. Це найменш складний в адмініструванні з чотирьох варіантів, і це перевага.
Rocket.Chat — це застосунок Node.js на MongoDB. Серед наведених варіантів він має найбільший набір функцій, зокрема голосові та відеодзвінки, а також omnichannel inbox, який об’єднує звернення клієнтів з email і соціальних каналів в одному інтерфейсі. Якщо саме inbox є причиною вашого вибору, спочатку порівняйте його з окремою службою підтримки Chatwoot, оскільки chat server для підтримки — це інше завдання, ніж chat server для командної роботи.
Matrix — це протокол, а не продукт. Synapse — референсний сервер (Python, PostgreSQL), а Element — клієнт, яким користується більшість людей. Це єдиний варіант у цьому списку, у якому ваш сервер може обмінюватися даними із серверами, якими ви не керуєте.
Zulip — це сервер на Python (Django і Tornado) з PostgreSQL, RabbitMQ, memcached і Redis. Усі компоненти встановлюються як один unit за допомогою власного скрипту. Його модель передбачає topics усередині channels, тому розмову з вівторка можна знайти й у п’ятницю. Версія 12.0 вийшла у квітні 2026 року.
Який обсяг RAM і яка база даних потрібні для 10 і 100 користувачів
Кожне число в таблиці нижче взято з документації відповідного проєкту, опрацьованої в August 2026. Я нічого не вимірював і не вигадував. Для кожного рядка використано однаковий підхід: найменша конфігурація, яку публікує проєкт, із урахуванням бази даних, якщо проєкт розраховує її окремо.
The data behind this chart
[
{
"label": "Synapse",
"published_ram_gb": 1,
"notes": "Synapse install docs: at least 1 GB free RAM if you want to join large public rooms. PostgreSQL is required for production and is not sized."
},
{
"label": "Mattermost",
"published_ram_gb": 2,
"notes": "Mattermost requirements: 1 to 1,000 users on 1 vCPU and 2 GB RAM, single server, database included."
},
{
"label": "Zulip",
"published_ram_gb": 2,
"notes": "Zulip requirements: under 100 users on 1 CPU, 2 GB RAM and 2 GB swap. 100 users and above needs 2 CPUs and 4 GB."
},
{
"label": "Rocket.Chat",
"published_ram_gb": 8,
"notes": "Rocket.Chat requirements: smallest published tier is 4 GiB for the app plus 4 GiB for MongoDB, rated up to 500 concurrent users."
}
]Рядки мають різну структуру, і це перший важливий висновок. Значення 1 GB для Synapse — це мінімальний обсяг для процесу Synapse за умови, що документація вимагає щонайменше такий обсяг вільної RAM для приєднання до великих публічних кімнат. PostgreSQL у це значення не входить. Значення 2 GB для Mattermost — це обсяг для всієї машини разом із базою даних; він охоплює від 1 до 1,000 користувачів на одному vCPU. Для Zulip вказано 2 GB і один CPU для кількості до 100 користувачів, а також 2 GB swap. Для 100 і більше користувачів потрібно 4 GB і два CPU. Rocket.Chat публікує тут найбільше значення — 8 GB, оскільки розрахунок передбачає 4 GiB для застосунку та 4 GiB для MongoDB. Цей рівень розрахований максимум на 500 одночасних користувачів.
Для десяти користувачів усі 4 варіанти працюватимуть на обладнанні, про характеристики якого не доведеться довго думати. Для ста користувачів вимоги вже відрізняються: Mattermost усе ще вкладається у свій рівень 2 GB, Zulip потребує 4 GB і другого CPU, а найменший задокументований рівень Rocket.Chat залишається незмінним — 8 GB, оскільки потреба MongoDB у пам’яті визначається характеристиками машини, а не кількістю користувачів.
Вибір бази даних більше впливає на майбутні оновлення, ніж на щоденну продуктивність. Mattermost потребує PostgreSQL 14 або новішої версії та починаючи з v11 не рекомендує MySQL, тому встановлення MySQL сьогодні означає міграцію завтра. Synapse працює на SQLite, але в його документації прямо зазначено, що SQLite придатна лише для тестування, оскільки у великих кімнатах працює нестабільно. Rocket.Chat 8 потребує MongoDB 8.0, тому оновлення бази даних і чату стають одним проєктом, а не двома.
Що насправді дає VPS із 2 GB
Тариф із 2 GB — це базовий розмір у більшості провайдерів, і для двох із цих чотирьох варіантів його справді достатньо.
- Mattermost підходить. Це єдиний варіант, для якого постачальник документує саме такий розмір — до 1,000 користувачів із PostgreSQL на тому самому сервері. Для десяти людей 2 GB достатньо із запасом.
- Zulip підходить, але зі swap. Документація рекомендує використовувати swap на серверах із менш ніж 5 GB і попереджає, що машини з мінімальним обсягом RAM під час оновлення можуть отримати помилки out of memory, через які не виконується крок
tools/webpack. Це реальна проблема, з якою ви зіткнетеся під час оновлення, а не під час встановлення. - Synapse підходить, поки навантаження невелике. У стані простою він споживає мало ресурсів. Проблема виникає під час пікових навантажень, а в розділі про federation нижче пояснюється їхня причина.
- Rocket.Chat за 2 GB краще не використовувати, і причина — у storage engine MongoDB. WiredTiger визначає розмір свого внутрішнього cache як більше значення з 50% від (RAM мінус 1 GB) або 256 MB, тому на машині з 2 GB він резервує приблизно 512 MB ще до запуску Node.js. Результатом не буде чітка відмова. Система встановиться, працюватиме, сповільнюватиметься зі зростанням історії, а зрештою kernel out of memory killer зупинить процес, який на той момент займав найбільше пам’яті.
Перед вибором перевірте, які ресурси ви фактично маєте, оскільки провайдери по-різному враховують RAM у порівнянні з free:
free -h
swapon --showПам’ятайте, що chat server — не єдиний компонент на сервері. TLS (transport layer security) termination, резервні копії та container runtime також потребують пам’яті. Розмістіть вибраний сервер за reverse proxy, який ви розумієте: Nginx, Caddy або Traefik, а якщо розгортаєте його в контейнерах, спочатку правильно налаштуйте основи Docker Compose для VPS.
Чи потрібен мобільним застосункам власний push-сервер
Це аспект, який користувачі виявляють після розгортання. Найчастіше саме він визначає відповідь.
Механізм працює так. Apple Push Notification service (APNs) і Firebase Cloud Messaging (FCM) приймають сповіщення лише від того, хто має облікові дані підпису для конкретного застосунку. Ваш сервер не може надсилати push-сповіщення до застосунку, який ви не створювали. Тому self-hosted chat-сервер, що використовує збірку постачальника з App Store, має передавати сповіщення через gateway постачальника, а умови визначає постачальник.
- Mattermost. Безкоштовний варіант — Test Push Notification Service (TPNS) за адресою
https://push-test.mattermost.com. У документації зазначено, що цей сервіс не рекомендований для production і не має угоди про рівень обслуговування (SLA). Він працює лише зі збірками з App Store і Play Store. Hosted Push Notification Service (HPNS) призначений для production і потребує платної підписки. Третій варіант — самостійно скомпілювати push proxy. У такому разі потрібні власні збірки застосунків із власними обліковими даними APNs і FCM. - Rocket.Chat. Для push-сповіщень потрібно зареєструвати workspace у Rocket.Chat Cloud. Для community workspace встановлено ліміт 10,000 push-сповіщень на місяць. Це приблизно 330 сповіщень на день для всього workspace. Після вичерпання квоти сповіщення не надходитимуть до початку нового місяця. Для користувачів це виглядає так, ніби застосунок не працює.
- Matrix з Element. Synapse надсилає сповіщення до push gateway, а офіційні застосунки Element налаштовані на gateway, який підтримує matrix.org, за адресою
https://matrix.org/_matrix/push/v1/notify. Payload містить ідентифікатори події та кімнати, а не текст повідомлення. Застосунок отримує вміст із вашого сервера, тому gateway бачить метадані, а не листування. Власний gateway Sygnal підтримується, але для цього потрібно створювати й поширювати власні застосунки. На Android є проміжний варіант: UnifiedPush із власним сервером ntfy. - Zulip. Безкоштовний план включає сервіс push-сповіщень для 10 користувачів. Для більш ніж 10 користувачів потрібен план. Безкоштовний Community plan доступний для багатьох некомерційних організацій. У Zulip 12.0, у April 2026, додано end-to-end encryption для push payloads.
Для 10 користувачів усі ці системи надають робочі сповіщення безкоштовно. Для 100 користувачів ситуація змінюється: Zulip потребує плану, Mattermost продовжує працювати через тестовий сервіс без SLA і підтримки, місячний ліміт Rocket.Chat стає обмеженням, а Matrix не має такого обмеження, оскільки gateway безкоштовний для використання.
Які з них безкоштовно надають єдиний вхід
Єдиний вхід (SSO) — це сфера, у якій модель бізнесу з відкритим ядром проявляється найвиразніше.
- Zulip безкоштовно включає SAML (security assertion markup language) і LDAP (lightweight directory access protocol) у self-hosted сервері. Окремий тариф купувати не потрібно.
- Synapse безкоштовно підтримує OpenID Connect (OIDC), SAML і CAS у власному конфігураційному файлі. У новіших розгортаннях дедалі частіше використовують Matrix Authentication Service — окремий сервіс з односторонньою міграцією з класичної автентифікації Synapse, тому таку міграцію слід планувати заздалегідь, а не виявляти цю потребу після розгортання.
- Rocket.Chat у community edition підтримує базовий вхід через LDAP і SAML. Синхронізація розширених атрибутів користувачів, зіставлення груп і команд, а також фонова синхронізація потребують enterprise licence.
- Mattermost у безкоштовній Team Edition надає GitLab OAuth і більше нічого. SAML, AD/LDAP та OpenID Connect доступні лише як платні функції.
Якщо ви плануєте запускати кілька сервісів за одним входом, розмістіть self-hosted identity provider Authentik перед ними та перевірте, з якими з чотирьох сервісів він справді може взаємодіяти за наявної у вас ліцензії.
Що насправді коштує федерація
Федерація — основна причина існування Matrix. Користувач приєднується до кімнати, розміщеної на чужому сервері, і спілкується з людьми, чиї облікові записи знаходяться на цьому сервері, так само як поштові сервери обмінюються поштою. Жоден інший варіант тут цього не підтримує. Якщо вам потрібна федерація, ніщо інше на цій сторінці не є її заміною.
Через це Synapse працює як інший тип навантаження. Коли користувач приєднується до федеративної кімнати, ваш сервер зберігає копію стану цієї кімнати та її подій, а також кешує медіафайли, які публікують користувачі інших серверів: аватари, зображення та файли. Обсяг використаного дискового простору залежить від кімнат, які ви не створювали, і людей, які не мають облікових записів на вашому сервері. Тому сховища Synapse часто містять набагато більше медіаданих, ніж обсяг повідомлень, надісланих власними користувачами. Саме тому документація пов’язує приєднання до великої публічної кімнати з окремою вимогою до обсягу оперативної пам’яті.
Визначте політику зберігання в перший день, а не тоді, коли диск уже заповниться:
media_retention:
local_media_lifetime: 90d
remote_media_lifetime: 14dУ версії 1.61 Synapse отримав media_retention з окремими строками зберігання для локальних і віддалених медіафайлів. Віддалені медіафайли є кешем, тому якщо користувач повторно запитує видалений файл, Synapse знову запитує його із сервера, з якого файл було отримано. Локальні медіафайли не є кешем, тому короткий local_media_lifetime назавжди видаляє завантаження ваших користувачів.
Чесний підсумок: якщо ваші користувачі спілкуються лише між собою, федерація нічого вам не дає, але збільшує використання диска й мережевий трафік та ускладнює оновлення. Вимкніть її або виберіть інший сервер.
Як відбуваються оновлення
Zulip — найпростіший варіант. Один скрипт, а заявлений час простою становить менше ніж 30 секунд, якщо не потрібна масштабна міграція бази даних. Установлення й оновлення виконуються вами на сервері так:
cd $(mktemp -d)
curl -fLO https://download.zulip.com/server/zulip-server-latest.tar.gz
tar -xf zulip-server-latest.tar.gzЗапускайте інсталятор від імені root. Прапорець --push-notifications під час установлення реєструє сервер у сервісі мобільних push-повідомлень. У цей момент інсталятор також просить прийняти умови використання, тому прочитайте їх до початку встановлення.
sudo ./zulip-server-*/scripts/setup/install --push-notifications --certbot \
--email=YOUR_EMAIL --hostname=YOUR_HOSTNAMEПодальші оновлення виконуються за допомогою того самого tarball і однієї команди:
curl -fLO https://download.zulip.com/server/zulip-server-latest.tar.gz
sudo /home/zulip/deployments/current/scripts/upgrade-zulip zulip-server-latest.tar.gzОновлення Mattermost передбачувані. Замініть бінарний файл, перезапустіть сервіс, і під час запуску буде виконано міграції. Починаючи з релізів August 2025, гілка Extended Support Release (ESR) виходить кожні 9 місяців і має 12 місяців підтримки. Оновлення з однієї ESR-версії на наступну — це перевірений сценарій. Пропускати одразу кілька ESR-версій дозволено, але такий сценарій не тестується. На практиці це означає, що тестувати його доведеться вам.
Rocket.Chat поєднує три оновлення. Станом на August 2026 актуальною є гілка 8.x. Версію 8.7.0 випущено 6 August 2026. Вона потребує MongoDB 8.0 і сумісної версії Node.js. Пропуск основної версії може призвести до ситуації, коли база даних більше не відкривається застосунком. Посібник зі встановлення Rocket.Chat за допомогою Docker Compose фіксує сумісні версії цих компонентів, що є головним аргументом на користь використання контейнерів у цьому випадку.
Для Synapse потрібно читати документацію. Кожен реліз має примітки щодо оновлення. Ви повинні прочитати примітки для кожної версії, через яку переходите, а не лише для версії, на яку оновлюєтеся. Після оновлення Synapse виконує фонові оновлення бази даних. На невеликому сервері через це система може працювати повільно протягом кількох годин. Це очікувана поведінка, а не несправність.
Ліцензійні умови простими словами
Mattermost поширює скомпільовані збірки Team Edition за ліцензією MIT, а вихідний код доступний за AGPLv3 або комерційною ліцензією. Частини репозиторію поширюються за Mattermost Source Available License, яка вимагає платної ліцензії для використання в production. Rocket.Chat має ліцензію MIT, за винятком каталогів ee/, на які поширюється окрема enterprise-ліцензія. Synapse перейшов із Apache 2.0 на AGPLv3 у версії 1.99.0, а контриб’ютори підписують CLA, що дає Element змогу продавати винятки з цієї ліцензії. Zulip поширюється за Apache 2.0 і не має enterprise-каталогу. Тому його SSO не має додаткових обмежень.
Практичний висновок такий: AGPL має для вас значення лише тоді, коли ви плануєте змінювати сервер і надавати його іншим як сервіс. Для невеликої команди значно важливішою є модель open core: які функції відсутні у безкоштовній збірці. У Zulip таких функцій найменше, а у Mattermost — найбільше.
Що обрати
Внутрішній інструмент команди. Mattermost. Він має найменший задокументований обсяг вимог, найменш проблемні оновлення та знайомий інтерфейс, який не потребує пояснень. Плануйте платний тариф на той день, коли SSO стане обов’язковим, адже для більшості команд цей день настає.
Сервер спільноти. Zulip. Теми допомагають зберігати читабельність активного публічного каналу навіть через кілька місяців, SAML і LDAP доступні безкоштовно, а оновлення виконується однією командою. Якщо ваша спільнота більше орієнтована на дописи й відповіді, ніж на чат у реальному часі, спочатку порівняйте self-hosted форумне програмне забезпечення, оскільки форум краще індексується в пошуку й узагалі не потребує push-інфраструктури. Оберіть Rocket.Chat, якщо потрібні функції голосового та відеозв’язку, а також omnichannel, і ви можете виділити йому 8 GB, як зазначено у власній документації.
Мережа, яка має взаємодіяти з іншими системами. Matrix із Synapse та Element. Врахуйте збільшення обсягу медіаданих, налаштуйте політику зберігання в перший день, використовуйте PostgreSQL і більше дискового простору, ніж очікуєте, та отримайте реальну користь від взаємодії із серверами, якими ви не керуєте. Вибирати Synapse для команди, яка ніколи не використовує федерацію, означає марно оплачувати ці витрати.
FAQ
Яка self-hosted альтернатива Slack найкраще підходить для невеликої команди?
Для більшості внутрішніх команд — Mattermost. Його документація охоплює конфігурації від 1 до 1,000 користувачів на одному vCPU і з 2 GB RAM, якщо PostgreSQL працює на тому самому комп’ютері. Тому він підходить для VPS початкового рівня, які пропонує більшість провайдерів. Обмеженням є single sign-on: безплатна Team Edition підтримує лише GitLab OAuth, а SAML, AD/LDAP і OpenID Connect потребують платного плану. Якщо безплатний SSO важливіший за інтерфейс, подібний до Slack, використовуйте Zulip.
Чи можна запустити self-hosted chat server на VPS із 2 GB RAM?
Mattermost — так. Zulip — також, якщо додати swap, що рекомендує власна документація Zulip для систем із менш ніж 5 GB RAM. Rocket.Chat, найімовірніше, вас розчарує: рушій WiredTiger у MongoDB резервує для кешу більший із двох обсягів — 50% від (RAM мінус 1 GB) або 256 MB. Отже, на сервері з 2 GB RAM приблизно 512 MB буде зайнято ще до запуску застосунку. Система встановиться, але зі зростанням історії повідомлень її стан погіршуватиметься й завершиться вбивством процесу через нестачу пам’яті. Найменша опублікована конфігурація Rocket.Chat передбачає 4 GiB для застосунку і ще 4 GiB для MongoDB.
Чи потрібен self-hosted chat server власний сервер push-сповіщень для мобільних пристроїв?
Зазвичай ні, оскільки APNs від Apple і FCM від Google приймають сповіщення лише від того, хто підписав застосунок. Тому застосунок постачальника використовує шлюз постачальника. Умови відрізняються. Mattermost пропонує безплатний тестовий сервіс без SLA і платний hosted service. Rocket.Chat обмежує community workspaces 10,000 push-сповіщеннями на місяць. Після цього доставлення припиняється до початку нового місяця. Zulip безплатно надає push для не більш ніж 10 користувачів, а для більшої кількості потрібен план. Matrix homeservers надсилають push через шлюз, який використовують застосунки Element, без додаткової оплати. Власний шлюз потрібен лише в тому разі, якщо ви також постачаєте власні збірки застосунку.
Чи варто розгортати self-hosted Matrix і Synapse для команди, яка ніколи не спілкується з іншими серверами?
Ні. Synapse призначений саме для федерації, і вона ж робить його важчим в експлуатації. Приєднання до кімнат на інших серверах завантажує їхній стан і кешує медіафайли на вашому диску. Через це обсяг сховища зростає з причин, не пов’язаних із вашими користувачами. Перед цим встановіть media_retention із коротким remote_media_lifetime. Команда, яка спілкується лише всередині себе, отримує операційні витрати без переваг федерації. Mattermost або Zulip виконають те саме завдання на менш потужному обладнанні.
Яка self-hosted альтернатива Slack підтримує безплатний single sign-on?
Zulip і Synapse. Zulip безплатно включає SAML і LDAP у self-hosted server. Synapse підтримує OpenID Connect, SAML і CAS у конфігурації, а в новіших інсталяціях використовується окремий Matrix Authentication Service. Community edition Rocket.Chat підтримує базовий вхід через LDAP і SAML, але синхронізація атрибутів, зіставлення груп і фонова синхронізація доступні лише за enterprise licence. Безплатна Team Edition Mattermost підтримує лише GitLab OAuth.