Установка Rocket.Chat на Ubuntu 20.04

Rocket.Chat — веб-приложение для чата, написанное на JavaScript с использованием фреймворка Meteor. Это платформа с открытым исходным кодом для совместной работы в реальном времени, которую можно разместить на собственном сервере. Поддерживает голосовые и видеозвонки, конференции, обмен файлами и доступна на Windows, macOS, Linux, Android и iOS.
Далее показано, как установить Rocket.Chat на сервере с Ubuntu 20.04 и подготовить его к продакшен‑использованию.
Основные требования
- Сервер с Ubuntu 20.04.
- Доменное имя, указывающее на IP сервера.
- Доступ root или эквивалент с sudo.
Важно: в примерах использован домен rocket.yourdomain.com. Замените его на свой домен в конфигурациях.
Быстрый план действий
- Обновить пакеты и установить зависимости.
- Установить Node.js v12 и MongoDB 4.x с настройкой replica set.
- Скопировать и запустить Rocket.Chat под служебным пользователем.
- Создать systemd-сервис для управления процессом.
- Настроить Nginx как обратный прокси и проверить работу.
- Пройти мастер настройки в браузере и выполнить базовую безопасную конфигурацию.
Обновление системы и установка зависимостей
Перед началом обновите систему:
apt-get update -yУстановите необходимые пакеты:
apt-get install nginx gnupg2 git unzip build-essential curl software-properties-common graphicsmagick -yПосле установки можно переходить к Node.js.
Установка Node.js
Rocket.Chat из версии, указанной в этом руководстве, требует Node.js 12.x. Добавим официальный репозиторий NodeSource и установим Node.js:
curl -sL https://deb.nodesource.com/setup_12.x | bash -apt-get install nodejs -yПроверьте версию:
node -vОжидаемый вывод будет примерно:
v12.19.0Если версия отличается, убедитесь, что репозиторий добавлен корректно.
Установка и конфигурация MongoDB
Rocket.Chat использует MongoDB. Для работы в продакшене рекомендуется запускать реплика‑сет даже на одном узле, чтобы включить Oplog, необходимый для синхронизации Meteor.
Добавьте ключ и репозиторий MongoDB 4.x:
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4add-apt-repository 'deb [arch=amd64] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse'Установите MongoDB:
apt-get install mongodb-org -yЗапустите сервис и включите автозапуск:
systemctl start mongod
systemctl enable mongodОтредактируйте конфигурацию MongoDB, чтобы задать имя реплика‑сета:
nano /etc/mongod.confДобавьте блок replication:
replication:
replSetName: "replica01"Сохраните файл и перезапустите MongoDB:
systemctl restart mongodИнициируйте реплика‑сет:
mongo
> rs.initiate()Ожидаемый ответ покажет, что реплика‑сет создан и работает. Затем выйдите из оболочки MongoDB:
> exitПримечание: даже при одном узле реплика‑сет обеспечивает доступ к Oplog, необходимому для корректной работы Meteor.
Установка Rocket.Chat
Создайте сервисного пользователя и добавьте его в группу www-data:
useradd -m -U -r -d /opt/rocket rocket --shell /bin/bash
usermod -a -G rocket www-dataУстановите права на каталог:
chmod 750 /opt/rocketПереключитесь на пользователя rocket и скачайте релиз:
su - rocket
curl -L https://releases.rocket.chat/latest/download -o rocket.chat.tgzРаспакуйте и переименуйте папку:
tar -xvzf rocket.chat.tgz
mv bundle Rocket.ChatПерейдите в директорию сервера и установите зависимости Node.js:
cd Rocket.Chat/programs/server
npm installЗатем выйдите из пользователя rocket:
exitЕсли npm install завершился с ошибками, проверьте логи и убедитесь, что все системные зависимости установлены (build-essential, graphicsmagick и т.д.).
Создание systemd-сервиса для Rocket.Chat
Создайте файл службы:
nano /etc/systemd/system/rocketchat.serviceВставьте конфигурацию сервиса (отредактируйте MONGO_URL и ROOT_URL под ваш домен):
[Unit]
Description=Rocket.Chat server
After=network.target nss-lookup.target mongod.target
[Service]
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=rocketchat
User=rocket
Environment=MONGO_URL=mongodb://localhost:27017/rocketchat ROOT_URL=http://rocket.yourdomain.com PORT=3000
ExecStart=/usr/bin/node /opt/rocket/Rocket.Chat/main.js
[Install]
WantedBy=multi-user.targetПерезагрузите демона systemd и запустите сервис:
systemctl daemon-reload
systemctl start rocketchat
systemctl enable rocketchatПроверьте статус:
systemctl status rocketchatОжидаемый вывод покажет активный процесс Node.js и информацию о подключении к MongoDB.
Конфигурация Nginx как обратного прокси
Создайте виртуальный хост для Nginx:
nano /etc/nginx/sites-available/rocketchat.confВставьте конфигурацию (обновите server_name на свой домен):
upstream myrocketchat {
server 127.0.0.1:3000;
}
server {
listen 80;
server_name rocket.yourdomain.com;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
location / {
proxy_pass http://myrocketchat/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forward-Proto http;
proxy_set_header X-Nginx-Proxy true;
proxy_redirect off;
}
}Активируйте сайт и проверьте конфигурацию:
ln -s /etc/nginx/sites-available/rocketchat.conf /etc/nginx/sites-enabled/
nginx -t
systemctl restart nginx
systemctl status nginxСовет: для HTTPS используйте Certbot/Let’s Encrypt. После установки сертификата измените ROOT_URL в systemd‑службе на https://yourdomain и обновите блок proxy_set_header X-Forward-Proto на https.
Доступ к интерфейсу и первичная настройка
Откройте в браузере http://rocket.yourdomain.com и пройдите мастер настройки: создайте администратора, укажите данные организации и базовые параметры сервера.

