Установка и настройка сервера Rocket.Chat на Rocky

Обновлено и опубликовано Опубликовано:

В данной инструкции мы рассмотрим установку и настройку сервиса Rocket.Chat на своем собственном сервере с Rocky Linux.

Установка компонентов

Выполним установку компонентов, необходимых для работы Rocket.Chat в несколько этапов. Очень важно заранее посмотреть поддерживаемые версии программного обеспечения для устанавливаемой версии Rocket.Chat. Их можно увидеть на соответствующей странице Github.

Например, на момент обновления данной инструкции последняя версия Rocket.Chat была 6.5 и для нее версии компонентов были:

  • Nodejs — 14.21.3.
  • MongoDB — от 4.4 до 6.

В инструкции мы будем выполнять установку MongoDB версии 6. Некоторые команды не будут работать для других версий, так как СУБД претерпела ряд изменений. Если вы собираетесь использовать MongoDB другой версии, сверяйтесь с документацией при возникновении проблем.

Установка необходимых пакетов

Выполняем команду:

dnf install curl tar

* где:

  • curl — служебная программа для взаимодействия с сервисами по различным протоколам с синтаксисом URL. Нам понадобиться для скачивания файлов.
  • tar — приложение для работы с архивами.

Установка Nodejs

Выполняем команды:

curl -sL https://rpm.nodesource.com/setup_14.x | sudo bash -

Скрипт выкинет предупреждение, что 14-я версия nodejs устарела и потребует подождать 20 секунд в качестве подтверждения, что мы осознали данный факт.

После мы получим предупреждение, что метод установки через скрипт устарел. Придется подождать еще 60 секунд. 

dnf install nodejs-14.21.3

* обратите внимание, что мы явно указываем версию, которая требуется для rocket.chat.

Устанавливаем несколько компонентов nodejs:

npm install -g inherits n yarn

Установка MongoDB

Конфигурируем репозиторий для MongoDB:

vi /etc/yum.repos.d/mongodb-org.repo

[mongodb-org-6.0]
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 install mongodb-org

Вносим изменения в конфигурационный файл:

sed -i "s/^#  engine:/  engine: wiredTiger/"  /etc/mongod.conf

sed -i "s/^#replication:/replication:\n  replSetName: rs01/" /etc/mongod.conf

Разрешаем автозапуск mongodb и стартуем его:

systemctl enable mongod

systemctl start mongod

Инициализируем базу данных:

mongosh --eval "printjson(rs.initiate())"

В mongodb версии 4 команда будет:

mongo --eval "printjson(rs.initiate())"

Установка и настройка Rocket.Chat

Рассмотрим установку и настройку в отдельных подразделах.

Установка

Для установки скачиваем пакет:

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

* сохраняем архив в каталог /tmp.

Распаковываем скачанный пакет:

tar -zxf /tmp/rocket.chat.tgz -C /tmp

Переходим в распакованный каталог:

cd /tmp/bundle/programs/server

Выполним установку rocket.chat:

yarn install

... и переносим его в каталог /opt:

mv /tmp/bundle /opt/Rocket.Chat

Настройка

Создаем пользователя для rocketchat:

useradd -r rocketchat

* команда создаст служебного пользователя rocketchat.

Задаем владельца для каталога с rocketchat:

chown -R rocketchat:rocketchat /opt/Rocket.Chat

Создаем файл для нового юнита в systemd:

vi /lib/systemd/system/rocketchat.service

[Unit]
Description=The Rocket.Chat server
After=network.target remote-fs.target nss-lookup.target nginx.target mongod.target

[Service]
ExecStart=/usr/bin/node /opt/Rocket.Chat/main.js
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=rocketchat
User=rocketchat
Environment=MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01 MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01 ROOT_URL=http://localhost:3000/ PORT=3000

[Install]
WantedBy=multi-user.target

* в данном примере сервис будет запущен на порту 3000.

Разрешаем сервис для rocketchat и запускаем сервер для чата:

systemctl enable rocketchat

systemctl start rocketchat

Ждем около 20 секунд — запуск выполняется не сразу.

Пока для брандмауэра открываем порт 3000:

firewall-cmd --permanent --add-port=3000/tcp

... и сохраняем настройки:

firewall-cmd --reload

Можно попробовать проверить статус сервиса:

systemctl status rocketchat

Установка и настройка клиента

Переходим на страницу загрузки Rocket.Chat и скачиваем клиента для нужной операционной системы:

Скачиваем клиента для rocketchat

* клиент может быть установлен на Windows, Mac OS, Linux. В данном примере скачиваем для Windows.

