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

    Общий рейтинг статьи: 5 (проголосовало 1 )
    Опубликовано:  [просмотров 926]


    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-контейнера, но иногда именно такой подход с полным контролем всех элементов системы и требуется.


    Обсуждение статьи

    Ваш комментарий: