Matrix 聊天服务器使用介绍

 

Matrix 是什么

Matrix 官方对自己的介绍是:一个用于安全、去中心化通信的开放网络。这个说法听起来很抽象,换成更日常的类比,可以把 Matrix 理解成“即时通讯领域里的电子邮件协议”。

使用电子邮件时,你不需要和朋友注册同一家邮箱服务。一个人可以用 Gmail,另一个人可以用 Outlook,也有人可以自己搭建邮件服务器。只要这些服务器都遵守同一套邮件协议,彼此就能发送和接收邮件。Matrix 想解决的是类似的问题:聊天不应该天然绑定在某一家公司、某一个 App 或某一个封闭账号系统里。

所以 Matrix 首先不是一个单独的聊天软件,而是一套开放协议和围绕协议形成的生态。你可以用 Element、FluffyChat、Cinny 这类客户端登录 Matrix 账号;也可以选择 matrix.org 这样的公共 homeserver,或者自己部署 Synapse、Conduit、Dendrite 等服务端实现。账号通常长得像 @username:example.com,前半段是用户名,后半段是服务所在的域名,这一点也很像邮箱地址。

Matrix 的核心价值也由此而来:它把“通信协议”和“具体服务商”拆开。微信、QQ、WhatsApp、Telegram、Signal 这类产品里,协议、服务器、客户端、账号体系和运营规则通常都被同一家公司控制;Matrix 则更像一套可以由不同人共同运行的公共通信基础设施。

一个 Matrix 服务长什么样

一个最基础的 Matrix 聊天服务,大致由客户端、homeserver 和联邦通信三部分组成。

客户端负责用户真正看见的界面:消息列表、房间、表情、文件、通知、音视频入口,以及端到端加密相关的验证提示。客户端本身一般不会直接去找对方的设备通信,而是连接到自己账号所属的 homeserver。比如 @alice:example.com 登录 Element 后,Element 会通过 Matrix 的 Client-Server API 和 example.com 这台 homeserver 交互。

homeserver 负责保存账号、房间状态、消息事件、设备列表、密钥材料的公开部分,以及和其他服务器同步房间历史。Matrix 里的消息不是简单的一条数据库记录,而是一个个事件。发消息、改头像、加入房间、撤回消息、修改房间名,本质上都是事件。homeserver 会把这些事件组织成房间历史,并在参与同一个房间的其他 homeserver 之间同步。

联邦通信则是 Matrix 和普通中心化聊天服务最明显的区别。假设 Alice 的账号在 alice.com,Bob 的账号在 bob.com,两个人加入同一个房间后,Alice 发出的消息会先到 alice.com 的 homeserver,再由它通过 Server-Server API 同步到 bob.com。Bob 的客户端只需要从 bob.com 拉取更新。对用户来说,这像是在同一个群里聊天;对服务器来说,这是多个服务端共同维护一个房间状态。

这种架构带来的结果是:Matrix 可以自然支持跨服务商通信,也可以支持桥接服务。所谓 bridge,就是把 Matrix 房间和 IRC、Discord、Slack、Telegram 等外部平台连接起来。桥接不一定完美,因为不同平台的权限、消息格式和删除语义都不一样,但它体现了 Matrix 的一个重要方向:把聊天系统做成开放互联的网络。

音视频聊天也是类似思路。最简单的一对一通话可以用 WebRTC 在两个客户端之间建立媒体连接,Matrix 房间负责传递呼叫邀请、设备信息和会话状态。多人通话会复杂很多,因为每个客户端互相直连会迅速消耗带宽和 CPU,所以 Element Call 这类实现通常会把 Matrix 用作身份、房间和信令层,再配合专门的媒体服务或 SFU (媒体转发服务)来转发音视频流。换句话说,Matrix 不仅有“聊天文本”,它更包括开放的聊天,文本消息、文件、表情反应、通话入口都可以放在同一套房间模型里。

和商业聊天服务相比

如果只看上手体验,Matrix 并不一定比微信、QQ、WhatsApp、Telegram 或 Signal 更容易。商业聊天服务的优势很明确:下载一个官方 App,绑定手机号或账号,通讯录自动发现好友,然后直接聊天。大部分复杂度都被平台藏起来了,用户甚至不需要知道服务器在哪里。

但这种便利也有代价。中心化平台通常决定了你能用什么客户端,消息和联系人数据放在哪里,账号是否会被封禁,能不能导出历史,第三方客户端是否被允许,以及服务停止或改变规则时用户有没有选择权。即使某些平台提供端到端加密,用户依然必须信任它的客户端分发、账号系统、元数据处理方式和运营政策。

Matrix 的优势正好在这些地方。它的协议和主流实现是开源的,服务端可以自托管,客户端可以替换,房间可以跨服务器联邦通信。你可以选择公共服务,也可以把账号和房间放在自己的域名下;你可以用官方或第三方客户端,也可以自己开发工具接入。对个人、小团队、社区和希望保留基础设施控制权的组织来说,这种可控性非常重要。服务托管商也可以根据自己的需求组合不同的功能,保留相当大的独立性和自定义能力。

隐私方面,Matrix 支持端到端加密。开启加密后,房间消息内容由参与者设备加密和解密,homeserver 理论上只能看到加密后的事件、发送者、接收房间、时间等必要元数据,而不能直接读取消息正文。端到端加密把服务器从“明文存放可读消息内容的中心数据库”降级为“同步加密事件和状态的设施”。

