该存储库包含用 Rust、Ruma 编写的已停产的 Matrix homeserver 。
有关该项目终止的详细信息,请参阅此博客文章。
您可以在下面找到本自述文件的先前内容。对于其余文件,请转到 master 分支。
Ruma是一个用 Rust 编写的 Matrix homeserver 。
如果您对该项目感兴趣,请访问 Ruma 网站,在 Twitter 上关注 ruma_io,并在 Matrix 上通过 #ruma:matrix.org 与我们聊天(也可通过 freenode IRC 网络上的 #ruma 进行访问。)
Ruma 作为一个项目的目标是提供 Matrix homeserver 、Matrix 身份服务器、Matrix 客户端库和 Matrix 应用程序服务的完整实现。该存储库特别旨在实现 Matrix homeserver 。 Ruma homeserver将打包为用于小规模部署的单个可执行文件,以及用于需要独立扩展homeserver不同部分的大型部署的多个可执行文件。 Ruma 使用的其他 Matrix 库可以在 GitHub 上的 Ruma 组织中找到。
有关 Ruma 迄今为止支持哪些 Matrix API 的详细信息,请参阅 STATUS 文档。
Ruma 包含使用 Docker 的开发设置。要安装 Docker,请参阅 OS X、Linux 或 Windows 的安装说明。 (请注意,Docker 和 Docker Compose 都是需要的,但标准安装方法包括两者。)
注意:需要docker-compose
版本 1.6 或更高版本以及docker-engine
版本 1.10.0 或更高版本。
货运是发展的主要切入点。使用script/cargo
shell 脚本,就像通常使用普通的cargo
一样。这将在已安装 Rust 和其他依赖项的 Docker 容器内运行 Cargo 命令。它还会自动启动容器内的 PostgreSQL 数据库。第一次使用script/cargo
运行命令时,下载 Docker 镜像需要一些时间。
要构建 Ruma,请运行script/cargo build --bin ruma
。应用程序将被写入target/debug/ruma
。您还可以使用script/cargo run --bin ruma
一步构建并运行 Ruma。 (当通过 Cargo 运行时, ruma
本身的参数必须在两个破折号之后,例如script/cargo run --bin ruma -- run
。)
Ruma 需要 Rust 1.34 或更高版本。
Docker 用于让每个人的生活变得更轻松,包括将 Rust 与 Ruma 的其他依赖项一起打包,以及管理测试 PostgreSQL 数据库,所有这些都无需对主机系统进行任何假设。如果您确实想避免使用 Docker,则需要配置您的开发环境以匹配 Ruma 中代码所做的假设。特别是,这至少意味着 Rust 的最低版本、所有系统级依赖项(例如 libsodium)以及在src/test.rs
中使用的地址和端口处具有适当权限的 PostgreSQL 安装。
要为 Ruma 生成 API 文档,请运行script/cargo doc
。然后在浏览器中打开target/doc/ruma/index.html
。请注意,本文档适用于 Ruma 的内部 Rust 代码,而不是面向公众的 Matrix API。面向用户的文档将发布在 Ruma 网站上。
Ruma 包含一个集成测试套件。安装 Docker 后,运行script/cargo test
来运行测试套件。
Ruma 需要一个名为ruma.json
、 ruma.toml
或ruma.yaml
/ ruma.yml
的配置文件,分别以 JSON、TOML 或 YAML 编写。该文件应该位于执行ruma
的工作目录中。 Ruma 将尝试以相同的顺序加载配置文件,并在找到的第一个文件处停止。配置文件看起来像这样,采用 JSON 格式:
{
"version" : " 1 " ,
"domain" : " example.com " ,
"macaroon_secret_key" : " qbnabRiFu5fWzoijGmc6Kk2tRox3qJSWvL3VRl4Vhl8= " ,
"postgres_url" : " postgres://username:[email protected]:5432/ruma "
}
配置中的完整属性列表如下:
ruma 0.1.0
A Matrix homeserver .
USAGE:
ruma [FLAGS] [SUBCOMMAND]
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
SUBCOMMANDS:
help Prints this message or the help message of the given subcommand(s)
run Runs the Ruma server
secret Generates a random value to be used as a macaroon secret key
在运行ruma run
之前,请确保工作目录中有一个名为ruma.json
的配置文件,并且 PostgreSQL 服务器正在运行并且在配置文件中指定的位置可用。 Ruma 将自动创建数据库(如果尚不存在)并管理数据库模式。您负责向 Ruma 提供有效的 PostgreSQL 服务器 URL 和可以执行这些操作的角色。
Ruma 包含一个 HTTP 端点,用于在 http://example.com/ruma/swagger.json 上提供 Swagger 数据(当然,用 example.com 替换 Ruma 服务器的主机和端口。)将 Swagger UI 的副本指向此查看 Matrix 客户端 API 完整文档的 URL。请注意,Ruma 实际上尚未实现所有这些 API 端点。
请参阅贡献文档。
Ruma 悼念我最好的朋友 Tamara Boyens,她于 2017 年 1 月去世。我和她每天在网上聊几个小时。她是我创办 Ruma 的很大一部分动力,因为我们离开相遇的城市后,我们的在线交流是我们在一起度过最多时间的地方,而且我们一直在寻找一个系统来解决我们的不满我们聊天的所有选择都低于标准。
— 吉米·夸德拉
麻省理工学院