Гид по технологиям

Установка Rocket.Chat на Ubuntu 16.04 с Nginx — пошагово

5 min read DevOps Обновлено 21 Oct 2025
Установка Rocket.Chat на Ubuntu с Nginx
Установка Rocket.Chat на Ubuntu с Nginx

Краткий план

  • Подготовка сервера и зависимостей
  • Установка MongoDB и настройка ReplicaSet
  • Установка Node.js и npm (специфическая версия для Rocket.Chat)
  • Размещение Rocket.Chat в /var/www и запуск
  • Настройка Nginx как обратного прокси и HTTPS
  • Тестирование и создание первого администратора

Требования

  • Сервер Ubuntu 16.04 (LTS)
  • root-доступ или sudo
  • Доменные имена и доступ к DNS для production (опционально тестовый IP)
  • Понимание командной строки и базовых средств администрирования

Важно: тестируйте на отдельной машине или в изолированной среде прежде чем переходить в production.

Шаг 1 — Установка зависимостей Rocket.Chat

Подключитесь к серверу по SSH и получите привилегии root:

ssh [email protected]
sudo su

Обновите список пакетов:

apt-get update

Установите требуемые пакеты:

apt-get install curl graphicsmagick build-essential

Примечание: graphicsmagick нужен для обработки миниатюр и изображений в Rocket.Chat.

Шаг 2 — Установка MongoDB

Rocket.Chat использует MongoDB. В этом руководстве устанавливается MongoDB 3.2 из официального репозитория.

Добавьте GPG-ключ MongoDB:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927

Добавьте репозиторий MongoDB (команда формирует запись на основе вашей версии Ubuntu):

echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list

Обновите репозитории и установите MongoDB:

apt-get update
apt-get install mongodb-org

Включите автозапуск и запустите службу:

systemctl enable mongod
systemctl start mongod

По умолчанию MongoDB слушает порт 27017.

Шаг 3 — Настройка ReplicaSet MongoDB

Коротко: ReplicaSet повышает устойчивость и обеспечивает правильную работу oplog, необходимого для синхронизации Rocket.Chat. ReplicaSet можно настроить даже на одном узле для работы oplog.

Откройте конфигурацию mongod:

vim /etc/mongod.conf

Найдите блок сетевых настроек и закомментируйте bindIp, чтобы MongoDB не была жёстко привязана только к localhost:

net:
    port: 27017
    #bindIp: 127.0.0.1

Добавьте секцию replication и задайте имя набора rs0:

#replication:
replication:
   oplogSizeMB: 1
   replSetName: rs0

Сохраните файл и перезапустите MongoDB:

systemctl restart mongod

Инициализируйте ReplicaSet в оболочке mongo:

export LC_ALL=C
mongo
rs.initiate()

Ожидаемый ответ содержит поле “ok” со значением 1. Это означает успешную инициализацию.

Настройка MongoDB ReplicaSet

Важно: оставлять bindIp закомментированным в production без дополнительных мер не рекомендуется. Убедитесь, что доступ к MongoDB ограничен файерволом и только доверенные хосты могут подключаться.

Шаг 4 — Установка npm и Node.js

Rocket.Chat в указанной версии требует Node.js 4.5. Мы установим nodejs/npm из репозиториев, затем установим утилиту n для управления версиями Node и переключимся на 4.5.

Установка из репозитория Ubuntu:

apt-get install nodejs npm

Установите n глобально и примените нужную версию Node:

npm install -g n
sudo n 4.5

Проверьте версии:

node --version
npm -v

Управление версией NodeJS с помощью n

Примечание: в более новых релизах Rocket.Chat используются другие версии Node.js. Для production проверяйте требования совместимости в официальной документации перед апгрейдом.

Шаг 5 — Установка сервера Rocket.Chat

Скачайте последнюю сборку и распакуйте в /var/www/:

curl -L https://rocket.chat/releases/latest/download -o rocket.chat.tgz
tar -xzvf rocket.chat.tgz

Создайте директорию и переместите bundle:

mkdir -p /var/www/
mv bundle Rocket.Chat
mv Rocket.Chat /var/www/