不过 Matrix 也不是没有成本。首先,它的使用逻辑和普通聊天软件不同。用户需要理解 homeserver、Matrix ID、房间、空间、设备验证这些概念;跨服务器通信有时也会遇到延迟、头像或附件加载失败、公共房间目录差异等问题。其次,自托管并不等于绝对安全。你仍然要信任自己部署的服务端软件、服务器系统、反向代理、数据库、备份策略和管理员操作。最后,自托管还有现实成本:域名、服务器、存储、邮件通知、监控、升级、滥用处理、备份恢复,都是要长期维护的东西。

所以更准确的说法是:Matrix 把选择权还给用户和社区,但选择权不是免费的。它适合愿意为了开放性、可迁移性和控制权承担额外复杂度的人,不一定适合所有只想“马上和亲友聊天”的场景。

和其他开源聊天协议相比

Matrix 不是第一个开放聊天协议。IRC 和 XMPP 都比它更早,也都影响了很长一段时间的互联网通信。

IRC 的优点是简单、轻量、历史悠久。很多开源社区至今仍然有 IRC 频道,它适合公开房间、文本讨论和机器人集成。但 IRC 的基础模型比较老,离线消息、多设备同步、历史记录、媒体附件、端到端加密、身份验证和移动端推送都不是它原生最擅长的部分。许多能力可以通过服务端扩展、bouncer 或客户端约定补上,但整体体验很难和现代聊天软件相比,很多时候给人的印象是整体看起来像是一个上古时期的聊天室。

XMPP 更接近 Matrix 的目标:它也是开放、可联邦的通信协议,也有很多扩展协议来支持群聊、文件、加密、语音视频等功能。问题在于,XMPP 的生态长期高度依赖扩展组合,不同服务端和客户端支持的 XEP 不完全一致,实际互通体验经常取决于具体实现。对技术用户来说这不是不能接受,但对普通用户来说,功能是否可用往往变成了“客户端 A、服务端 B、扩展 C 是否刚好都支持”的问题。

Matrix 的相对优势在于它从一开始就按现代聊天体验设计:房间历史、多设备同步、图片和文件、消息编辑和撤回、表情反应、富文本、端到端加密、桥接、空间组织、客户端和服务端 API 都是生态里的核心议题。它不一定比 IRC 或 XMPP 更轻,但它更像是在尝试用开放协议复刻现代商业聊天软件已经让用户习惯的体验。

当然,这也意味着 Matrix 更复杂。Synapse 这样的 homeserver 对资源的要求明显高于传统 IRC 服务;加密、多设备、联邦状态解析和媒体处理都会带来维护成本。Matrix 的方向不是“最小聊天协议”,而是“开放的现代通信网络”。这两者的取舍并不相同。

端到端加密和新设备验证

Matrix 里最容易让新用户困惑的功能,往往是端到端加密和设备验证。

端到端加密的目标很直接:消息在发送设备上加密,在接收设备上解密,中间经过的 homeserver 不应该能读取明文。Matrix 的加密实现会把“设备”看得非常重要。同一个账号登录手机、电脑、浏览器,通常会被视为多个设备,每个设备都有自己的身份密钥和会话密钥。这样做的好处是,一台设备泄露不会自动等同于所有设备都泄露;坏处是,用户会看到比普通聊天软件更多的验证流程。

最常见的场景是登录新设备。比如你已经在手机上登录了 Matrix,现在又在电脑浏览器里登录。新设备刚登录时,它还没有被其他已信任设备确认。客户端可能会提示你使用另一个已登录设备扫码,或者比较一组 emoji / 数字。这个过程有点像两步验证,目的是确认“这个新设备确实属于我”,防止有人拿到账号密码后偷偷加入你的加密会话。

验证完成后,已信任设备可以向新设备安全地共享必要的房间密钥。否则,新设备可能只能看到登录之后收到的新消息,看不到过去加密房间里的历史消息,或者看到“无法解密此消息”一类提示。这是端到端加密的结果:服务器没有明文就不能凭空替你解密旧消息。

另一个常见问题是恢复密钥。很多客户端会要求设置安全短语或保存恢复密钥,用来在没有旧设备可用时恢复加密消息访问。这个密钥非常重要:忘记它,旧设备又全部丢失,就可能真的无法恢复历史加密消息;泄露它,则可能让别人导入你的加密备份。因此它更像密码管理器的主密码,而不是普通验证码。

还有一个容易误解的点:端到端加密保护的是消息内容,不是所有信息。homeserver 仍然需要知道账号、房间、事件时间、设备列表、部分成员关系和流量模式等元数据,否则系统无法同步消息和管理房间。Matrix 的隐私保护强在开放协议、可选择服务端、可审计客户端和消息内容加密,但它不是匿名网络,也不是把所有通信痕迹都抹掉的工具。

总结

Matrix 适合把聊天看成基础设施的人。它不像微信或 WhatsApp 那样把一切包装成一个封闭产品,也不像 IRC 那样停留在非常轻量的文本时代。它更像电子邮件:协议开放,服务可选,客户端可换,既可以使用公共服务,也可以自己托管。

它的优点是开源、联邦、可自托管、可桥接,并且支持现代聊天需要的端到端加密、多设备同步、文件和音视频能力。它的缺点也很现实:概念更多,体验有时不如中心化平台顺滑,自托管需要承担服务器、信任、成本和长期维护问题。

如果只是找一个亲友都能立刻上手的聊天软件,Matrix 未必是最省事的选择。但如果你在意通信系统的开放性、可迁移性和数据控制权,Matrix 是目前少数真正值得认真尝试的现代方案。

参考资料:

  1. Matrix.org
  2. Matrix: Elements of Matrix
  3. Matrix: End-to-End Encryption implementation guide

评论系统尚未配置。请在 .env 中填写 giscus 所需的环境变量。