
Synapse: Python/Twistedで書かれたMatrixホームサーバー。
element-hq/synapse <https://github.com/element-hq/synapse>_ で積極的にメンテナンスされていますSynapse は、Matrix.org Foundation の一環として2019年から2023年にかけて開発された、オープンソースの Matrix <https://matrix.org/>_ ホームサーバーです。Matrix.org Foundation は Synapse のメンテナンスにリソースを割くことができず、Element によって開発が継続されています <https://github.com/element-hq/synapse>。また、他の Matrix ホームサーバー <https://matrix.org/ecosystem/servers/> を選択することもできます。
詳細については、「Synapse と Dendrite の今後」 <https://matrix.org/blog/2023/11/06/future-of-synapse-dendrite/>_ のブログ記事をご覧ください。
=========================================================================
簡単に言えば、Matrix はフェデレーション、暗号化、VoIP をサポートする、インターネット上のコミュニケーションのためのオープンスタンダードです。Matrix.org は Matrix プロジェクトの目標 <https://matrix.org/docs/guides/introduction>_ について詳しく説明しており、正式な仕様 <https://spec.matrix.org/>_ が技術的な詳細を記述しています。
.. contents::
Synapse のドキュメントには、Synapse のインストール方法 <https://matrix-org.github.io/synapse/latest/setup/installation.html>_ が記載されています。Docker イメージ <https://matrix-org.github.io/synapse/latest/setup/installation.html#docker-images-and-ansible-playbooks>_ または Matrix.org の Debian パッケージ <https://matrix-org.github.io/synapse/latest/setup/installation.html#matrixorg-packages>_ の使用をお勧めします。
.. _federation:
Synapse には、インストール後にその動作をカスタマイズするために使用できる、さまざまな 設定オプション <https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html>_ があります。フェデレーション用に Synapse を設定する方法 <https://matrix-org.github.io/synapse/latest/federate.html>_ については、こちらに詳細があります。
.. _reverse-proxy:
Synapse の前に、nginx <https://nginx.org/en/docs/http/ngx_http_proxy_module.html>、Apache <https://httpd.apache.org/docs/current/mod/mod_proxy_http.html>、Caddy <https://caddyserver.com/docs/quick-starts/reverse-proxy>、HAProxy <https://www.haproxy.org/>、または relayd <https://man.openbsd.org/relayd.8>_ などのリバースプロキシを置くことをお勧めします。これを行う利点の1つは、root 権限で Synapse を実行する必要なく、デフォルトの https ポート (443) を Matrix クライアントに公開できることです。設定方法については、リバースプロキシのドキュメント <https://matrix-org.github.io/synapse/latest/reverse_proxy.html>_ を参照してください。
Synapse のアップグレード手順は、アップグレードノート_ に記載されています。アップグレードには、Synapse のバージョンによっては追加の手順が必要になる場合がありますので、これらの手順を確認してください。
.. _アップグレードノート: https://matrix-org.github.io/synapse/develop/upgrade.html
Synapse は Python や PostgreSQL などのいくつかのプラットフォーム依存関係を使用しており、サポートされている上流バージョンに従うことを目指しています。詳細については、非推奨ポリシー <https://matrix-org.github.io/synapse/latest/deprecation_policy.html>_ を参照してください。
Matrix は、一部の API で生のユーザー提供データを提供します。具体的には、コンテンツリポジトリエンドポイント_ です。
.. _コンテンツリポジトリエンドポイント: https://matrix.org/docs/spec/client_server/latest.html#get-matrix-media-r0-download-servername-mediaid
XSS 攻撃を軽減するために合理的な努力を払っていますが(例えば、CSP_ を使用するなど)、Matrix ホームサーバーは他の Web アプリケーションをホストするドメイン上にホストすべきではありません。これは特に、Matrix Web クライアントや Web メールなどの他の機密性の高いアプリケーションとドメインを共有する場合に当てはまります。詳細については、https://developer.github.com/changes/2014-04-25-user-content-security を参照してください。
.. _CSP: https://github.com/matrix-org/synapse/pull/1021
理想的には、ホームサーバーは単に異なるサブドメインではなく、完全に異なる 登録ドメイン_ (トップレベルサイトまたは eTLD+1 とも呼ばれる) 上にあるべきです。これは、2つのアプリケーションが同じ登録ドメインを共有している限り、一部の攻撃_ が依然として可能であるためです。
.. _登録ドメイン: https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-03#section-2.3
.. _一部の攻撃: https://en.wikipedia.org/wiki/Session_fixation#Attacks_using_cross-subdomain_cookie
これを例で説明すると、Element Web またはその他の機密性の高い Web アプリケーションが A.example1.com でホストされている場合、理想的には Synapse を example2.com でホストする必要があります。代わりに B.example1.com でホストすることで一定程度の保護が提供されるため、一部のシナリオではこれも許容されます。ただし、Synapse を A.example1.com でホストすべきではありません。
上記のすべては、Synapse の public_baseurl 設定で使用されるドメインにのみ適用されることに注意してください。特に、そのサーバーでホストされる MXID に記載されているドメインには影響しません。
このアドバイスに従うことで、Synapse で XSS が見つかった場合でも、他のアプリケーションへの影響を最小限に抑えることができます。
新しい Synapse インストールを試す最も簡単な方法は、Web クライアントから接続することです。
ローカルマシンで Synapse のテストインスタンスを実行している場合を除き、一般的には、クライアントから正常に接続するには TLS サポートを有効にする必要があります。TLS 証明書 <https://matrix-org.github.io/synapse/latest/setup/installation.html#tls-certificates>_ を参照してください。
簡単な開始方法は、https://app.element.io/#/login または https://app.element.io/#/register からそれぞれ Element にログインまたは登録することです。ログイン先のサーバーを matrix.org から変更し、代わりに https://<server_name>:8448 の Homeserver URL を指定する必要があります(リバースプロキシを使用している場合は単に https://<server_name>)。別のクライアントを使用したい場合は、クライアント一覧 <https://matrix.org/ecosystem/clients/>_ を参照してください。
すべてがうまくいけば、少なくともログイン、ルームの作成、メッセージの送信ができるはずです。
.. _client-user-reg:
デフォルトでは、Matrix クライアントを介した新規ユーザーの登録は無効になっています。有効にするには:
登録設定セクション <https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#registration>_ で、homeserver.yaml の enable_registration: true を設定します。
次に、次のいずれか を行います。
a. CAPTCHA <https://matrix-org.github.io/synapse/latest/CAPTCHA_SETUP.html>_ を設定する。
b. または、homeserver.yaml で enable_registration_without_verification: true を設定する。
特にホームサーバーがパブリックインターネットに公開されている場合は、強く CAPTCHA の使用をお勧めします。これがないと、誰でもあなたのホームサーバーに自由にアカウントを登録できます。これは、攻撃者によって Matrix フェデレーションの残りの部分を標的とするスパムボットを作成するために悪用される可能性があります。
新しいユーザー名は、server_name と、アカウント作成時に指定する localpart から部分的に構成されます。名前は次の形式になります::
@localpart:my.domain.name
(「アット localpart ドット マイ ドット ドメイン ドット ネーム」と発音します)。
ログイン時と同様に、「カスタムサーバー」を指定する必要があります。「ユーザー名」ボックスに希望の localpart を入力します。
管理 FAQ <https://matrix-org.github.io/synapse/latest/usage/administration/admin_faq.html>_ には、一般的な問題への対処に関するヒントが含まれています。詳細については、Synapse の広範なドキュメント <https://matrix-org.github.io/synapse/latest/>_ を参照してください。
Synapse のインストールまたは管理に関する追加のサポートについては、コミュニティサポートルーム |room|_ で質問してください(必要に応じて matrix.org アカウントから)。サポートリクエストには GitHub の issue は使用せず、バグ報告と機能リクエストのみに使用します。
.. |room| replace:: #synapse:matrix.org
.. _room: https://matrix.to/#/#synapse:matrix.org
.. |docs| replace:: docs
.. _docs: docs
ID サーバーは、メールアドレスやその他のサードパーティ ID (3PID) を Matrix ユーザー ID にマッピングし、そのマッピングを作成する前に 3PID の所有権を確認する役割を担っています。
アカウントや認証情報が保存される場所ではありません。これらはホームサーバーにあります。ID サーバーは、サードパーティ ID を Matrix ID にマッピングするためだけのものです。
このプロセスは非常にセキュリティに敏感です。なぜなら、Matrix アカウントへのサインアップや 3PID データの収集が容易すぎると、スパムのリスクが明らかにあるからです。長期的には、これを管理するための分散システムを作成したいと考えていますが (matrix-doc #712 <https://github.com/matrix-org/matrix-doc/issues/712>)、それまでの間、Matrix エコシステムにおける信頼できる ID の管理の役割は、既知の信頼できるエコシステムパートナーのクラスターに委託されており、彼らは 'Matrix ID サーバー'(例えば Sydent <https://github.com/matrix-org/sydent>)を運用しています。その役割は、3PID ログインの認証と追跡、およびエンドユーザーの公開鍵の公開のみです。
Sydent の独自コピーをホストすることもできますが、これにより、メールアドレスを介して Matrix エコシステム内の他のユーザーに到達できなくなり、他のユーザーがあなたを見つけることもできなくなります。したがって、当面は、https://matrix.org または https://vector.im の集中型 ID サーバーのいずれかを使用することをお勧めします。
繰り返しますが、ID サーバーは、アカウントにメールアドレスを関連付けるか、メールアドレスを介して他のユーザーに招待を送信することを選択した場合にのみ使用されます。
コミュニティからの Synapse への貢献を歓迎します!
まずは、貢献者ガイド <https://matrix-org.github.io/synapse/latest/development/contributing_guide.html>_ から始めるのが最適です。これは、Synapse 開発者と Synapse 管理者の両方のための情報を含む、より大きな ドキュメント <https://matrix-org.github.io/synapse/latest>_ の一部です。開発者は特に以下に興味を持つかもしれません:
Synapse のデータベーススキーマ <https://matrix-org.github.io/synapse/latest/development/database_schema.html>_、Synapse の実装詳細に関するメモ <https://matrix-org.github.io/synapse/latest/development/internal_documentation/index.html>_、およびgit の使用方法 <https://matrix-org.github.io/synapse/latest/development/git.html>_。それらに加えて、Matrix 上の開発者コミュニティに参加してください:#synapse-dev:matrix.org <https://matrix.to/#/#synapse-dev:matrix.org>_、実際の人間がいます!
.. |support| image:: https://img.shields.io/matrix/synapse:matrix.org?label=support&logo=matrix :alt: (#synapse:matrix.org でサポートを受ける) :target: https://matrix.to/#/#synapse:matrix.org
.. |development| image:: https://img.shields.io/matrix/synapse-dev:matrix.org?label=development&logo=matrix :alt: (#synapse-dev:matrix.org で開発について議論する) :target: https://matrix.to/#/#synapse-dev:matrix.org
.. |documentation| image:: https://img.shields.io/badge/documentation-%E2%9C%93-success :alt: (GitHub Pages 上のレンダリングされたドキュメント) :target: https://matrix-org.github.io/synapse/latest/
.. |license| image:: https://img.shields.io/github/license/matrix-org/synapse :alt: (LICENSE ファイルでライセンスを確認する) :target: LICENSE
.. |pypi| image:: https://img.shields.io/pypi/v/matrix-synapse :alt: (PyPi でリリースされた最新バージョン) :target: https://pypi.org/project/matrix-synapse
.. |python| image:: https://img.shields.io/pypi/pyversions/matrix-synapse :alt: (サポートされている Python バージョン) :target: https://pypi.org/project/matrix-synapse