如何在Ubuntu 18.04上部署Rocket.Chat
Rocket.Chat是一个开源团队交流平台,是一个自托管的Slack替代方案。它使用Meteor框架开发,并提供各种功能,包括服务台聊天,文件共享,视频会议,语音消息,API等。 Rocket.Chat是想要托管自己的聊天系统的公司和社区的理想解决方案。 在本教程中,我们将向您展示如何在Ubuntu 18.04服务器上部署Rocket.Chat以及如何将Nginx配置为SSL反向代理。
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用作数据存储。
我们将从官方的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
将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
的身份运行。
使用 curl 下载Rocket.Chat的最新稳定版本。
curl -L https://releases.rocket.chat/latest/download -o rocket.chat.tgz
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服务器
切换回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
用CTRL+C
停止Rocket.Chat服务器。
输入exit
切换回您的sudo用户,然后继续执行下一步。
创建一个systemd服务
要运行Rocket.Chat作为服务,我们将在/etc/systemd/system/
目录中创建一个rocketchat.service
Unit文件。
sudo nano /etc/systemd/system/rocketchat.service
粘贴以下内容:
/etc/systemd/system/rocketchat.service
[Unit]
Description=Rocket.Chat
serverAfter=network.target nss-lookup.target mongod.target
[Service]
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=rocket
chatUser=rocket
Environment=MONGO_URL=mongodb://localhost:27017/rocketchat ROOT_URL=https://chat.example.com PORT=3000ExecStart=/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 和如何使用Ubuntu 18.04上的“让我们加密”来保护Nginx 指南,则您应该已经安装了Nginx并使用SSL证书进行了配置。
现在,我们需要为Rocket.Chat安装创建一个新的 Nginx服务器块。
打开您的文本编辑器,然后创建以下文件:
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
按钮,您将被重定向到以admin用户身份登录的Rocket.Chat仪表板。
结论
在本教程中,您学习了如何在Ubuntu 18.04上安装Rocket.Chat以及如何将Nginx设置为反向代理。
您现在应该访问 Rocket.Chat文档页面,并详细了解新的聊天系统。
如果您在安装过程中遇到任何问题,请随时发表评论。