火箭聊天是一个用 Meteor 构建的开源消息传递应用程序。它支持视频会议、文件共享、语音消息、拥有功能齐全的 API 等等。 Rocket.Chat 对于那些喜欢完全控制自己的通信的人来说非常有用。
在本教程中,我们将在新的 Ubuntu 服务器上安装和配置 Rocket.Chat,并通过 Nginx 设置反向代理以提高安全性并使访问 Rocket.Chat 变得更加容易。一旦我们完成,您将拥有一个几乎可以从任何地方访问的 Rocket.Chat 的功能实例。
要学习本教程,您将需要:
- 一台 Ubuntu 14.04 服务器,建议至少具有 1 GB RAM
- 具有 sudo 权限的非 root 用户(使用 Ubuntu 14.04 进行初始服务器设置解释了如何设置。)
- 完全注册的域名。您可以在名称廉价或免费获得一份Freenom.
- 确保您的域名已配置为指向您的服务器。查看本教程如果你需要帮助。
- SSL 证书。生成自签名证书, [从 Let’s Encrypt 获取免费的](https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-14-04),或从其他提供商处购买。
在本节中,我们将安装 Rocket.Chat 的一些依赖项,例如 MongoDB 和 NodeJS。
让我们从启动并运行 MongoDB 开始。首先,我们需要添加一个密钥服务器,以便我们可以访问这些包。
-
sudoapt-key adv--密钥服务器hkp://keyserver.ubuntu.com:80--recv7F0CEB10
然后我们需要设置要使用的存储库。
-
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
现在,更新软件包列表。
现在已经完成了,我们可以继续安装npm
, mongodb-org
, curl
and graphicsmagick
,这些都是 Rocket.Chat 的依赖项:
-
sudo apt-get install npmMongoDB-orgcurl图形魔法
我们需要使用 NPM 安装一个包来允许我们更改节点版本:
使用该包将节点版本更改为0.10.40
.
接下来,我们将安装 Rocket.Chat 本身并进行一些配置。
首先,使用以下命令下载 Rocket.Chat 的最新稳定版本curl
.
-
curl -Lhttps://rocket.chat/releases/latest/download-o火箭聊天.tgz
使用以下命令展开我们刚刚下载的存档tar
命令。
这会将整个存档扩展为名为的目录bundle
。让我们移动一下内容bundle
目录到更容易记住的东西。
切换到我们将使用 NPM 安装 Rocket.Chat 的目录。
安装 Rocket.Chat。
移回父级Rocket.Chat
目录。
我们需要设置一些环境变量来帮助 Rocket.Chat 跟踪 URL、端口等信息。
首先,设置ROOT_URL
变量为您的域名。这必须采用 URL 的形式。
-
export ROOT_URL=https://example.com/
在下面设置 MongoDB 的 URLMONGO_URL
多变的。
-
export MONGO_URL=mongodb://localhost:27017/rocketchat
Set the PORT
变量为3000
.
现在您可以使用以下命令运行 Rocket.Chat:
如果没有任何错误,那就可以了!不过,现在请停止 Rocket.Chat 使用CTRL+C
。现在 Rocket.Chat 已安装,我们需要设置 Nginx 使用反向代理代理其所有流量,从而更轻松地访问 Rocket.Chat 并使用 SSL 证书加密所有通信。
首先,安装 Nginx。
-
sudo apt-get install -y nginx
将您的证书的私钥移至/etc/nginx/certificate.key
.
-
sudo cp /path/to/your/key /etc/nginx/certificate.key
For example, if you created a Let’s Encrypt certificate, you would use 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
If you created a Let’s Encrypt certificate, the command would be similar to 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
创建一个新的/etc/nginx/sites-enabled/default
with nano
或您最喜欢的文本编辑器。
-
sudo nano/etc/nginx/sites-enabled/default
首先,我们将添加一个upstream
block:
/etc/nginx/sites-enabled/default
# Upstreams
upstream backend {
server 127.0.0.1:3000;
}
Underneath that, let’s create a server
block. The first part tells Nginx which port to listen for connections on, in this case :443
. It also let’s it know what our hostname is. Don’t forget to replace example.com
with your domain name.
/etc/nginx/sites-enabled/default
server {
listen 443;
server_name example.com;
在此之下,我们告诉 Nginx 在哪里存储 Rocket.Chat 的访问日志,并将其指向我们放置的 SSL 证书和密钥/etc/nginx/certificate.key
and /etc/nginx/certificate.crt
分别。
/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
block:
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 即可完成工作。
检查 Nginx 是否正在运行。
如果您看到以下消息,则表明 Nginx 已启动并正在运行:
* nginx is running
如果您看到错误消息,请检查日志/var/log/nginx/rocketchat.access.log
and /var/log/nginx/access.log
或错误日志位于/var/log/nginx/error.log
。你也可以运行nginx -t
验证您的 Nginx 配置文件,这是大多数错误出现的地方。
确保您仍在Rocket.Chat
folder.
然后运行以下命令再次启动 Rocket.Chat。
Rocket.Chat should now be live at https://example.com
. You can verify this by visiting that address in your favorite browser.
在下一节中,我们将使用名为的节点模块将 Rocket.Chat 配置为在启动时自动运行forever-service
.
forever-service
自动为 Rocket.Chat 等节点应用程序生成初始化脚本。首先,我们需要安装forever
本身,其中forever-service
依赖于取决于。
然后,安装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
- The
-s
标志后跟main.js
告诉永远服务我们的脚本被命名main.js
, not app.js
,这是默认值。
- The
-e
flag followed by "ROOT_URL=https://example.com/ MONGO_URL=mongodb://localhost:27017/rocketchat PORT=3000"
passes our environmental variables to forever-service.
- 最后,
rocketchat
告诉永远服务如何命名该服务。
有关永久服务语法的更多详细信息,请运行forever-service --help
.
现在我们可以启动 Rocket.Chat。这将初始化rocketchat
服务创建者forever-service
.
Rocket.Chat 现在应该位于您在步骤 2 中设置的 URL 上。确保您在此处使用 HTTPS。
Rocket.Chat 应该已准备就绪。在下一节中,我们将向 Rocket.Chat 添加第一个管理员用户并浏览界面。
访问我们之前设置的 Rocket.Chat 的 URL。你应该看到这样的东西:
点击注册新帐户,然后输入您的第一个管理员的用户信息。
Click Submit,然后为您的新用户选择一个用户名:
点击后使用此用户名,您将被带到主页:
就这样!你会在右边看到一个#general频道已为您创建。如果您点击它,您将被带到聊天室。随意玩一下。
现在让我们浏览一下界面。首先,让我们继续通过单击旁边的小加号按钮来创建一个新频道Channels:
随意命名:
现在点击Save,您就会被带到新频道。
要访问管理界面,请单击您的用户名旁边的小箭头。它将下拉一个菜单:
点击行政。它将弹出第二个菜单:
使用此菜单,我们可以配置和管理 Rocket.Chat 安装的各个方面。在里面Users部分,我们可以管理单个用户的权限,甚至邀请新用户。我们还可以使用以下命令向我们的安装添加更多功能集成 view.
恭喜!现在,您和您的团队拥有了自己的聊天解决方案:Rocket.Chat,在 Ubuntu 14.04 服务器上运行。它被设置为在启动时自动启动,使用forever-service
并且完全配备了使用 Nginx 反向代理的 SSL。您现在可能想要添加更多成员、创建更多频道,或者查看“管理”菜单的“集成”部分。玩得开心!