Rocket.Chat 是一个开源团队交流平台,是自托管的 Slack 替代品。它使用 Meteor 框架开发,提供各种功能,包括帮助台聊天、文件共享、视频会议、语音消息、API 等。
对于想要托管自己的聊天系统的公司和社区来说,Rocket.Chat 是一个完美的解决方案。
在本教程中,我们将向您展示如何在 Ubuntu 18.04 服务器上部署 Rocket.Chat 并将 Nginx 配置为 SSL 反向代理。
先决条件#
在继续本教程之前,请确保您具备以下先决条件。
- Ubuntu 18.04 服务器。根据 Rocket.Chat 官方系统要求,您至少需要 1G RAM。
- 指向您的服务器 IP 地址的域名。我们将使用
chat.example.com
.
- 安装了 Nginx,按照本教程进行操作
.
- 您已为您的域安装了 SSL 证书。您可以通过以下方式生成免费的 Let’s Encrypt SSL 证书本教程
.
安装 Node.js#
首先更新您的系统软件包列表:
sudo apt update
安装 Node.js、npm以及从源代码构建 npm 包所需的所有其他依赖项:
sudo apt install nodejs npm build-essential curl software-properties-common graphicsmagick
在撰写本文时,Rocket.Chat 推荐的 Node.js 版本是 Node.js v8.11.3。
我们将使用n
,一个 npm 包,它允许我们交互式地管理 Node.js 版本。
发出以下命令进行安装n
以及推荐的 Node.js 版本:
sudo npm install -g inherits n
sudo n 8.11.3
安装 MongoDB#
MongoDB 是一个面向 NoSQL 文档的数据库,Rocket.Chat 使用它作为数据存储。
We will 安装MongoDB来自官方 MongoDB 存储库。
使用以下命令导入 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
Add the 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
.
下载 Rocket.Chat 的最新稳定版本curl
:
curl -L https://releases.rocket.chat/latest/download -o rocket.chat.tgz
下载完成后提取存档
and 重命名目录
to 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 进行反向代理我们将设置所需的环境变量并启动 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
粘贴以下内容:
/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.example.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
使用 Nginx 设置反向代理#
如果您关注我们的如何在 Ubuntu 18.04 上安装 Nginx
and 如何在 Ubuntu 18.04 上使用 Let’s Encrypt 保护 Nginx指南中您应该已经安装了 Nginx 并配置了 SSL 证书。
现在我们需要创建一个新的Nginx 服务器块用于 Rocket.Chat 安装。
打开你的文本编辑器并创建以下文件:
sudo nano /etc/nginx/sites-available/chat.example.com.conf
/etc/nginx/sites-available/chat.example.com.conf
upstream rocketchat_backend {
server 127.0.0.1:3000;
}
server {
listen 80;
server_name chat.example.com;
include snippets/letsencrypt.conf;
return 301 https://chat.example.com$request_uri;
}
server {
listen 443 ssl http2;
server_name chat.example.com;
ssl_certificate /etc/letsencrypt/live/chat.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/chat.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/chat.example.com/chain.pem;
include snippets/ssl.conf;
access_log /var/log/nginx/chat.example.com-access.log;
error_log /var/log/nginx/chat.example.com-error.log;
location / {
proxy_pass http://rocketchat_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;
}
}
通过创建从文件到启用站点的目录的符号链接来启用新的服务器块:
sudo ln -s /etc/nginx/sites-available/chat.example.com.conf /etc/nginx/sites-enabled/
重新加载Nginx服务使更改生效:
sudo systemctl reload nginx
配置 Rocket.Chat#
打开浏览器并输入:http://chat.example.com
.
假设安装成功,您将看到 Rocket.Chat 设置向导,它将指导您设置第一个管理员用户、配置您的组织并注册您的服务器以接收免费推送通知等。
初始设置向导的第一部分将要求您设置管理员用户:
输入管理信息后,单击Continue
按钮,然后在下一步中输入您的组织信息:
初始设置向导的第三部分将提示您输入服务器信息:
在下一步中,系统将询问您是否要使用 Rocket.Chat 的预配置网关和代理。
选择此选项将使您能够访问 Rocket.Chat Apps 市场,并且推送通知等其他功能将开箱即用。
做出您的选择,点击Continue
按钮,您将被重定向到以下页面,表明您的工作区已准备好使用:
单击Go to your workspace
按钮,您将被重定向到以管理员用户身份登录的 Rocket.Chat 仪表板。
结论#
在本教程中,您学习了如何在 Ubuntu 18.04 上安装 Rocket.Chat 以及如何将 Nginx 设置为反向代理。
您现在应该访问Rocket.Chat 文档页面并了解有关新聊天系统的更多信息。
如果您在安装时遇到任何问题,请随时发表评论。