Rocket.Chat

Обновлено 4 августа 2020

Rocket.Chat

Введение

Rocket.Chat - это мессенджер с открытым исходным кодом, который поддерживает групповые чаты, обмен файлами, видеоконференции, ботов и многое другое.

Подготовка LXC-контейнера

Мы рекомендуем выполнить установку Rocket.Chat в отдельном контейнере, настроив его согласно инструкции.

Установка и настройка MongoDB

Установите пакет MongoDB:

emerge -a dev-db/mongodb

Настройте MongoDB для работы с Rocket.Chat:

/etc/mongodb.conf
storage:
  dbPath: "/var/lib/mongodb"
  engine: mmapv1

replication:
  replSetName: rs01

Запустите MongoDB:

/etc/init.d/mongodb start

Добавьте MongoDB в автозагрузку:

rc-update add mongodb

Выполните инициализацию базы данных:

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

Получение сертификата Let's Encrypt

Получите сертификат домена rocketchat.example.org для Nginx согласно руководству.

Установка и настройка Nginx

Установите и настройте веб-сервер Nginx в качестве обратного прокси согласно руководству. Добавьте следующую настройку для rocketchat.example.org:

/etc/nginx/sites-enabled/rocketchat.conf
server {
    listen 443 ssl;
    server_name rocketchat.example.org;

    include ssl.conf;
    ssl_certificate /etc/nginx/ssl/rocketchat.example.org/fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl/rocketchat.example.org/privkey.pem;
    client_max_body_size 200M;

    location / {
        proxy_pass http://localhost: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-Forwarded-Proto https;
        proxy_set_header X-Nginx-Proxy true;

        proxy_redirect off;
    }
}

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

Установите вспомогательное программное обеспечение:

emerge -a dev-python/nodeenv media-gfx/graphicsmagick

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

useradd -m -d /var/calculate/www/rocketchat -s /bin/bash rocketchat

Установите Node.js в директорию пользователя:

su - rocketchat

nodeenv --node=12.18.0 .node-12

ln -sfT .node-12 .node-live

source .node-live/bin/activate

echo 'source ~/.node-live/bin/activate' >> ~/.bash_profile

Установка сервера

Использование собранного релизного сервера

Скачайте и распакуйте сервер Rocket.Chat:

curl -L https://releases.rocket.chat/latest/download -o Rocket.Chat.tar.gz

tar xf Rocket.Chat.tar.gz

Установите необходимые библиотеки для NodeJS и завершите сеанс пользователя rocketchat:

cd ~/bundle/programs/server

npm install && exit

Сборка сервера из исходного кода

Установите для пользователя web фреймворк Meteor:

curl https://install.meteor.com/ | sh

echo 'PATH="${PATH}:${HOME}/.meteor"' >>.bash_profile

PATH="${PATH}:${HOME}/.meteor"

Скачайте исходный код сервера Rocket.Chat:

git clone https://github.com/RocketChat/Rocket.Chat.git Rocket.Chat.Source

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

cd Rocket.Chat.Source

meteor npm install

meteor build --directory ~

Установите необходимые библиотеки для NodeJS и завершите сеанс пользователя rocketchat:

cd ~/bundle/programs/server

npm install && exit

Запуск Rocket.Chat

Сделайте ранее полученный каталог серевером Rocket.Chat текущим:

mv /var/calculate/www/rocketchat/{bundle,Rocket.Chat}

Создайте сценарий OpenRC для управления демоном Rocket.Chat, указав https://rocketchat.example.org в качестве ROOT_URL:

/etc/init.d/rocketchat
#!/sbin/openrc-run
# Copyright 2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

name="Rocketchat daemon"
description=""
pidfile=/run/rocketchat.pid
command_user=rocketchat
output_log=/var/log/rocketchat.log
error_log=/var/log/rocketchat.log
directory=/var/calculate/www/rocketchat/Rocket.Chat
ROOT_URL="https://rocketchat.example.org"
start_stop_daemon_args="-e ROOT_URL=$ROOT_URL -e MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01 -e PORT=3000 -e MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01 -e PATH=/var/calculate/www/rocketchat/.node-live/lib/node_modules/.bin:/var/calculate/www/rocketchat/.node-live/bin:\"$PATH\""
command="/var/calculate/www/rocketchat/.node-live/bin/node"
command_args="main.js"
command_background=true

depend() {
        need nginx mongodb
}

start_pre() {
    checkpath -f -o rocketchat -m 0600 /var/log/rocketchat.log
}

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

chmod 755 /etc/init.d/rocketchat

Запустите демон Rocket.Chat:

/etc/init.d/rocketchat start

Добавьте Rocket.Chat в автозагрузку:

rc-update add rocketchat

Откройте в браузере сайт https://rocketchat.example.org и выполните заключительную настройку Rocket.Chat.

Обновление Rocket.Chat

Выполните вход в сеанс пользователя rocketchat:

su - rocketchat

Получите каталог bundle Rocket.Chat сервера одиним из способов, описанных выше в главе Установка сервера.

Остановите старый сервер Rocket.Chat:

/etc/init.d/rocketchat stop

Замените старый сервер на новый:

mv /var/calculate/www/rocketchat/Rocket.Chat{,.$(date +%Y%m%d%H%M)}

mv /var/calculate/www/rocketchat/{bundle,Rocket.Chat}

Запустите новый сервер Rocket.Chat:

/etc/init.d/rocketchat start