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

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

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

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

Выполним установку компонентов, необходимых для работы Rocket.Chat в несколько этапов.

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

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

curl -sL https://deb.nodesource.com/setup_12.x | sudo bash –

apt-get install curl build-essential graphicsmagick nodejs

* где:

  • curl — служебная программа для взаимодействия с сервисами по различным протоколам с синтаксисом URL. Нам понадобиться для скачивания файлов.
  • build-essential — пакет, необходимый для сборки других пакетов.
  • graphicsmagick — набор программ для чтения и редактирования файлов различных графических форматов.
  • nodejs — программная платформа, которая делает код javascript в язык общего назначения.

Устанавливаем inherits и node версии 12.14.0:

npm install -g inherits n && sudo n 12.14.0

Установка MongoDB

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

vi /etc/apt/sources.list.d/mongodb-org.list

deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse

Импортируем ключ из репозитория для проверки пакетов от подделки:

apt-key adv –keyserver hkp://keyserver.ubuntu.com:80 –recv 9DA31620334BD75D9DCB49F368818C72E52529D4

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

apt-get update

И устанавливаем mongodb-org:

apt-get install mongodb-org

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

sed -i “s/^#  engine:/  engine: mmapv1/”  /etc/mongod.conf

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

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

systemctl enable mongod

systemctl start mongod

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

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:

npm install

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

mv /tmp/bundle /opt/Rocket.Chat

Настройка

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

useradd -M rocketchat

usermod -L 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/local/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.

Применяем изменения в systemd:

systemctl daemon-reload

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

systemctl enable rocketchat

systemctl start rocketchat

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

Если используется брандмауэр, открываем порт:

iptables -A INPUT -p tcp –dport 3000 -j ACCEPT

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

apt-get install iptables-persistent

netfilter-persistent save

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

Переходим на страницу загрузки 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. Установим его командой:

apt-get install nginx

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

systemctl enable nginx

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

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

vi /etc/nginx/sites-enabled/rocket.admins24.com.conf

server {
    listen       80;
    server_name  rocket.admins24.com;
    root   /usr/share/nginx/html;
}

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

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

systemctl restart nginx

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

iptables -A INPUT -p tcp –dport 80 -j ACCEPT

iptables -A INPUT -p tcp –dport 443 -j ACCEPT

netfilter-persistent save

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

apt-get install certbot

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

certbot certonly –webroot –agree-tos –email [email protected] –webroot-path /usr/share/nginx/html/ -d rocket.admins24.com

* данной командой мы создаем запрос на получение сертификата для узла rocket.admins24.com, который вы должны заменить своим. Подробнее, процесс описан в инструкции Получение бесплатного 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 && systemctl reload nginx

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

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

vi /etc/nginx/sites-enabled/rocket.admins24.com.conf

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

server {
    listen 443;
    server_name rocket.admins24.com;

    client_max_body_size 200M;

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

    ssl on;
    ssl_certificate /etc/letsencrypt/live/rocket.admins24.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/rocket.admins24.com/privkey.pem;
    ssl_protocols TLSv1.2;

    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.admins24.com/fullchain.pem, которые вы должны заменить своими. Все запросы перенаправляются на локальный сервер порт 3000 (Rocket.Chat).

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

systemctl restart nginx

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

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

Rocket.Chat поддерживает установку через пакеты snap. Ставим сам snap:

apt-get install snapd

Устанавливаем rocketchat-server:

snap install rocketchat-server

Сервер установлен и запрещен, статус можно посмотреть командой:

systemctl status snap.rocketchat-server.rocketchat-server

В каталог с установленным сервером можно перейти командой:

cd /snap/rocketchat-server/current