PythonとSimple-Matrix-Bot-Libを使用してMatrix Botをセットアップする方法
PythonとSimple-Matrix-Bot-Libを使用してMatrixボットを構築し、認証とデプロイのオプションを比較し、コマンドをテストし、代わりにmatrix-nioを使用すべき場合を理解します。
信頼性の高い Synapse リカバリは、読み取り可能な PostgreSQL ダンプ、クリーンな宛先データベース、および対応するホームサーバー ファイルから始まります。一般的な単一データベースのインストールの場合、Synapse のバックアップ ガイドでは PostgreSQL のカスタム ダンプ フォーマットを推奨し、 の内容を除外していますe2e_one_time_keys_json。新しく作成された空のデータベースにリストアします。以前のインストールで残されたテーブルの上にダンプを重ねないでください。次に、リストアされたデータベースに対して Synapse が起動し、ローカル メディアと署名キーが存在することを確認します。
このチュートリアルでは、Linux ホスト、という名前の PostgreSQL データベースsynapse、およびという名前のデータベース ロールを前提としていますsynapse_user。ご使用のデプロイメントで使用されているデータベース、ロール、バックアップ パス、サービス名、および構成パスに置き換えてください。Docker Compose、Kubernetes、マネージド PostgreSQL、およびマルチデータベース Synapse デプロイメントでは、それぞれの環境に対応した同等のコマンドが必要です。
pg_dumpは 1 つの PostgreSQL データベースを一貫性のあるスナップショットとしてキャプチャするため、ダンプの実行中も PostgreSQL と Synapse はオンラインのままにしておくことができます。カスタム形式のアーカイブ ( -Fc) は で検査および復元できますpg_restore。Synapse ガイドでは、ワンタイムキーのテーブルデータを除外することを特に推奨しています。古い使用済みキーを復元すると、クライアントがキーを再度受信し、メッセージの復号化エラーにつながる可能性があります。テーブル定義はアーカイブに表示される場合があります。アーカイブ リストを確認する際は、リストされたテーブルに行が含まれていると想定するのではなく、テーブルデータのエントリを探してください。
データベースのダンプだけでは、ホームサーバーの完全なバックアップにはなりません。homeserver.yaml参照するファイル、サーバー署名キー、メディアストアディレクトリも保持してください。Synapseのバックアップガイドでは、ローカルにアップロードされたメディアはホームサーバーに唯一のコピーが保存されている可能性があるため、重要であるとされています。構成で複数のデータベースエントリを使用している場合は、Synapseが使用するすべてのデータベースのダンプを計画してください。
pg_dump、、、pg_restoreおよびcreatedbがpsqlインストールされており、PostgreSQLサーバーと互換性があることを確認してください。media_store_path。シェル履歴、チャット、ログに秘密情報を公開せずにバックアップします。自己管理型のPostgreSQLホストでは、PostgreSQL管理者として接続し、データベース一覧とリレーションを確認してください。サンプル構成からコピーした仮名に頼らないでください。ホームサーバーがリモートデータベースまたは管理対象データベースを使用している場合は、承認済みの接続方法を使用し、ダンプアカウントに必要な読み取りアクセス権があることを確認してください。

バックアップアカウントまたは管理者のみが読み取り可能なディレクトリを作成します。以下の例では、pg_dumpローカルのPostgreSQLオペレーティングシステムアカウントとして実行され、保護されたパスに書き込みます。ご使用の環境で存在し、書き込み可能なパスに変更してください。
sudo -u postgres pg_dump -Fc \
--exclude-table-data e2e_one_time_keys_json \
synapse -f /var/backups/synapse/synapse.dump
データベースがリモートにある場合は、保護されたファイルやlibpq環境変数など、環境で承認されている方法で接続設定を指定してください.pgpass。コマンドラインにパスワードを直接入力することは避けてください。ワンタイムキーテーブルを別の方法で処理する明確な理由がない限り、除外オプションを有効にしてください。

