img

Установка корпоративного чата Rocket.Chat на Linux

Rocket.Chat — это бесплатный масштабируемый open source корпоративный чат, разработанный с помощью Meteor. Rocket.Chat можно считать аналогом Slack, который можно развернуть на своем сервере, и подключаться к нему с клиентов на Linux, Windows, macOS, Android и iOS.

icon strelka icons icons

узнай больше на курсе

Онлайн-курс по Linux
Курс по Linux от Мерион Нетворкс - стань Linux администратором, прокачай свой скиллсет умением работать с операционными системами линукс и сделай большой шаг к DevOps
Укажите вашу электронную почту
Неверный адрес электронной почты
Нажимая на кнопку, вы соглашаетесь на обработку персональных данных
Готово!
Отправили доступы на вашу
электронную почту
Полный курс по сетевым технологиям
Полный курс по сетевым технологиям от Мерион Нетворкс - учим с нуля сетевых инженеров и DevOPS специалистов
Укажите вашу электронную почту
Неверный адрес электронной почты
Нажимая на кнопку, вы соглашаетесь на обработку персональных данных
Готово!
Отправили доступы на вашу
электронную почту
DevOps-инженер с нуля
Стань DevOps-инженером с нуля и научись использовать инструменты и методы DevOps
Укажите вашу электронную почту
Неверный адрес электронной почты
Нажимая на кнопку, вы соглашаетесь на обработку персональных данных
Готово!
Отправили доступы на вашу
электронную почту
Установка корпоративного чата Rocket.Chat на Linux

Функции Rocket.Chat

  • Чат в реальном времени
  • Аудиоконференции
  • Видеоконференции
  • Каналы
  • Гостевой вход
  • Трансляция экрана
  • Передача файлов
  • Полнофункциональный API

Для обеспечения безопасности используется:

  • Групповая синхронизация LDAP
  • Двухфакторная аутентификация 2FA
  • Сквозное шифрование
  • Единый вход SSO
  • Несколько поставщиков Oauth аутентификации

Рассказываем как установить и настроить сервер и клиент Rocket.Chat в Linux.


Шаг 1. Установка Snap в Linux

Для простоты мы будем использовать систему управления пакетами Snaps. Первым делом надо установить пакет snapd c помощью диспетчера пакетов.

$ sudo apt install snapd		#Ubuntu и Debian
$ sudo dnf install snapd		#Fedora 22+/CentOS/RHEL 8
$ sudo yum install snapd		#CentOS/RHEL 7	

Далее необходимо включить модуль systemd, который управляет основным сокетом мгновенной связи. Эта команда запустит сокет и позволит ему запускаться при загрузке системы.

$ sudo systemctl enable --now snapd.socket

Шаг 2: Установка Rocket.Chat в Linux

Для установки rocketchat-server выполните:

$ sudo snap install rocketchat-server

Когда установка через snap будет завершена, rocket.chat сервер начнет работать и прослушивать порт 3000. Далее откройте веб-браузер и введите следующий адрес, чтобы настроить rocket.chat через GUI.

http://SERVER_IP:3000

После загрузки мастера настройки укажите следующие параметры: полное имя администратора, имя пользователя, адрес электронной почты организации и пароль.

Admin Info

Далее надо указать информацию об организации: тип организации, название, отрасль, размер, страна и сайт.

Orgainzation Info

Затем нужно указать информацию о сервере - имя сайта, язык, тип сервера, и включение или отключение двухфакторной аутентификации 2FA.

Server Info

На следующей странице нужно зарегистрировать сервер. Здесь есть две опции. Первая - использовать предварительно настроенные шлюзы и прокси, предоставленные Rocket.Chat Вторая - сохранить автономность и создать учетные записи у поставщиков услуг, обновить предварительно настроенные параметры, а также перекомпилировать мобильные приложения с вашими частными сертификатами.

Register Server

Настройка завершена, и ваше рабочее пространство готово, теперь надо нажать Go to your workspace (Перейти в рабочее пространство)

