Rocket.Chat — это бесплатная, полностью настраиваемая платформа для коммуникаций (корпоративный мессенджер) с открытым исходным кодом. Основным отличием и главным преимуществом Rocket.Chat перед такими программами, как Microsoft Teams, Slack, Trello и Zoom, является то, что его можно развернуть в собственной инфраструктуре. Благодаря этому значительно повышается защищенность и конфиденциальность ваших данных. Среди функциональных особенностей Rocket.Chat можно выделить следующие:
Полноценный функционал для общения между пользователями: текстовые сообщения с возможностью пересылки файлов, аудио- и видеозвонки (включая групповые видеоконференции);
Открытые и закрытые каналы (аналог групп в других мессенджерах) для общения;
Поддержка триггеров — действий, которые запускаются автоматически при наступлении определенных событий. Например, когда на сайт вашей организации приходит новый посетитель, то система автоматически отправит ему сообщение в чат;
Интеграция со сторонними программами. Поддерживаются Jira, GitHub, Trello, а также присутствует интеграция с Telegram и WhatsApp.
В данной статье мы рассмотрим установку Rocket.Chat сразу на двух операционных системах: Ubuntu 22.04 и CentOS 9, а также произведем базовую настройку программы. Устанавливать будем версию Rocket.Chat 6.5.3.
cloud
Системные требования для Rocket.Chat предоставлены на официальном сайте по ссылке.
Для установки Rocket.Chat необходимо следующее:
Сервер или виртуальная машина с предустановленной ОС Ubuntu 22.04 или CentOS 9.
Сервер или виртуальная машина с любой другой предустановленной операционной системой на которую можно установить СУБД MongoDB. Для ознакомительного запуска Rocket.Chat, MongoDB можно установить на тот же сервер, на который будет установлен Rocket.Chat, однако при использовании Rocket.Chat в production-окружении, MongoDB должна быть развернута на отдельном сервере.
Зарегистрированное доменное имя на котором будет располагаться сервер Rocket.Chat. Для доменного имени должна быть создана A-запись (указывает на соответствие доменного имени и IP-адреса в формате IPv4). Инструкцию по регистрации домена можно найти документации Timeweb Cloud. В качестве примера в этой статье мы будем использовать домен my-test-blog.ru
.
Чтобы арендовать облачный или выделенный сервер в Timeweb Cloud, необходимо пройти регистрацию.
Переходим по ссылке для регистрации нового пользователя. Мы выберем регистрацию на физическое лицо и заполним следующие данные:
Номер телефона можно указать по желанию. Также регистрацию можно пройти, воспользовавшись одним из сторонних сервисов: Google-аккаунт, ВКонтакте и GitHub:
После регистрации на указанный адрес почты придет сообщение с ссылкой для активации аккаунта и входа в панель — перейдите по ней
После того, как учетная запись была создана и активирована, можно арендовать облачный сервер.
Если на вашем аккаунте недостаточно средств, то будет выведено предупреждение о необходимости пополнить баланс. После оплаты и создания сервера откроется Дашборд сервера, где можно будет найти IP-адрес, логин и пароль для подключения.
Ниже вы найдете пошаговые инструкции для Ubuntu и CentOS.
В целом, процесс очень схож. Единственные отличия — это использование другого пакетного менеджера, а также использование других ссылок для скачивания Node.js и MongoDB.
Команды в инструкции необходимо выполнять от пользователя root
.
Для установки и функционирования Rocket.Chat на любой ОС необходимо использовать именно те версии Node.js и MongoDB, которые указаны в разделе «Engine versions» на странице релиза в GitHub.
Например, для Rocket.Chat версии 6.5.3, Node.js можно использовать только версию 14.21.3, в то время как MongoDB поддерживает использование одной из следующих версий — 4.4, 5.0, 6.0.
Если не соблюсти требования по использованию определенных версий, то собрать и запустить Rocket.Chat не получится.
Ubuntu 22.04
apt update && apt -y install gnupg curl build-essential graphicsmagick
curl -fsSL https://deb.nodesource.com/setup_14.x | bash - && apt -y install nodejs
Так как 14 версия Node.js является устаревшей, в терминале будет выведено предупреждение о том, что данная версия больше не поддерживается:
Однако, как уже было сказано ранее, необходимо использовать именно ту версию Node.js, которая указана в релизе Rocket.Chat, даже если она является устаревшей.
После 20-секундной задержки появится еще одно предупреждение. Далее установка продолжится по истечении 60 секунд:
Проверяем, что Node.js был успешно установлен, путем вывода его версии:
node --version
Если в выводе команды отобразилась версия, то Node.js успешно установлен.
CentOS 9
epel-release
. Он представляет собой хранилище с дополнительными пакетами, которое в свою очередь содержит библиотеку GraphicsMagick
, необходимую для сборки Rocket.Chat:dnf -y install epel-release
Далее устанавливаем GraphicsMagick
, а также дополнительные пакеты, которые нам пригодятся в процессе сборки и настройки Rocket.chat:
dnf -y install yum-utils GraphicsMagick gcc-c++ make curl nano tar
curl -sL https://rpm.nodesource.com/setup_14.x | bash - && dnf -y install nodejs
Сначала будет выведено предупреждение, о том что Node.js версии 14 является устаревшим. Ждем завершения установки 80 секунд. После завершения установки проверяем, что Node.js был успешно установлен путем вывода его версии:
node --version
Если в выводе команды отобразилась версия, то Node.js успешно установлен.
Для хранения пользовательских данных Rocket.Chat необходима СУБД MongoDB.
В данной статье MongoDB будет установлена на один сервер с Rocket.Chat, но при использовании в production-окружении MongoDB должна быть установлена на отдельном хосте. Также убедитесь, что между сервером Rocket.Chat и сервером MongoDB присутствует сетевой доступ (при установке MongoDB на отдельном хосте).
Устанавливать будем 6 (6.0) версию MongoDB.
Ubuntu 22.04
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-6.0.list
mongodb-org
:apt update && apt -y install mongodb-org
mongod
:systemctl status mongod
Как можно увидеть, сервис mongod
не запущен.
Если в статусе будет отображено inactive (dead)
, то необходимо запустить MongoDB вручную. Запускаем сервис mongod
, а также добавляем его в автозагрузку:
systemctl start mongod && systemctl enable mongod
Далее смотрим статус службы mongod
еще раз:
systemctl status mongod
MongoDB успешно запущена и работает.
CentOS 9
mongodb
в директории /etc/yum.repos.d
:nano /etc/yum.repos.d/mongodb-org.repo
Прописываем в файле следующее содержимое:
[mongodb-org]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/6.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc
Сохраняем изменения и выходим из файла.
mongodb-org
:dnf -y install mongodb-org
mongod
:systemctl status mongod
Как можно увидеть, сервис mongod
не запущен.
Если в статусе будет отображено inactive (dead)
, то необходимо запустить MongoDB вручную. Запускаем сервис mongod
, а также добавляем его в автозагрузку:
systemctl start mongod
Проверяем статус службы mongod
еще раз:
systemctl status mongod
MongoDB успешно запущена и работает.
Стоит отметить важный момент: начиная с 5 версии (5.0) MongoDB, консольная утилита, ранее известная как mongo
и предназначенная для управления MongoDB через терминал, была объявлена устаревшей и заменена на mongosh. При установке MongoDB утилита mongosh
также была установлена автоматически (она является частью пакета mongodb-org
). Для запуска mongosh
достаточно ввести команду:
mongosh
Для проверки корректности работы MongoDB выведем список доступных баз данных, выполнив в консоли mongosh
команду:
show dbs
Чтобы выйти из консоли mongosh
, достаточно выполнить:
exit
Далее переходим к настройке MongoDB. Этот процесс практически идентичен в обеих операционных системах.
mongod.conf
:nano /etc/mongod.conf
Находим раздел storage
и приводим его к следующему виду:
Ubuntu 22.09
storage:
dbPath: /var/lib/mongodb
engine: wiredTiger
CentOS 9
storage:
dbPath: /var/lib/mongo
engine: wiredTiger
Где:
dbPath
— указывается полный путь до директории, где будут хранится файлы баз данных;
engine
— задается движок для хранения данных. В качестве примера мы выбрали движок wiredTiger
который обеспечивает 10 кратное увеличение производительности для записи данных, а также содержит улучшенный функционал для управления памятью.
Также создаем раздел replication
, который отвечает за создание репликации базы данных, и в нем создаем параметр replSetName
со значением rs01
:
replication:
replSetName: "rs01"
Где:
replSetName
— задается имя для реплики базы данных. В качестве примера было выбрано имя rs01
.
Сохраняем изменения и выходим из файла.
mongod
:systemctl restart mongod
После того как необходимые правки были внесены, необходимо убедиться, что MongoDB была успешно запущена:
systemctl status mongod
mongosh --eval "printjson(rs.initiate())"
Репликация в MongoDB успешно запущена. Rocket.Chat использует репликацию в MongoDB для повышения производительности. Наборы реплик обеспечивают высокую доступность данных за счет сохранения нескольких копий данных.
На этом установка, настройка и тестирование MongoDB успешно завершены. Далее мы перейдем непосредственно к установке Rocket.Chat.
/tmp
:curl -L https://releases.rocket.chat/6.5.3/download -o /tmp/rocket.chat.tgz
tar -xzf /tmp/rocket.chat.tgz -C /tmp
cd /tmp/bundle/programs/server && npm install --unsafe-perm --production
Процесс сборки в среднем занимает одну минуту.
bundle
с конфигурационными файлами Rocket.Chat в директорию /opt
, присвоив при этом новое имя для директории — Rocket.Chat
:mv /tmp/bundle /opt/Rocket.Chat
rocketchat
:useradd -M rocketchat && usermod -L rocketchat
rocketchat
на директорию /opt/Rocket.Chat
:chown -R rocketchat:rocketchat /opt/Rocket.Chat
rocketchat
создаем unit со следующим содержимым:Ubuntu 22.04
cat << EOF | sudo tee -a /lib/systemd/system/rocketchat.service
[Unit]
Description=The Rocket.Chat server
After=network.target remote-fs.target nss-lookup.target nginx.service mongod.service
[Service]
Environment=ROOT_URL=http://my-test-blog.ru:3000
Environment=PORT=3000
Environment=MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01
Environment=MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01
ExecStart=node /opt/Rocket.Chat/main.js
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=rocketchat
User=rocketchat
[Install]
WantedBy=multi-user.target
EOF
CentOS 9
cat << EOF | tee -a /etc/systemd/system/rocketchat.service
[Unit]
Description=The Rocket.Chat server
After=network.target nss-lookup.target mongod.target
[Service]
Environment=ROOT_URL=http://my-test-blog.ru:3000
Environment=PORT=3000
Environment=MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01
Environment=MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01
ExecStart=node /opt/Rocket.Chat/main.js
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=rocketchat
User=rocketchat
[Install]
WantedBy=multi-user.target
EOF
В разделе Service
необходимо задать следующие переменные с нужными значениями:
Environment=ROOT_URL=http://my-test-blog.ru:3000
Environment=PORT=3000
Environment=MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01
Environment=MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01
Где:
ROOT_URL
— доменное имя или IP-адрес, на котором будет располагаться сервер и веб-интерфейс Rocket.Chat;PORT
— порт, на котором будет доступен Rocket.Chat. По умолчанию 3000;MONGO_URL
— IP-адрес или доменное имя сервера, на котором установлена СУБД MongoDB. Если MongoDB установлена на одном сервере с Rocket.Chat, то необходимо указать адрес localhost. Также необходимо указать порт, по которому доступна MongoDB (порт по умолчанию 27017). Значение данной переменной должно быть задано в следующем формате:mongodb://localhost:27017/rocketchat?replicaSet=rs01
Значение /rocketchat?replicaSet=rs01
означает, что будет использоваться репликация данных в MongoDB. Имя реплики будет задано как rs01
.
MONGO_OPLOG_URL
— строка подключения к локальной базе данных MongoDB. Дублируется адрес сервера, порт от MongoDB а также имя репликации. Строка имеет следующий формат:mongodb://localhost:27017/local?replicaSet=rs01
Также обратите внимание на параметр ExecStart
, в котором необходимо указать команду для запуска Rocket.Chat. В данном примере запуск Rocket.Chat выглядит так:
node /opt/Rocket.Chat/main.js
После того, как unit-файл был создан, перезапускаем сервис systemd
:
systemctl daemon-reload
systemctl enable --now rocketchat && systemctl restart rocketchat
Проверяем статус Rocket.Chat:
Ubuntu 22.04
systemctl status rocketchat -l
CentOS 9
systemctl status rocketchat
Если статус отображен как active (running)
, это означает, что Rocket.Chat успешно запущен и работает.
Открываем браузер и переходим по адресу, который был указан при установке Rocket.Chat (переменная ROOT_URL
), а также указываем порт (по умолчанию 3000). Должна открыться страница с первичной настройкой:
По умолчанию в Rocket.Chat не используется протокол HTTPS. Для того чтобы использовать HTTPS, нам потребуется выпустить TLS-сертификат. В качестве центра сертификации воспользуемся Let’s Encrypt — сервисом, который выпускает бесплатные криптографические сертификаты стандарта X.509.
Ubuntu 22.04
apt -y install nginx certbot
CentOS 9
Для дистрибутива CentOS Nginx необходимо установить с помощью официального репозитория от Nginx.
nginx.repo
в /etc/yum.repos.d/
:nano /etc/yum.repos.d/nginx.repo
И прописываем следующее содержимое:
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
Сохраняем изменения и выходим из файла.
Далее устанавливаем Nginx и certbot при помощи команды:
dnf -y install nginx certbot
mkdir -p /var/www/certbot/.well-known
mkdir /var/www/certbot/.well-known/acme-challenge
nano /etc/nginx/sites-enabled/default
В блок server
добавляем путь до ранее созданных директорий:
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
Сохраняем изменения и выходим из файла.
systemctl reload nginx
После этого проверяем статус Nginx:
systemctl status nginx
Если статус отображен как active (running)
, это означает, что Nginx успешно запущен и работает.
certbot certonly --email testmail@gmail.com --webroot -w /var/www/certbot/ -d my-test-blog.ru
Где в параметре --email
необходимо указать свой адрес электронной почты, а в параметре -d
— доменное имя, для которого выпускается сертификат. Выпущенные сертификаты будут сохранены в директорию /etc/letsencrypt/live/<имя_домена>
:
Ubuntu 22.04
nano /etc/nginx/sites-enabled/default
CentOS 9
nano /etc/nginx/conf.d
И приводим файл к следующему виду:
upstream backend {
server 127.0.0.1:3000;
}
server {
listen 443 ssl;
server_name my-test-blog.ru;
client_max_body_size 200M;
error_log /var/log/nginx/rocketchat.access.log;
ssl_certificate /etc/letsencrypt/live/my-test-blog.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/my-test-blog.ru/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
location / {
proxy_pass http://backend;
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-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Nginx-Proxy true;
proxy_redirect off;
}
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
}
Где:
server 127.0.0.1:3000
— указывается адрес и порт, на котором находится сервер Rocket.Chat;server_name my-test-blog.ru
— указывается доменное имя, на котором будет доступен сервер Rocket.Chat;ssl_certificate /etc/letsencrypt/live/my-test-blog.ru/fullchain.pem
— указывается полный путь до файла с полной цепочкой сертификатов (fullchain.pem);ssl_certificate_key /etc/letsencrypt/live/my-test-blog.ru/privkey.pem
— указывается полный путь до файла с закрытым ключом от сертификата.Сохраняем изменения и выходим из файла.
nginx -t
Если в ответе отобразились строки:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
— значит, ошибок в конфигурации нет.
systemctl restart nginx
Также стоит выделить важный момент — если после первоначальной настройки выйти из учетной записи в веб-интерфейсе и попытаться войти снова, то веб-интерфейс будет недоступен. Для решения данной проблемы необходимо открыть на редактирование ранее созданный unit-файл rocketchat
, который располагается в /lib/systemd/system/rocketchat.service
и изменить значение следующей переменной:
Environment=ROOT_URL=http://my-test-blog.ru:3000
на:
Environment=ROOT_URL=https://my-test-blog.ru
Где my-test-blog.ru
— доменное имя, на котором находится Rocket.Chat.
Тем самым мы оставляем текущее доменное имя, но добавляем HTTPS и убираем порт.
Сохраняем изменения, выходим из файла. Далее перезапускаем демон systemd
и Rocket.Chat:
systemctl daemon-reload && systemctl restart rocketchat
После этого веб-интерфейс Rocket.Chat станет доступен.
Как можно увидеть на скриншоте выше, сертификат успешно работает.
При первом входе в веб-интерфейс Rocket.Chat необходимо произвести первоначальную настройку.
Если сообщение не пришло, его можно переслать (кнопка Resend) или указать другой адрес электронной почты (кнопка Change email).
Также в поле Security code содержится код, который должен совпадать с сообщением, поступившим на электронную почту:
В присланном сообщении необходимо проверить, что код безопасности совпадает с кодом, указанным в веб-интерфейсе, и нажать на кнопку Verify registration или перейти по ссылке ниже:
После этого вы будете перенаправлены на домашнюю страницу вашего сервера Rocket.Chat:
Далее мы создадим пользователя а также подключимся к нашему серверу при помощи официального клиент-приложения.
В открывшемся меню, нажимаем на кнопку «New user», которая находится справа сверху:
В появившемся меню необходимо заполнить следующие обязательные поля: имя, логин, электронная почта, пароль:
После того как пользователь создан, нажимаем на кнопку «Сохранить».
Для того чтобы пользователи могли подключаться к серверу Rocket.Chat, необходимо воспользоваться официальным клиентским приложением. Клиент доступен как на ПК (Windows, MacOS, Linux), так и на мобильных платформах: iOS и Android. На Гитхабе можно скачать установочный файл для вашей платформы.
Рассмотрим подключение пользователя на примере учетной записи администратора.
При этом порт указывать не нужно, достаточно указать протокол (https) и доменное имя.
Так как пользователь-администратор уже присутствует в системе, воспользуемся адресом электронной почты пользователя, который был задан на этапе создания пользователя-администратора.
Подключение остальных пользователей производится по аналогии с подключением администратора.
Разверните Rocket.Chat на серверах Timeweb Cloud
Rocket.Chat идеально подходит в качестве корпоративного мессенджера. Сервис полностью контролируется только вами, включая установку и администрирование. Функционал Rocket.Chat не уступает другим корпоративным мессенджерам, а это значит, что переход на него будет максимально быстрым.