Synapse .well-known not available 解决方案
Synapse .well-known not available 解决方案
小树Synapse .well-known not available 解决方案
写在前面
需要注意的是,我并没有采用官方所推荐的“最佳实践”,以下均属于我自己“瞎折腾”,如果你想要一个稳定好用的家服务器,还是建议你去看着官方的文档进行搭建:
Using a reverse proxy with Synapse
从某种程度上来说,我是因为使用官方提供的 Caddyfile 反代失败才自己折腾
前提摘要
在2024年八月份的时候,我们首次在服务器上搭建了基于 Synapse 的 Matrix 服务器,当时的 Caddyfile 是这样的:
1 | talk.example.com { |
就是一个极为简单的反代,之后再套了个 Cloudflare 的CDN,在很长的一段时间内它都运行的很好
在十月份的时候我们进行了一次服务器迁移,但是不要求保留数据,于是我们直接重新起了 docker-compose
之后就出现问题了,我们的小伙伴使用 Element 作为客户端的时候,出现了 .well-known not available
的情况
解决
当时我和另外一个朋友是在 iOS 上使用 Element 作为客户端,没有发生任何问题,所以我们当时怀疑是安卓客户端的问题,提出让该同学使用 Cinny 或者重装尝试
可是后来又有另外一位使用安卓的同学出现了一样的问题,我们这才意识到可能是服务器出现了问题
于是我着手开始解决,搜索之后发现还有许多的用户遇到了类似的问题:
尤其是和我一样使用 Caddy 作为反代服务器的用户还挺多,在参考了一些文章之后,我发现原来是反代的问题:
Matrix Synapse getting no .well-known error - Issues with Federation|Caddy
Delegation of incoming federation traffic|Synapse Docu
Can’t login into my server from newly installed Element|GitHub Issue
在官方的文档里写了这个.well-known
有啥用,大致是为了帮助客户端知道应该要链接哪个服务器,总之我看得很晕
在 GitHub 的一个 Issue 中给出了较为具体的解决方法,大致就是设置一个反代的路由,使其能访问:
1 | (base)~ % curl https://talk.example.com/.well-known/matrix/client |
这样的话客户端就知道要链接到哪个家服务器了
这样的话,按照文档的说法:
Delegation is a Matrix feature allowing a homeserver admin to retain a server_name of example.com so that user IDs, room aliases, etc continue to look like *:example.com, whilst having federation traffic routed to a different server and/or port (e.g. synapse.example.com:443).
授权是 Matrix 的一项功能,允许家庭服务器管理员保留 example.com 的 server_name ,这样用户 ID、房间别名等看起来仍像 *:example.com ,同时联盟流量被路由到不同的服务器和/或端口(如 synapse.example.com:443 )。
应该指的是一个主域名下可以搭建多个服务器,用户只需要输入example.com
,客户端就能自动处理去往哪个家服务器
下面是我的 Caddyfile :
1 | talk.example.com { |
虽然目前这样还没有遇到什么奇怪的问题,但是还有待观察