Go to your workspace

Вот так оно выглядит.

Workspace

Шаг 3: Настройка обратного прокси для Rocket.Chat

Обратный прокси-сервер, например nginx или Apache, позволяет настроить приложение Rocket.Chat для доступа через домен или поддомен. Rocket.Chat является сервером приложений среднего уровня, который не поддерживает SSL/TLS. Обратный прокси-сервер позволит настраивать сертификаты SSL/TLS для включения HTTPS.

Обратный прокси Nginx для Rocket.Chat

Сначала установите Nginx.

$ sudo apt apt install nginx	#Ubuntu/Debian 
$ sudo dnf install nginx		#Fedora 22+/CentOS/RHEL 8
$ sudo yum install nginx		#CentOS/RHEL 7

Далее запустите службу Nginx, включите ее автоматический запуск при загрузке системы и проверьте ее статус

$ sudo systemctl enable --now nginx
$ sudo systemctl status nginx

Затем создайте block файл виртуального сервера для приложения Rocket.Chat, например, в каталоге /etc/nginx/conf.d/.

$ sudo vim /etc/nginx/conf.d/chat.merionet.com.conf

Далее вставьте конфигурацию в этот файл, заменив домен на свой и сохраните.

upstream backend {
    server 127.0.0.1:3000;
}

server {
    listen 80;
    server_name chat.merionet.com;

    # You can increase the limit if you need to.
    client_max_body_size 200M;

    error_log /var/log/nginx/chat.merionet.com.log;

    location / {
        proxy_pass http://backend/;
        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;
    }
}

Наконец проверьте синтаксис и перезапустите службу Nginx.

$ sudo nginx -t
$ sudo systemctl restart nginx

Обратный прокси Apache для Rocket.Chat

Установите пакет Apache2

$ sudo apt install apache2		#Ubuntu/Debian 
$ sudo dnf install httpd		#Fedora 22+/CentOS/RHEL 8
$ sudo yum install httpd		#CentOS/RHEL 7	

Далее запустите и включите службу apache и проверьте, запущена ли она и работает.

----- В Ubuntu/Debian -----
$ sudo systemctl enable --now apache2 	
$ sudo systemctl status apache2

----- В CentsOS/RHEL 7/8 ----- 
$ sudo systemctl enable --now httpd
$ sudo systemctl status httpd

Затем создайте файл виртуального хоста для приложения Rocket.Chat, например, в каталоге /etc/apache2/sites-available/ или /etc/httpd/conf.d/.

----- В Ubuntu/Debian -----
$ sudo vim /etc/apache2/sites-available/chat.merionet.com.conf

----- В CentsOS/RHEL 7/8 ----- 
$ sudo vim /etc/httpd/conf.d/chat.merionet.com.conf	

Далее вставьте конфигурацию в этот файл, заменив домен на свой и сохраните.

<VirtualHost *:80>
    ServerAdmin admin@merionet.ru
    ServerName chat.merionet.com

    LogLevel info
    ErrorLog /var/log/chat.merionet.com_error.log
    TransferLog /var/log/chat.merionet.com_access.log

    <Location />
        Require all granted
    </Location>

    RewriteEngine On
    RewriteCond %{HTTP:Upgrade} =websocket [NC]
    RewriteRule /(.*)           ws://localhost:3000/$1 [P,L]
    RewriteCond %{HTTP:Upgrade} !=websocket [NC]
    RewriteRule /(.*)           http://localhost:3000/$1 [P,L]

    ProxyPassReverse /          http://localhost:3000/
</VirtualHost>	

В Ubuntu и Debian включите необходимые модули apache2 и перезапустите службу.

$ sudo a2enmod proxy_http
$ sudo a2enmod proxy_wstunnel
$ sudo a2enmod rewrite
$ sudo systemctl restart apache2

В CentOS/RHEL и Fedora перезапустите службу apache.

# systemctl restart httpd	

Теперь откройте браузер и введите ваш настроенный адрес и приложение Rocket.Chat станет доступно через ваш домен, настроенный на прокси-сервере.

