Matrix服务端搭建

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

  1. 查看帮助
docker exec -it synapse register_new_matrix_user http://localhost:8008 -c /data/homeserver.yaml --help
  1. 示例
    1. 生成管理员用户
      docker exec -it synapse register_new_matrix_user http://localhost:8008 -c /data/homeserver.yaml -u adminName -p password -a
    2. 生成普通用户
      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: trueport: 8008,考虑设置 bind_addresses: ['127.0.0.1']这样服务器只监听本地主机上的流量。

使用容器化技术运行Synapse时不要设置bind_addresses127.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 启动问题

iamge

如果您的系统无法连接到 https://matrix.org 并且您在首次打开 Element Desktop 时看到此错误消息,则可以使用以下步骤修复

  1. 打开你的终端

  2. 右键单击并粘贴 cat > ~/.config/Element/config.json, 然后按回车

  3. 右键单击并粘贴

    {
        "default_server_config": {
            "m.homeserver": {
                "base_url": "https://matrix.example.com",
                "server_name": "example.com"
            }
        },
        "room_directory": {
            "servers": []
        }
    }
  4. Ctrl + C 退出并重启 ElementDesktop

参考文档

其他相关

Dendrite 是用 Go 语言编写的第二代 Matrix 家庭服务器。高效,可靠,可扩展 它旨在为 Synapse 替代方案,目前还不够成熟。