Как установить Rocket.chat с обратным прокси-сервером nginx в Ubuntu 20.04
Если вы ищете автономную чат-платформу с открытым исходным кодом, то Rocketchat может быть лучшим вариантом. Чат Rocket можно использовать в качестве альтернативы различным каналам связи, таким как Slack, Mattermost и т. д. Чат Rocket имеет различные функции, такие как групповые чаты, видеоконференции, и вы можете интегрировать онлайн-чат с другими платформами. В этой статье мы узнаем, как настроить автономную систему Rocketchat с возможностью шифрования SSL-сертификатов.
Предварительные условия
- Свежий сервер Ubuntu
- Root-доступ или учетная запись с привилегиями sudo
- Доменное имя, указанное с IP-адресом сервера.
- Подключение к Интернету для загрузки приложений
Установите необходимые пакеты и зависимости
Перед установкой пакетов обновите систему 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 https://deb.nodesource.com/setup_12.x | sudo bash -
Выход :
Теперь установите инструменты сборки Nodejs, MongoDB и Graphicsmagick:
sudo apt-get install -y build-essential mongodb-org nodejs graphicsmagick
Выход :
Теперь установите наследники и n, а также версию узла, необходимую для Rocketchat.
sudo npm install -g inherits n && sudo n 12.18.4
Чтобы проверить установленную версию Nodejs, выполните следующую команду.
node --version
Выход :
v12.18.4
Установить Рокетчат
Мы уже установили необходимые зависимости. Теперь на этом этапе мы загрузим приложение 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://ваш_rocketchat_домен
Вы получите мастер веб-настройки, завершите его и начнете использовать 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.
Заключение
В этой статье мы узнали, как установить и настроить автономный чат Rocket в Ubuntu 20.04. Кроме того, я рассказал, как установить и настроить nginx для обратного прокси-сервера с возможностью шифрования SSL-сертификатов.