Ошибка 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 (по умолчанию). Первый открывший веб-интерфейс пользователь проходит мастер первичной настройки и получает права администратора.
☑️ Проверка после установки
⚠️ Внимание: Rocket.Chat требует, чтобы MongoDB работала в режиме набора реплик (replica set), даже если сервер один. Без этого часть функций (например, отслеживание изменений в реальном времени) работать не будет. В готовых Docker- и Snap-сборках это уже настроено, но при ручной установке параметр нужно включить самостоятельно.
Системные требования и подготовка сервера
Минимальные требования зависят от числа одновременных пользователей. Для небольшой команды достаточно виртуальной машины с 2 ядрами CPU и 2–4 ГБ оперативной памяти, но для сотен активных пользователей ресурсы потребуется масштабировать. Точные рекомендации для вашей нагрузки стоит уточнять в официальной документации, так как они меняются от версии к версии.
Перед установкой убедитесь, что на сервере открыты нужные порты, настроен домен с A-записью, указывающей на IP сервера, и установлены актуальные обновления ОС. Для продакшн-развёртывания обязательно настройте HTTPS с валидным сертификатом — без него мобильные приложения и push-уведомления могут работать некорректно.
Настройка 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 имеет смысл при большой нагрузке или требованиях к отказоустойчивости.