Rocket.Chat Server: развёртывание и настройка корпоративного мессенджера

Ошибка MongoDB connection refused при первом запуске Rocket.Chat Server — самая частая причина, по которой самостоятельное развёртывание корпоративного мессенджера останавливается на старте: приложение не может подключиться к базе данных, без которой не работает ни один канал и ни одно сообщение. Rocket.Chat — это open-source платформа для командного общения, которую компании размещают на собственной инфраструктуре, чтобы контролировать данные и не зависеть от облачных сервисов.

В этом материале разберём, какие способы установки существуют, какие требования предъявляет сервер, как настроить HTTPS и что проверять, если веб-интерфейс не открывается или мобильные клиенты не подключаются. Инструкции актуальны для актуальных версий Rocket.Chat; конкретные пути и команды могут отличаться в зависимости от выбранного метода установки, поэтому сверяйтесь с официальной документацией проекта.

Что такое Rocket.Chat Server и кому он нужен

Rocket.Chat Server — это серверная часть мессенджера, написанная на Node.js и использующая MongoDB в качестве хранилища. В отличие от облачных аналогов вроде Slack, вся переписка, файлы и учётные записи остаются на вашем оборудовании. Это критично для организаций с требованиями к конфиденциальности: медицинских учреждений, финансовых компаний, госструктур.

Платформа поддерживает каналы, личные сообщения, аудио- и видеозвонки, потоковые обсуждения (threads), а также омниканальный модуль для общения с клиентами из внешних каналов. Клиенты доступны для Windows, macOS, Linux, Android и iOS, а также через браузер.

  • 🔒 Полный контроль над данными и их местонахождением
  • 🔌 Интеграции через API, вебхуки и маркетплейс приложений
  • 👥 Гибкая система ролей и разрешений для пользователей
  • 📱 Приложения для всех популярных платформ

Способы установки: Docker, Snap и ручная сборка

Существует несколько официально поддерживаемых методов развёртывания. Выбор зависит от вашего опыта и требований к обслуживанию. Самый простой путь для большинства — установка через Docker Compose: контейнеры изолируют приложение и базу данных, а обновление сводится к замене образов.

Для Ubuntu популярен вариант через Snap — пакет ставится одной командой и включает автоматические обновления. Ручная установка из исходников требует самостоятельной настройки Node.js, MongoDB и системного сервиса, поэтому подходит опытным администраторам.

docker compose up -d

После запуска контейнеров Rocket.Chat становится доступен на порту 3000 (по умолчанию). Первый открывший веб-интерфейс пользователь проходит мастер первичной настройки и получает права администратора.

☑️ Проверка после установки

Выполнено: 0 / 5
⚠️ Внимание: Rocket.Chat требует, чтобы MongoDB работала в режиме набора реплик (replica set), даже если сервер один. Без этого часть функций (например, отслеживание изменений в реальном времени) работать не будет. В готовых Docker- и Snap-сборках это уже настроено, но при ручной установке параметр нужно включить самостоятельно.

Системные требования и подготовка сервера

Минимальные требования зависят от числа одновременных пользователей. Для небольшой команды достаточно виртуальной машины с 2 ядрами CPU и 2–4 ГБ оперативной памяти, но для сотен активных пользователей ресурсы потребуется масштабировать. Точные рекомендации для вашей нагрузки стоит уточнять в официальной документации, так как они меняются от версии к версии.

Перед установкой убедитесь, что на сервере открыты нужные порты, настроен домен с A-записью, указывающей на IP сервера, и установлены актуальные обновления ОС. Для продакшн-развёртывания обязательно настройте HTTPS с валидным сертификатом — без него мобильные приложения и push-уведомления могут работать некорректно.

📊 Какой способ установки Rocket.Chat вы используете?
Docker Compose
Snap-пакет
Ручная установка
Только планирую развёртывание

Настройка HTTPS и обратного прокси

Вам потребуется обратный прокси — обычно Nginx или Caddy, — который принимает HTTPS-соединения и перенаправляет их на внутренний порт Rocket.Chat. Caddy удобен тем, что автоматически получает и продлевает сертификаты Let's Encrypt. При использовании Nginx сертификат выпускают через утилиту certbot.

Критически важный параметр — переменная окружения ROOT_URL. Она должна точно совпадать с публичным адресом, включая протокол: например, https://chat.example.com. Если значение указано неверно, сломаются ссылки в письмах, загрузка файлов и подключение мобильных клиентов.