http://chat.merionet.com
Login

Шаг 4: Установка клиентов Rocket.Chat

Клиентские приложения можно скачать с официального сайта Rocket.Chat. Чтобы установить десктопное приложение в Linux, вы загрузите пакет deb (x64) или rpm (x64) в зависимости от вашего дистрибутива Linux.

$ wget -c https://github.com/RocketChat/Rocket.Chat.Electron/releases/download/2.17.7/rocketchat_2.17.7_amd64.deb

Или

$ wget -c https://github.com/RocketChat/Rocket.Chat.Electron/releases/download/2.17.7/rocketchat-2.17.7.x86_64.rpm	

Затем установите пакет с помощью диспетчера пакетов dpkg или rpm

$ sudo dpkg -i rocketchat_2.17.7_amd64.deb      #Ubuntu/Debian
$ sudo rpm -i rocketchat-2.17.7.x86_64.rpm      #CentOS/RedHat

Ручная установка Rocket.Chat

Если вы не хотите устанавливать Rocket.Chat через Snaps, вы можете сделать это вручную.

Установка Node.js

Сначала обновите список системных пакетов:

sudo apt update

Установите Node.js, npm и все другие зависимости, необходимые для сборки пакетов npm из исходного кода:

sudo apt install nodejs npm build-essential curl software-properties-common graphicsmagick

Мы будем использовать n, пакет npm, который позволяет интерактивно управлять версиями Node.js. Выполните команды ниже, чтобы установить n и Node.js:

sudo npm install -g inherits n
sudo n 8.11.3

Установка MongoDB

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

Импортируйте открытый ключ MongoDB и включите официальный репозиторий MongoDB:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
sudo add-apt-repository 'deb [arch=amd64] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse'

После включения репозитория apt обновите список пакетов и установите MongoDB, набрав:

sudo apt update
sudo apt install mongodb-org	

Затем включите и запустите службу MongoDB:

sudo systemctl start mongod
sudo systemctl enable mongod	

Создание нового системного пользователя

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

sudo useradd -m -U -r -d /opt/rocket rocket

Добавьте пользователя www-data в новую группу пользователей и измените права доступа к каталогу /opt/rocket, чтобы Nginx мог получить доступ к установке Rocket.Chat:

sudo usermod -a -G rocket www-data
sudo chmod 750 /opt/rocket	

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

Переключитесь на пользователя rocket

sudo su - rocket

Загрузите последнюю стабильную версию Rocket.Chat с помощью curl:

curl -L https://releases.rocket.chat/latest/download -o rocket.chat.tgz

После завершения загрузки извлеките архив и переименуйте каталог в Rocket.Chat:

tar zxf rocket.chat.tgz
mv bundle Rocket.Chat

Перейдите в каталог Rocket.Chat/programs/server и установите все необходимые пакеты npm:

cd Rocket.Chat/programs/server
npm install

Чтобы протестировать нашу установку перед созданием модуля systemd и настройкой обратного прокси с Nginx или Apache, мы установим необходимые переменные среды и запустим сервер Rocket.Chat

export PORT=3000
export ROOT_URL=http://0.0.0.0:3000/
export MONGO_URL=mongodb://localhost:27017/rocketchat	

Вернитесь в каталог Rocket.Chat и запустите сервер Rocket.Chat, введя следующие команды:

cd ../../
node main.js

Если ошибок нет, вы должны увидеть следующий вывод:

? +---------------------------------------------+
? |                SERVER RUNNING               |
? +---------------------------------------------+
? |                                             |
? |  Rocket.Chat Version: 0.71.1                |
? |       NodeJS Version: 8.11.3 - x64          |
? |             Platform: linux                 |
? |         Process Port: 3000                  |
? |             Site URL: http://0.0.0.0:3000/  |
? |     ReplicaSet OpLog: Disabled              |
? |          Commit Hash: e73dc78ffd            |
? |        Commit Branch: HEAD                  |
? |                                             |
? +---------------------------------------------+	

