rocket.chat--开源的跨平台即时通讯软件
rocket.chat–开源的跨平台即时通讯软件
阅读原文
建议阅读原文,始终查看最新文档版本,获得最佳阅读体验:《rocket.chat–开源的跨平台即时通讯软件》
介绍
可以简单地将rocket.chat看成是一个开源版的discord
Rocket.Chat 是一个基于开源技术构建的实时团队协作平台,旨在为组织提供灵活、安全且可自定义的通信解决方案。它支持即时消息、视频会议、文件共享、任务协作等功能,适用于企业、教育机构、开源社区等多种场景。其模块化设计允许企业按需扩展,从基础聊天到全渠道客服系统(LiveChat)均可灵活构建。
官网
官方网站:Rocket.Chat | Secure CommsOS™ for Mission-Critical Operations
github仓库:https://github.com/RocketChat/Rocket.Chat
核心特点与功能
开源与灵活性
Rocket.Chat 是完全开源的,采用 MIT 许可证,允许用户自由部署、修改和扩展代码。这种开放性使其能够适应不同组织的特定需求,同时避免了闭源软件的订阅费用和功能限制。
跨平台兼容性
支持多端访问,包括网页版(web)、移动应用(iOS/Android)、桌面客户端(Windows/macOS/Linux),并提供 REST API 和 SDK,方便与第三方工具集成。
核心协作功能
-
实时消息与频道管理:支持公共频道、私有频道和一对一私聊,可设置权限分级。
-
视频与语音通话:内置高清视频会议和语音通话功能,支持屏幕共享。
-
文件共享与协作:可上传文件并设置权限,支持文件版本控制和在线预览。
-
任务与项目管理:通过标签、提及功能和自定义机器人简化任务分配。
-
第三方集成(通过apps engine):与 Slack、GitHub、Jira、Zoom 等工具无缝对接,增强工作流整合能力。
安全与合规性
-
支持端到端加密、数据加密存储及传输。
-
提供多因素认证(MFA)、LDAP/AD 集成和 OAuth 登录选项(支持keycloak),强化身份验证。
-
支持自定义权限管理,确保敏感信息仅限授权人员访问。
-
提供 GDPR 合规性支持,便于满足数据隐私法规要求。
可扩展性与定制化
基于模块化架构设计,用户可通过插件系统(如自定义机器人、UI 主题、功能扩展)实现深度定制。社区和开发者生态提供了丰富的插件资源,满足个性化需求。
部署方式
Rocket.Chat 支持两种部署模式:
-
自托管:用户可将服务器部署在自有硬件(docker、docker-compose或k8s)、云平台(OpenStack、AWS、Azure 等)或私有数据中心,完全掌控数据和权限。
-
托管服务:官方提供 Rocket.Chat Cloud 托管方案,简化运维并确保高可用性,适合对 IT 资源有限的团队。
适用场景
-
企业协作:替代 Slack 或 Microsoft Teams,实现私有化、安全的内部沟通。
-
教育机构:用于在线课堂、学生讨论组或远程教研。
-
开源社区:开发者社区可利用其免费、可定制的特性进行协作。
-
远程团队:支持全球分布式团队实时协作,整合项目管理工具提升效率。
部署
docker-compose(推荐)
参考资料:https://docs.rocket.chat/docs/deploy-with-docker-docker-compose
下载compose文件
#注意,可能需要科学上网才能正常下载curl -L https://go.rocket.chat/i/docker-compose.yml -O
Create a .env file
nano .env
编辑.env文件
Set the RELEASE
variable in the .env
to your desired Rocket.Chat version. See our releases page and available docker images. Keeping the default release as latest
is not recommended.
以下是我使用的.env文件:
#我在写作本文时,最新版本是7.7.1RELEASE=7.7.1ROOT_URL=http://<此处替换为实际的服务器ip或域名>:3000
编辑compose文件
本来是可以不用更改compose文件的,但是我发现,在国内,容器无法访问rocket.chat网站,导致无法正常注册workspace,为了解决这个问题,我添加了三个环境变量,为了使得容器可以通过代理上网
HTTP_PROXY: http://<替换为实际的代理服务器ip>:portHTTPS_PROXY: http://<替换为实际的代理服务器ip>:portNO_PROXY: fe80::/10,::1/128,10.0.0.0/8,192.168.0.0/16,127.0.0.1,172.16.0.0/12,.svc,localhost,.dltornado2.com,.security.ubuntu.com,.aliyuncs.com
下面是我使用的docker-compose.yaml文件内容
volumes: mongodb_data: { driver: local }services: rocketchat: image: ${IMAGE:-registry.rocket.chat/rocketchat/rocket.chat}:${RELEASE:-latest} restart: always labels: traefik.enable: \"true\" traefik.http.routers.rocketchat.rule: Host(`${DOMAIN:-}`) traefik.http.routers.rocketchat.tls: \"true\" traefik.http.routers.rocketchat.entrypoints: https traefik.http.routers.rocketchat.tls.certresolver: le environment: MONGO_URL: mongodb://mongodb:27017/rocketchat?replicaSet=rs0 ROOT_URL: ${ROOT_URL:-http://localhost:3000} PORT: ${PORT:-3000} DEPLOY_METHOD: docker DEPLOY_PLATFORM: ${DEPLOY_PLATFORM:-} REG_TOKEN: ${REG_TOKEN:-} HTTP_PROXY: http://<替换为实际的代理服务器ip>:port HTTPS_PROXY: http://<替换为实际的代理服务器ip>:port NO_PROXY: fe80::/10,::1/128,10.0.0.0/8,192.168.0.0/16,127.0.0.1,172.16.0.0/12,.svc,localhost,.dltornado2.com,.security.ubuntu.com,.aliyuncs.com depends_on: - mongodb expose: - ${PORT:-3000} ports: - \"${BIND_IP:-0.0.0.0}:${HOST_PORT:-3000}:${PORT:-3000}\" mongodb: image: docker.io/bitnami/mongodb:${MONGODB_VERSION:-6.0} restart: always volumes: - ${MONGODB_HOST_PATH:-mongodb_data}:/bitnami/mongodb environment: MONGODB_REPLICA_SET_MODE: primary MONGODB_REPLICA_SET_NAME: ${MONGODB_REPLICA_SET_NAME:-rs0} MONGODB_PORT_NUMBER: ${MONGODB_PORT_NUMBER:-27017} MONGODB_INITIAL_PRIMARY_HOST: ${MONGODB_INITIAL_PRIMARY_HOST:-mongodb} MONGODB_INITIAL_PRIMARY_PORT_NUMBER: ${MONGODB_INITIAL_PRIMARY_PORT_NUMBER:-27017} MONGODB_ADVERTISED_HOSTNAME: ${MONGODB_ADVERTISED_HOSTNAME:-mongodb} MONGODB_ENABLE_JOURNAL: ${MONGODB_ENABLE_JOURNAL:-true} ALLOW_EMPTY_PASSWORD: ${ALLOW_EMPTY_PASSWORD:-yes}
登录到rocket.chat
浏览器地址栏输入:http://your_server_ip:3000
第一次访问时,会进入向导,需要输入一些信息,如组织信息,管理员账户信息等,最后提示需要注册workspace,按照提示操作即可,默认情况下,会自动选择starter这个plan,这个plan是完全免费的,只是有些限制。(参考资料:https://docs.rocket.chat/v1/docs/our-plans#starter-plan)
下图是登录后的界面:
页面提示了pro trial,这是赠送的30天pro权限
helm(k8s)
参考资料:Deploy with Kubernetes
配置rocket.chat
管理员可以对rocket.chat进行很多配置,如对接LDAP,配置smtp等等。
配置SMTP
参考资料:Configure Email
Email configuration is required to send emails to workspace users for notifications and account verification. This is also useful when you use the Mailer and Email Inboxes features to communicate with people inside and outside your organization.
下图是我的设置,只要配置SMTP部分就可以了
LDAP认证
参考资料:LDAP
rocket.chat原生支持LDAP认证
下图是我的设置
注意,下面的这个search filter是必须要设置的,否则无法同步用户信息
设置完毕后,可以立即同步,可以在左侧的reports中查看日志
同步完成后,就可以在用户下看到所有同步的用户了
用户的status,若是pending指的是,用户已经从LDAP同步了,但是还没有登录过(注册过),活跃,意味着已注册,并且当时在线。
注意:需要以用户名注册,我发现用电子邮箱注册,会提示“user not found”
更改语言
任何用户都可以设置本地语言
用户注册
浏览器地址栏输入:http://your_server_ip:3000
会提示登录,如果rocket.chat中已有账户,此时可以直接登录,接着会提示输入电子邮件中的认证代码,认证成功后即可开始使用rocket.chat
若rocket.chat中无账户,也可以单击“create an account”,注册一个新的账户
room(聊天室)
在Rocket.Chat中,有以下几种room类型:
Channels: Organize conversations across different topics.
Teams: Promotes collaboration between different teams.
Discussions: Allows a separate focused conversation around larger topics in a team or channel.
Direct Messages: Allows one-off conversations that do not require a channel or team.
Thread: Organized conversations around a particular message.
使用rocket.chat聊天
聊天(单聊或群聊)
组织内的用户可以直接聊天,就像企业微信那样
如下图所示,就是聊天页面,这个页面跟discord很像
频道(channel)
rocket.chat有一个很重要的概念叫做room(聊天室),而channel是room的一种类型。
部署好rocket.chat后,会自动创建一个默认的channel,名为GENERAL,所有用户默认加入了此channel
rocket.chat HTTP API示例
请看此文:《rocket.chat HTTP API示例》
rocket.chat python api wrapper
有社区开发者开发了python库,便于通过python开发者使用
请看此文:《rocket.chat python api wrapper示例》