⚡ Ќовый онлайн курс по —етевым “ехнологи€м

до запуска осталось

ћерион Ќетворкс

10 минут чтени€

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

”становка корпоративного чата 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 посетите страницу документации.


>