クライアント、ホスト、コミュニティ
クライアントはブラウザーで動作し、デスクトップ版は Tauri を使います。API は Node.js/TypeScript で、ホストのデータは PostgreSQL に保存されます。ファイルは S3 互換ストレージ、設定されていればメディアは LiveKit を使います。
ホストはアカウントとその基盤を管理します。ギルドはホスト内のロールとチャンネルを持つコミュニティで、1 つのホストが複数のコミュニティを支えられます。
フェデレーション
独立したホスト同士が署名付きのリクエストを交換します。アドレスは @username#hostname を使い、フェデレーションは Ed25519 鍵とリプレイ保護を用います。Sibrel は独自プロトコルで、Matrix とは直接互換ではありません。
- ホストをまたぐグループには所属ホストがあり、メンバーの変更と同期はその可用性に依存します。
- フォールバックの中継は直接配信が失敗した後に使われます。音声・映像は中継せず、完全にオフラインのホストへの配信も保証しません。
- 中継は運営者が設定した送信帯域の割合に制限され、自動計測された空き容量ではありません。
- 署名はリクエスト元を検証しますが、メッセージを暗号化するものではありません。
基盤を分離する
ファイルはローカルの MinIO または外部 S3、メディアはローカルまたは別ホストの LiveKit を利用できます。プロジェクトは追加のストレージノードとメディアノードに対応します。各ルームは 1 つのメディアノードに割り当てられます。
自動化
ボットはコミュニティごとに権限を制限された独立のアカウントです。REST API、WebSocket ゲートウェイ、スラッシュコマンド、ボタン、埋め込み、音声を利用できます。Webhook は単純な受信通知に向いています。
セキュリティの境界
メインの入力欄から送る新しい添付ファイルは、クライアント側で AES-256-GCM により暗号化され、ファイル鍵は受信者の鍵で包まれます。古い添付、アバター、公開投稿、絵文字、スタンプは別のアクセス方式です。
テキストメッセージをエンドツーエンド暗号化とみなさないでください。ファイルの暗号化は、悪意あるクライアント、侵害された端末、ファイルを保存する受信者からは守りません。セキュリティガイドもご覧ください。
利点と運営者の責任
| 利点 | コストと制約 |
|---|---|
| 自分のホストと個別のサービスを管理できる。 | 管理、更新、バックアップ、監視は自分の責任です。 |
| 独立したノード間のフェデレーション。 | 運営者への信頼、互換性、機能するネットワーク経路が必要です。 |
| 別の Electron エンジンを必要としない Tauri クライアント。 | すべての端末に共通するメモリや速度の指標はありません。 |
| 専用のボット API と連携。 | ボットはエラー、トークンの失効、切断、API の変更に対処する必要があります。 |
| 権限とルールを設定できる。 | セルフホストでも法的義務や個人データに関する義務は免除されません。 |