如何在 Ubuntu 20.04 上使用 nginx 反向代理安装 Rocket.chat
如果您正在寻找开源自托管聊天平台,那么 Rocketchat 可能是最佳选择。 Rocket chat 可以作为不同沟通渠道的替代品,例如 slack、mattermost 等。Rocket chat 具有不同的功能,例如群聊、视频会议,并且您可以将实时聊天与其他平台集成。在本文中,我们将学习如何使用 Let's 加密 SSL 证书来设置自托管 Rocketchat 系统。
先决条件
- 新鲜的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
安装 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安装和反向代理配置
要为 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 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 反向代理
我们仅使用 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 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
配置反向代理后,您可以使用以下 URL 访问 Rocket.Chat:
https://you_rocket_chat_domain
您将获得 Rocket.Chat 网页设置向导。完成设置并开始使用您的自托管 Rocket.Chat。
结论
在本文中,我们学习了如何在 Ubuntu 20.04 上安装和配置自托管 Rocket 聊天。另外,我还介绍了如何安装和配置 nginx 以使用 Let's Encrypt SSL 证书进行反向代理。