Как установить Rocket.chat с обратным прокси nginx на Ubuntu 20.04

Если вы ищете платформу для чатов с открытым исходным кодом, то Rocketchat может быть лучшим вариантом. Rocketchat можно использовать в качестве альтернативы различным каналам связи, таким как Slack, Mattermost и т.д. Rocketchat имеет различные функции, такие как групповые чаты, видеоконференцсвязь, и вы можете интегрировать чат в реальном времени с другими платформами. В этой статье мы узнаем, как настроить автономную систему Rocketchat с помощью шифрования SSL-сертификатов.

Начальный набор:

  1. Свежий сервер Ubuntu
  2. Доступ с правами root или привилегированная учетная запись sudo
  3. Доменное имя, указанное с IP-адресом сервера
  4. Интернет-соединение для загрузки приложений

Установите необходимые пакеты и зависимости

Перед установкой пакетов обновите систему Ubuntu, используя следующую команду

$ sudo apt-get update -y

После завершения обновления системы настройте apt для установки пакетов MongoDB с помощью следующей команды.

$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com: 80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
$ echo "deb [arch = amd64] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list

Чтобы настроить Node.js для установки с помощью диспетчера пакетов apt , выполните следующую команду.

$ sudo apt-get -y update && sudo apt-get install -y curl && curl -sL 

Теперь установите инструменты сборки Nodejs, MongoDB и graphicsmagick:

$ sudo apt-get install -y build-essential mongodb-org nodejs graphicsmagick

Теперь установим пакеты inherits и n, необходимые для работы Rocketchat:

$ sudo npm install -g inherits n && sudo n 12.18.4

Чтобы проверить установленную версию Nodejs, выполните следующую команду.

$ node --version

Установить Rocketchat

Мы уже установили необходимые зависимости. На этом этапе мы загрузим приложение Rocket Chat и установим его в Ubuntu 20.04.

Загрузите последнюю версию Rocketchat, используя следующую команду.

$ curl -L https://releases.rocket.chat/latest/download -o /tmp/rocket.chat.tgz
tar -xzf /tmp/rocket.chat.tgz -C /tmp

Распакуйте загруженное приложение. Вы можете выбрать предпочтительный каталог для хранения извлеченного файла. В этом примере я извлек файл в каталог /tmp .

$ tar -xvzf /tmp/rocket.chat.tgz -C /tmp

Теперь установите Rocketchat. В этой статье для установки используется каталог / opt . Вы можете предпочесть любой каталог.

$ cd /tmp/bundle/programs/server && npm install
$ sudo mv /tmp/bundle /opt/Rocket.Chat

Настроить сервис Rocket.Chat

Создайте пользователя rocketchat, установите правильное разрешение для каталога приложения Rocket.Chat и создайте сервис Rocket.Chat.

$ sudo useradd -M rocketchat && sudo usermod -L rocketchat
$ sudo chown -R rocketchat:rocketchat /opt/Rocket.Chat

Чтобы создать rocketchat.service, выполните следующую команду на своем терминале

cat << EOF |sudo tee -a /lib/systemd/system/rocketchat.service
[Unit]
Description=The Rocket.Chat server
After=network.target remote-fs.target nss-lookup.target nginx.service mongod.service
[Service]
ExecStart=/usr/local/bin/node /opt/Rocket.Chat/main.js
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=rocketchat
User=rocketchat
Environment=MONGO_URL=mongodb://localhost:27017/rocketchat ROOT_URL=http://localhost:3000/ PORT=3000
[Install]
WantedBy=multi-user.target
EOF

Теперь нам нужно настроить механизм хранения и репликацию MongoDB. После этого включите и запустите mongoDB как:

$ sudo sed -i "s/^# engine:/ engine: mmapv1/" /etc/mongod.conf
$ sudo sed -i "s/^#replication:/replication:n replSetName: rs01/" /etc/mongod.conf
$ sudo systemctl enable mongod && sudo systemctl start mongod
$ mongo --eval "printjson(rs.initiate())"

Теперь запустите и включите службу Rocket.Chat, используя следующую команду:

$ sudo systemctl enable rocketchat && sudo systemctl start rocketchat

Проверьте статус службы Rocket.Chat

$ sudo systemctl status rocketchat

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

Чтобы настроить обратный прокси nginx для Rocket.Chat, установите nginx с помощью следующей команды

$ sudo apt install nginx

Создайте конфигурацию виртуального хоста nginx для rocketchat.

$ sudo nano /etc/nginx/conf.d/rocketchat.conf

Теперь вставьте следующее содержимое и сохраните файл

upstream backend {
server 127.0.0.1:3000;
}

server {
listen 80;

server_name your_rocketchat_domain_name;
access_log /var/log/nginx/rocket.chat.access.log;
error_log /var/log/nginx/rocket.chat.error.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-Forward-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

Перезагрузите и включите службу nginx

$ sudo systemctl restart nginx
$ sudo systemctl enable nginx

Теперь войдите в свой домен rocketchat как

http://your_rocketchat_domain

Вы получите мастер настройки через Интернет, завершите его и начнете использовать Rocket.Chat.

Nginx как обратный SSL-прокси

Мы настроили Rocket.Chat только с обратным HTTP-прокси. Чтобы настроить nginx в качестве обратного прокси-сервера SSL, вам потребуются файлы сертификатов. Отредактируйте файл vhost nginx и вставьте следующее содержимое.

$ sudo nano /etc/nginx/conf.d/rocketchat.conf
upstream backend {
server 127.0.0.1:3000;
}

server {
listen 443 ssl;
Server_name your_rocketchat_domain_name;
client_max_body_size 200M;
access_log /var/log/nginx/rocket.chat.access.log;
error_log /var/log/nginx/rocket.chat.error.log;
ssl_certificate /etc/nginx/certificate.crt;
ssl_certificate_key /etc/nginx/private.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

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-Forwarded-Proto https;
proxy_set_header X-Nginx-Proxy true;
proxy_redirect off;
}

Создайте или приобретите сертификат ssl и укажите каталог файла сертификата в следующем параметре конфигурации.

ssl_certificate /etc/nginx/certificate.crt; [Your certificate file]
ssl_certificate_key /etc/nginx/private.key; [Your Private Key file]

Проверьте файл конфигурации nginx

sudo nginx -t

Перезапустить службу nginx

sudo systemctl restart nginx

Доступ к Rocketchat

После настройки обратного прокси-сервера вы можете получить доступ к своему Rocket.Chat, используя URL-адрес:

https://you_rocket_chat_domain

Откроется мастер настройки Rocket.Chat. Завершите настройку и начните использовать свой собственный Rocket.Chat.

Добавить комментарий