Rocket.Chat是一个使用Meteor构建的开源消息应用程序。它支持视频会议,文件共享,语音消息,具有功能齐全的API等。Rocket.Chat非常适合那些喜欢完全控制通信的人。
在本教程中,我们将在新的Ubuntu服务器上安装和配置Rocket.Chat,并通过Nginx设置反向代理以提高安全性并使访问Rocket.Chat更加容易。一旦我们完成,你将拥有一个Rocket的功能实例。几乎可以从任何地方访问。
要学习本教程,您需要:
sudo
命令的非root账号的Ubuntu服务器(Ubuntu 14.04服务器,建议最小1 GB的RAM),并且已开启防火墙。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器。在本节中,我们将安装一些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本身并进行一些配置。
首先,使用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证书加密所有通信。
首先,安装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
如果您将来因任何原因需要该文件,它仍然可以用nano
或您喜欢的文本编辑器在 /etc/nginx/sites-available/default
创建一个新/etc/nginx/sites-enabled/default
。
sudo nano /etc/nginx/sites-enabled/default
首先,我们将添加一个upstream
块:
# Upstreams
upstream backend {
server 127.0.0.1:3000;
}
在下面,让我们创建一个server
块。第一部分告诉Nginx在这种情况下监听连接的端口:443
。它还让我们知道我们的主机名是什么。不要忘记替换example.com
为您的域名。
server {
listen 443;
server_name example.com;
在这一点,我们告诉Nginx的在哪里存储Rocket.Chat的访问日志,并将其分别指向我们放置在/etc/nginx/certificate.key
和/etc/nginx/certificate.crt
的SSL证书和密钥。
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;
}
}
这是完整的参考文件:
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
中使用了。您可以通过在您喜欢的浏览器中访问该地址来验证这一点。
在下一节中,我们将使用名为的节点模块将Rocket.Chat配置为在引导时自动运行forever-service
。
forever-service
自动为节点应用程序(如Rocket.Chat)生成初始化脚本。首先,我们需要安装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
默认的。"ROOT_URL=https://example.com/ MONGO_URL=mongodb://localhost:27017/rocketchat PORT=3000"
的-e
标志将我们的环境变量传递给永久服务。rocketchat
告诉永远服务命名服务的内容。有关forever-service语法的更多详细信息,请运行forever-service --help
。
现在我们可以启动Rocket.Chat了。这将初始化由forever-service
创建的rocketchat
服务。
sudo start rocketchat
Rocket.Chat现在应该在你在步骤2中设置的URL上生效。确保你在这里使用HTTPS。
Rocket.Chat应该准备好了。在下一节中,我们将把我们的第一个管理员用户添加到Rocket.Chat并浏览界面。
访问我们之前设置的Rocket.Chat的URL。你应该看到这样的东西:
单击注册新帐户,然后输入第一个管理员的用户信息。
单击“ 提交”,然后为新用户选择用户名:
单击“ 使用此用户名”后,您将进入主页:
就这样!您将在右侧看到,已经为您创建了#general频道。如果你点击它,你将被带到聊天室。随意玩一下。
现在让我们来看看界面。首先,让我们继续点击Channels旁边的微小加号按钮创建一个新频道:
把它命名为你想要的任何东西:
现在点击“ 保存”,您将进入新频道。
要访问管理界面,请单击用户名旁边的小箭头。它将下拉菜单:
单击“ 管理”。它将显示第二个菜单:
使用此菜单,我们可以配置和管理Rocket.Chat安装的各个方面。在“ 用户”部分,我们可以管理各个用户的权限,甚至可以邀请新用户。我们还可以使用“ 集成”视图为我们的安装添加更多功能。
恭喜!现在,您和您的团队拥有自己的聊天解决方案:Rocket.Chat,在Ubuntu 14.04服务器上运行。它设置为用forever-service
在启动时自动启动,并使用Nginx反向代理完全配备SSL。您现在可能想要添加更多成员,创建更多通道,或者可以查看“管理”菜单的“集成”部分。玩的开心!
更多Ubuntu教程请前往腾讯云+社区学习更多知识。
参考文献:《How To Install, Configure, and Deploy Rocket.Chat on Ubuntu 14.04》
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。