ROOT_URL=https://chat.example.com

Сравнение способов развёртывания

МетодСложностьОбновленияКому подходит
Docker ComposeСредняяЗамена образовБольшинству команд
SnapНизкаяАвтоматическиеСерверы на Ubuntu
Ручная установкаВысокаяВручнуюОпытным администраторам
Облако Rocket.ChatМинимальнаяНа стороне вендораТем, кто не хочет администрировать

Каждый подход имеет право на существование. Docker даёт переносимость между серверами, Snap экономит время на обслуживании, а облачный вариант снимает вопрос инфраструктуры целиком — хотя и частично нивелирует идею самостоятельного хостинга данных.

Типичные ошибки и их диагностика

Если веб-интерфейс не открывается, начните с проверки логов. Для Docker это команда docker logs с именем контейнера, для Snap — журнал службы через journalctl. Чаще всего встречаются следующие проблемы:

  • 🗄️ Ошибка подключения к MongoDB — проверьте, запущен ли контейнер или служба базы и инициализирован ли replica set
  • 🌐 Белый экран или бесконечная загрузка — неверный ROOT_URL или проблемы с WebSocket на прокси
  • 📵 Мобильное приложение не подключается — отсутствует валидный HTTPS-сертификат или закрыт порт 443
  • 📁 Файлы не загружаются — недостаточно прав на каталог хранения или неверно настроено файловое хранилище
⚠️ Внимание: не отключайте проверку сертификатов и не переводите продакшн-сервер на HTTP ради «быстрого решения». Это открывает переписку для перехвата. Если HTTPS не поднимается, ищите причину в DNS, файрволе или конфигурации прокси.
Где искать логи

В Docker — команда docker logs <имя_контейнера>. В Snap — journalctl -u snap.rocketchat-server.rocketchat-server. В ручной установке — вывод systemd-службы или консоли, из которой запущен процесс Node.js.

Отдельная категория проблем — производительность. Если интерфейс «подтормаживает», проверьте загрузку CPU и памяти, размер базы MongoDB и наличие индексов. Регулярно очищайте старые загруженные файлы и настраивайте политику хранения истории сообщений, если объём данных растёт слишком быстро.

Резервное копирование и обновление

Бэкап Rocket.Chat состоит из двух частей: дампа базы MongoDB и копии каталога с загруженными файлами. Для MongoDB используется штатная утилита mongodump. Проверяйте восстановление из резервных копий на тестовом стенде — копия, которую нельзя развернуть, не считается копией.

Перед обновлением на новую мажорную версию обязательно делайте снимок системы или полный бэкап и читайте примечания к релизу: иногда требуются промежуточные обновления или миграции базы данных. Обновление через Docker сводится к скачиванию нового образа и пересозданию контейнера, но откат без резервной копии базы может оказаться невозможным.

Часто задаваемые вопросы

Можно ли использовать Rocket.Chat бесплатно?

Да, базовая версия с открытым исходным кодом распространяется бесплатно. Отдельные функции корпоративного уровня (например, расширенные возможности омниканальности или LDAP-синхронизация в полном объёме) могут требовать платной подписки — актуальный перечень уточняйте на официальном сайте проекта.

Почему мобильное приложение не подключается к серверу?

Наиболее вероятные причины: отсутствие валидного HTTPS-сертификата, неверно указанный ROOT_URL, закрытый порт 443 на файрволе или проблемы с WebSocket на обратном прокси. Проверьте, открывается ли адрес сервера в браузере на том же устройстве.

Какая база данных нужна Rocket.Chat?

Используется MongoDB, запущенная в режиме набора реплик (replica set) — это обязательное требование, даже для одиночного сервера. Поддерживаемые версии базы зависят от версии Rocket.Chat, поэтому сверяйтесь с документацией к вашему релизу.

Как перенести Rocket.Chat на другой сервер?

Общий порядок такой: сделайте дамп MongoDB через mongodump, скопируйте каталог с загруженными файлами и конфигурацию, разверните Rocket.Chat той же версии на новом сервере, восстановите дамп через mongorestore и только после проверки обновляйтесь. Заранее протестируйте процедуру на копии данных.

Нужен ли отдельный сервер для MongoDB?

Для небольших команд база данных и приложение спокойно работают на одной машине — так устроены стандартные Docker- и Snap-развёртывания. Выделенный сервер для MongoDB имеет смысл при большой нагрузке или требованиях к отказоустойчивости.