简介
什么是RocketChat?
RocketChat是一个开源的聊天工具(类似微信、QQ),但不同的是,微信、QQ的服务器是腾讯公司的,数据都保存的腾讯的服务器上,而我们用RocketChat,是自己搭建的服务器,所有聊天记录都存在自己的服务器上。
RocketChat支持Mac、Windows、Linux、iPhone、Android、网页版,也就是完全支持所有平台。
RocketChat客户端界面:
为什么要自己搭建聊天服务器?
现在人们越来越注重隐私,有时候公司内部的一些交流,以及一些众所周知的比较敏感的话题,并不适合使用微信、QQ之类的没有任何隐私可言的工具进行讨论,而RocketChat的服务器是我们自己搭建的,数据在自己手上,所以比较安全。
如何搭建RocketChat服务器?
RocketChat是使用nodejs编写的,使用mongodb作为数据库,所以我们要搭建RocketChat服务器,要安装四个部分:
- 1、nodejs(以及一些nodejs的工具库)
- 2、mongodb(数据库)
- 3、GraphicsMagick(一个图片处理库,RocketChat需要用它来处理图片)
- 4、RocketChat
下面我们将一步一步安装上边说的四个工具,当然如果你想直接看官方文档也可以:官方安装文档。
安装mongodb
添加mongodb的yum源
由于mongodb并没有添加到yum源中,我们要使用yum安装mongodb,需要先添加它的yum源,其实就是在/etc/yum.repos.d/
目录中添加一个叫mongodb-org-4.0.repo
的文件,并把下边的内容填进去保存即可:
如果你嫌上面的方式麻烦,你可以直接在终端里执行以下命令,就会自动在/etc/yum.repos.d/
目录中产生这个文件:
安装mongodb
添加完yum源,直接使用我们熟悉的yum安装即可(不过它的包名叫mongodb-org
而不是mongodb
):
修改mongodb配置文件
需要把engine设置为wiredTiger
,以及把设置replication
为replSetName: rs01
,以及把bindIp
的ip用引号起起来。
设置完的整个配置如下所示,如果你觉得麻烦,其实直接把我的配置覆盖过去就行:
启动mongodb
先启动:
然后查看是否启动成功:
如果是如下图所示,有active (running)
字样,说明已经成功启动:
设置开机自动启动:
如果你要停止或重启:
初始化mongodb
使用mongo
命令登录mongodb:
创建一个单服务器的复制集(你有多台服务器做集群也可以):
执行结果如下图所示:
设置后用exit
命令退出mongodb。
安装nodejs
执行以下命令安装nodejs:
以上安装的nodejs版本比较低(可以用node -v
命令查看版本,我这里目前是v6.17.1
),但是RocketChat需要使用比较高的nodejs版本,所以我们要使用nodejs的版本管理工具n
来切换到新版本(没错,这个工具名称就一个字母n
)。
先使用npm安装inherits
以及n
(前面安装nodejs后,npm
命令就自动有了):
以上安装可能会有一些WARNING
,可以不用理会(当然也可能没有)。
然后使用n
工具把nodejs的版本切换到RocketChat要求的版本8.11.4
:
如下图,切换成功后,你再用node -v
查看版本,可能还是原来的版本,原因是终端记录了原来的版本,你需要退出登录,再重新登录服务器,然后再看版本,应该就已经换过来了:
至此,nodejs已经安装完成。
安装GraphicsMagick
前面说过,GraphicsMagick是一个图片处理工具,RocketChat需要使用它来处理聊天中的图片,所以我们要安装一下。
这个安装比较简单,直接使用yum安装即可:
安装RocketChat
简介
所有准备工作已完成,终于可以开始安装我们的主角“RocketChat”了,前面说过,RocketChat是用nodejs写的,所以其实所谓的安装,就是把把源码下载下来,解压一下,放到合适的地方,做一个systemd的开机自启动,它的启动也很简单,其实就是用node运行RocketChat的入口文件main.js
而已,比如:
开始安装RocketChat
下载RocketChat最新版本到/tmp/
目录中:
进入/tmp/
目录,我们可以看到一个叫rocket.chat.tgz
的文件,这个文件就是刚刚下载的:
解压rocket.chat.tgz
,解压出来是一个bundle
文件夹:
解压完成后,我们进入它里面的server
文件夹:
进入server
文件夹后,使用npm安装依赖:
OK,现在RocketChat其实已经可以用了,但是现在它还在/tmp/
目录中,这是Linux的临时文件夹,我们不能把它放在那里(当然你非要放在那运行也是可以的,只不过怕以后清缓存会不小心删除掉,而且也没有人会把程序那在那),所以我们要移动到一个我们认为合适的地方。
放在哪里好呢?其实一般情况下,在Linux中自己安装的程序都会放在/usr/local/
目录中的,但是官方文档是把它放在了/opt/
目录下,这里我们就根据官方文档的做法,把刚刚解压出来的整个bundle
文件夹移动到/opt/
目录下,并且重命名为Rocket.Chat
(当然你不重命名也是一样可以的,只不过以后可能忘了这是什么程序了)。
执行以下命令,把整个bundle
文件夹(也就是Rocket.Chat源码程序)移动到/opt/
目录并重命名为Rocket.Chat
:
然后我们顺便把最开始下载的压缩包删掉,因为我们已经解压出来使用了,这个包在这里只会占用服务器硬盘空间(138M呢):
设置开机自启动
前面说过,运行Rocket.Chat这个“服务器”,其实就是用node去运行它的入口文件main.js
即可,即:
但是,为了方便启动/停止,为了方便开机自启动,我们要设置一下开机自启动,Linux的开启自启动有两种,一种是以前的init方式(CentOS6及其以下),一种是CentOS7的systemd,因为我们使用的是CentOS7,所以我们使用systemd方式。
使用systemd来管理程序的启停,其实是在/usr/lib/systemd/system/
目录中添加一个以.service
结尾的配置文件,比如RocketChat我们就命名为rocketchat.service
就行,然后内容直接粘贴以下的内容进去就行(但要注意把ROOT_URL
中的ip换成你自己服务器的ip):
由于我们打算使用一个专有的用户来启动RocketChat,所以我们要先创建一个用户,用户名就叫rocketchat
吧,使用以下命令即可创建:
创建用户后,别忘了把Rocket.Chat的权限修改为该用户:
然后我们就可以使用systemctl
来启动RocketChat服务器了:
然后我们再查看一下是否启动成功了:
如果一切正常,将会看到类似这样的输出:
如果像下图这样有红色的failed
字样,则说明启动失败,一般来说都是权限问题或者是路径问题,多检查一下即可:
启动成功后,我们把RocketChat加入到开机启动:
到这里RocketChat已经启动,下边会继续讲如何使用,如果你要停止或重启RocketChat,由于我们已经使用systemd的启动方式,所以都是systemctl的通用方法:
开始使用RocketChat
如果前面RocketChat已经正常启动,那么如果在浏览器访问:
http://你的服务器ip:3000
就能进入首次的安装向导界面了:
- 姓名:不需要傻傻的填你的真实姓名,你可以随便填,也可以填一个你常用的网名,英文名等等;
- 用户名:不要有空格,由英文下划线数字等组成(不是说一定要下划线,也不是一定要数字,而是说你可以用它们);
- 组织电邮:填一个你的邮箱
- 密码:填上密码,这个密码以及前面的用户名,其实就是管理员,当然也是一个用户(可以聊天的)
继续往下,这些你都可以自己看着填:
继续:
继续:
设置好了,现在可以点击“转到你的工作区”
界面是这样的(这就是后台界面了):
然后,你把你的这个地址,即http://你的服务器ip:3000/
发给朋友,或者公司同事,他们在浏览器或客户端访问这个链接,注册一个账号,就可以相互聊天了。
同事/朋友在浏览器上访问(要先注册一个账号):
在电脑客户端(在手机也一样),第一次连接可能比较慢,要稍等一下:
使用Nginx做反代
一般情况我们都不建议直接使用ip来访问,所以强烈建议使用nginx做反代,这样我们就可以通过域名来访问我们的RocketChat服务器了,如果你不会安装nginx,自己网上找一下资料就行,这里就不说了。
以下是我使用的nginx反代配置(支持https):
如果你不知道怎么配置https,可以看一下为你的网站配置免费的HTTPS支持以及https证书自动续订(renew)问题这两篇文章。
当然,如果你不想那么麻烦,也可以使用不支持https的配置:
server_name
的值改成你自己的域名,并在你的域名服务商那边添加一个A记录,把域名解析到你这台服务器上;access_log
和error_log
的路径要修改成真实存在的路径;proxy_pass
意思就是把nginx接收到的请求转发给RocketChat,所以它后面的http://127.0.0.1:3000
就是RocketChat的地址和端口,由于RocketChat就在本地,所以地址就是127.0.0.1
,而端口是我们在/usr/lib/systemd/system/rocketchat.service
中用Environment=PORT=3000
指定的,如果你不想用这个端口,你可以去修改一下(修改了记得重启)。
如何更新RocketChat服务器
由于更新RocketChat就是更新它的源码,所以我们重复一遍前面的安装步骤即可,即下载→解压→进入server文件夹→npm install
→移动并重命名到/opt/
目录即可。
客户端的安装
iPhone客户端
直接AppStore搜索“rocket.chat”即可,如下图:
安卓客户端
1、GooglePlay下载:搜索“rocket.chat”即可,如下图:
2、apk安装:本来安卓是可以直接下载apk安装包的,但是由于官方不提供apk安装包,只有源码,所以只能想办法上googleplay安装了。
电脑客户端(Mac/Win/Linux)
方式一:直接去官网下载就行,当然这个网站如果没有科学上网可能也有点慢:
方式二:你可以去Github下载。
网页版
不需要任何客户端,直接在浏览器访问地址即可。
一、如果您发现本站侵害了相关版权,请附上本站侵权链接和您的版权证明一并发送至邮箱:yehes#qq.com(#替换为@)我们将会在五天内处理并断开该文章下载地址。
二、本站所有资源来自互联网整理收集,全部内容采用撰写共用版权协议,要求署名、非商业用途和相同方式共享,如转载请也遵循撰写共用协议。
三、根据署名-非商业性使用-相同方式共享 (by-nc-sa) 许可协议规定,只要他人在以原作品为基础创作的新作品上适用同一类型的许可协议,并且在新作品发布的显著位置,注明原作者的姓名、来源及其采用的知识共享协议,与该作品在本网站的原发地址建立链接,他人就可基于非商业目的对原作品重新编排、修改、节选或者本人的作品为基础进行创作和发布。
四、基于原作品创作的所有新作品都要适用同一类型的许可协议,因此适用该项协议, 对任何以他人原作为基础创作的作品自然同样都不得商业性用途。
五、根据二〇〇二年一月一日《计算机软件保护条例》规定:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可不经软件著作权人许可,无需向其支付报酬!
六、鉴此,也望大家按此说明转载和分享资源!本站提供的所有信息、教程、软件版权归原公司所有,仅供日常使用,不得用于任何商业用途,下载试用后请24小时内删除,因下载本站资源造成的损失,全部由使用者本人承担!