Остановите сервер Rocket.Chat с помощью Ctrl+C и вернитесь к своему пользователю sudo, набрав exit.

Создание модуль Systemd

Чтобы запустить Rocket.Chat как службу, нужно создать файл модуля rocketchat.service в каталоге /etc/systemd/system/.

sudo nano /etc/systemd/system/rocketchat.service

Вставьте следующий код:

[Unit]
Description=Rocket.Chat server
After=network.target nss-lookup.target mongod.target

[Service]
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=rocketchat
User=rocket
Environment=MONGO_URL=mongodb://localhost:27017/rocketchat ROOT_URL=https://chat.merionet.com PORT=3000
ExecStart=/usr/local/bin/node /opt/rocket/Rocket.Chat/main.js

[Install]
WantedBy=multi-user.target

Сообщите systemd, что мы создали новый файл модуля, и запустите службу Rocket.Chat, выполнив:

sudo systemctl daemon-reload
sudo systemctl start rocketchat	

Проверьте статус сервиса:

sudo systemctl status rocketchat

Вывод должен быть таким:

* rocketchat.service - Rocket.Chat server
   Loaded: loaded (/etc/systemd/system/rocketchat.service; disabled; vendor preset: enabled)
   Active: active (running) since Wed 2018-11-07 14:36:24 PST; 5s ago
 Main PID: 12693 (node)
    Tasks: 10 (limit: 2319)
   CGroup: /system.slice/rocketchat.service
           `-12693 /usr/local/bin/node /opt/rocket/Rocket.Chat/main.js	

Наконец, включите автоматический запуск службы Rocket.Chat во время загрузки:

sudo systemctl enable rocketchat

Готово, мы установили Rocket.Chat вручную, теперь можно переходить к настройке обратного прокси и инициализации системы, которые были описаны начиная с шага 3.


Итоги

В этом руководстве вы узнали, как установить Rocket.Chat в Linux и как настроить Nginx и Apache в качестве обратного прокси.

Чтобы узнать больше о Rocket.Chat посетите страницу документации.

Ссылка
скопирована
Получите бесплатные уроки на наших курсах
Все курсы
icon strelka icons icons

узнай больше на курсе

Онлайн-курс по Linux
Курс по Linux от Мерион Нетворкс - стань Linux администратором, прокачай свой скиллсет умением работать с операционными системами линукс и сделай большой шаг к DevOps
Подробнее о курсе
Полный курс по сетевым технологиям
Полный курс по сетевым технологиям от Мерион Нетворкс - учим с нуля сетевых инженеров и DevOPS специалистов
Подробнее о курсе
DevOps-инженер с нуля
Стань DevOps-инженером с нуля и научись использовать инструменты и методы DevOps
Подробнее о курсе
Python программист с нуля
Стань разработчиком на одном из самых популярных языков программирования - Python
Подробнее о курсе
Онлайн-курс по кибербезопасности
Полный курс по кибербезопасности от Мерион Нетворкс - учим с нуля специалистов по информационной безопасности. Пора стать безопасником!
Подробнее о курсе
Онлайн-курс по сетевой безопасности
Изучи основы сетевой безопасности и прокачай скилл системного администратора и сетевого инженера
Подробнее о курсе
Еще по теме:
img
Рассказываем, как появился nginx, его отличия от apache, для чего нужен nginx и какие у него преимущества
img
В этом руководстве вы узнаете, как установить и настроить Fail2ban на своем сервере.
img
В этой статье обсудим гипервизоры — важные компоненты процесса виртуализации серверов, как они работают и какие бывают типы.
img
В этой статье мы рассмотрим, как работают различные системные вызовы, разберемся в их функциях, а также постараемся сделать работу вашей системы более безопасной и предсказуемой.
img
Статья объясняет, что такое SWAP-память, как она работает, ее преимущества и недостатки, а также как управлять объемом SWAP-пространства на разных ОС.
Весенние скидки
30%
50%
60%
До конца акции: 30 дней 24 : 59 : 59