ダンプファイルが存在し、値がゼロ以外であり、PostgreSQLアーカイブとして読み取り可能であることを確認してください。正常にリスト化できることは有用な最初の確認事項ですが、リストアが完了することや、ホームサーバー全体がユーザーにサービスを提供できることを保証するものではありません。
sudo -u postgres pg_restore --list /var/backups/synapse/synapse.dump
sha256sum /var/backups/synapse/synapse.dump
チェックサムをバックアップレコードの横に保存し、ダンプを別のシステムまたはバックアップサービスにコピーします。コピー後にチェックサムを再計算し、値を比較します。本番環境の復旧を目的として、定期的なバックアップをスケジュールし、複数世代のデータを保持し、暗号化し、定期的にリストア訓練を実行します。
リストアを行うには、データベースの置換またはテスト中にSynapseが再接続できないように、まずSynapseを停止してください。以下のサービス名は一部のパッケージインストールで共通していますが、環境によって異なります。DockerユーザーはComposeプロジェクトを通じてSynapseサービスを停止し、オーケストレーションされたデプロイメントの場合は通常のメンテナンス手順に従ってください。PostgreSQL自体を停止する必要はありません。

リストアには、新しい空のデータベースを使用してください。既存の Synapse データベースや、既にテーブルが含まれているデータベースに上書きしてリストアしないでください。ロールバックのために現在のデータベースを保持する必要がある場合は、データベースをそのままにして、一時的なデータベース名でリストアし、Synapse の設定を変更する前に検証を行ってください。
sudo -u postgres createdb \
--encoding=UTF8 --locale=C --template=template0 \
--owner=synapse_user synapse
データベースの所有者とロケールは、Synapse の設定要件と一致する必要があります。ターゲット名が既に存在する場合は、停止して使用するデータベースを確認してください。削除しても安全だと考えないでください。必要な PostgreSQL ロールを最初に作成します。単一データベースにはpg_dumpクラスタ全体のロールは含まれないため、新しい PostgreSQL クラスタに移行する管理者は、で作成された個別に保護されたグローバル バックアップも必要になる場合がありますpg_dumpall --globals-only。

カスタムアーカイブをその空の保存先にロードします。明示的なエラーオプションを指定すると、エラーが発生した際に復元処理が中断され、処理が続行されて見落としやすい不完全な結果が残るのを防ぎます。
sudo -u postgres pg_restore --exit-on-error \
--dbname=synapse /var/backups/synapse/synapse.dump
ダンプで除外されなかった行がある場合はe2e_one_time_keys_json、復元されたデータベースに接続し、Synapse を起動する前にそのテーブルを切り捨ててください。これは、これらの行を含むバックアップに対して Synapse が文書化している復旧時の安全対策です。このコマンドをライブデータベースに対して安易に実行しないでください。そのテーブル内のすべての行が削除されます。


sudo -u postgres psql -d synapse \
-c 'TRUNCATE e2e_one_time_keys_json;'
推奨される除外設定を使用した場合、復元データには古いワンタイムキー行は含まれないため、この切り捨て処理は不要です。テーブルエントリは、pg_restore --listデータを含まないテーブル定義を表す場合があります。アーカイブの内容を確認する際は、エントリに注意してくださいTABLE DATA。最も安全な運用記録は、使用したダンプコマンドそのものです。
再起動する前に、復元された構成が目的のデータベースを指していること、および想定される署名キーとメディアストアがSynapseプロセスから利用可能であることを確認してください。一時的なデータベース名で復元した場合は、データベース設定を安全に更新し、ファイルを検証してから、通常のデプロイプロセスを使用してアクティブ化してください。新しいインスタンスがチェックに合格するまで、古いデータベースと以前の構成は保持しておいてください。
デプロイメントに適したコマンドを使用してサービスを開始してください。systemdホストでは、サービスの状態と最新のログを確認してください。コンテナでは、コンテナの健全性とログを確認してください。実行中のプロセスは初期シグナルであり、ユーザーがルームを閲覧したり、メッセージを送信したり、添付ファイルを取得したりできることの証明ではありません。

