Matrix

出自 ArchWiki

Matrix 是一个雄心勃勃的全新生态系统,用于开放的联邦式即时消息和 VoIP。它由服务器、客户端桥接 软件组成,用于连接到现有的消息解决方案,如 IRC

Arch Linux 的 Matrix 频道位于 #archlinux:archlinux.org。一些国际社区有他们自己的 Matrix 房间;有关详细信息,请参阅 国际社区

关于客户端,请参阅 应用程序列表/互联网#Matrix 客户端

您可以选择使用像 https://matrix.org 这样的现有服务器,或者托管您自己的 Synapse 服务器,这将在下面描述。

安装

参考服务器实现 Synapse 可以通过 matrix-synapse 软件包获得,它会创建一个 synapse 用户。

配置

安装后,需要生成一个配置文件。它应该对 synapse 用户是可读的

# generate_config --server-name my.domain.name \
                  --config-dir /etc/synapse \
                  --data-dir /var/lib/synapse \
                  --report-stats yes \
                  --generate-secrets \
                  --output-file /etc/synapse/homeserver.yaml

# generate_log_config -o /etc/synapse/my.domain.name.log.config \
                      -f /var/log/synapse/homeserver.log
                      
# generate_signing_key --output_file /etc/synapse/my.domain.name.signing.key

# chown -R synapse:synapse /etc/synapse \
                           /var/log/synapse

请注意,这将为指定的服务器名称生成相应的 SSL 密钥和自签名证书。如果您更改服务器名称,则必须重新生成它们。

如果您的 Synapse 服务器旨在通过互联网访问,则强烈建议配置 反向代理

数据库

Synapse 仅使用 SQLite 进行服务器测试,Postgres 用于实际运行。

要使用 Postgres,您需要安装 python-psycopg2 软件包。

您可以在官方网站上阅读更多关于安装和配置的信息:使用 Postgres

服务

synapse.service systemd 服务包含在 matrix-synapse 软件包中。它将以用户 synapse 身份启动 Synapse 服务器,并使用配置文件 /etc/synapse/homeserver.yaml

用户管理

您的新 Synapse 服务器上至少需要一个用户。您可以使用以下命令以您的普通非 root 用户身份创建一个用户

[synapse]$ register_new_matrix_user -c /etc/synapse/homeserver.yaml http://127.0.0.1:8008

或者使用 Matrix 客户端 之一,例如 element-desktop,或者 purple-matrix-gitAUR 插件,用于 libpurple

Spider 网络爬虫

要启用网络爬虫以实现服务器生成的链接预览,必须安装额外的软件包 python-lxmlpython-netaddr。之后,可以在您的 homeserver.yaml 中设置选项 url_preview_enabled: True。为防止 Synapse 服务器向内部主机发出任意 GET 请求,必须设置 url_preview_ip_range_blacklist:

警告: 默认情况下,黑名单为空:在没有配置的情况下,Synapse 服务器可以爬取所有内部主机。

有一些示例可以取消注释。将您的本地 IP 范围添加到该列表,以防止 Synapse 服务器尝试爬取它们。更改 homeserver.yaml 后,必须重新启动服务。

有趣的频道

KDE 社区有各种各样的 Matrix 房间,用于特定的应用程序、语言、活动等。有关详细信息,请参阅 https://community.kde.org/Matrix

GNOME 社区也有一个 Matrix 实例,用于其即时通信,其中包含各种各样的 Matrix 房间。有关详细信息,请参阅 https://wiki.gnome.org/GettingInTouch/Matrix

故障排除

只读文件系统

默认情况下,Synapse 只能写入其服务文件中设置的工作目录 (/var/lib/synapse)。如果 Synapse 写入到不同的路径(例如,您的媒体存储位于 /var/lib/matrix-synapse/media),则可能会发生写入错误。

您可以通过为 synapse.service 创建 替换单元文件,并在 [Service] 部分添加 ReadWritePaths=your_paths 来允许访问其他目录。

高内存占用

通过安装 jemalloc,可以显著减少 Synapse 的内存占用[1]。要启用它,必须相应地设置环境变量 LD_PRELOAD。这可以通过创建 /etc/default/synapse 来完成,它将由 systemd 单元文件应用。[2]

/etc/default/synapse
LD_PRELOAD=/usr/lib/libjemalloc.so

启用 jemalloc 后,可以通过调整缓存设置进一步减少内存占用:[3]

/etc/synapse/homeserver.yaml
caches:
  cache_autotuning:
    max_cache_memory_usage: 1024M
    target_cache_memory_usage: 758M
    min_cache_ttl: 5m

除非启用 jemalloc,否则 cache_autotuning 下的配置选项将不起作用。