如何在Ubuntu 14.04上安装,配置和部署Rocket.Chat

介绍

Rocket.Chat是一个使用Meteor构建的开源消息应用程序。它支持视频会议,文件共享,语音消息,具有功能齐全的API等。Rocket.Chat非常适合那些喜欢完全控制通信的人。

在本教程中,我们将在新的Ubuntu服务器上安装和配置Rocket.Chat,并通过Nginx设置反向代理以提高安全性并使访问Rocket.Chat更加容易。一旦我们完成,你将拥有一个Rocket的功能实例。几乎可以从任何地方访问。

准备

要学习本教程,您需要:

  • 一台已经设置好可以使用sudo命令的非root账号的Ubuntu服务器(Ubuntu 14.04服务器,建议最小1 GB的RAM),并且已开启防火墙。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器
  • 完全注册的域名。如果你没有域名,建议您先去这里注册一个域名
  • 确保您的域名配置为指向您的服务器。
  • SSL证书。如果你有域名,保护你网站的最简单方法是使用腾讯云SSL证书服务,它提供免费的可信证书。腾讯云SSL证书安装操作指南进行设置。如果你没有域名,建议您先去这里注册一个域名,如果你只是使用此配置进行测试或个人使用,则可以使用自签名证书,不需要购买域名。自签名证书提供了相同类型的加密,但没有域名验证公告。关于自签名证书,你可以参考为Apache创建自签名SSL证书如何为Nginx创建自签名SSL证书这两篇文章。

第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

既然这样做了,我们可以继续安装npmmongodb-orgcurlgraphicsmagick,这是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

如果您将来因任何原因需要该文件,它仍然可以用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

第4步 - 配置Rocket.Chat即服务

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并浏览界面。

第5步 - 配置和使用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》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小尘哥的专栏

nuxt中富文本编辑器【vue-quill-editor】的集成

百度搜一下“VUE 富文本编辑器”,五花八门,N多种,推荐比较多的是集成百度的UEditor,然后是vue-quill-editor。后者是专门为vue提供的,...

1953
来自专栏Vamei实验室

WordPress快速建站

这篇文章将介绍如何使用WordPress建立一个博客、网站和论坛。WordPress是基于PHP的博客架设工具。它提供了一套开源的PHP代码以方便用户在支持PH...

1.4K12
来自专栏友弟技术工作室

iPic - MAC图床神器上传方式图床iPic 菜单iPic Mover

原文 ? 有了图床神器 iPic,不论屏幕截图、还是复制图片,都可以自动上传、保存 Markdown 格式的链接,直接粘贴插入,够懒人吧? 使用 Hexo | ...

4106
来自专栏Python小屋

Python+tkinter不允许退出程序的思路和实现

思路:基于Python+tkiner的程序,在单机右上角X按钮关闭程序时,会触发'WM_DELETE_WINDOW'消息,如果可以截获这个消息并改变其行为,就可...

3114
来自专栏梧雨北辰的开发录

Charles抓包HTTP、HTTPS

抓包分析数据在移动开发中十分重要,可以帮助我们更快的了解数据构成,提高开发效率。但是在苹果要求上线的App必须使用HTTS之后,HTTPS数据包的抓取分析较为麻...

53010
来自专栏前端笔记

【网站被攻击?】就“网络海量攻击”时代,浅谈个人站长如何有效做好网站防护!

2145
来自专栏前端大白专栏

关于在angular2中引入第三方插件或者框架(jquery)

2374
来自专栏魏琼东

.NET快速开发实践之应用IExtenderProvider实现对象与UI控件的绑定

         现在企业级的信息系统应用开发之中,数据层采用了ORM,解放了之前开发最大工作量的核对SQL语句,我到现在还曾经记得在2002年实医院管理信息系...

2056
来自专栏一个会写诗的程序员的博客

React Router 之 browserHistoryHistoriesHistories

前端工程采用 SPA 模式 hashHistory , 在集成到生产环境中的时候,使用browserHistory :

942
来自专栏Objective-C

iOS-app证书配置和发布流程详解

3895

扫码关注云+社区

领取腾讯云代金券