Matrixでブリッジを設定する方法:WhatsApp、Telegram、Discord

MatrixをWhatsApp、Telegram、またはDiscordと連携させるには、ホームサーバーの横で互換性のあるブリッジサービスを実行し、そのサービスをMatrixアプリケーションサービスとして登録してから、外部アカウントをリンクまたは認証します。各ネットワークには、独自のブリッジ構成と認証情報が必要です。プロセスが実行されているだけでは、ルームがブリッジされていることは証明されません。設定後、双方向でメッセージをテストしてください。

Matrixホームサーバーは、個別のMatrix WhatsApp、Telegram、およびDiscordブリッジサービスを経由して、それぞれのメッセージングネットワークにルーティングします。
1台のMatrixホームサーバーは、個別に設定された3つのブリッジサービスに接続できます。

このガイドでは、mautrix-whatsappとmautrix-telegram、および Discord 用の Matrix.org プロジェクトmatrix-appservice-discordを使用します。ブリッジは、Element のスイッチではなく、独立したサーバー側プログラムです。Matrix 仕様では、この種の統合をアプリケーション サービスと呼んでいます。アプリケーション サービスとは、関連するホームサーバー イベントを受信し、登録された名前空間内にユーザーやルームを作成できるサービスのことです。Matrixの技術概要とアプリケーション サービス API 仕様を参照してください。

ブリッジは自社でホストするべきか、それともパブリックインスタンスを使用するべきか?

セルフホスティングでは、ブリッジの実行場所、ログや認証情報の保存方法、接続を許可するユーザーなどを制御できます。ただし、3つのサービスを維持管理し、更新、データベースの保護、接続トラブルシューティングを行う必要があります。パブリックブリッジは試用が速いという利点がありますが、可用性、アクセスポリシー、データ処理は運営者に委ねられます。インスタンスを選択する前に、ブリッジの最新のドキュメントとサポートルームを確認してください。可用性や機能は変更される可能性があります。

これらの接続は、メッセージングサービスによるネイティブサポートと同等ではありません。ブリッジされた機能はネットワークによって異なる場合があり、音声/ビデオ通話、リアクション、編集、スレッド、既読通知、履歴、グループ管理などが不完全な場合があります。重要な会話を移行する前に、コミュニティが実際に依存している機能をテストしてください。

何かをインストールする前に必要なものは何ですか?

  • アプリケーションサービスをサポートし、管理者がそれらを登録できるMatrixホームサーバー。以下の例ではSynapseを使用していますが、他のホームサーバーには独自の登録プロセスがあります。
  • ホームサーバーと各ブリッジ間の到達可能なネットワークパス。Dockerでは、localhost1つのコンテナ内とは、そのコンテナ自体を指します。ホームサーバーが別のコンテナにアクセスする必要がある場合は、共有Dockerネットワークとブリッジサービスのネットワーク名を使用してください。
  • 各ブリッジごとに、個別の設定ファイル、登録ファイル、永続データ保存場所、およびシークレットストアが必要です。サポートされているデータベース、ランタイムバージョン、およびコンテナイメージについては、最新のプロジェクト手順に従ってください。要件は異なり、変更される場合があります。
  • WhatsAppの場合は、連携させたいアカウントが登録されているスマートフォンが必要です。Telegramの場合は、公式Telegramクライアントで既にログイン済みのアカウントが必要です。Discordの場合は、Discordアプリケーションまたはボットと、サーバーの所有者または管理者からの許可が必要です。
Synapse YAMLエディタのサンプルでは、​​app_service_config_filesの下に、WhatsApp、Telegram、およびDiscordブリッジサービス用の個別の登録ファイルパスがリストされています。
Synapse は、 の下に設定されたパスから各ブリッジ登録ファイルを読み取りますapp_service_config_files。表示されているパスは例です。

Synapseにブリッジを登録するにはどうすればよいですか?

  1. ブリッジは一度に1つずつデプロイしてください。まずは最新リリースとそのサンプル構成から始めましょう。ホームサーバーのアドレス、パブリックサーバー名、ブリッジリスナーのアドレス、データベース、ストレージパスは、各プロジェクトのガイドに従って設定してください。関連性のないブリッジサービス間でデータベースを共有することは避けてください。
  2. 登録ファイルを生成します。ブリッジのセットアッププロセスでは、アプリケーションサービスIDと認証トークンを含む登録用YAMLファイルが作成されます。これらのトークンはパスワードと同様に扱い、ファイル権限を制限し、Gitにコミットせず、公開ルーム、スクリーンショット、サポート投稿などに貼り付けないようにしてください。
  3. Synapse からファイルにアクセスできるようにします。Synapseプロセスが読み取れる場所に登録ファイルをコピーまたはマウントします。Synapseapp_service_config_filesの にそのパスを追加しますhomeserver.yaml。ブリッジごとに個別のリストエントリを追加し、他のサービスのエントリを上書きしないでください。mautrix appservice 登録ガイドではこの手順について説明しており、登録リストを変更した後は Synapse を再起動する必要があることを指摘しています。
  4. 再起動してログを確認してください。登録情報を変更した後は、Synapseを再起動してからブリッジを起動してください。Synapseが起動しない場合は、まずYAMLのインデント、コンテナ内のファイルパス、読み取り権限を確認してください。ブリッジは起動するものの接続できない場合は、ホームサーバーのURL、ネットワーク経路、TLS証明書、リスナーアドレスを確認してください。

