搭建自己的聊天服务器(Rocket.Chat上篇)
什么是 Rocket.Chat?
Rocket.Chat 是特性最丰富的 Slack 开源替代品之一。主要功能:群组聊天,直接通信,私聊群,桌面通知,媒体嵌入,链接预览,文件上传,语音/视频 聊天,截图等等。
安装
因为 Rocket.Chat 用了 Meteor 框架,所以需要安装 MongoDB。这次我们还是采用 Docker 方式安装,想要把 Rocket.Chat 跑起来,需要下载2个镜像,分别是 MongoDB 镜像和 Rocket.Chat 镜像。
安装 MongoDB
在 Docker 的注册表中搜索 mongodb
,选第一个 mongo
,版本选 latest
卷
文件夹 | 装载路径 |
---|---|
your/path/to/mongodb/mongo.conf | /etc/mongod.conf |
your/path/to/mongodb/db | /data/db |
以上2个均为文件夹,而不是文件
端口
直接用的默认端口 27017
环境
可变 | 值 |
---|---|
MONGO_INITDB_DATABASE | db |
MONGO_INITDB_ROOT_USERNAME | root |
MONGO_INITDB_ROOT_PASSWORD | YourPASSWORD |
必须要记得,在 命令
行中输入下面的指令
1 | mongod --oplogSize 128 --replSet rs01 |
一旦容器创建成功,就不能再添加命令行,所以切记一定要在创建之前添加。
完成上述设置后,就可以启动了
直接启动容器,右键进入「详情」
「终端机」 => 「新增」 => 「通过命令启动」=> 「请输入一个命令」=> 「sh」
1 | # mongo -u root -p <pass> --authenticationDatabase admin |
1 | rs.initiate({ _id: 'rs01', members: [ { _id: 0, host: 'localhost:27017' } ]}) |
1 | # 切换用户 |
安装 Rocket.Chat
在 Docker 的注册表中搜索 rocket
,选第二个 rocketchat/rocket.chat
,版本选 latest
端口
直接用的默认端口 3000
链接
环境
可变 | 值 |
---|---|
MONGO_URL | mongodb://root:yourRootPass@db:27017/db?authSource=admin |
MONGO_OPLOG_URL | mongodb://root:yourRootPass@db:27017/local?authSource=admin |
启动容器,查看日志,已经正常启动了
资源占用有点高,不过还能接受
设置
在浏览器中访问 http://群晖IP:3000
后面跟随设置向导完成一些常规设定即可,没有什么难度。设置完后就能看到聊天室界面了:
在管理员工作区,可以添加用户、查看系统日志等操作
使用
除网页版之外,在 https://rocket.chat/install/
可以下载桌面和移动端应用
Windows 客户端
输入服务器地址
连接成功后需要输入账号和密码
登录成功
Android 客户端
因为国内市场需要软著,所以不管应用宝还是小米市场,肯定是没有的,但是 google play
又访问不到,所以只能去github下载。
移动客户端的发布地址:
https://github.com/RocketChat/Rocket.Chat.ReactNative/releases
我们会看到有带 rc
和不带 rc
的版本
RC版本含义 RC=Release Candidate,含义是”发布候选版”,它不是最终的版本,而是最终版(RTM=Release To Manufacture)之前的最后一个版本。
所以一般我们要找不带 rc
的版本,例如这样的
下拉到下面的 Assets,展开前面的小三角
其中 apk
结尾的是 Android 版本,ipa
结尾的是 iOS 版本,把链接复制到手机浏览器里下载安装
开始运行
输入服务器地址
输入账号、密码
登录成功后
第一件事就是设置成中文界面
可以切换服务器
接下来可以创建频道等操作,开始进行各种花式聊天了
参考文档
官方文档
地址:https://docs.rocket.chat/CentOS7使用RocketChat自建即时聊天服务器
地址:https://www.xiebruce.top/1123.html)使用宝塔面板安装Rocket.Chat多功能团队聊天室
地址:https://www.moerats.com/archives/960/Rocket.Chat 开源 IM 系统部署
地址:https://juejin.im/entry/6844903520139739149Rocket.Chat 开源免费企业级聊天工具
地址:https://www.rultr.com/tutorials/proxy/4083.htmlrocket-chat使用教程
地址:https://blog.csdn.net/weixin_41272269/article/details/104826396Install Rocket.Chat with Docker as a Slack alternative
地址:https://blog.ssdnodes.com/blog/tutorial-rocket-chat-docker/Docker Rocket.Chat - SLACK alternative (with MongoDB as backend)
地址:https://www.synoforum.com/resources/rocket-chat-slack-alternative-with-mongodb-as-backend.19/Rocket.Chat Installation on Synology DS415+
地址:https://www.duanenoland.com/home-lab/rocketchat-synology/
预览:
老苏您好,请问如果我用的是威联通的docker没有“链接”这一步,有没有什么替代方法呢?
@守望之舟: 那就忽略这一步,将环境变量里用服务器的
ip
替代数据库名db
试试@杨浦老苏: 报错,mongodb版本4.4.0,可以用http访问,其他步骤均按教程进行,但将MONGO_URL中“db”改为了127.0.0.1,端口2006
/app/bundle/programs/server/node_modules/fibers/future.js:313
throw(ex);
^
MongoServerSelectionError: connect ECONNREFUSED 127.0.0.1:2006
at Timeout._onTimeout (/app/bundle/programs/server/npm/node_modules/meteor/npm-mongo/node_modules/mongodb/lib/sdam/topology.js:312:38)
at listOnTimeout (internal/timers.js:557:17)
at processTimers (internal/timers.js:500:7) {
reason: TopologyDescription {
type: ‘Unknown’,
servers: Map(1) {
‘127.0.0.1:2006’ => ServerDescription {
_hostAddress: HostAddress { isIPv6: false, host: ‘127.0.0.1’, port: 2006 },
address: ‘127.0.0.1:2006’,
type: ‘Unknown’,
hosts: [],
passives: [],
arbiters: [],
tags: {},
minWireVersion: 0,
maxWireVersion: 0,
roundTripTime: -1,
lastUpdateTime: 43052685,
lastWriteDate: 0,
error: MongoNetworkError: connect ECONNREFUSED 127.0.0.1:2006
at connectionFailureError (/app/bundle/programs/server/npm/node_modules/meteor/npm-mongo/node_modules/mongodb/lib/cmap/connect.js:381:20)
at Socket. (/app/bundle/programs/server/npm/node_modules/meteor/npm-mongo/node_modules/mongodb/lib/cmap/connect.js:301:22)
at Object.onceWrapper (events.js:520:26)
at Socket.emit (events.js:400:28)
at emitErrorNT (internal/streams/destroy.js:106:8)
at emitErrorCloseNT (internal/streams/destroy.js:74:3)
at processTicksAndRejections (internal/process/task_queues.js:82:21)
}
},
stale: false,
compatible: true,
heartbeatFrequencyMS: 10000,
localThresholdMS: 15,
logicalSessionTimeoutMinutes: undefined
}
}
@守望之舟: 不要用
127.0.0.1
,我写的是用服务器的ip
这步时db.createUser({user: “admin”, pwd: passwordPrompt(), roles: [{role: “readWrite”, db: “db”}]})
报错 E QUERY [js] ReferenceError: passwordPrompt is not defined :
@(shell):1:31
@Jack:
passwordPrompt()
需要mongo 4.2
及以上,选4.4
实际上是4.4.10
,按下面的方式安装数据库容器会重启,所以选择mongo
的版本用4.4.0
,这也是文章中用的版本请问安装什么版本的mongo
@Jack: 如果没有特殊情况直接用
latest
就可以,如果遇到反复重启的话,试试4.4
@Jack: 差不多两年了,我去官网看了一下,可能要
4.4.0
,我验证一下再回复你