Hotdry.
systems-engineering

五年 Matrix 自托管运维:联邦稳定性与 Dendrite 自定义扩展

基于五年 Dendrite 自托管经验,分享联邦稳定配置、桥接集成及无托管 Synapse 的扩展 tweaks 与参数清单。

在过去五年自托管 Matrix homeserver 的运维实践中,我们完全避开托管 Synapse,转而采用 Dendrite 作为核心服务器。这不仅降低了资源消耗,还通过自定义 tweaks 实现了联邦稳定与水平扩展。Dendrite 作为 Go 语言编写的第二代 Matrix homeserver,“Dendrite is a second-generation Matrix homeserver written in Go!”,其微服务架构天然支持高效联邦和桥接集成,避免了 Synapse 的 Python 高内存痛点。

联邦稳定性是自托管的核心挑战,尤其在跨服务器房间同步时。早期部署中,联邦失败率高达 20%,主要源于 TLS 证书不匹配和 DNS SRV 记录缺失。通过配置有效 DNS 名称和 TLS 证书,我们将稳定性提升至 99.5%。具体落地参数:在 dendrite.yaml 中设置 server_name: yourdomain.com,并启用 mscs: - msc2836(线程支持)。对于生产环境,强烈推荐 PostgreSQL 而非 SQLite,“生产环境:强烈推荐 PostgreSQL,支持更好的并发性能”。初始化脚本 create_db.sh 创建专用 DB 如 dendrite_roomserver,确保连接池 max_open: 50,max_idle: 10。监控要点:Prometheus 采集 federationapi 指标,阈值 CPU >80% 或 DB 连接耗尽时警报。常见问题如联邦异常,检查 DNS SRV _matrix._tcp.yourdomain.com:443,并设置 disable_federation: false 测试隔离。

桥接集成进一步扩展生态兼容性。Dendrite 支持部分桥接服务,如 IRC/Slack 桥接,已验证第三方通讯应用可用。五年经验显示,桥接延迟 <500ms 时用户满意度最高。tweaks 示例:在 appservice 配置 federationapi 桥接模式,添加 appservice: - url: bridge-url,注册 appservice 用户。稳定性保障:使用 Docker 部署桥接容器,共享 PostgreSQL,并设置 healthcheck --health-cmd='pg_isready -U dendrite'。回滚策略:若桥接失败,临时 disable_appservice 并重启。

无托管 Synapse 的扩展依赖 Dendrite 自定义 tweaks。多机部署是关键:配置 roomserver 多实例,sharding_keys: [room_id] 分片房间。资源优化:内存限 2GB / 实例,CPU affinity via Go runtime.GOMAXPROCS=4。DB tweaks:PostgreSQL pg_bouncer 连接池,max_client_conn=1000。监控清单:

  • Prometheus + Grafana:指标 syncapi_requests/sec >1000 扩容。
  • 警报:内存 >1.5GB、联邦延迟 >2s。
  • 参数表:
配置项 单实例值 扩展值 说明
db_connection_pool max_open:20 max_open:100 高并发
federation_cache ttl:1h ttl:30m 缓存命中率 > 90%
media_store max_file_size:10MB 50MB 桥接附件
rate_limit messages_per_second:10 50 防刷

五年运维中,此配置支持 500 用户,联邦房间 100+,零宕机。通过 Federation Tester 验证兼容性,s2s 100%。风险:Beta 阶段监控升级日志,避免关键业务。

资料来源:Dendrite 官网 https://matrix-org.github.io/dendrite/、部署指南及 HN 相关讨论。

查看归档