Docker デプロイメントの場合、ブリッジに設定されたアプリケーション サービス アドレスは、ホーム サーバー コンテナからアクセス可能である必要があります。mautrixの初期設定に関する注記では、共有ネットワーク上のコンテナ名が機能する場合と機能しない場合がある理由が説明されています。Discord のプロジェクトでは、アップストリームの READMElocalhostに独自の登録ワークフローとサンプル設定も記載されています。

WhatsAppアカウントを連携させるにはどうすればいいですか?

mautrix-whatsapp が登録され、実行されたら、ブリッジボットとのプライベート Matrix チャットを開き、 を送信しますlogin qr。アカウントを所有する電話で WhatsApp を開き、「リンクされたデバイス」に移動して、ブリッジによって表示されたコードをスキャンします。ブリッジのドキュメントには、電話番号ペアリングコードオプションについても記載されています。インストールされているリリースで現在サポートされている方法を使用してください。ログインコードや QR 画像をパブリック ルームにコピーしないでください。

WhatsAppブリッジボットとのMatrixダイレクトチャットでは、スマートフォンの画面の横にログインQRコードコマンドとリンク済みデバイスのプロンプトが表示されます。
WhatsAppブリッジの認証フローでは、お使いのスマートフォンのWhatsAppアカウントからブリッジをデバイスとしてリンクするように求められます。

ペアリング中は電話とアカウントを手元に置いておき、ポータルルームを開く前にブリッジがログインに成功したことを報告していることを確認してください。これはコンパニオンデバイススタイルのセッションを介してアカウントをリンクするもので、ブリッジを公式の WhatsApp Business API 統合にするものではありません。WhatsApp はデバイスのリンク動作を変更する可能性があるため、最新の mautrix-whatsapp 認証手順に従ってください。ブリッジは、外部サービスがリンクされたデバイスに提供し、ブリッジが実装する履歴のみを同期できます。

Telegramとの連携方法は?

mautrix-telegramボットとのプライベートチャットを開始してください。このブリッジはQRコードログインと、既にログイン済みのTelegramクライアントに送信される6桁のログインコードに対応しており、新しいTelegramアカウントは登録されません。QRコードログインの場合は、スマートフォンでTelegramを開き、「設定」>「デバイス」>「デスクトップデバイスをリンク」に進み、login qrブリッジボットにQRコードを送信してスキャンしてください。Telegramアカウントで2段階認証が有効になっている場合は、ボットの指示に従ってください。

Telegramブリッジボットはログイン用のQRコード入力画面を表示する一方、スマートフォンにはTelegramの設定、デバイス、デスクトップデバイスのリンクが表示されます。
Telegramの「デスクトップデバイスをリンク」画面は、ブリッジセッションを認証するために使用されます。メニューのラベルはアプリのバージョンによって異なる場合があります。

既に作成済みのアカウントを使用し、Telegramのログインルールに従ってください。ブリッジの管理者は、サードパーティ製クライアントを使用する新規アカウントはTelegramによって不審とみなされる可能性があると警告しています。これはプラットフォーム側のリスクであり、Matrixの管理者が保証できるものではありません。ログインする前に、 mautrix-telegram認証ガイドを確認し、ワンタイムコードやパスワードはプライベートボットチャット内に保管してください。

Discordの設定方法を教えてください。

matrix-appservice-discord プロジェクトは、Discord アプリケーションとボットを使用します。Discord開発者ポータルでアプリケーションを作成し、ボット ユーザーを作成/設定し、プロジェクトの現在のサンプルを使用してブリッジの設定でボットの認証情報を設定します。ボット トークンは公開しないでください。ブリッジのドキュメントに記載されている authorization-link コマンドまたはフローを実行し、その後、Discord サーバーの所有者に、ブリッジが必要とする権限のみで、目的のサーバーに対してボットを承認してもらいます。

