Self-hosted Apps

Rocket.Chat

Корпоративный мессенджер с открытым кодом, который разворачивается на своём сервере — self-hosted альтернатива Slack и Microsoft Teams.

Что такое Rocket.Chat

Rocket.Chat — платформа для командного общения с открытым исходным кодом. Каналы, личные сообщения, треды, файлы, звонки, боты — примерно то же, что в Slack, но с одним принципиальным отличием: сервер вы разворачиваете сами, и переписка компании остаётся на вашем железе.

В русскоязычной среде говорят «рокет» или «рокет чат». Это один из самых частых ответов на задачу «нужен корпоративный мессенджер, но данные не должны уходить в чужое облако» — для компаний, где такая переписка попадает под требования к конфиденциальности или содержит персональные данные.

Что умеет

  • Каналы, группы, треды, обсуждения — стандартный набор командного чата.
  • Omnichannel (LiveChat) — виджет поддержки на сайт, плюс подтягивание обращений из мессенджеров в те же каналы. Этого в Slack нет, и ради этого Rocket.Chat часто и берут.
  • Интеграции — входящие и исходящие вебхуки, боты, слэш-команды, marketplace приложений, полноценный REST API.
  • Звонки и конференции — через интеграцию с Jitsi Meet или встроенные средства.
  • SSOOAuth, SAML, LDAP/AD; типовая связка — с Keycloak.
  • E2E-шифрование — опционально, включается на уровне канала.
  • Клиенты — веб, десктоп, iOS и Android.

Есть бесплатная Community-редакция с открытым кодом и коммерческая Enterprise с дополнительными возможностями и поддержкой. Для внутреннего мессенджера команды обычно хватает первой.

Rocket.Chat vs Mattermost vs Slack

Rocket.Chat Mattermost Slack
Где работает свой сервер свой сервер SaaS
Стек Node.js + MongoDBGo + PostgreSQLзакрытый
Аппетит к ресурсам заметный скромный не ваша забота
Omnichannel/поддержка есть нет через приложения
Экосистема приложений средняя средняя самая большая
История сообщений без лимитов без лимитов ограничена тарифом

Два главных self-hosted-конкурента различаются в основном стеком и характером. Mattermost на Go — легче и предсказуемее по ресурсам, ближе к DevOps-командам. Rocket.Chat богаче функционально, особенно если нужен внешний саппорт-чат, но платит за это прожорливостью Node.js и MongoDB.

Развёртывание и MongoDB

Rocket.Chat написан на JavaScript (Node.js, фреймворк Meteor), а данные держит в MongoDB. Ставится Docker Compose-стеком, приложение слушает порт 3000, наружу его выставляют через Nginx или Traefik с SSL-сертификатом.

Главная особенность установки, на которой спотыкаются все: MongoDB обязана быть запущена как replica set, даже если узел один. Не «желательно», а иначе Rocket.Chat не стартует. Причина — Meteor отслеживает изменения через oplog, а oplog существует только в режиме репликации. Инициализация выглядит так:

mongosh --eval "rs.initiate({
  _id: 'rs0',
  members: [{ _id: 0, host: 'mongodb:27017' }]
})"

Это не полноценная репликация с резервным узлом — это одиночный «кластер» из одного члена, нужный ради oplog. Отказоустойчивость строится отдельно.

Обратная сторона oplog — реальный realtime: сообщения долетают через WebSocket без опроса сервера.

Что нужно от сервера

Rocket.Chat заметно тяжелее, чем ожидают от «чатика». Ориентиры для небольшой команды: VPS на 2 vCPU и 4 ГБ RAM под связку приложение + MongoDB — это рабочий минимум, а не запас. Память съедают Node.js и Mongo примерно поровну.

На что обратить внимание при эксплуатации:

  • Диск. База растёт от истории и вложений. Файлы лучше сразу увести в объектное хранилище — S3-совместимое, например MinIO, — а не хранить в GridFS внутри Mongo.
  • Бэкап.Резервное копирование MongoDB нужно настроить до запуска в эксплуатацию. Мессенджер — это переписка, которую нельзя пересоздать.
  • Обновления. Прыгать через мажорные версии не стоит: миграции базы идут последовательно.

Связанные термины

  • MongoDB — база, без replica set Rocket.Chat не запустится
  • Jitsi Meet — чем добавляют видеозвонки
  • Keycloak — типовой источник SSO для корпоративной установки
  • Webhook — как в каналы приходят уведомления из CI и мониторинга
  • WebSocket — транспорт, за счёт которого чат работает в реальном времени
  • Резервное копирование — обязательная часть эксплуатации

Готовы запустить GPU-задачу?

Запустить GPU-сервер