RocketChat - Установка и настройка из репозитария (не docker)

HELP-ME-24.COM (Freelance Team), Черноусов Антон

Rocket.Chat - это Open Source аналог сервиса Slack, заявленного как корпоративный мессенджер. Rocket.Chat достаточно просто устанавливается как Docker-образ, но это не всегда удобно и не все клиенты готовы использовать Docker-технологии.

Rocket.Chat устанавливается не только при помощи Docker

Большинство статей в интернете как раз и рассматривают вопросы установки именно из Docker-образа, а информации о том как установить и запустить Rocket.chat используя репозитории проекта и штатные пакеты операционной системы Ubuntu Linux практические нет.

Установка Rocket.Chat

Поэтому, мы систематизировали имеющиеся инструкции и подготовили собственную пошаговую инструкцию по установке Rocket.Chat и сопутствующих компонентов.

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

Установка MongoDB потребует подключения дополнительного репозитария, для чего выполните следующие команды:

# sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
# echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
# apt-get update
# apt-get install -y mongodb-org

Обратите внимание, что в отличие от Mysql и Postgresql сервис автоматически не запускается. Юнит файл SystemD находится в файле /lib/systemd/system/mongod.service и автоматически не запускается.  Произведем запуск вручную при помощи команды:

# service mongod start

И на будущее добавим демона в автозапуск командой:

# systemctl enable mongod

Проверим, что сервис раоботет, в процессах системы должен присутствовать процесс mondod:

# ps ax | grep mongod
 152 ?        Ssl    0:00 /usr/bin/mongod --quiet --config /etc/mongod.conf

В связи с многочисленными взломами MongoDB без авторизаций, мы запрещаем анонимный доступ к MongoDB, создадим базу и назначим логин и пароль, для этого подключаемся к консоле управления базой данных и создаем пользователя (администратора):

# mongo
> use admin
> db.createUser({user:"saadmin", pwd:"xxxXXXxxx", roles:[{role:"root",db:"admin"}]})

Для смены пароля используется команда:

db.updateUser("saadmin", { pwd: "xxxXXXxxx"})

Для запрета анонимного доступа добавляем в файл /etc/mongod.conf параметр:

security:
  authorization: enabled

Базу данных для применения параметров потребуется перезапустить при помощи команды:

# service mongod restart

Повторно подключаемся к MongoDB с использованием авторизации:

mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"

Теперь при подключении анонимным пользвателем, на любые операции мы будем получать ошибку:

Error: Updating user failed: not authorized on admin to execute command

Так как даже с включенной авторизацией анонимный доступ возможен, то рекомендую запретить доступ к базе из недовеенных сетей, оставив доступ только с локального хоста и из VPN-сетей:

# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1

Установка Rocket.Chat.

Для работы Rocket.Chat потребуется несколько дополнительных пакетов, как и в предыдущих случаях, мы установим их при помощи команды apt-get install:

# apt-get install npm curl graphicsmagick

Скачиваем текущую версию с официального сайта и распаковываем:

# curl -L http://rocket.chat/releases/latest/download/ -o rocket.chat.tgz
# tar zxvf rocket.chat.tgz
# mv bundle Rocket.Chat

Для работы Rocket.Chat потребуется установка Node.js строго определенной версии. Узнасть требуемую версию можно в файле .node_version.txt в корне текущего дистрибутива.

Можно использовать команду:

# cat ./Rocket.Chat/.node_version.txt

Устанавливаем Node.js требуемой версии.

# npm install -g n
# cd Rocket.Chat/programs/server
# n 4.6.2
# npm install
# cd ../..

Создаем базу данных и назначаем права доступа:

# mongo
> use rocket-chat
> db.test.insert({"test":"test"})
> db.delete.insert({"test":"test"})
> db.createUser({user:"saadmin", pwd:"xxxPasswordxxx", roles:[{role:"root",db:"admin"}]})

Проверяем подключение:

# mongo --port 27017 -u "saadmin" -p "xxxPasswordxxx" --authenticationDatabase "rocket-chat"

Назначаем переменные окружения и проводим тестовый запуск:

# export ROOT_URL=https://10.4.0.24:3000/
# export MONGO_URL=mongodb://saadmin:xxxPasswordxxx@localhost/rocket-chat
# export PORT=3000
# node main.js

Если запуск прошел успешно, то вы получите сообщение:

Using GridFS for Avatar storage
➔ System ➔ startup
➔ +-----------------------------------------+
➔ |              SERVER RUNNING             |
➔ +-----------------------------------------+
➔ |                                         |
➔ |       Version: 0.49.4                   |
➔ |  Process Port: 3000                     |
➔ |      Site URL: https://10.4.0.24:3000/  |
➔ |         OpLog: Disabled                 |
➔ |                                         |
➔ +-----------------------------------------+

Перйдите в web-интерфейс и зарегистрируйте пользователя. Обратите внимание, что первый созданный пользователь будет администратором системы.

Настраиваем автозапуск Rocket.Chat при старте сервера.

# mv ~/Rocket.Chat/ /opt/
# cd /opt/Rocket.Chat/
# npm install -g forever
# npm install -g forever-service
# forever-service install -s main.js -e \
"ROOT_URL=https://10.4.0.24:3000/ MONGO_URL=mongodb://saadmin:xxxPasswordxxx@localhost/rocket-chat PORT=3000" rocketchat

Настраиваем автозапуск службы:

# systemctl enable rocketchat

После перезапуска сервера Rocket.Chat будет запущен автоматически.

Данная инструкция выглядит гораздо сложнее чем запуск Docker-контейнера, но иногда именно такой подход с полным контролем всех элементов системы и требуется.

Оставьте комментарий

Вы должны быть вошедший в чтобы отправить комментарий