В данной инструкции мы рассмотрим установку и настройку сервиса Rocket.Chat на своем собственном сервере с Ubuntu.
Необходимые для Rocket.Chat компоненты
Установка пакетов
Установка Nodejs
Установка MongoDB
Rocket.Chat
Установка
Настройка
Клиент для подключения к серверу
Создание пользователя
Настройка языка
Настройка для пользователя
Настройка языка по умолчанию
Настройка SSL
Обновление на новую версию
Установка как snap пакета
Выполним установку компонентов, необходимых для работы Rocket.Chat в несколько этапов. Очень важно заранее посмотреть поддерживаемые версии программного обеспечения для устанавливаемой версии Rocket.Chat. Их можно увидеть на соответствующей странице Github.
Например, на момент обновления данной инструкции последняя версия Rocket.Chat была 7.2 и для нее версии компонентов были:
В нашей инструкции мы будем выполнять установку MongoDB версии 7. Некоторые команды не будут работать для других версий, так как СУБД претерпела ряд изменений. Если вы собираетесь использовать MongoDB другой версии, сверяйтесь с документацией при возникновении проблем.
Выполняем команды:
apt update
apt install curl build-essential graphicsmagick
* где:
Выполняем команды по настройке репозитория:
export NODE_VER=20
curl -sL https://deb.nodesource.com/setup_${NODE_VER}.x | sudo bash —
* в данном примере мы будем устанавливать Nodejs требуемой версии.
После можно устанавливать nodejs:
apt install nodejs
Устанавливаем inherits:
npm install -g inherits n
Конфигурируем репозиторий для MongoDB. Для удобства нашей работы создаем переменную с указанием устанавливаемой версии:
MONGO_VER=7.0
С помощью этой переменной создаем файл репозитория MongoDB:
echo «deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/${MONGO_VER} multiverse» > /etc/apt/sources.list.d/mongodb-${MONGO_VER}-org.list
Импортируем ключ репозитория для проверки пакетов от подделки:
curl -fsSL https://pgp.mongodb.com/server-${MONGO_VER}.asc | gpg —dearmor -o /etc/apt/trusted.gpg.d/mongodb-${MONGO_VER}-org.gpg
Обновляем список пакетов:
apt update
И устанавливаем mongodb-org:
apt install mongodb-org
Если мы получим ошибку зависимости от пакета libssl1.1 (=1.1.1), то необходимо вручную его загрузить и установить. Выполняем:
curl -sO http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2.23_amd64.deb
apt install ./libssl1.1_1.1.1f-1ubuntu*_amd64.deb
Вносим изменения в конфигурационный файл:
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())»
Мы должны увидеть что-то на подобие:
{
info2: ‘no configuration specified. Using a default configuration for set’,
me: ‘127.0.0.1:27017’,
ok: 1
}
Для установки скачиваем пакет:
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]
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
ExecStart=/usr/bin/node /opt/Rocket.Chat/main.js
User=rocketchat
WorkingDirectory=/opt/Rocket.Chat
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=rocketchat
[Install]
WantedBy=multi-user.target
* в данном примере сервис будет запущен на порту 3000.
Применяем изменения в systemd:
systemctl daemon-reload
Разрешаем сервис для rocketchat и запускаем сервер для чата:
systemctl enable rocketchat
systemctl start rocketchat
Ждем около 20 секунд — запуск выполняется не сразу.
Если используется брандмауэр, открываем порт:
iptables -I INPUT -p tcp —dport 3000 -j ACCEPT
… и сохраняем настройки:
apt install iptables-persistent
netfilter-persistent save
Переходим на страницу загрузки Rocket.Chat и скачиваем клиента для нужной операционной системы:
* клиент может быть установлен на Windows, Mac OS, Linux. В данном примере скачиваем для Windows.
Устанавливаем и запускаем программу — откроется окно для подключения. Вводим IP-адрес и порт нашего сервера:
… система проверит подключение к серверу и предложит подключиться к серверу.
При первом входе клиент потребует зарегистрировать учетную запись администратора. Заполняем поля и регистрируемся.
Можно пользоваться.
Переходим к администрированию сервера. Кликаем по иконки меню (с тремя точками) и выбираем Administration :
Переходим в раздел Users:
Кликаем по «плюсику» для создания нового пользователя:
Заполняем поля и кликаем по Save .
Открываем клиентскую программу — кликаем по значку пользователя — выбираем My Account :
Кликаем по Preferences :
Выбираем язык и сохраняем настройки:
Переходим к администрированию сервера. Кликаем по иконки меню (с тремя точками) и выбираем Administration :
Выбираем пункт меню General :
Выбираем язык по умолчанию:
… и сохраняем настройки.
Настройка подключения по шифрованному каналу выполняется с помощью веб-прокси. Рассмотрим процесс его установки и настройки, а также получение бесплатного сертификата у Let’s Encrypt.
В качестве веб-сервера удобнее всего использовать NGINX. Установим его командой:
apt install nginx
Если мы не планируем использовать сертификат от Let’s Encrypt, то переходим к настройке nginx для Rocket.Chat.
Игаче, создадим конфигурационный файл с настройками для домена:
vi /etc/nginx/sites-enabled/rocket.remontka.com.conf
server {
listen 80;
server_name rocket.remontka.com;
root /usr/share/nginx/html;
}
* в данном примере мы создали виртуальный домен для rocket.remontka.com , который слушает запросы только по http. Это нужно, чтобы получить сертификат.
Перезапускаем nginx:
nginx -t && nginx -s reload
Если мы используем брандмауэр, создаем правила:
iptables -I INPUT -p tcp —dport 80 -j ACCEPT
iptables -I INPUT -p tcp —dport 443 -j ACCEPT
netfilter-persistent save
Устанавливаем certbot:
apt install certbot
Получаем сертификат командой:
certbot certonly —webroot —agree-tos —email postmaster@remontka.com —webroot-path /usr/share/nginx/html/ -d rocket.remontka.com
* данной командой мы создаем запрос на получение сертификата для узла rocket.remontka.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 —noninteractive
И последнее, создаем хук для автоматического перезапуска nginx в случае обновления сертификата:
vi /etc/letsencrypt/cli.ini
deploy-hook = systemctl reload nginx
* добавляем строку с директивой deploy-hook .
Открываем наш конфигурационный файл для nginx:
vi /etc/nginx/sites-enabled/rocket.remontka.com.conf
… и добавляем:
…
server {
listen 443 ssl;
server_name rocket.remontka.com;
client_max_body_size 200M;
error_log /var/log/nginx/rocketchat.access.log;
ssl_certificate /etc/letsencrypt/live/rocket.remontka.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/rocket.remontka.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.remontka.com/fullchain.pem , которые вы должны заменить своими. Все запросы перенаправляются на локальный сервер порт 3000 (Rocket.Chat).
Перезапускаем nginx:
nginx -t && nginx -s reload
Теперь нам нужно отредактировать юнит systemd:
vi /lib/systemd/system/rocketchat.service
Ранее для переменной среды MONGO_OPLOG_URL мы задавали значение опции ROOT_URL равное http://localhost:3000/ . Теперь его нужно поменять полностью — схему http, доменное имя и без указания порта. В итоге будет что-то на подобие:
…
Environment=MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01 MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01 ROOT_URL=https://rocket.remontka.com/ PORT=3000
…
* в моем случае заменена часть, подсвеченная желтым.
Перечитываем конфигурацию systemd и перезапускаем сервис:
systemctl daemon-reload
systemctl restart rocketchat
Пробуем подключиться к серверу по адресу https:<наш домен> .
Останавливаем сервис rocketchat:
systemctl stop rocketchat
Сделаем резервную копию базы mongo. Для этого создаем каталог:
mkdir -p /backup/mongo
Выполняем команду дампа базы rocketchat в монго:
mongodump —db rocketchat —out /backup/mongo/`date +»%m-%d-%y»`
* если вы создавали базу с другим именем, убедитесь, что создаете дамп с нужным названием базы.
Переименуем старый каталог с приложением Rocket.Chat:
mv /opt/Rocket.Chat /opt/old.Rocket.Chat
Скачаем последнюю версию портала:
curl -L https://releases.rocket.chat/latest/download -o /tmp/rocket.chat.tgz
Распакуем загруженный архив:
tar -zxf /tmp/rocket.chat.tgz -C /tmp
Перейдем в распакованный каталог, папку сервера:
cd /tmp/bundle/programs/server
Устанавливаем зависимости для nodejs:
npm install
Выходим из каталога:
cd ~
Переносим каталог с подготовленным приложением в папку /opt:
mv /tmp/bundle /opt/Rocket.Chat
Задаем правильного владельца:
chown -R rocketchat:rocketchat /opt/Rocket.Chat
Запускаем сервис:
systemctl start rocketchat
Rocket.Chat обновлен.
Rocket.Chat поддерживает установку через пакеты snap. Ставим сам snap:
apt install snapd
Устанавливаем rocketchat-server:
snap install rocketchat-server
Сервер установлен и запрещен, статус можно посмотреть командой:
systemctl status snap.rocketchat-server.rocketchat-server
В каталог с установленным сервером можно перейти командой:
cd /snap/rocketchat-server/current
Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…
Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…
Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…
Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…
YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…
Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…