Tuwunel
更新于 2026-09-19 20:36:47
先说清楚它的来历
很多人还在推荐「Conduit」——但那条线已经换了两代,现在是 Tuwunel:
| 项目 | 状态 |
|---|---|
| Conduit(timokoesters/conduit) | 早期 Rust Matrix 服务端,GitHub 上只是镜像 |
| conduwuit(x86pup/conduwuit) | Conduit 的功能增强分支,仓库已 archived(归档) |
| Tuwunel(本项目) | conduwuit 的官方继任者,现役主力,每日提交 |
| continuwuity | 另一条社区路线,主仓库在 Forgejo(GitHub 仅镜像) |
所以 2026 年要自建轻量 Matrix homeserver,先看 Tuwunel,不要再看 Conduit 的老教程。
它是什么
纯 Rust 实现的 Matrix 服务端,定位就是「Synapse 的轻量替代」:可以用你喜欢的任意 Matrix 客户端(Element 等)、bridge、bot 接入,完整实现 Matrix 规范(除极冷门特性)。
关键事实(不是宣传语,是 README 原话):
- 已被多家公司投入生产使用,主要赞助方是瑞士政府,且目前在为瑞士公民部署
- 支持 Docker / 单文件静态二进制 / deb / rpm / apt 源 / COPR(Fedora)/ AUR(Arch)/ Nix + NixOS 模块 / Alpine / Gentoo
- Ansible 一键部署:
matrix-docker-ansible-deploy有专门的 tuwunel 剧本 - 官方 demo 服务器:https://try.tuwunel.chat
- 许可证 Apache-2.0(比 Synapse 的 AGPL-3.0 对商用闭源集成更友好)
快速上手
Rust 党最舒服的方式是 Docker,配置只需要两个必填项:
cp tuwunel-example.toml tuwunel.toml
# 必填:server_name(你的域名)、database_path(RocksDB 路径)
docker pull ghcr.io/matrix-construct/tuwunel:latest
推荐搭配 Caddy 自动签证书,把 Tuwunel 和 Element Web 放一起:
tuwunel.me, tuwunel.me:8448 {
reverse_proxy localhost:8008
}
web.tuwunel.me {
root * /var/www/element/
file_server
}
两个官方 TIP,能省很多事:
server_name永远不要用子域名,而且一旦定了就不能改。想用子域,后面靠.well-known委派(delegation)解决——顺序不能反。- 配好
registration_token并设置allow_registration = true,第一个注册的账号自动成为服务端管理员。
迁移:能搬的、不能搬的
官方给了一张明确的表,这点比含糊其辞的项目靠谱:
| 从哪迁来 | 是否支持 |
|---|---|
| conduwuit | ✅ 二进制换名即可(yaml、CONDUWUIT_ 前缀环境变量都还能认) |
| conduwuit 的某个 fork | ✅ 首次启动原地迁移 RocksDB |
| Conduit | ✅ 原地迁移,房间历史/账号数据/媒体自动带过来 |
| Synapse | ❌ 暂不支持(issue #2 在建,这是目前最大的短板) |
| 其他 Conduit fork | ❌ 不行,必须白名单内的来源 |
⚠️ 官方警告:Conduit 系的各个分支共用一条数据库版本线但互不知情,在两个不同的 fork 之间来回切换数据库可能永久损坏数据。迁移前务必备份。
语音/视频怎么接
Matrix 服务端本身不碰媒体流,它只管信令和消息。所以要凑齐"低延迟语音"这一环:
- 1:1 通话:Element 走 Matrix VoIP(WebRTC),点一下就能打
- 群组通话:用 Element Call,底层是 LiveKit(SFU,不用 mesh,百人会议也不至于把上行打爆)
- 替代方案:服务端挂 Jitsi Meet,Element 里以 widget 形式嵌入,这也是最经典的自建组合
也就是说:Tuwunel 负责"数据 + 身份 + 权限",LiveKit / Jitsi 负责"低延迟音视频",两者是搭配关系,不是二选一。
必须知道的坑
- Synapse → Tuwunel 还不能迁。老实例想换,现在只有全新开局或等官方支持。
server_name不可变。早期选错域名的代价就是重建实例。- 它对资源的胃口小,但不是零。RocksDB 吃磁盘 IO,小 VPS 上建议 SSD;媒体文件建议单独挂盘或接 S3(矩阵媒体会慢慢吃掉整个盘)。
- 规范覆盖有边界:README 自己写的是"除最冷门的部分外全实现",遇到企业级边缘特性(复杂 MSC)可能碰壁。要 100% 规范兼容,还是 Synapse。
- 单一维护者风险依然存在(项目由 Jason Volk 主导),不过已有瑞士政府与多家公司赞助,比纯个人项目稳。
- 联邦默认是开着的,内部自用要主动限制(私网 federation 白名单/关闭联邦)。
二开与集成建议
- 组合拳推荐:
Tuwunel(Rust,轻)+ Element Web(客户端)+ LiveKit(群通话)+ Jitsi(可选,会议 widget),一台 2~4GB 内存的 VPS 就能撑起小团队完整协作。 - 管理侧:Tuwunel 自带管理 API,用户/房间/媒体清理可以脚本化;要图形界面就配 Synapse Admin(第三方 Web UI)或直接写调用脚本。
- 部署就别手搓:直接上
matrix-docker-ansible-deploy,升级、证书、Element、Coturn、LiveKit 都有人替你串好。 - 监控:盯 RocksDB 目录体积 + 媒体存储增长,这两项是长期运维里最容易爆的地方。
一句话总结
Conduit 那条轻量路线并没有死,而是收敛成了 Tuwunel——Rust、Apache-2.0、已经进了瑞士政府的生产环境;如果你想要 Matrix 的联邦与端到端加密,又不想被 Synapse 的内存和运维劝退,这是目前最值得上的那一台;唯一要提前接受的是:Synapse 老实例暂时搬不过来。