このリポジトリには、Rust、Ruma で書かれた廃止された Matrix homeserverが含まれています。
プロジェクトの終了の詳細については、このブログ投稿を参照してください。
以下に、この Readme の以前の内容を示します。残りのファイルについては、master ブランチに移動します。
Ruma はRust で書かれた Matrix homeserverです。
このプロジェクトに興味がある場合は、Ruma Web サイトをご覧になり、Twitter で ruma_io をフォローし、Matrix の #ruma:matrix.org でチャットしてください (freenode IRC ネットワークの #ruma からもアクセスできます)。
プロジェクトとしての Ruma の目標は、Matrix homeserver 、Matrix アイデンティティ サーバー、Matrix クライアント ライブラリ、および Matrix アプリケーション サービスの完全な実装を提供することです。このリポジトリは特に、Matrix homeserver実装することを目的としています。 Ruma homeserver小規模導入の場合は 1 つの実行可能ファイルとしてパッケージ化され、 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 以降が必要です。
貨物は開発の主な入り口です。通常、プレーンcargo
使用するのと同じように、 script/cargo
シェル スクリプトを使用します。これにより、Rust およびその他の依存関係が既にインストールされている Docker コンテナー内で Cargo コマンドが実行されます。コンテナ内で PostgreSQL データベースも自動的に起動します。 script/cargo
使用してコマンドを初めて実行するときは、Docker イメージをダウンロードするのに時間がかかります。
Ruma をビルドするには、 script/cargo build --bin ruma
を実行します。アプリケーションはtarget/debug/ruma
に書き込まれます。 script/cargo run --bin ruma
を使用すると、Ruma を 1 ステップでビルドして実行することもできます。 (Cargo 経由で実行する場合、 ruma
自体への引数は 2 つのダッシュの後に来る必要があります (例: 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 Web サイトに掲載されます。
Ruma には統合テスト スイートが含まれています。 Docker がインストールされたら、 script/cargo test
実行してテスト スイートを実行します。
Ruma には、それぞれ JSON、TOML、または YAML で記述されたruma.json
、 ruma.toml
、またはruma.yaml
/ ruma.yml
という名前の構成ファイルが必要です。このファイルは、 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 はデータベースを自動的に作成し (まだ存在しない場合)、データベース スキーマを管理します。これらの操作を実行できる有効な PostgreSQL サーバー URL とロールを Ruma に提供するのはユーザーの責任です。
Ruma には、http://example.com/ruma/swagger.json で Swagger データを提供する HTTP エンドポイントが含まれています (もちろん、Ruma サーバーのホストとポートを example.com に置き換えます)。Swagger UI のコピーをここにポイントします。 Matrix クライアント API の完全なドキュメントを参照するための URL。 Ruma は実際にはこれらすべての API エンドポイントをまだ実装していないことに注意してください。
「貢献」ドキュメントを参照してください。
ルマは、2017 年 1 月に亡くなった私の親友タマラ・ボイエンに捧げられています。彼女と私は毎日何時間もオンラインで話しました。彼女は、私が Ruma を始める動機の大きな部分を占めていました。なぜなら、私たちが出会った街から離れてから、オンラインでのコミュニケーションが私たちが最も多くの時間を一緒に過ごした場所だったからです。私たちはいつも、私たちの不満を解決してくれるシステムを探していました。私たちがチャットのために持っていた選択肢はすべて標準以下でした。
— ジミー・クアドラ
マサチューセッツ工科大学