開発者ポータル形式の設定ページには、Discordブリッジボットのアプリケーション、ボット、およびOAuth2セクションが表示されます。
Discordの設定は、アプリケーションとボットの作成から始まります。具体的な入力項目と認証オプションは、Discordの現在のポータルとブリッジのサンプル設定に従います。

特定のチャンネルについては、Discord のサポートされている開発者ツールを使用してサーバー ID とチャンネル ID を取得し、Matrix 側のブリッジ ボットを Matrix ルームに招待して、ブリッジのドキュメントに記載されているルーム コマンドを使用します。アップストリームの README には、 の形式で例が示されています!discord bridge ServerID ChannelID。リンクを完了するには、管理者の承認手順が必要になる場合があります。図の ID は使用しないでください。実際の識別子に置き換え、インストール済みのリリースの README を参照してコマンドと権限を確認してください。

Matrix ルームには、コマンド例「!discord bridge」に続いて、サーバーおよびチャンネル ID のプレースホルダーが含まれています。
Discord roomコマンドは、MatrixルームをDiscordサーバーおよびチャンネルに関連付けます。実際のIDに置き換え、承認プロンプトに従ってください。

Discordは特にボットの権限とサーバーポリシーに依存しています。ボットが参加できるのにメッセージが流れない場合は、チャンネルがボットから見える状態になっているか、必要なメッセージ権限が付与されているか、ブリッジが管理者による確認を完了しているかを確認してください。このプロジェクトはREADMEでベータ版であることを明記しているため、Discordのすべての機能がそのまま反映されていると想定するのではなく、現在のプロジェクトの状態とサポートされている動作を確認してください。

橋が正常に機能していることをどのように確認できますか?

まずは小規模なプライベートテストルームと低リスクのチャネルを使用してください。Matrixから固有のプレーンテキストメッセージを送信し、リモートサービスに表示されることを確認します。次に、リモート側から返信し、返信がMatrixに表示されることを確認します。使用状況に応じて、帰属、返信スレッド、添付ファイル、編集、リアクションを個別に確認してください。緑色のプロセスステータスは、プログラムが実行されていることを示すだけであり、ログインが成功したこと、ボットがチャネルにアクセスできること、ルームとチャネルのマ​​ッピングが正しいことを示すものではありません。

テストメッセージがMatrixルームとDiscordチャンネルの両方に表示され、2つのチャット画面の間にはリンク記号が表示されます。
エンドツーエンドのチェックとして有効なのは、双方向にテストメッセージを送信し、リンク先のルームに同じメッセージが届くことを確認することです。

テストが失敗した場合は、メッセージの正確な時刻をブリッジとホームサーバーのログと比較してください。ログを共有する前に、アクセストークン、電話番号、機密情報であるDiscord ID、連絡先名などは伏せ字にしてください。コンテナ展開の場合は、登録ファイルがSynapse内にマウントされていること、ブリッジエンドポイントが共有ネットワーク上で解決されること、およびファイアウォールが設定済みのリスナーをブロックしていないことも確認してください。

ターミナル形式のログパネルには、実行中のブリッジプロセス、利用可能なホームサーバーおよびリモート接続に関する中立的なステータス行が表示されます。
プロセスの状態と接続性を確認するには、ブリッジとホームサーバーのログを使用してください。以下のステータス行の例は、取得された診断結果ではありません。

暗号化とプライバシーについて知っておくべきことは何ですか?

アプリケーションサービスは、処理するように設定されている名前空間とルームでイベントを受信します。暗号化された Matrix ルームがすべてのブリッジで自動的に読み取れるとは限りません。一部の Matrix ブリッジはエンドツーブリッジ暗号化をサポートしていますが、これは意図的に設定する必要があり、独自の鍵管理要件があります。Matrixエンドツーブリッジ暗号化ガイドを参照し、特定のブリッジでのサポートを確認してください。Discord ブリッジの暗号化機能は異なる場合があります。ブリッジがルームの暗号化モードを処理できない場合は、推測で本番ルームを弱体化させるのではなく、適切な暗号化されていないテスト ルームを使用するか、ドキュメントでサポートされているブリッジを選択してください。

最後に、メッセージの内容とアカウント認証情報は、あなたが運用するソフトウェア、またはパブリックブリッジオペレーターが運用するソフトウェアを経由することを忘れないでください。ブリッジボットを招待できるユーザーを制限し、データベースとバックアップを保護し、トークンが漏洩した場合はトークンをローテーションし、ブリッジの最新のプライバシーとセキュリティに関するガイドラインを確認してください。アップグレードを行う前に、アップストリームのドキュメントを再確認してください。構成キー、ログインフロー、依存関係、プラットフォームポリシーは個別に変更される可能性があります。

