3 ポイント 投稿者 GN⁺ 2023-08-01 | 1件のコメント | WhatsAppで共有
  • ConduitはMatrix仕様を実装した軽量なオープンソースサーバーで、独自のhomeserverを数分で構成できることに重点を置いている
  • プロジェクトはまだベータで、すでに利用可能だが、一部の小さな機能は未実装
  • Matrixは安全な分散コミュニケーションのためのオープンネットワークで、異なるhomeserverのユーザー同士がチャットできる
  • 運用面では単一バイナリと組み込みデータベース構造を使用し、デフォルトのデータベースとしてRocksDBを使う
  • Synapseより軽量でインストールしやすい代替を目指しているため、低いシステム要件のセルフホスト型チャットサーバーが必要な場合は検討に値する

ConduitとMatrixの役割

  • ConduitMatrix Specificationを実装した軽量なオープンソースサーバー
  • 現在の状態はベータ
    • すでに利用可能
    • 一部の小さな機能はまだない
  • Matrixは安全で分散型のコミュニケーションのためのオープンネットワーク
    • すべてのMatrix homeserverユーザーは、他のMatrixサーバーのユーザーとチャットできる
    • ブリッジを使えば、DiscordコミュニティのようなMatrix外部のユーザーとも通信できる

インストールと運用上の特徴

  • 簡単な設定と低いシステム要件を目標としており、独自のConduit構成を数分で作成できる
  • サーバーは単一バイナリと組み込みデータベース構造を使用する
  • デフォルトのデータベースはRocksDB
  • 場合によっては、他のサーバー実装より高速なことがある

関連リンクと支援

