自建聊天服务记录
尝试了 Stoat(前身为Revolt)、Tailchat、Matirx,发现没有尽善尽美的方案。
事件背景
联机游戏时为方便沟通,需要一个支持如下特性的聊天软件:
- 支持包括 Web 端在内的多平台客户端
- 至少支持语音聊天
- 除满足基本聊天需求外,操作人性化,没有太多学习成本
- 能够快速完成自托管,软件库依赖关系简洁清晰,不频繁分叉或破坏性更新
方案选型
经过搜索,敲定如下三个开源项目:
- Stoat,前身为 Revolt
- Tailchat
- Matrix
方案考察及评估
几个项目均实现 docker 部署并进行体验,最后感受一言难尽。
简言之,项目分叉或破坏性更新导致使用功能相对完善的老版本会担心后续更新和迁移问题,使用代表未来的新版本又缺失大量基础功能。
这也是人类大型工程项目的常态了,早期设计难以周全所有使用场景,中期面对各种未曾预料的问题陷入分歧,末期要么忍受屎山的异味,要么另起炉灶希望解决所有问题。
然而对于本就缺乏资源投入,全凭开发者热情的开源项目,很多时候是从一个烂摊子变成两个烂摊子……
以下内容记录截至 2026-07-01,由于各项目都会不断更新,需注意本文时效性。
Stoat
前身 Revolt 收到了侵权通知,因故改名 Stoat。无论是从 UI 风格还是设计理念,这是一个对标 Discord 的平台。
从 Revolt 的 README.md 来看,最后一次更新是 9 个月之前,那么自然优先考虑部署 Stoat。
实际体验下来,虽然大多数体验已经做得和 Discord 近似了,但是在今年 3 月份发现还不支持音频通话,从官方路线图看,语音聊天在 2025 年底就已实现,也许是我部署得有问题。
提到部署,就不得不吐槽一下,其 docker 配置依赖十余个镜像,若干配置文件。也许对于中大型社区有必要依赖这么多镜像以提高可拓展性和可用性,但是对于 20 人以下的小社区来说,维护成本高于使用回报了。
总之,在 UI 设计、使用体验上都很成熟,社区维护力度尚可,音视频功不太完备,但可预期的将来应该有所改善。端到端加密在规划中,官方的意思是这项功能牵涉修改颇多,与其用一个糟糕的实现,不如实现好了再端上来。未来可期。
Tailchat
文字聊天没问题,通过 LiveKit 可以支持音视频聊天,就是 UI 设计上还略显稚嫩,毕竟主力开发者不多,精力难以兼顾。
个位数的 docker 镜像依赖,虽然配置文件也很多,但是官方提供的文档照做基本上就能很快部署起来。
不过 LiveKit 的部署就比较麻烦,想省事可以直接用 LiveKit 出售的服务,免费计划足够轻量语音通话,如果长时间挂机就不够了。
对比 Stoat 的复杂度,Tailchat 更适合中小型社区,其作者是国人,中文文档比较完备,如无特殊需求日常使用足够。
Matrix
知名度颇高,被欧盟政府用作内部联络的平台,可以说是开源项目的榜样之一了。
docker 配置是最少的,各种配置文件也简洁,几乎可以说是开箱即用。
在不自行部署音视频服务镜像的情况下,使用 Element 网页端和安卓端经典版可以用他们提供的音视频服务,音频通话还行,视频通话十分模糊。
安卓端新推出的 X 版本似乎只能使用自己部署的音视频服务。
官方似乎在推动音视频通话从 LiveKit 切换到自己开发的 MatrixRTC ,Element 在 2 月份有一篇文章:Exploring MatrixRTC: Real time communication in rooms
但 Matrix 也不是十全十美的,开源社区的碎片化在这里体现得十分明显。
客户端五花八门。除了主流的 Element 还有数个不同理念,不同平台的客户端,对协议的支持程度各不相同,导致出现了 UI 好看的客户端功能不全,功能相对完整的客户端 UI 十分传统。这里点名 Element 新推出的 X 版本安卓端和传统版本的差异。
如果客户端的碎片化只是影响用户体验,那么服务端的碎片化就十分影响运维的工作了。
不同服务端对协议的支持程度不同,开发资源供应迥异,以至于在网上能看到用了某个服务端后,想迁移到其他服务端需要自己了解对应实现,手动编写脚本迁移数据,甚至迁移失败。
更有甚者服务端直接停止支持,开发人员转移到其他内容的开发上,变成孤儿服务端。
如果没有特殊需求,为避免这种情况建议随大流选择用户最多的实现。
总结
Unix 设计哲学的“单一职责”理论屡试不爽,仅从开源社区的情况来看,使用体验最好的软件几乎都是只做一个核心功能的软件,野心越大的软件越面临资源调度和众口难调的问题。
对于复杂需求,想找到完全满足的软件几乎不可能,同时出于开发成本和开发周期的考量,也难以自己实现。
或许在不久的将来 AI 真能带来惊喜,借助 AI 的力量就能在可控的人力成本和时间成本条件下实现满足自己所有需求的软件……