迅速な意思決定チェックリスト

  • 信頼できるオペレーターとアクセスポリシーを持つブリッジインスタンスを選択してください。
  • 各ブリッジを個別に登録し、生成された各トークンを保護してください。
  • デプロイ後、ホームサーバーがブリッジアドレスにアクセスできることを確認してください。
  • WhatsApp/Telegramアカウントを非公開でリンクし、Discordボットをサーバー管理者に承認してください。
  • 双方向でメッセージをテストし、その後、必要な追加機能のみをテストしてください。
  • 機密性の高い通信や重要な通信にブリッジを使用する前に、暗号化のサポート状況、履歴の動作、およびメンテナンス状況を確認してください。

コメントを残す

Nextcloudの「データベースに一部のインデックスが欠落しています」という警告を修正する

Nextcloudの「データベースに一部のインデックスが欠落しています」という警告を修正する

Nextcloudのデータベースインデックス不足警告を、公式のoccコマンドでクリアします。まずバックアップを作成し、変更内容をプレビューしてから修復を実行し、結果を確認してください。

Element WebでKeycloakを使用してシングルサインオン(SSO)を設定する方法

Element WebでKeycloakを使用してシングルサインオン(SSO)を設定する方法

Element Web 用の Keycloak SSO を設定するには、OIDC を Synapse に接続し、正確なコールバック URL を設定し、ユーザー クレームをマッピングし、ログアウトをテストします。

Zimbraの「LDAPサーバーが応答しません」起動エラーを修正する:実践的な復旧ガイド

Zimbraの「LDAPサーバーが応答しません」起動エラーを修正する:実践的な復旧ガイド

応答しないLDAPサーバーが原因で発生するZimbraの起動失敗を診断および修正する方法を学びましょう。これには、サービスチェック、DNS、ポート、証明書、LDAP URL、および復旧検証が含まれます。

ownCloud Infinite Scale 用の S3 オブジェクトストレージの設定方法

ownCloud Infinite Scale 用の S3 オブジェクトストレージの設定方法

ownCloud Infinite Scale向けに、s3ngドライバ、POSIXメタデータ、バケットポリシー、検証、および安全な本番環境チェックを使用して、S3互換のオブジェクトストレージを設定します。

Zimbraメールキューのバックログを修正する:Postfixを安全にフラッシュし、配信を確認する

Zimbraメールキューのバックログを修正する:Postfixを安全にフラッシュし、配信を確認する

Zimbra Postfixのバックログを検査する方法、延期されたメールと保留されたメールを識別する方法、安全なキューフラッシュを実行する方法、メッセージを削除せずに進捗状況を確認する方法を学びましょう。

Kopano Z-PushをActiveSyncモバイル同期用に設定する方法

Kopano Z-PushをActiveSyncモバイル同期用に設定する方法

Z-PushをKopanoと連携させて、ActiveSyncによるメール、連絡先、カレンダー、タスクの安全な同期を設定しましょう。バックエンドと展開方法を比較検討し、モバイル端末の設定を確認してください。

Jitsi Meetで「接続が切断されました」というエラーメッセージが表示される問題を修正する

Jitsi Meetで「接続が切断されました」というエラーメッセージが表示される問題を修正する

Jitsi Meetの接続切断に関するトラブルシューティングを、ブラウザ、モバイルデバイス、不安定なネットワーク、ファイアウォール、およびセルフホスト型サーバー向けの実用的なチェックリストで解説します。

Nextcloud Talkのビデオ通話品質とTURNサーバー接続を修正する

Nextcloud Talkのビデオ通話品質とTURNサーバー接続を修正する

Nextcloud Talkの通話品質のトラブルシューティング、coturnの設定、適切なポートの開放、ICE候補のテスト、TURNまたはHPBのどちらが適切な解決策であるかの判断を行います。

Nginxでカスタム要素Webクライアントをホストする方法

Nginxでカスタム要素Webクライアントをホストする方法

カスタムホームサーバー、HTTPS、キャッシュ、セキュリティヘッダーに加え、一般的なセットアップ上の問題に対する簡単なチェック機能を備えたElement WebをNginxにデプロイします。

BigBlueButtonプレゼンテーションアップロードエラー「サポートされていないファイルタイプ」を修正する

BigBlueButtonプレゼンテーションアップロードエラー「サポートされていないファイルタイプ」を修正する

BigBlueButtonの「サポートされていないファイル形式」表示エラーを修正するには、ファイル拡張子を確認し、実際のP​​DFをエクスポートし、別のファイルをテストし、管理者に連絡すべきタイミングを特定してください。