該儲存庫包含用 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 的副本指向此查看 UI 的副本指向此查看 UI 的副本。 Matrix 用戶端API 完整文件的URL。請注意,Ruma 實際上尚未實作所有這些 API 端點。
請參閱貢獻文件。
Ruma 哀悼我最好的朋友 Tamara Boyens,她於 2017 年 1 月去世。她是我創辦 Ruma 的很大一部分動力,因為我們離開相遇的城市後,我們的線上交流是我們在一起度過最多時間的地方,而且我們一直在尋找一個系統來解決我們的不滿我們聊天的所有選擇都低於標準。
— 吉米·誇德拉
麻省理工學院