介绍
Rocket.Chat 是一个使用 Meteor 构建的开源消息应用程序。 它支持视频会议、文件共享、语音消息,具有功能齐全的 API 等等。 Rocket.Chat 非常适合那些喜欢完全控制他们的通信的人。
在本教程中,我们将在新的 Ubuntu 服务器上安装和配置 Rocket.Chat,并通过 Nginx 设置反向代理以提高安全性并使访问 Rocket.Chat 变得更加容易。 完成后,您将拥有一个可以从几乎任何地方访问的 Rocket.Chat 的功能实例。
先决条件
要遵循本教程,您将需要:
- 一台 Ubuntu 14.04 服务器,建议至少 1 GB RAM
- 具有 sudo 权限的非 root 用户(Initial Server Setup with Ubuntu 14.04 解释了如何设置。)
- 一个完全注册的域。 您可以在 Namecheap 上购买一个或在 Freenom 上免费获得一个。
- 确保您的域名配置为指向您的服务器。 如果您需要帮助,请查看 本教程 。
- SSL 证书。 Generate a self-signed certificate, [obtain a free one from Let’s Encrypt] (how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-14-04), or buy one from another provider.
第 1 步 — 安装依赖项
在本节中,我们将安装 Rocket.Chat 的一些依赖项,例如 MongoDB 和 NodeJS。
让我们从启动和运行 MongoDB 开始。 首先,我们需要添加一个密钥服务器,以便我们可以访问这些包。
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
然后我们需要设置要使用的 repo。
echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list
现在,更新软件包列表。
sudo apt-get update
现在已经完成了,我们可以继续安装 npm
、mongodb-org
、curl
和 graphicsmagick
,它们都是 Rocket.Chat 的依赖项:
sudo apt-get install npm mongodb-org curl graphicsmagick
我们需要使用 NPM 安装一个包以允许我们更改节点版本:
sudo npm install -g n
使用该软件包将节点版本更改为 0.10.40
。
sudo n 0.10.40
接下来,我们将安装 Rocket.Chat 本身并进行一些配置。
第 2 步 — 安装 Rocket.Chat
首先,使用 curl
下载 Rocket.Chat 的最新稳定版本。
curl -L https://rocket.chat/releases/latest/download -o rocket.chat.tgz
使用 tar
命令展开我们刚刚下载的存档。
tar zxvf rocket.chat.tgz
这会将整个存档展开到名为 bundle
的目录中。 让我们将 bundle
目录的内容移动到更容易记住的地方。
mv bundle Rocket.Chat
切换到我们将使用 NPM 安装 Rocket.Chat 的目录。
cd Rocket.Chat/programs/server
安装 Rocket.Chat。
npm install
移回父 Rocket.Chat
目录。
cd ../..
我们需要设置一些环境变量来帮助 Rocket.Chat 跟踪 URL、端口等内容。
首先,将 ROOT_URL
变量设置为您的域名。 这必须是 URL 的形式。
export ROOT_URL=https://example.com/
在 MONGO_URL
变量下设置 MongoDB 的 URL。
export MONGO_URL=mongodb://localhost:27017/rocketchat
将 PORT
变量设置为 3000
。
export PORT=3000
现在您可以使用以下命令运行 Rocket.Chat:
node main.js
如果没有任何错误,它可以工作! 不过,现在,请使用 CTRL+C
停止 Rocket.Chat。 现在 Rocket.Chat 已安装,我们需要设置 Nginx 以使用反向代理代理其所有流量,从而更轻松地访问 Rocket.Chat 并使用 SSL 证书加密您的所有通信。
第 3 步 — 使用 Nginx 设置反向代理
首先,安装 Nginx。
sudo apt-get install -y nginx
将证书的私钥移动到 /etc/nginx/certificate.key
。
sudo cp /path/to/your/key /etc/nginx/certificate.key
例如,如果您创建了 Let's Encrypt 证书,您将使用 sudo cp /etc/letsencrypt/live/your_domain_name/privkey.pem /etc/nginx/certificate.key
。
修改密钥的权限,使未经授权的窃贼无法访问。
sudo chmod 400 /etc/nginx/certificate.key
将证书本身复制到 /etc/nginx/certificate.crt
。
sudo cp /path/to/your/cert /etc/nginx/certificate.crt
如果您创建了 Let's Encrypt 证书,该命令类似于 sudo cp /etc/letsencrypt/live/your_domain_name/cert.pem /etc/nginx/certificate.crt
。
我们将为 Rocket.Chat 创建一个全新的配置,因此您可以删除默认配置以使其更容易一些。
sudo rm /etc/nginx/sites-enabled/default
如果您将来出于任何原因需要该文件,仍然可以在 /etc/nginx/sites-available/default
使用 nano
或您喜欢的文本编辑器创建一个新的 /etc/nginx/sites-enabled/default
。
sudo nano /etc/nginx/sites-enabled/default
首先,我们将添加一个 upstream
块:
/etc/nginx/sites-enabled/default
# Upstreams upstream backend { server 127.0.0.1:3000; }
在此之下,让我们创建一个 server
块。 第一部分告诉 Nginx 在哪个端口上侦听连接,在本例中为 :443
。 它还让它知道我们的主机名是什么。 不要忘记将 example.com
替换为您的域名。
/etc/nginx/sites-enabled/default
server { listen 443; server_name example.com;
在此之下,我们告诉 Nginx 在哪里存储 Rocket.Chat 的访问日志,并将其指向我们分别放在 /etc/nginx/certificate.key
和 /etc/nginx/certificate.crt
中的 SSL 证书和密钥。
/etc/nginx/sites-enabled/default
error_log /var/log/nginx/rocketchat.access.log; ssl on; ssl_certificate /etc/nginx/certificate.crt; ssl_certificate_key /etc/nginx/certificate.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # don’t use SSLv3 ref: POODLE
现在我们用 location
块完成配置:
location / { proxy_pass http://example.com:3000/; 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; } }
这是完整的文件供参考:
/etc/nginx/sites-enabled/default
server { listen 443; server_name example.com; error_log /var/log/nginx/rocketchat.access.log; ssl on; ssl_certificate /etc/nginx/certificate.crt; ssl_certificate_key /etc/nginx/certificate.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # don’t use SSLv3 ref: POODLE location / { proxy_pass http://example.com:3000/; 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 service nginx restart
检查 Nginx 是否正在运行。
sudo service nginx status
如果您看到以下消息,则 Nginx 已启动并正在运行:
* nginx is running
如果您看到错误消息,请检查 /var/log/nginx/rocketchat.access.log
和 /var/log/nginx/access.log
处的日志或 /var/log/nginx/error.log
处的错误日志。 您还可以运行 nginx -t
来验证您的 Nginx 配置文件,这是大多数错误出现的地方。
确保您仍在 Rocket.Chat
文件夹中。
cd ~/Rocket.Chat
然后运行以下命令重新启动 Rocket.Chat。
node main.js
Rocket.Chat 现在应该在 https://example.com
上直播。 您可以通过在您喜欢的浏览器中访问该地址来验证这一点。
在下一节中,我们将使用名为 forever-service
的节点模块将 Rocket.Chat 配置为在启动时自动运行。
第 4 步 — 将 Rocket.Chat 配置为服务
forever-service
自动为Rocket.Chat等节点应用生成init脚本。 首先,我们需要安装 forever
本身,forever-service
依赖于它。
sudo npm install -g forever
然后,安装 forever-service
。
sudo npm install -g forever-service
使用 forever-service
创建服务:
sudo forever-service install -s main.js -e "ROOT_URL=https://example.com/ MONGO_URL=mongodb://localhost:27017/rocketchat PORT=3000" rocketchat
-s
标志后跟main.js
告诉永远服务我们的脚本被命名为main.js
,而不是默认的app.js
。-e
标志后跟"ROOT_URL=https://example.com/ MONGO_URL=mongodb://localhost:27017/rocketchat PORT=3000"
将我们的环境变量传递给永久服务。- 最后,
rocketchat
告诉 forever-service 服务的名称。
有关永久服务语法的更多详细信息,请运行 forever-service --help
。
现在我们可以启动 Rocket.Chat。 这将初始化由 forever-service
创建的 rocketchat
服务。
sudo start rocketchat
Rocket.Chat 现在应该在您在步骤 2 中设置的 URL 上运行。 确保您在此处使用 HTTPS。
Rocket.Chat 应该准备好了。 在下一节中,我们将向 Rocket.Chat 添加我们的第一个管理员用户并浏览界面。
第 5 步 — 配置和使用 Rocket.Chat
访问我们之前设置 Rocket.Chat 的 URL。 您应该看到如下内容:
单击注册新帐户,然后输入您的第一个管理员的用户信息。
单击提交,然后为您的新用户选择一个用户名:
点击使用此用户名后,您将被带到主页:
就这样! 您会在右侧看到,已经为您创建了一个 #general 频道。 如果您单击它,您将被带到聊天室。 随意玩一下。
现在让我们浏览一下界面。 首先,让我们继续通过单击 Channels 旁边的小加号按钮来创建一个新频道:
将其命名为您喜欢的任何名称:
现在单击保存,您将被带到您的新频道。
要访问管理界面,请单击您的用户名旁边的小箭头。 它将下拉一个菜单:
单击 管理 。 它将弹出第二个菜单:
使用此菜单,我们可以配置和管理 Rocket.Chat 安装的各个方面。 在 Users 部分,我们可以管理单个用户的权限,甚至可以邀请新用户。 我们还可以使用 Integrations 视图为我们的安装添加更多功能。
结论
恭喜! 现在,您和您的团队拥有了自己的聊天解决方案:Rocket.Chat,在 Ubuntu 14.04 服务器上运行。 它设置为使用 forever-service
在启动时自动启动,并且完全配备了使用 Nginx 反向代理的 SSL。 您现在可能想要添加更多成员、创建更多频道,或者查看管理菜单的集成部分。 玩得开心!