これは、すべての設定とデータを含め、Discourse インスタンスをあるサーバーから別のサーバーに移動するためのガイドです。このガイドは、Docker を使用しているセルフホスト型 Discourse インスタンスに適用されます。
必要なユーザーレベル: システム管理者
この手順にはドメインと DNS の変更が含まれます。ソースサーバーと宛先サーバーの両方にアクセスできることを確認してください。
このガイドでは、Discourse インスタンスをあるサーバーから別のサーバーに移行するプロセスを順を追って説明し、データ、設定、構成が保持されるようにします。
@pfaffman によって追加された免責事項 2025-09-12T05:00:00Z.
これらの手順は、現在 https と Let’s Encrypt を使用しているため、正常に機能しません。新しいサーバーがキーを要求できるように、DNS がそのサーバーに向けられている必要があります。私が推奨するのは、rsync を使用して Discourse サイトを別の VPS に移動するに従うことです(おそらく --exclude postgres* を使用し、その後コマンドラインからデータベースをバックアップおよび復元します)。これは、方法を知っていれば、ローカル DNS を新しいサーバーに向けるように調整でき、インターネットの他の部分が古いサイトを見ている間にテストできるため、うまい方法です。
要約
このガイドでは、次の主要な手順を実行します。
- 現在の Discourse インスタンス(ソースサーバー)をバックアップします。
- バックアップファイルを宛先 Discourse インスタンス(宛先サーバー)に転送します。
- 宛先サーバーでバックアップを復元します。
- DNS 設定を更新します(該当する場合)。
DNS 設定の調整(必要な場合)
新しいサーバーで 同じドメイン を使用している場合は、事前に DNS エントリの TTL(生存時間)を短く設定します。これにより、更新された DNS レコードの伝播中のダウンタイムを最小限に抑えることができます。新しいドメイン を使用する場合は、この手順は省略できます。
ソースサーバーへのログインと準備
- 管理者権限を持つアカウントで、ソースの Discourse インスタンスにログインします。
- ソースサーバーと宛先サーバーの両方が次を使用していることを確認します。
- 同じ Discourse バージョン。
- 同じプラグインセット。
/admin/upgradeにアクセスして、両方のサーバーで Discourse バージョンをアップグレードします。
より新しいバックアップを古い Discourse バージョン、または互換性のない PostgreSQL バージョンに復元するとエラーが発生する可能性があるため、避けてください。
バックアップの作成とダウンロード
- ソースの Discourse インスタンスで
/admin/backupsに移動します。 - Backup ボタンをクリックしてバックアップを作成します。
- プロンプトが表示されたら、Yes をクリックして確認します。
- バックアップが完了したら、Backup files タブに移動し、新しく作成されたバックアップを見つけます。
- Download をクリックして、ダウンロードリンクを含むメールを受け取ります。メール内のリンクをクリックして、バックアップファイルをローカルに保存します。
続行する前に、
app.ymlファイルを確認し、CDN 構成、インストールされているプラグイン、HTTPS サポートなどのオプション設定がソースサーバーと宛先サーバー間で一貫していることを確認してください。
宛先サーバーでのバックアップの復元
コマンドラインからバックアップを復元するには、関連ドキュメントを参照してください。
- 宛先の Discourse インスタンスに管理者としてサインインします。
/admin/backups/settingsに移動し、allow restore設定を有効にします。/admin/backupsに移動し、Backup files タブをクリックします。Upload ボタンをクリックして、ダウンロードしたバックアップファイルをアップロードします。
- アップロードが完了したら、アップロードされたバックアップの横にある ⋮(その他のオプション)メニューをクリックし、Restore をクリックします。
- プロンプトが表示されたら、Yes をクリックして確認します。
復元プロセスが開始されます。これにはデータベースのサイズに応じて時間がかかる場合があります。プロセスが完了すると、自動的にログアウトされます。
最終処理とログイン
- 宛先の Discourse インスタンスに管理者資格情報でログインします。
- サイトが HTTPS を使用してバックアップされた場合、新しいサーバーで HTTPS が有効になっていることを確認します。正しく設定されていない場合は、Rails コンソールを使用して一時的に「force https」設定を無効にします。
app.ymlファイルを編集してインスタンスを再構築することにより、オプションの構成を再度有効にします。これには以下が含まれる場合があります。- CDN サポートの有効化。
- 追加のプラグインのインストール。
- HTTPS 構成の設定。
一般的な問題と解決策
バックアップファイルが復元されない
- ソースサーバーと宛先サーバー間で Discourse のバージョンと PostgreSQL のバージョンが一致していることを確認してください。
復元後にログインできない(HTTPS が有効な場合)
- Rails コンソールを使用して、次を実行することで
force httpsを一時的に無効にします。SiteSetting.force_https = false



