ITADN
matrix-org/dendrite
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

Dendrite

Dendrite is now maintained at element-hq/dendrite

Dendrite 是一个开源的 Matrix 家庭服务器,作为 Matrix.org 基金会的一部分,于 2019 年至 2023 年间开发。 Matrix.org 基金会无法为 Dendrite 的维护提供资源,它 继续由 Element 开发 此外,您也可以选择 其他 Matrix 家庭服务器

请参阅 The future of Synapse and Dendrite 博客文章以获取更多信息。

Build status Dendrite Dendrite Dev

Dendrite 是一个用 Go 编写的第二代 Matrix 家庭服务器。 它旨在提供 Synapse 的一个高效可靠可扩展的替代方案:

  • 高效:具有较小的内存占用,且比开箱即用的 Synapse 具有更好的基线性能。
  • 可靠:按照 Matrix 规范实现,使用 与 Synapse 相同的 测试套件 以及 一套 全新的 Go 测试套件
  • 可扩展:可以在多台机器上运行,并最终扩展到大规模的家庭服务器部署。

Dendrite 是测试版软件,这意味着:

  • Dendrite 已准备好供早期采用者使用。我们建议配合 PostgreSQL 数据库运行 Dendrite。
  • Dendrite 有定期发布。我们打算在修复错误并落地重要功能时发布新版本。
  • Dendrite 支持版本之间的数据库模式升级。这意味着在升级 Dendrite 时,您永远不应丢失消息。

这并不意味着:

  • Dendrite 没有错误。它尚未在现实世界中经过实战考验,因此初期容易出现错误。
  • Dendrite 功能完整。可能存在未实现的客户端或联邦 API。
  • Dendrite 已准备好用于大规模的家庭服务器部署。没有高可用性/集群支持。

目前,我们预计 Dendrite 能够很好地服务于小型(数十/数百用户)家庭服务器部署,以及浏览器内或移动设备上的 P2P Matrix 节点。

如果您有更多问题,请查看 我们的常见问题解答 或加入我们的:

Requirements

请参阅 Planning your Installation 页面以 获取更多关于需求的信息。

要构建 Dendrite,您需要 Go 1.21 或更高版本。

对于可用的联邦 Dendrite 部署,您还需要:

  • 一个域名(或子域名)
  • 由受信任机构为该域名签发的有效 TLS 证书
  • 指向您部署的 SRV 记录或 well-known 文件

还推荐:

  • 一个 PostgreSQL 数据库引擎,在用户数量较多和/或房间较大时,其性能优于 SQLite
  • 一个反向代理服务器,例如 nginx,配置 如本示例

可以使用 Federation Tester 来验证您的部署。

Get started

如果您希望构建一个完全联邦的 Dendrite 实例,请参阅 the Installation documentation。关于在 Docker 中运行,请参阅 build/docker

以下说明足以使用自签名证书和 SQLite 数据库启动一个非联邦的测试部署:

$ git clone https://github.com/matrix-org/dendrite
$ cd dendrite
$ go build -o bin/ ./cmd/...

# Generate a Matrix signing key for federation (required)
$ ./bin/generate-keys --private-key matrix_key.pem

# Generate a self-signed certificate (optional, but a valid TLS certificate is normally
# needed for Matrix federation/clients to work properly!)
$ ./bin/generate-keys --tls-cert server.crt --tls-key server.key

# Copy and modify the config file - you'll need to set a server name and paths to the keys
# at the very least, along with setting up the database connection strings.
$ cp dendrite-sample.yaml dendrite.yaml

# Build and run the server:
$ ./bin/dendrite --tls-cert server.crt --tls-key server.key --config dendrite.yaml

# Create an user account (add -admin for an admin user).
# Specify the localpart only, e.g. 'alice' for '@alice:domain.com'
$ ./bin/create-account --config dendrite.yaml --username alice

然后将您喜爱的 Matrix 客户端指向 http://localhost:8008https://localhost:8448

进展

我们使用一个名为 "Are We Synapse Yet" 的脚本,用于检查 Sytest 合规率。Sytest 是一个黑盒 homeserver 测试框架,包含约 900 个测试。该脚本会计算 Dendrite 上通过这些测试的数量, 并通过 CI 进行更新。截至 2023 年 1 月,我们在服务器间通信方面与 Synapse 实现了 100% 的兼容性,客户端-服务器兼容性为 93%,但请查看 CI 以获取最新数据。实际上,这意味着您可以与 matrix.org 等 Synapse 服务器进行本地和联邦通信,效果相当不错,尽管仍有一些缺失的功能(如 SSO 和第三方 ID API)。

我们优先处理那些对单用户 homeserver 有益的功能(例如 Receipts、E2E),而不是 大规模部署可能感兴趣的功能(OpenID、Guests、Admin API、AS API)。 这意味着 Dendrite 支持以下功能:

  • 核心房间功能(创建房间、邀请、认证规则)
  • 支持房间版本 1 到 10
  • 本地及通过联邦进行回填
  • 账户、个人资料和设备
  • 已发布的房间列表
  • 正在输入状态
  • 媒体 API
  • 撤回
  • 标签
  • 上下文
  • E2E 密钥和设备列表
  • 回执
  • 推送
  • 访客
  • 用户目录
  • 在线状态
  • 全文搜索

贡献

我们将不胜感激任何针对标记为 Are We Synapse Yet 的问题的帮助。这些问题 都有相关的 Sytests,需要它们通过才能关闭该问题。一旦你编写完 代码,你可以快速运行 Sytest 以确保测试名称现在已通过。

如果你是该项目的初学者,请参阅我们的 Contributing page 以快速上手,然后 查找 Good First Issues。如果你 熟悉该项目,请查找 Help Wanted 问题。