Discourseフォーラムを確実に復旧するための、最も基本的で信頼できる方法は何ですか?

これまで数年、友人が運営するフォーラムのホスティングを手伝ってきました。

Hetznerのサーバーをレンタルしてもらい、Discourse上で自動バックアップを設定し、rcloneとcronタスクを使って私のGoogle Driveに同期するようにしています。各フォーラムの管理者には、私のDriveにある各自のバックアップにアクセスする権限を与えています。システム管理者ではない私にとって、これ以上シンプルで安全な方法は思いつきません。

数回、rCloneのトークンが更新されていないことに気づいたことがあります(少なくとも1つのインスタンスでは)。その際は再設定する必要がありました。同期がうまくいっていない場合にアラートが一切ないため、私は時々Driveを手動で確認し、最新のバックアップが最近のものであることを確認しています。

もしあなたが自発的に誰かや団体のフォーラムホスティングを手伝うとしたら、フォーラムが何らかの理由で壊滅した際に、安全に復元できるバックアップが常にどこかに存在することを保証するために、どのようなソリューションを設定しますか?

私はcronジョブから、制限付きアカウントを使用してrsync over SSHでバックアップを取得しています。実際には私自身ではなく、私のモッド(管理者)の一人がそうしています。私はアップデートを行う際にバックアップを取得してダウンロードします。そのため、一方のケースではフォーラムの活動記録が数日分失われる可能性があり、もう一方のケースでは1か月以上失われる可能性があります。

おそらく私自身もcrontabを設定すべきです。バックアップの頻度を上げることもできます。現在は2日ごとに設定されています。

どちらのケースでも、私たちは自らのシステムをある程度適切に管理できる能力が必要です。フォーラムが完全に失われるのは、私たちがダウンロードしたコピーと自身のバックアップ、そしてサーバー自体のすべてを同時に失った場合のみです。

編集:良い指摘ですね。プロセスが正常に動作していることを確認する何らかの積極的なチェック機構が必要であり、ダウンロードされたバックアップが正常であるという、浅くても何らかの確信を持つべきです。

ドメインについては特別な配慮をしていません。理想を言えば、ドメインもまた二重の管理や何らかの共同所有の形になるべきです。もしドメインの管理を失った場合、フォーラムは新しいドメインで再構築される必要があります。メールでダイジェストや通知をメンバーに送れるため、ある程度の信頼があれば、メンバーは再登録できるでしょう。

バックアップにはS3の利用をお勧めします。安全を重視するなら、フォーラムの毎日バックアップを。さらに万全を期すなら、VPSのバックアップも。

まあ、私はデータベースを1時間ごとにバックアップしています :man_shrugging: ECサイトと同じ原理で、復元可能かつ復元したい最大のリテンション期間(データ保持期間)を考慮する必要があります。

restic による S3 へのバックアップと外部ディスクへのバックアップ

同意します。S3の設定を含むYMLファイルとバックアップがS3にある場合、新しいサーバーにフォーラムを復元するにはYMLファイルだけで済みます。これにより、ディスクをバックアップで埋め尽くすこともなくなります。

注意点として、S3バケットとVMの請求書を支払うことを忘れないでください。Cloudflareのが最も安いのではと思います。

以前、誰かがAWSアカウントの管理を失い、すべての画像を失ってしまった事例がありました。請求書を支払うことを忘れないようにするコストは、軽視すべきものではありません。

まさにその通りです。データのすべてのコピーを一つのプロバイダーに依存しないでください。

暗号化されたコピーを3つ保持しています。1つはホスト上、もう1つはクラウド(S3互換)、最後は光学式HDまたはUSBドライブです。

分散型ストレージへのバックアップを計画しており、現在利用可能なオプションの信頼性も調査中です。

現在、毎日1回バックアップを実行してアップロードしています。
データベースはDiscourseの組み込みバックアップ機能でバックアップし、アップロードされた元画像はresticで毎日増分バックアップを実行しています。
すべてクラウドストレージにアップロードしていますが、現状の欠点は1つのクラウドストレージにしかアップロードしていない点です。将来的には複数のクラウドストレージにアップロードできるようになれば理想的です。

オフサイトバックアップとオブジェクトストレージを使用してください。私はCloudflare R2(S3互換)を使用しており、これまで何度か異なるサーバーにリストアしたことがあります。管理もリストアも簡単です。また、デュアルコンテナビルドも使用することをお勧めします。

こうした質問に対して役立つ戦術の一つは、脅威モデル(threat model)を検討することです。

すでにいくつかの例を見てきました。

  • 火災により、サーバーが設置されている建物が焼失する
  • プロバイダーとの契約アカウントの管理を失う
  • ドメインを管理している人物が永久的に連絡不能になる
  • メールアカウントへのアクセスを失う
  • 何かが停止したため、バックアップが最新でないことが判明する
  • 技術的な理由でバックアップを復元できない
  • フォーラムの管理者が永久的に連絡不能、または協力的でない

要約すると、

  • 建物は火災や水害に遭う
  • 人間は仲違いしたり、死亡したりする
  • 企業は方針を変更し、恣意的な決定を下す
  • データの単一のコピーは、欠陥があったりアクセス不能になったりする可能性がある

これらのそれぞれについて、各人物、各企業、各コピーに対して検討し、自分の脆弱性がどのようなものかを把握してください。

技術的な側面に抵抗がなければ、git-annexを見てみてください。