如何在 Ubuntu 20.04 上使用 nginx 反向代理安裝 Rocket.chat


如果您正在尋找一個開源、自託管的聊天平台,Rocketchat 就是您的最佳選擇。 Rocket Chat 可以替代 slack、mattermost 等各種溝通渠道。 Rocket Chat 具有群聊、視頻會議等多種功能,並允許您將實時聊天與其他平台集成。在本文中,學習如何使用 Let’s Encrypt SSL 證書設置自託管 Rocketchat 系統。

先決條件

  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 以供使用 簡單的 包管理器將運行以下命令:

$ 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

安裝 npm

要檢查安裝的 Nodejs 版本,請運行以下命令:

$ node --version

輸出:

v12.18.4

安裝火箭聊天

我安裝了所需的依賴項。在這一步中,我們將在 Ubuntu 20.04 上下載並安裝 Rocket Chat 應用程序。

使用以下命令下載最新版本的 Rocketchat。

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

輸出:

下載 Rocket.chat

解壓縮下載的應用程序。您可以選擇一個目錄來保存提取的文件。在此示例中,我提取了文件 /tmp 目錄。

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

立即安裝 Rocketchat。在文中 /選擇 安裝目錄。可以首選任何目錄。

$ cd /tmp/bundle/programs/server && npm install

輸出:

解壓縮存檔並使用 npm 包管理器安裝 Rocket Chat。

$ 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=https://localhost:3000/ PORT=3000
[Install]
WantedBy=multi-user.target
EOF

例子:

Rocket.chat 系統文件

接下來,我們需要設置 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())"

輸出:

配置 mongo.db

使用以下命令啟動並啟用 Rocket.Chat 服務:

$ sudo systemctl enable rocketchat && sudo systemctl start rocketchat

請檢查 Rocket.Chat 服務的狀態。”

$ sudo systemctl status rocketchat

輸出:

systemctl 狀態火箭聊天

安裝 Nginx 並配置反向代理

要為 Rocket.Chat 配置 nginx 反向代理,請使用以下命令安裝 nginx。

$ sudo apt install nginx

為 Rocketchat 創建一個 nginx 虛擬主機配置。

$ 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 https://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

重啟nginx服務生效

$ sudo systemctl restart nginx
$ sudo systemctl enable nginx

立即訪問火箭聊天域

https://your_rocketchat_domain

將出現一個網絡設置嚮導,完成它以開始使用 Rocket.Chat。

Nginx 作為 SSL 反向代理

我只使用 HTTP 反向代理配置了 Rocket.Chat。 將 nginx 配置為 SSL 反向代理需要證書文件。 編輯您的 nginx vhost 文件並粘貼以下內容:

$ 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 https://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

去火箭聊天

配置反向代理後,您可以使用以下 URL 訪問 Rocket.Chat:

https://you_rocket_chat_domain

Rocket.Chat 網絡設置嚮導出現。完成設置並開始使用自託管 Rocket.Chat。

結論是

在本文中,您學習瞭如何在 Ubuntu 20.04 上安裝和配置自託管 Rocket Chat。我們還向您展示瞭如何使用 Let’s Encrypt SSL 證書安裝和配置帶有反向代理的 nginx。