Matrix服务端Synapse搭建/使用
前置需要
docker
生成Synapse配置文件
docker run -it --rm \
--mount type=volume,src=synapse-data,dst=/data \
-e SYNAPSE_SERVER_NAME=my.matrix.host \
-e SYNAPSE_REPORT_STATS=yes \
matrixdotorg/synapse:latest generate
上面的命令会生成一个 homeserver.yaml
通常在/var/lib/docker/volumes/synapse-data/_data
目录下,你应该检查这个文件,并且 根据您的需要定制它。
generate模式支持以下环境变量:
SYNAPSE_SERVER_NAME
:(必须)服务器域名。SYNAPSE_REPORT_STATS
: (必须, yes或者 no)是否启用匿名统计报告。SYNAPSE_HTTP_PORT
: Synapse 应该侦听 http 流量的端口。默认为8008.SYNAPSE_CONFIG_DIR
: 其他配置文件(例如日志配置和事件签名密钥)将被存储。 默认为/data
.SYNAPSE_CONFIG_PATH
: 要生成的文件的路径。 默认为<SYNAPSE_CONFIG_DIR>/homeserver.yaml
SYNAPSE_DATA_DIR
: 生成的配置将放置持久数据的位置 例如数据库和媒体存储。 默认为/data
.UID
,GID
: 用于创建数据的用户 ID 和组 ID 目录。 默认为 991, 991.
有关选择合适的服务器名称的信息,请参阅 https://matrix-org.github.io/synapse/latest/setup/installation.html
运行Synapse
docker run -d --name synapse \
--mount type=volume,src=synapse-data,dst=/data \
-p 8008:8008 \
matrixdotorg/synapse:latest
假设 8008 是 Synapse 配置为侦听 http 流量的端口。
检查它是否已正确启动 docker logs synapse
如果一切顺利,您现在应该能够连接到 http://localhost:8008 并且 查看确认消息。
run模式支持以下环境变量:
SYNAPSE_CONFIG_DIR
:存储其他配置文件的位置。默认为/data
.SYNAPSE_CONFIG_PATH
: 配置文件的路径。默认为<SYNAPSE_CONFIG_DIR>/homeserver.yaml
.SYNAPSE_WORKER
:要执行的模块,在与WORKER一起运行synapse时使用。默认为synapse.app.homeserver
,适用于非WORKER模式。UID
,GID
:运行Synapse的用户和组 ID。默认为991, 991.TZ
:容器将运行的时区。默认为 UTC.
生成(管理员)用户
在配置文件中设置registration_shared_secret
后,重新启动Synapse
- 查看帮助
docker exec -it synapse register_new_matrix_user http://localhost:8008 -c /data/homeserver.yaml --help
- 示例
- 生成管理员用户
docker exec -it synapse register_new_matrix_user http://localhost:8008 -c /data/homeserver.yaml -u adminName -p password -a
- 生成普通用户
docker exec -it synapse register_new_matrix_user http://localhost:8008 -c /data/homeserver.yaml -u userName -p password
- 生成管理员用户
Nginx配置反向代理
需要更新HTTP配置才能使 Synapse
正确记录客户端IP地址,并在反向代理后面生成重定向URL。
在 homeserver.yaml
设置x_forwarded: true
和port: 8008
,考虑设置 bind_addresses: ['127.0.0.1']
这样服务器只监听本地主机上的流量。
使用容器化技术运行Synapse时不要设置
bind_addresses
为127.0.0.1
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name matrix.example.com;
ssl_certificate /path/to/yourssl.pem;
ssl_certificate_key /path/to/yourssl.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
location ~ ^(/_matrix|/_synapse/client) {
# note: do not add a path (even a single /) after the port in `proxy_pass`,
# otherwise nginx will canonicalise the URI and cause signature verification
# errors.
proxy_pass http://localhost:8008;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host;
# Nginx by default only allows file uploads up to 1M in size
# Increase client_max_body_size to match max_upload_size defined in homeserver.yaml
client_max_body_size 50M;
# Synapse responses may be chunked, which is an HTTP/1.1 feature.
proxy_http_version 1.1;
}
}
客户端相关
Element Desktop 启动问题
如果您的系统无法连接到 https://matrix.org 并且您在首次打开 Element Desktop 时看到此错误消息,则可以使用以下步骤修复
-
打开你的终端
-
右键单击并粘贴
cat > ~/.config/Element/config.json
, 然后按回车 -
右键单击并粘贴
{ "default_server_config": { "m.homeserver": { "base_url": "https://matrix.example.com", "server_name": "example.com" } }, "room_directory": { "servers": [] } }
-
Ctrl + C
退出并重启 ElementDesktop
参考文档
- https://hub.docker.com/r/matrixdotorg/synapse
- https://github.com/matrix-org/synapse/blob/master/docs/reverse_proxy.md#nginx
- https://matrix-org.github.io/synapse/latest/setup/installation.html
- https://github.com/mautrix
- https://matrix.org/docs/api/#overview
- https://spec.matrix.org/latest/
- https://matrix.org/docs/develop/
其他相关
Dendrite 是用 Go 语言编写的第二代 Matrix 家庭服务器。高效,可靠,可扩展 它旨在为 Synapse 替代方案,目前还不够成熟。
- https://github.com/matrix-org/dendrite
- https://github.com/matrix-org/dendrite/tree/main/build/docker
- https://github.com/matrix-org/dendrite/blob/main/build/docker/postgres/create_db.sh
- https://github.com/matrix-org/dendrite/blob/main/dendrite-sample.monolith.yaml
- https://github.com/matrix-org/dendrite/blob/main/docs/nginx/monolith-sample.conf
- https://github.com/matrix-org/dendrite/blob/main/build/docker/docker-compose.monolith.yml
- https://federationtester.matrix.org/
- https://matrix-org.github.io/dendrite