matrix-org/synapse

GitHub: matrix-org/synapse

基于 Python/Twisted 的 Matrix 协议家庭服务器,支持联邦通信和端到端加密。

Stars: 12013 | Forks: 2116

# Synapse |support| |development| |documentation| |license| |pypi| |python| # Synapse 目前在 `element-hq/synapse `_ 积极维护中 Synapse 是一个开源的 `Matrix `_ 家庭服务器, 作为 Matrix.org Foundation 的一部分,开发工作持续 从 2019 年至 2023 年。Matrix.org Foundation 无法为 Synapse 的维护提供资源,目前它 `由 Element 继续开发 `_; 此外,您还可以选择 `其他 Matrix 家庭服务器 `_。 请参阅 `Synapse 和 Dendrite 的未来 `_ # 博客文章以了解更多信息。 简而言之,Matrix 是一个用于互联网通信的开放标准,支持 联盟、加密和 VoIP。Matrix.org 对 `Matrix 项目的目标 `_ 有更多阐述,`正式规范 `_ 则描述了技术细节。 .. contents:: # 安装与配置 Synapse 文档描述了 `如何安装 Synapse `_。我们建议使用 `Docker 镜像 `_ 或 `来自 Matrix.org 的 Debian 软件包 `_。 .. _federation: Synapse 拥有各种 `配置选项 `_ 可在安装后用于自定义其行为。 关于 `在此处配置 Synapse 以进行联盟 `_ 有更多详细信息。 .. _reverse-proxy: ## 在 Synapse 中使用反向代理 建议在 Synapse 前端放置一个反向代理,例如 `nginx `_、 `Apache `_、 `Caddy `_、 `HAProxy `_ 或 `relayd `_。这样做的一个优势是, 这意味着您可以将默认的 HTTPS 端口 (443) 暴露给 Matrix 客户端,而无需以 root 权限运行 Synapse。 有关配置其中一个的信息,请参阅 `反向代理文档 `_。 ## 升级现有的 Synapse 升级 Synapse 的说明位于 `升级说明`_ 中。 请查看这些说明,因为对于某些版本的 Synapse,升级可能需要额外的步骤。 .. _the upgrade notes: https://matrix-org.github.io/synapse/develop/upgrade.html ## 平台依赖 Synapse 使用许多平台依赖项,例如 Python 和 PostgreSQL, 并旨在遵循受支持的上游版本。请参阅 `弃用政策 `_ 了解更多详情。 ## 安全说明 Matrix 在某些 API 中提供原始的、用户提供的数据——特别是 `内容存储库端点`_。 .. _content repository endpoints: https://matrix.org/docs/spec/client_server/latest.html#get-matrix-media-r0-download-servername-mediaid 虽然我们做出了合理的努力来缓解 XSS 攻击(例如,通过使用 `CSP`_),但 Matrix 家庭服务器不应托管在 托管其他 Web 应用程序的域上。这尤其适用于与 Matrix Web 客户端和其他敏感应用程序(如 Webmail)共享域的情况。请参阅 https://developer.github.com/changes/2014-04-25-user-content-security 了解更多信息。 .. _CSP: https://github.com/matrix-org/synapse/pull/1021 理想情况下,家庭服务器不仅应位于不同的子域,而且应位于完全不同的 `注册域`_(也称为顶级站点或 eTLD+1)。这是因为 `某些攻击`_ 仍然可能发生,只要两个 应用程序共享同一个注册域。 .. _registered domain: https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-03#section-2.3 .. _some attacks: https://en.wikipedia.org/wiki/Session_fixation#Attacks_using_cross-subdomain_cookie 举一个例子来说明,如果您的 Element Web 或其他敏感 Web 应用程序托管在 ``A.example1.com``,理想情况下您应该将 Synapse 托管在 ``example2.com``。通过托管在 ``B.example1.com`` 可以提供一定程度的保护,因此这在某些场景中也是可以接受的。 然而,您*不应*将您的 Synapse 托管在 ``A.example1.com``。 请注意,以上所有内容仅涉及 Synapse 的 ``public_baseurl`` 设置中使用的域。特别是,它与该服务器上托管的 MXIDs 中提到的域 无关。 遵循此建议可确保即使在 Synapse 中发现 XSS, 对其他应用程序的影响也将微乎其微。 # 测试新安装 试用新 Synapse 安装的最简单方法是通过 Web 客户端连接到它。 除非您在本地机器上运行 Synapse 的测试实例,否则 通常,在成功从客户端连接之前,您需要启用 TLS 支持:请参阅 `TLS 证书 `_。 开始的一种简单方法是通过 Element 登录或注册,分别为 https://app.element.io/#/login 或 https://app.element.io/#/register。 您需要将登录的服务器从 ``matrix.org`` 更改 并指定家庭服务器 URL 为 ``https://:8448`` (或者,如果您使用反向代理,则仅为 ``https://``)。 如果您更喜欢使用其他客户端,请参考我们的 `客户端概览 `_。 如果一切顺利,您至少应该能够登录、创建房间并 开始发送消息。 .. _`client-user-reg`: ## 从客户端注册新用户 默认情况下,通过 Matrix 客户端注册新用户是禁用的。要启用 它: 1. 在 `注册配置部分 `_ 在 ``homeserver.yaml`` 中设置 ``enable_registration: true``。 2. 然后 **或者**: a. 设置一个 `CAPTCHA `_,或者 b. 在 ``homeserver.yaml`` 中设置 ``enable_registration_without_verification: true``。 我们**强烈**建议使用 CAPTCHA,特别是如果您的家庭服务器暴露在 公共互联网上。如果没有它,任何人都可以在您的家庭服务器上自由注册账户。 这可能被攻击者利用,创建针对 Matrix 联盟其余部分的垃圾机器人。 您的新用户名将部分由 ``server_name`` 组成,部分由 您创建账户时指定的本地部分组成。您的名将采用 以下形式:: ``` @localpart:my.domain.name ``` (读作“at localpart on my dot domain dot name”)。 与登录时一样,您需要指定一个“自定义服务器”。在“用户名”框中指定您 想要的 ``localpart``。 # 故障排除与支持 `管理 FAQ `_ 包括处理一些常见问题的技巧。有关更多详细信息,请参阅 `Synapse 的更多文档 `_。 如需安装或管理 Synapse 的额外支持,请在社区 支持房间 |room|_ 中提问(如有必要,请使用 matrix.org 账户)。我们不使用 GitHub Issues 处理支持请求,仅用于错误报告和功能请求。 .. |room| replace:: ``#synapse:matrix.org`` .. _room: https://matrix.to/#/#synapse:matrix.org .. |docs| replace:: ``docs`` .. _docs: docs # 身份服务器 身份服务器的任务是将电子邮件地址和其他第三方 ID (3PID) 映射到 Matrix 用户 ID,以及在 创建该映射之前验证 3PID 的所有权。 **它们不是存储账户或凭据的地方——这些存在于家庭 服务器上。身份服务器仅用于将第三方 ID 映射到 Matrix ID。** 此过程非常敏感,因为如果 注册 Matrix 账户或收集 3PID 数据太容易,则存在明显的垃圾邮件风险。从长远 来看,我们希望创建一个分散的系统来管理它(`matrix-doc #712 `_),但与此同时, 管理 Matrix 生态系统中受信任身份的角色被外包给 一群已知的受信任生态系统合作伙伴,他们运行“Matrix 身份 服务器”,例如 `Sydent `_,其角色 纯粹是验证和跟踪 3PID 登录并发布最终用户公 钥。 您可以托管自己的 Sydent 副本,但这将阻止您通过 电子邮件地址访问 Matrix 生态系统中的其他用户,并阻止他们找到 您。因此,我们建议您暂时使用 ``https://matrix.org`` 或 ``https://vector.im`` 处的集中式身份服务器之一。 重申一下:仅当您选择将 电子邮件地址与您的账户关联,或通过 电子邮件地址向另一个用户发送邀请时,才会使用身份服务器。 # 开发 我们欢迎社区对 Synapse 做出贡献! 开始的最佳地点是我们的 `贡献者指南 `_。 这是我们更大的 `文档 `_ 的一部分,其中包括 Synapse 开发者以及 Synapse 管理员的信息。 开发者可能特别感兴趣的是: * `Synapse 的数据库模式 `_, * `关于 Synapse 实现细节的说明 `_,以及 * `我们如何使用 git `_。 除了这些之外,请在 Matrix 上加入我们的开发者社区: `#synapse-dev:matrix.org `_,这里有真人! .. |support| image:: https://img.shields.io/matrix/synapse:matrix.org?label=support&logo=matrix :alt: (get support on #synapse:matrix.org) :target: https://matrix.to/#/#synapse:matrix.org .. |development| image:: https://img.shields.io/matrix/synapse-dev:matrix.org?label=development&logo=matrix :alt: (discuss development on #synapse-dev:matrix.org) :target: https://matrix.to/#/#synapse-dev:matrix.org .. |documentation| image:: https://img.shields.io/badge/documentation-%E2%9C%93-success :alt: (Rendered documentation on GitHub Pages) :target: https://matrix-org.github.io/synapse/latest/ .. |license| image:: https://img.shields.io/github/license/matrix-org/synapse :alt: (check license in LICENSE file) :target: LICENSE .. |pypi| image:: https://img.shields.io/pypi/v/matrix-synapse :alt: (latest version released on PyPi) :target: https://pypi.org/project/matrix-synapse .. |python| image:: https://img.shields.io/pypi/pyversions/matrix-synapse :alt: (supported python versions) :target: https://pypi.org/project/matrix-synapse
标签:Ansible, Debian, Docker, Element, homeserver, Matrix, Matrix.org, Nginx, Python, Synapse, Twisted, VoIP, 协作工具, 即时通讯, 去中心化, 反向代理, 安全防御评估, 开源, 无后门, 服务器软件, 测试用例, 消息传递, 私有部署, 端到端加密, 聊天服务器, 联邦协议, 请求拦截, 逆向工具, 通信协议