在同一域名下部署 mastodon 与 matrix
本文最后更新于 2024年8月23日 晚上
背景
前段时间部署了 matrix 服务器,并水了一篇博客,现在又对 mastodon 心心念念,今天终于开始尝试 mastodon 了! mastodon 的部署还是挺简单的,先安装 aur 的 mastodon
包, 按照 postinstall
的指示进行。很快我就将 mastodon 部署在了境内的腾讯云服务器上。
但是,我希望我的 local domain 是 askk.cc
,web domain 是 mastodon.askk.cc
, 这个诉求很简单,改一下 mastodon 的配置文件就行了,参见 mastodon 文档. 不推荐参考 使用你的主网域作為 Mastodon 實例名。
可是,还有个问题是,我的主域名已经被 matrix 占用了,并且,服务端 dendrite 部署在境外的服务器上,而且主域名 askk.cc
也解析到了境外。
我该怎么办呢?
失败的尝试
首先呢,想到腾讯的 DNSPOD 可以将一个域名解析到多个 IP, 我将主域名解析到两个服务器不就行了嘛。我试了下,失败,一堆 matrix 的请求发到了 mastodon 所在服务器。
成功的尝试
想到 Nick Cao 老师曾经提过, dendrite 的 homeserver 与 well-known server 不一定要在一台服务器上,于是我想到了把 dendrite 的 homeserver 搬到境内,well-known server 还是在境外,dendrite 也还是运行在境外的机器上。
mastodon 本身就支持 LOCAL_DOMAIN
跟 WEB_DOMAIN
,根据我的需求, WEB_DOMAIN
是 mastoson.askk.cc
,也就是 WEB 面板,LOCAL_DOMAIN
是 askk.cc
,它决定了我的帐号叫 @i@askk.cc
。根据 mastodon 的文档
To install Mastodon on
mastodon.example.com
in such a way it can serve@alice@example.com
, setLOCAL_DOMAIN
toexample.com
andWEB_DOMAIN
tomastodon.example.com
. This also requires additional configuration on the server hostingexample.com
to redirect or proxy requests tohttps://example.com/.well-known/webfinger
tohttps://mastodon.example.com/.well-known/webfinger
. For instance, with nginx, the configuration could look like the following:
1
2
3
location /.well-known/webfinger {
return 301 https://mastodon.example.com$request_uri;
}
我们只要在 askk.cc
的 Nginx 配置文件里面加上这么一段就可以了,最后我的 主域名配置文件变成了这样子
1 |
|
先将 askk.cc 解析到 mastodon 所在的服务器上。然后在该服务器上进行下面的操作。
修改 mastodon 的 nginx 配置 /etc/nginx/conf.d/mastodon.conf
,在合适的位置加入了include conf.d/matrix_homeserver.conf.sub;
1 |
|
其中 /etc/nginx/conf.d/matrix_homeserver.conf.sub
的内容为
1 |
|
其实就是从境外服务器 dendrite 的 nginx 配置里面把 homeserver 部分的配置抄了出来。主要的点其实在于 location ~ ^/_matrix/
这一段。后面的 well-known 我也顺便抄了过来。
最后重启 nginx
服务就好了。 matrix 跟 mastodon 运行在同一个域名下,并且一个在境内,一个在境外。
总结
突然发现 dendrite 的配置真的非常灵活,有非常多的可能性,而 mastodon 的话,感觉就不如 dendrite 灵活。 mastodon 也非常灵活!