Установите зависимости и запустите приложение в текущей сессии (для теста):

cd /var/www/Rocket.Chat/
cd programs/server/
npm install

cd ../../
export ROOT_URL=http://192.168.1.110:3000/
export MONGO_URL=mongodb://nyanko-sensei:27017/rocketchat?replicaSet=rs0
export PORT=3000
node main.js

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

После запуска откройте http://192.168.1.110:3000 в браузере для теста.

Rocket.Chat установлен и работает

Важно: запуск node main.js в интерактивной сессии подходит для теста. Для долгосрочной работы используйте системный сервис (systemd) или менеджер процессов (pm2). Пример systemd приведён ниже.

Шаг 6 — Установка и настройка Nginx как обратного прокси

Мы будем запускать Rocket.Chat за Nginx, чтобы организовать HTTPS, виртуальные хосты и улучшенную производительность.

Установите Nginx:

apt-get install nginx

Создайте папку для SSL и перейдите в неё:

mkdir -p /etc/nginx/ssl/
cd /etc/nginx/ssl/

Сгенерируйте самоподписанный сертификат (в production используйте Let’s Encrypt или другой удостоверяющий центр):

openssl req -new -x509 -days 365 -nodes -out /etc/nginx/ssl/rocket-chat.crt -keyout /etc/nginx/ssl/rocket-chat.key
chmod 400 rocket-chat.key

Создайте файл виртуального хоста:

cd /etc/nginx/sites-available/
vim rocket-chat

Вставьте конфигурацию (замените rocket-chat.co на ваш реальный домен):

# Upstreams
upstream backend {
    server 127.0.0.1:3000;
}
 
# Redirect Options
server {
  listen 80;
  server_name rocket-chat.co;
  # enforce https
  return 301 https://$server_name$request_uri;
}
 