Устанавливаем и запускаем программу — откроется окно для подключения. Вводим IP-адрес и порт нашего сервера:

Подключение к серверу rocketchat

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

При первом входе клиент потребует зарегистрировать учетную запись администратора. Заполняем поля и регистрируемся.

Можно пользоваться.

Создание нового пользователя

Переходим к администрированию сервера. Кликаем по иконки меню (с тремя точками) и выбираем Administration:

Переходим к администрированию rocketchat

Переходим в раздел Users:

Переходим к управлению учетными записями

Кликаем по «плюсику» для создания нового пользователя:

Добавляем нового пользователя

Заполняем поля и кликаем по Save.

Настройка языка

Выбор языка в клиенте

Открываем клиентскую программу - кликаем по значку пользователя - выбираем My Account:

Переходим в настройку My Account

Кликаем по Preferences:

Переходим в Preferences

Выбираем язык и сохраняем настройки:

Выбор языка

Настройка языка по умолчанию

Переходим к администрированию сервера. Кликаем по иконки меню (с тремя точками) и выбираем Administration:

Переходим к администрированию rocketchat

Выбираем пункт меню General:

Переходим в настройки General

Выбираем язык по умолчанию:

Выбираем язык по умолчанию

... и сохраняем настройки.

Настройка SSL (Let's Encrypt)

Настройка подключения по шифрованному каналу выполняется с помощью веб-прокси. Рассмотрим процесс его установки и настройки, а также получение бесплатного сертификата у Let's Encrypt.

Установка NGINX и получение сертификата

В качестве веб-сервера удобнее всего использовать NGINX. Установим его командой:

dnf install nginx

Сразу разрешим автозапуск nginx:

systemctl enable nginx

Если мы не планируем использовать сертификат от Let's Encrypt, то переходим к настройке nginx для Rocket.Chat.

Иначе, создадим конфигурационный файл с настройками для домена:

vi /etc/nginx/conf.d/rocket.dmosk.ru.conf

server {
    listen       80;
    server_name  rocket.dmosk.ru;
    root   /usr/share/nginx/html;
}

* в данном примере мы создали виртуальный домен для rocket.dmosk.ru, который слушает запросы только по http. Это нужно, чтобы получить сертификат.

Перезапускаем nginx:

nginx -t && nginx -s reload

Создаем правила для фаервола:

firewall-cmd --permanent --add-port={80,443}/tcp

firewall-cmd --reload

Устанавливаем certbot:

dnf install epel-release

dnf install certbot

Получаем сертификат командой:

certbot certonly --webroot --agree-tos --email postmaster@dmosk.ru --webroot-path /usr/share/nginx/html/ -d rocket.dmosk.ru

* данной командой мы создаем запрос на получение сертификата для узла rocket.dmosk.ru, который вы должны заменить своим. Подробнее, процесс описан в инструкции Получение бесплатного SSL сертификата Let's Encrypt.

Если все сделано правильно, мы увидим:

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
...

Создаем задание для автоматического обновления сертификата:

crontab -e

И добавляем строку:

0 0 * * 1,4 /usr/bin/certbot renew --noninteractive

Открываем файл:

vi /etc/letsencrypt/cli.ini

И добавляем строку:

...
deploy-hook = systemctl reload nginx

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

Настройка NGINX для Rocket.Chat

Открываем наш конфигурационный файл для nginx:

vi /etc/nginx/conf.d/rocket.dmosk.ru.conf

... и добавляем:

server {
    listen       80;
    listen       443 ssl;
    server_name  rocket.dmosk.ru;

    if ($scheme = 'http') {
        return 301 https://$host$request_uri;
    }

    ssl_certificate     /etc/nginx/ssl/cert.pem;
    ssl_certificate_key /etc/nginx/ssl/cert.key;

    root /usr/share/nginx/html;
    
    client_max_body_size 200M;

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

    location / {
        proxy_pass http://127.0.0.1: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-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forward-Proto http;
        proxy_set_header X-Nginx-Proxy true;

        proxy_redirect off;
    }
}

* в данном примере мы добавляем настройку для прослушивания 443 порта; в качестве сертификата мы используем /etc/letsencrypt/live/rocket.dmosk.ru/fullchain.pem, которые вы должны заменить своими. Все запросы перенаправляются на локальный сервер порт 3000 (Rocket.Chat).

Перезапускаем nginx:

nginx -t && nginx -s reload

Пробуем подключиться к серверу по адресу https:<наш домен>.

# Rocky Linux # Серверы
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет