Matrix | 使用 docker 搭建 Synapse 记录

因为想用docker搭建,这里主要参考了使用docker搭建Synapse[Matrix],关于域名问题参考了Matrix踩坑记(一)和南狐的手把手debug。

域名

参考Matrix踩坑记(一),matrix是可以和其他服务共用一个域名的。因为我后续希望账号都是和社畜站的id完全相同,所以我使用retirenow.top这个域名,与此同时服务挂在cafe.retirenow.top。没有这个问题的,都用一样的域名就行。

搭建Synapse

按照教程建立/data/synapse/下的三个文件夹:

1
2
3
4
mkdir /data/synapse
mkdir /data/synapse/data
mkdir /data/synapse/postgres
mkdir /data/synapse/redis

之后都直接按照教程一步步执行即可,输入\q退出。
搭建时使用的所有域名均为retirenow.top。

如果使用不同域名,在修改/data/synapse/data/homeserver.yaml时,除了教程里的内容,还需要修改:

1
public_baseurl: https://cafe.retirenow.top

如果你之后使用cloudflare反代,由于关闭了8448端口,所以这边也要改:

1
serve_server_wellknown: true

到这一步,打开 http://127.0.0.1:55800/ 应该会显示matrix的server界面,提示:

Your Synapse server is listening on this port and is ready for messages.

这就是成功了!就是这么简单!

配置Riot web界面

服务器配置好以后来配置客户端,这边推荐全平台的element。需要注意的是,这里用的是cafe.retirenow.top这个域名,也就是通过打开:

https://cafe.retirenow.top/

来使用matrix。所以cloudflare里应该添加的是cafe到服务器的DNS映射,nginx也应该监听cafe.retirenow.top,只有在element的设置文件中需要指定server_name为retirenow.top。

这里解压到任何路径都可以,因为和前面的server是独立的。我的话解压到了/data/synapse/并改名为element-web:

1
2
3
4
5
6
wget https://github.com/vector-im/element-web/releases/download/v1.10.9-rc.3/element-v1.10.9-rc.3.tar.gz
tar -zxvf element-v1.10.9-rc.3.tar.gz -C /data/synapse
mv /data/synapse/element-v1.10.9-rc.3 /data/synapse/element-web
cd /data/synapse/element-web
cp config.sample.json config.json
vim /data/synapse/element-web/config.json

上面的下载地址请自行替换为最新版本地址

在”m.homeserver”中,修改”base_url”和”server_name”分别如下:

1
2
3
4
5
6
7
8
9
"default_server_config": {
"m.homeserver": {
"base_url": "https://cafe.retirenow.top",
"server_name": "retirenow.top"
},
"m.identity_server": {
"base_url": "https://vector.im"
}
},

配置nginx

在之前就配好的retirenow.top的nginx配置中加上:

1
2
3
4
5
6
7
8
9
10
11
# Matrix
location /.well-known/matrix/client {
return 200 '{"m.homeserver": {"base_url": "https://cafe.retirenow.top"}}';
default_type application/json;
add_header Access-Control-Allow-Origin *;
}
location /.well-known/matrix/server {
return 200 '{"m.server": "cafe.retirenow.top:443"}';
default_type application/json;
add_header Access-Control-Allow-Origin *;
}

然后新建一个cafe.retirenow.top的配置。

1
2
cd /etc/nginx/sites-available
vim cafe.retirenow.top.conf

依然按照使用docker搭建Synapse[Matrix]配置,但是删掉上面被挪到retirenow.top的那几行。
更改所有域名为cafe.retirenow.top,然后更改cafe.retirenow.top.conf的这三行为:

1
2
3
ssl_certificate /etc/letsencrypt/live/cafe.retirenow.top/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/cafe.retirenow.top/privkey.pem; # managed by Certbot
root /data/synapse/element-web;

申请证书,reload nginx:

1
2
3
certbot certonly --nginx -d cafe.retirenow.top
ln -s /etc/nginx/sites-available/cafe.retirenow.top.conf /etc/nginx/sites-enabled/
systemctl reload nginx

我的certbot一定要这么搞才可以成功,至今不知道为什么,会搞certbot的用你自己的流程搞就可以了。要点就是这里要用cafe.retirenow.top.conf。

cloudflare添加好DNS记录,就可以直接打开啦:

https://cafe.retirenow.top/

配置管理页面

新建一个管理员账号:

1
2
cd /data/synapse
docker-compose exec synapse register_new_matrix_user -c /data/homeserver.yaml http://localhost:8008

按照提示输入账号密码,在Make admin [no]: 时输入yes,之后可以直接在网页上改密码且不需要邮箱,很方便,所以不用配邮箱服务了。

然后搭建管理界面:

1
docker run -d -p 8100:80 awesometechnologies/synapse-admin

就可以通过访问:
http://localhost:59242
来使用管理页面。