1件のコメント

 
GN⁺ 2023-08-01
Hacker News のコメント
  • ここ数年、セルフホストの Conduit インスタンスを運用している。良い点はインストールも利用も簡単なこと、悪い点はまだベータ版ソフトウェアだということ。
    それでも自分にとってはかなり良く、友人何人かとの安定したチャットや、参加している少し大きめの部屋でも問題なく使えてきた。
    作者は、もう一つの面白い Rust プロジェクトである Veloren にも取り組んでいる: https://veloren.net

    • Veloren は本当に素晴らしいゲーム。数年前に友人たちと遊び半分でコンパイルしてみたが、自分の GTX 1050 Ti でも驚くほど滑らかに動いた。
      ロビーに入って30分ほどプレイしたところで、キャラクターからスクロールでずっとズームアウトできることに気づいた。一般的なアクション RPG の範囲を超えて、ミニマップの縮尺、雲の上までフレーム低下なしに上がっていく感じで、かなり幻覚的な体験だった。
      今このプロジェクトがどれほどよく保守されているかは分からないが、強力な RPG になる骨格は十分にあるように見える。
    • Conduit はかなり長く使ってきていて、とても高く評価している。
      長い間 Spaces 対応が欠けていたが、開発ビルドに入ったばかりで素晴らしい。すでに自分のサービスも更新したが、期待どおりに動作している。
    • Go サーバーである Dendrite を動かす代替として良さそう。Dendrite は永遠に開発中という感じだし、Python サーバーは今やリソースを食いすぎるので、Go サーバー以外にも代替が見えるのはうれしい。
    • 機能を完全にサポートする同種のクライアントがあるといい。Matrix の問題は機能が多すぎて、Signal、Discord、Slack、Zoom、Teams が一つに混ざったように見える点だ。
      セキュアチャットだけを扱うサブプロトコルがあるといい。
    • 10か月運用しているが、インストールも利用も非常にスムーズだった
      自分のサーバーのユーザーは自分一人で、非常に活発な部屋には入っていないが、これまで小さな VPS の性能への影響は無視できる程度だ。
  • こんにちは、数年前に Conduit プロジェクトを始めた Timo です。質問があれば気軽にどうぞ。

    • Conduit を10か月使っていて、本当に気に入っている。質問が2つある。
      大学を終えた後のプロジェクトの将来について懸念はないのか気になっている。今のところ Timo が圧倒的に活発なコントリビューターに見えるので、プロジェクトが依然として投入できる時間に大きく依存しているのではないかと心配している。
      Rust/Linux 開発者が Conduit に初めて意味のある貢献をするなら、何から始めるのがよいかも知りたい。GitLab にはオープンな Issue が155件あり、ユーザーの立場では目立って困っている問題がないので、どこから始めればよいのか分からない。
      Dortmund やリモート勤務が必須でないなら連絡してもよいし、良い仕事が見つかることを願っている。
    • Dendrite 向けに開発中の matrix-p2p / Pinecone についてどう思うか気になっている。
      近い将来、Conduit も P2P 化する計画があるのか知りたい。
      https://github.com/matrix-org/pinecone
      https://archive.fosdem.org/2022/schedule/event/matrix_p2p_pi...
    • Matrix をプロトコルとして見たとき、設計上いちばんもどかしい部分は何か知りたい。
      ボットを書いていて感じた自分の考えもあるが、ホームサーバー実装のメンテナーの視点が特に気になる。
    • Conduit が機能面で Synapse や Matrix 仕様とどう比較されるのかをまとめた文書があるのか知りたい。
      目標がフル機能の Matrix サーバーなのか、それとも規模や機能で特定のサブセットを狙っているのかが明確でない。
    • Conduit を自分で毎日使っているのか気になる。日常的に使うのに安定しているのか知りたい。
  • Matrix で気に入らなかったのは、ユーザー3〜4人のサーバーを1台運用していたら、数か月でデータベースが80GBほどに膨れ上がったこと。
    ユーザーがアップロードしたコンテンツとテキストを合わせても2〜3GB程度だった。古いサーバーから受け取ったデータのキャッシュを、たとえば2週間経過したものから削除し、必要なら再取得する方法があるのか知りたい。

    • 古いローカル/リモート画像を削除できる管理者 APIがある。この状況ならおそらくこの API が合っていると思う。
      https://matrix-org.github.io/synapse/v1.85/admin_api/media_a...
      自分のサーバーはフェデレーションはしていないがかなり活発で、一時的な空間のように扱っている。テキストとメディアの両方について、1〜2週間より古いものは自動回収されるよう設定している。
    • 容量を占めているのは部屋/会話の状態データで、圧縮できる。
      https://levans.fr/shrink-synapse-database.html
      https://github.com/matrix-org/rust-synapse-compress-state
    • こういう点のために XMPP をより高く評価するようになった。チャットルーム全体の履歴を複製しなければならないという期待がない。
      多くの MUC はデフォルトが直近20件のメッセージなので、会話の流れを把握して参加するにはたいてい十分だ。自分のサーバー運用費もかなり安かった。
  • Synapse から Conduit へマイグレーションする方法があるのか知りたい。6年分の会話履歴を失うのは正当化しにくい。

    • まだない。Synapse から Dendrite へ移る移行ツールの計画はあるが、Conduit 対応も別途入れる必要がある。
      どちらにせよ、どれくらいかかるかは分からない。
      見つけたのは Synapse -> Dendrite 移行の追跡 Issue だけ。
      https://github.com/matrix-org/dendrite/issues/1705
  • 関連記事: Conduit Beta – Matrix chat server - https://news.ycombinator.com/item?id=28385840 - 2021年9月、コメント69件

  • XMPPがあるのに、なぜ Matrix を使うのか説明してもらえる?

    • 最初に思ったのは、むしろ質問は逆であるべきだということだった。XMPPをなぜ使うべきなのか分からないので、Matrixの良い点を挙げてみる
      SlackやDiscordで人々が期待する機能を備えたモダンなチャットソリューションであり、複数のプロトコルのためにチャットクライアントをいくつも使わずに済むようにするブリッジが多い
      優れたコミュニティがたくさんあり、音声チャットもかなり良く、オープンソースでセルフホスト可能。XMPPではどんな点が良いのか気になる
    • MatrixはGitでチャットすることに近く、分散データベースを使い、MattermostやZulipのような チームメッセンジャー の性格が強い
      XMPPは構造的にはメールに近く、オンライン状態・入力中・最終接続といったオプションが付いており、WhatsAppのような大規模メッセンジャーサービスでも独自の変種を使うことがある
      XMPPはメールを使う場所ならどこでも利用でき、利用してよい唯一のシステムだ。Matrixと同じくらいモダンだが、データ保存と分散に対する考え方が違うだけ
      比較: https://www.freie-messenger.de/en/systemvergleich/xmpp-matri...
    • この要約は今でもなお正しい: https://news.ycombinator.com/item?id=8998290
      XMPPは設計目的には優れているが、モバイル、高いパケットロス、高遅延の接続にはあまり合わない。おしゃべりで帯域を多く使うため、データ通信量とバッテリーが限られた環境には向かず、1人が複数のデバイスを使う現実も元々考慮していなかった
      ファイル転送も長らく良くなく、クライアントやネットワーク形態によって互換性のない方式が混在していた
      XEPが多すぎることもエコシステムの助けになっていない。任意の拡張が多すぎると相互運用性が下がる。現代のチャットで期待される機能はXMPPが設計された範囲を超えており、XEPがそれを継ぎはぎしようとしたが、結果はまちまちだった
      設計当時は自然な技術選択だったが、今ではより良い選択肢も多い。開発者は作業をより楽しくしてくれる技術を選ぶものなので、新しいプラットフォームの側でより多くのことが進んでいる。たとえば今日の別のHN記事でも、一般的なXMLパーサーでは不十分な場合があり、非常に高度なXMLパーサーが必要だという点が取り上げられていた: https://news.ycombinator.com/item?id=36930196
    • XMPPには最小公倍数的な部分があり、コア機能のかなりの部分が任意の XEP の下にある。そのため、クライアントやサーバーによってユーザー体験が非常にばらつく
      Matrixは重要な機能セットがより明確なので、互換クライアントであれば驚くことなく一貫して実装されていると期待できる
    • Matrixはメッセージを送る方式というより、状態同期サービス に近い
      別のMatrixサーバーの部屋に入ると、自分のサーバーがそのサーバーのコピーを保持し始め、自分はそれを望む形で使える。自分のサーバーを1日停止してから起動しても、また同期される
      XMPPがそのように動作するのかは分からないが、いつもメールのようにメッセージを送って少し再試行する程度だと思っていた。サーバー間で現在状態、既読確認、入力中通知のような一時的な情報がどう動作するのかもよく分からない
  • Conduitはとても素晴らしいプロジェクトだが、すべてのコミットとIssueを読まないと 状態と進捗状況 を追うのが難しそうに見える
    最近、内蔵のSliding Sync機能が進展したのは期待できる。デプロイがずっと簡単になるからだ

  • Matrixで、最後のメッセージが新しい最後のメッセージが送られるまで復号されなかったり、周囲のメッセージは復号できるのに単一のメッセージだけ 復号失敗 したりする原因を知っている人はいる?

    • まだ完全に理解しているわけではないが、すべてのメッセージが同じ鍵で暗号化されているわけではない
      自分のすべてのクライアントが同時に接続されておらず、送信者も同様なら、互いに鍵を交換できない。そうすると各クライアントは、自分が鍵を持っている一部のメッセージだけを復号できる。またクライアントは、検証済みの他のクライアントとだけ鍵を交換する
      メッセージJSON原文の session_id 属性を見ると、特定のセッション、つまり送信者が1つのクライアントにログインしている間のメッセージは、すべて復号できるか、まったく復号できないかのどちらかだと分かる。前者はそのセッションの鍵があるという意味で、後者はまだ受け取っていないという意味だ
  • 何か見落としているのかもしれないが、ページがあまりにもシンプルで、Matrixとは何か、これをどう使うのかをすでに知っている前提のように見える
    さまざまなインストール方法にはかなり紙幅を割いているのに、クライアントの使い方のようなサーバー自体の利用方法は見当たらない

    • ページ最初のリンクは matrix.org に飛び、matrix.org にはクライアントへのリンクがある: https://matrix.org/ecosystem/clients/
      たぶん Element を使えばよいはず
      Conduit のページは正しくやっていると思う。Matrix が何かを知っていると仮定しているというより、知らなければリンクをクリックするくらいの理解力はあると仮定している、というほうが近い
    • Matrix.org に慣れているなら、ランディングページはかなり良い。Matrix 開発者を狙ったものに見える
      個人的には短く、解決しようとしている問題が簡潔に示され、実際の行動喚起である Git リポジトリへのリンクがすぐ出てくるので良かった
      元の投稿以降、ランディングページ自体が新しい内容に更新された可能性もある
    • リンクが変わったのかな?
      Matrix は、安全で分散型の通信のためのオープンネットワーク。すべての Matrix ホームサーバーのユーザーは、他のすべての Matrix サーバーのユーザーとチャットできる。Discord コミュニティのような Matrix 外のユーザーとも、ブリッジを通じてやり取りできる
      それに、インストール情報は見当たらない
    • Matrix はチャットプロトコル。Git でチャットするように動作し、分散データベースを使っていて、Mattermost や Zulip のようなチームメッセンジャーに近い
      Conduit はサーバーソフトウェアであり、エンドユーザー向けアプリではない
      Matrix についての追加情報: https://www.freie-messenger.de/en/matrix
  • Conduit は Synapse とどのような関係なのか気になる
    Dendrite は https://github.com/matrix-org/sytest でテストしていて、「まだ Synapse なのか?」のような issue もあるが、Conduit では関連する議論を見つけられない。Synapse のようになりたくない理由についての議論すら見当たらない

    • Conduit は Rust 製の Matrix サーバー仕様のサードパーティ実装。Synapse と Dendrite はどちらも公式実装で、Dendrite はもともと Synapse を置き換える目的で始まった
      利点として掲げているのは軽量でインストールが簡単という点であり、これは Synapse がそうではないことを含意している。さらに重要なのは、Matrix サーバー仕様の検証事例となり、長年にわたって曖昧な部分を明確にするのにかなり貢献してきたこと
    • SyTest は主に Synapse と一緒に使うよう調整されており、Dendrite 側では自分たちの継続的インテグレーションに組み込むためにラップする作業をしているようだ
      Conduit もその作業の一部を再利用できるだろうが、記憶では Conduit は GitLab を使っており、Dendrite は GitHub Actions を使っている
      それとは別に、Conduit は現時点では Synapse のドロップイン置き換えを目指してはいないように見える。Matrix の部屋で最後に見たときも、目立つ機能の空白がいくつもあった