Заполните имя администратора, почту и пароль. Далее укажите информацию об организации, тип сервера и примите условия.

Настройка сервера включает выбор языка, имени сайта и типа развёртывания.

Подтвердите регистрацию сервера и завершите установку.

После этого вы попадёте в интерфейс рабочего пространства Rocket.Chat.

Критерии приёмки
- Сервис rocketchat активен и запущен: systemctl status rocketchat показывает Active: active (running).
- Nginx принимает HTTP(S) запросы к домену и проксирует их на порт 3000.
- MongoDB запущен и реплика‑сет инициирован (rs.status даёт ответ).
- Веб‑мастер Rocket.Chat доступен и позволяет создать администратора.
Риски и меры по снижению
- Открытый HTTP без HTTPS — риск перехвата. Решение: сразу настроить Let’s Encrypt и перенаправление на HTTPS.
- Неполноценный бэкап MongoDB — потеря данных. Решение: настроить регулярные бэкапы (mongodump/Snapshot).
- Работа с одним узлом реплика‑сета — возможные ограничения; для отказоустойчивости добавьте дополнительные узлы.
Безопасность и жёсткая конфигурация
- Настройте HTTPS (Certbot). Обновите ROOT_URL в systemd на https://yourdomain.
- Ограничьте доступ к MongoDB с помощью iptables или bind_ip в /etc/mongod.conf.
- Создайте учётную запись MongoDB с паролем и используйте MONGO_URL с аутентификацией (mongodb://user:pass@localhost:27017/rocketchat). Не храните пароли в открытом виде — используйте systemd EnvironmentFile или секретный менеджер.
- Регулярно обновляйте систему и зависимости Node.js.
- Ограничьте права файлов и пользователя rocket (chmod 750 для /opt/rocket).
- Настройте брандмауэр UFW: разрешите 80, 443 и SSH.
Резервные копии и обновления
- Бэкап MongoDB: используйте mongodump для экспорта данных, или снимки диска при использовании облачных томов.
- Обновление Rocket.Chat: скачайте новый релиз, остановите service, замените bundle, выполните npm install в programs/server и перезапустите сервис. Всегда тестируйте обновления в staging перед продакшеном.
Отладка и распространённые ошибки
- Rocket.Chat не запускается: проверьте логи systemd (journalctl -u rocketchat) и логи приложения в /var/log/syslog.
- Ошибки с Oplog: убедитесь, что MongoDB запущен как реплика‑сет и в MONGO_URL указано правильное имя базы и опции.
- 502 Bad Gateway от Nginx: проверьте, что процесс слушает порт 3000 (ss -ltnp | grep 3000) и что upstream в конфигурации указывает на 127.0.0.1:3000.
Пример команд для отладки:
journalctl -u rocketchat -f
tail -n 200 /var/log/nginx/error.log
ss -ltnp | grep 3000
mongo --eval "rs.status()"Роли и чеклисты (кто что делает)
- Системный администратор:
- Установить и обновить пакеты, настроить бэкапы, брандмауэр и сертификаты.
- Девопс/инженер приложений:
- Настроить systemd, переменные окружения, деплой релизов, обеспечить CI/CD для обновлений.
- Администратор Rocket.Chat (контент/пользователи):
- Создать пользователей, политики паролей, интеграции, мониторить логи приложений.
Когда этот подход не подходит
- Если вы хотите минимизировать администрирование, рассмотрите SaaS версии Rocket.Chat или облачные альтернативы.
- Для очень большого масштаба (десятки тысяч активных пользователей) потребуется кластеризация MongoDB, балансировщики нагрузки и выделенные микросервисы.
Советы по миграции с другого сервера
- Сделайте полную дамп‑копию MongoDB на исходном сервере: mongodump –archive=backup.archive
- Перенесите бэкап на новый сервер и восстановите mongorestore –archive=backup.archive
- Синхронизируйте файлы, если есть кастомные интеграции или плагины.
- Проверьте версии Rocket.Chat и MongoDB — несоответствие версий может потребовать промежуточного шага обновления.
Краткая справка (глоссарий)
- Rocket.Chat — self-hosted платформа для командного чата.
- Oplog — журналы операций MongoDB, необходимые для синхронизации Meteor.
- Replica set — комбинация MongoDB узлов для отказоустойчивости и Oplog.
Чеклист перед переводом в продакшен
- Домен и DNS указывают на сервер.
- HTTPS настроен (Let’s Encrypt).
- MongoDB защищён и создаются бэкапы.
- Сервис rocketchat настроен и автозапускается.
- Логи и мониторинг настроены (журналы, метрики).
Заключение
Вы успешно установили Rocket.Chat на Ubuntu 20.04, настроили MongoDB с реплика‑сетом, создали systemd‑сервис и настроили Nginx как обратный прокси. Далее рекомендуется настроить HTTPS, бэкапы и регулярно обновлять компоненты.
Важно: перед переходом в крупный продакшен протестируйте обновления и резервное восстановление на стенде.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента