前言

先来对Matrix做一个介绍。Matrix是一个去中心化加密通信协议,所有对话都支持端到端加密,非常的安全。并且Matrix协议还支持很多特性:WebRTC音视频通话、消息已读提示、输入状态提示、群组聊天等,总之就是非常强大

这么强大的东西在国外还有些许热度,到了国内就很少人知道,以至于在查找相关资料和文档的时候国内的基本都是部署个服务端就跑路了( ﹁ ﹁ ) ,部署完服务端之后还有很多麻烦事情:


- Element X(新版移动客户端)不支持默认只有服务端的用户注册,只支持登陆

- 音视频通话需要额外部署turn服务,并且如果使用Element X还得额外配置livekit和jwt服务

- 旧版本的Element移动客户端默认使用matrix.org服务器,但是该服务器国内几乎无法访问,这就导致如果使用旧版就会一直在转圈圈。就算幸运的成功进入登陆界面之后不支持很多未来特性

所以出于用户方便角度考虑,本人打算一次解决所有痛点,狠狠的赤下了官方又臭又杂的文档,把该踩的坑基本都踩了,最终也是成功跑通全流程,包含Element X的用户注册和音视频通话。后续可能会考虑折腾一下接入telegram,实现两者间的消息互通,还有可能整些色图机器人,用途嘛嘿嘿嘿~

截至笔者落笔的时间,2025年12月7日,在matrix的官网中,介绍的服务端已经出了不少新的服务端,这里的服务端选用的是 Synapse ,因为对Matrix特性的支持最完整,开发最久,稳定性也是最好,不过缺点就在于Synapse是由python写的所以对服务器的性能要求会高一些。自从matrix基金会无力维护Synapse而转手交给element之后,element就推出了企业版本的Synapse Pro,并在此基础上开发Element Server Suit,Synapse服务端的日子算是一眼望不到头啊。不过后面可能会折腾一下新出的Tuwunel服务端,刚刚翻了一下好像对于特性的支持还是比较丰富的。

image-20251207103950369

部署介绍

软硬件要求

一台云服务器,一个域名

💡此处域名需要能够正常被反向代理解析,也就意味着如果服务器在境内可能需要进行备案。具体没测试过所以此处不深究

笔者此处云服务器使用Ubuntu22安装了1Panel面板来方便进行文件管理、docker镜像部署和证书网站管理。当然如果头铁可以试试全程shell操作

项目构成

  • Synapse服务端

  • Matrix Authentication Service认证服务

  • Sliding Sync滑动代理

  • Livekit组件

  • Livekit jwt中间件

  • Element Web客户端

  • Postgres数据库

  • Coturn信令服务器

  • 其他外围要求

  • OpenResty或者Nginx(Caddy官方文档有提供支持,但是可配置的项目还是太少所以选择了nginx系)

  • Docker / Docker Compose

项目目录结构


~/matrix/

├── synapse/

│ ├── data/

├── mas/

│ └── config.yaml

├── element-web/

│ └── config.json

├── element-call/

│ └── livekit.yaml

├── postgres/

│ └── data/

├── docker-compose.yml

├── .env