# HTTPS Server
server {
    listen 443;
    server_name rocket-chat.co;

    error_log /var/log/nginx/rocketchat.access.log;

    ssl on;
    ssl_certificate /etc/nginx/ssl/rocket-chat.crt;
    ssl_certificate_key /etc/nginx/ssl/rocket-chat.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # dont use SSLv3 ref: POODLE

    location / {
        proxy_pass http://192.168.1.110:3000/;
        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/rocket-chat /etc/nginx/sites-enabled/rocket-chat
nginx -t
systemctl restart nginx

Примечание: в конфигурации выше proxy_pass направляет трафик на внутренний IP 192.168.1.110:3000. Замените на 127.0.0.1:3000 при локальном запуске.

Шаг 7 — Тестирование Rocket.Chat за Nginx

Запустите Rocket.Chat с новыми переменными среды (ROOT_URL должен быть https):

cd /var/www/Rocket.Chat/
export ROOT_URL=https://rocket-chat.co
export MONGO_URL=mongodb://nyanko-sensei:27017/rocketchat?replicaSet=rs0
export PORT=3000
node main.js

Откройте в браузере https://rocket-chat.co (замените на ваш домен). При первом запуске создайте администратора через форму регистрации.

Rocket.Chat с Nginx

Rocket.Chat через SSL

Создание администратора

Подтверждение SITE-URL

Регистрация имени пользователя

В результате вы получите рабочий интерфейс администрирования и возможность создать каналы для команды.

Панель Rocket.Chat

Запуск Rocket.Chat как системной службы (systemd)

Рекомендуется управлять приложением через systemd или pm2. Пример простого systemd unit-файла:

[Unit]
Description=Rocket.Chat server
After=network.target mongod.target

[Service]
Type=simple
Environment=ROOT_URL=https://rocket-chat.co
Environment=MONGO_URL=mongodb://nyanko-sensei:27017/rocketchat?replicaSet=rs0
Environment=PORT=3000
User=www-data
WorkingDirectory=/var/www/Rocket.Chat
ExecStart=/usr/bin/node /var/www/Rocket.Chat/main.js
Restart=always

[Install]
WantedBy=multi-user.target

Сохраните файл как /etc/systemd/system/rocketchat.service, затем выполните:

systemctl daemon-reload
systemctl enable rocketchat
systemctl start rocketchat
systemctl status rocketchat

Важно: убедитесь, что пользователь (в примере www-data) имеет доступ к файлам и правам в каталоге приложения.

Безопасность и эксплуатация

  • SSL: в production используйте бесплатные сертификаты Let’s Encrypt или коммерческие сертификаты.
  • Ограничьте доступ к MongoDB через файервол (UFW/iptables) только с доверенных хостов.
  • Обновления: тестируйте обновления на staging перед применением в production. Бэкапьте MongoDB.
  • Логи: настройте ротацию логов для Nginx и Rocket.Chat.
  • Мониторинг: интегрируйте базовые метрики и алерты по доступности сервиса.

Типичные ошибки и способы решения

  • Проблема: при инициализации rs.initiate() поле ok != 1 — проверьте сетевые настройки и bindIp.
  • Проблема: прокси не передаёт WebSocket — проверьте proxy_set_header Upgrade и Connection, а также proxy_http_version 1.1.
  • Проблема: приложение не запускается после смены Node.js — убедитесь, что зависимости пересобраны: зайдите в programs/server и выполните npm install.

Критерии приёмки

  • Сервис Rocket.Chat отвечает по HTTPS и доступен по заданному домену.
  • Веб‑интерфейс позволяет зарегистрировать администратора и создать канал.
  • MongoDB работает с ReplicaSet и oplog доступен.
  • Служба запущена как systemd unit или под управлением pm2 и автоматически рестартует приложение.

Чек-лист для ролей

Администратор:

  • Проверить DNS и сертификаты
  • Убедиться в доступности порта 443

DevOps:

  • Настроить systemd/pm2
  • Настроить бэкапы MongoDB
  • Настроить мониторинг и логирование

Специалист по безопасности:

  • Ограничить доступ к MongoDB
  • Обновить TLS конфигурацию и использовать современные протоколы

Мини-методология быстрого развертывания (4 шага)

  1. Подготовить сервер и установить зависимости. 2. Установить и инициализировать MongoDB с ReplicaSet. 3. Развернуть Rocket.Chat и проверить локально. 4. Настроить Nginx и SSL, запустить как службу.

Краткая памятка по ключевым значениям

  • Порт MongoDB: 27017
  • Порт Rocket.Chat по умолчанию: 3000
  • Самоподписанный сертификат в примере действителен 365 дней
  • Директория приложения: /var/www/Rocket.Chat

Миграция и совместимость

Перед обновлением Node.js или MongoDB проверьте официальную документацию Rocket.Chat на предмет минимально поддерживаемых версий. В крупных апгрейдах используйте промежуточный стенд и тестовую миграцию данных.

Ресурсы и ссылки

Резюме

Rocket.Chat можно быстро развернуть на Ubuntu 16.04: достаточно установить MongoDB с ReplicaSet, настроить нужную версию Node.js, развернуть bundle в /var/www и поставить Nginx в качестве обратного прокси с HTTPS. Для production рекомендованы systemd/pm2, ограничение доступа к базе данных и использование доверенных SSL-сертификатов.

Extras: результаты после обновления переменных окружения и экранные снимки приведены в статье для наглядности.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Установка Redmine 4.2.3 на Rocky Linux с PostgreSQL и Apache
Инфраструктура

Установка Redmine 4.2.3 на Rocky Linux с PostgreSQL и Apache

Вырезать изображение в Xara Xtreme
Графика

Вырезать изображение в Xara Xtreme

One UI 8 Beta — как присоединиться и что нового
Android.

One UI 8 Beta — как присоединиться и что нового

Исправить медленный отклик OnePlus 9/9R/9 Pro
Мобильные советы

Исправить медленный отклик OnePlus 9/9R/9 Pro

Экспорт из digiKam в Flickr, PicasaWeb, Facebook
Фото

Экспорт из digiKam в Flickr, PicasaWeb, Facebook

Выбор ПО для краткосрочной аренды Airbnb
Краткосрочная аренда

Выбор ПО для краткосрочной аренды Airbnb