メディアファイル、参照されている構成、またはロールが欠落している場合でも、復元は技術的には成功する可能性があります。ユーザーが添付ファイルの欠落を確認した場合は、構成済みのメディアストアを確認し、対応するローカルメディアバックアップを復元してください。Synapseが接続できない場合は、復元されたデータベースの所有者、認証情報、ホスト、データベース名、ロケール、およびアクティブな構成ファイルを比較してください。
| 信号 | 次に確認すべき事項 |
|---|---|
pg_restore既存の関係または所有権の誤りを報告する | 復元先が空であり、必要なロールが存在することを確認してください。新しいデータベースに復元してください。--clean保持する必要のある内容を含むデータベースに対して、ショートカットとして使用しないでください。 |
| dumpコマンドがゼロ以外の終了コードを返すか、読み取り不可能なファイルを生成する。 | クライアントとサーバーの互換性、権限、ディスク容量、宛先のアクセス許可、およびPostgreSQLログを確認してください。新しいダンプを作成し、それを使用する前に検証してください。 |
| Synapse は起動しますが、古いワンタイムキーが含まれています | Synapseを停止し、クライアントへのサービス提供を許可する前に、文書に記載されている切断手順に従ってください。 |
| 客室は機能するが、地元の備品が不足している | 対応するローカルメディアストアと設定を復元してください。PostgreSQLのダンプにはアップロードされたメディアファイルは含まれません。 |
| 復旧時間またはデータベースサイズが許容範囲を超えています | PostgreSQLのその他のバックアップ手法(ベースバックアップやWALアーカイブを使用した特定時点復旧など)を、復旧時点目標および復旧時間目標に照らし合わせて評価してください。 |
論理ダンプは、多くの中小規模のシステム環境において移植性と容易性を兼ね備えていますが、データベースの規模が大きくなるにつれて復元に時間がかかる場合があります。大規模システムや高可用性サービスの場合は、PostgreSQLの最新のバックアップに関するドキュメントを参照し、テスト済みの物理バックアップまたは特定時点への復旧設計を計画してください。移植性や監査上の特別なニーズがある場合は、独立した論理ダンプを保持してください。どちらの方法も、PostgreSQL外部に保存されているファイルを個別にバックアップしない限り、それらのファイルを保護しません。

pg_restore --list、そのチェックサムはオフホストのコピーと一致します。ドキュメントは2026年10月6日に確認済みです。コマンド名とサービス管理は、オペレーティングシステム、コンテナイメージ、PostgreSQLのバージョン、およびSynapseのデプロイ方法によって異なります。ご使用のバージョンとパッケージング方法に対応するドキュメントを参照して、手順をご確認ください。
PythonとSimple-Matrix-Bot-Libを使用してMatrixボットを構築し、認証とデプロイのオプションを比較し、コマンドをテストし、代わりにmatrix-nioを使用すべき場合を理解します。
DNS、ファイアウォールルール、公式リポジトリ、Let's Encrypt SSL、サービスチェック、NATトラブルシューティングを含むJitsi MeetをUbuntu 24.04にインストールします。
ownCloud Desktopの同期証明書エラーを修正するには、サーバーURL、証明書名と証明書チェーン、システムクロック、クライアントバージョン、および信頼済みCAストアを確認してください。
PhpRedis、APCu、ループバック専用のRedisサービス、および実践的な検証手順を使用して、Ubuntu 24.04上でNextcloud向けにRedisファイルロックと分散キャッシュを設定します。
デバイス認証、キーのバックアップ、リカバリキー、および紛失したルームキーを確認することで、メッセージ履歴を損なうことなく、Element Webの復号化エラーをトラブルシューティングします。
Nextcloudの2要素認証プロバイダーを有効にする方法、ユーザーまたはグループに対して2要素認証を強制する方法、復旧を準備する方法、ログインとクライアントアプリを検証する方法を学びましょう。
zimbraMtaMyNetworks を使用すると、Zimbra で認証されていない送信メールのリレーを信頼できる IP アドレスに制限できます。許可リストを安全に検査、更新、再読み込み、検証する方法を学びましょう。
Nextcloud の PHP メモリ制限を少なくとも 512M に設定し、適切な Web PHP 設定を見つけて、Apache または PHP-FPM を再起動し、警告が解消されたことを確認してください。
CoturnをSynapseと連携させて、Matrix WebRTC通話を設定します。共有認証情報、NAT、ファイアウォールポート、TLSオプションを設定し、従来のTURNとMatrixRTCおよびLiveKitを区別します。
Nextcloud MailをGmailまたはMicrosoft 365向けにOAuth2で設定し、IMAP/SMTPアクセスを確認し、リダイレクトの問題をトラブルシューティングし、制限事項を把握します。