特定のディスコースバックアップバージョンを復元する

数年間、小さなフォーラムを運営しており、順調に進んでいます。自動バックアップを設定しましたが、Discourseのバージョンを長期間更新していませんでした。

サーバーが故障しましたが、バックアップはあります。バックアップは古いDiscourseバージョンのもので、約2年前のものです。最新バージョンをインストールしてバックアップから復元しようとすると、うまくいきません。古いバージョンをインストールしようとしても、それは不可能です。セットアップスクリプトは自動的に新しいコミットと最新のDockerイメージを取得します。ランチャースクリプトでこれらの行を見つけて削除しましたが、Dockerイメージ内のいくつかの内部コードもGitを最新バージョンにチェックして更新します。

どうすればよいですか?古いDiscourseバージョンを実行するには、または新しいバージョンに古いバックアップを復元するにはどうすればよいですか?

ヘルプが必要な場合は、もっと具体的に説明してください。それは機能するはずです。もしあなたが当時持っていたのと同じバージョンのDiscourseをインストールできたとしても、問題は機能しない可能性が高いです。

復元を試みたときにどのようなエラーが発生しましたか?

./launcher logs app の出力に重大なエラーはありませんが、フォーラムは機能していません。ほとんどすべてのボタンが機能せず、トピックがなく、HTMLは奇妙に見えます(バグのあるスタートページが繰り返され、無限に下にスクロールできます)。

私は専門的な技術者ではありません。レポートに追加できるログはどれか、またそれらをどこで見つけられるか教えていただけると幸いです。

信頼できるログはどこで見つけられますか?

フォーラムの /logs ルートにエラーはありますか?

問題は、/logs にアクセスできないことです。「このページは存在しないか、プライベートです。」そして、確認するためにログインできません。

https://forum.example.com/u/admin-login管理者ログイン を試してください[1]


  1. 毎日新しいことを学びます! ↩︎

リンクありがとうございます。しかし、それは機能しません。メールは送信されますが、SMTPサーバーがなく、このプラグインを使用しています: Disable Email Verification for Discourse Plugin

もしかしたら、サーバーで何が起こったのかを確認するために、コンソールコマンドで何かできることはありますか?

AFAIK、そのプラグインは壊れています。使用しない方が良いかもしれません。

「いいね!」 1

サーバーを作成した際、ユーザーがメール確認なしでアカウントを作成できるようにする別の解決策はありませんでした。

現在壊れているかもしれませんが、少なくともフォーラムの古いバージョンを復元しようとしています。

「いいね!」 1

現在、フォーラムのロゴとタグのみが表示され、すべてのボタンが使用できなくなっており、バックアップがあるにもかかわらず、フォーラムから一切のデータにアクセスできません。

「いいね!」 1

それは困りましたね。ログを取得するために、ここで説明されていることを試していただけますか?

セーフモードは試しましたか?

そして、動作しないプラグインと、おそらく他のプラグインもコメントアウトしてください。何か動作するようになったら、それらを元に戻すことができます。

Rails の本番ログに重大なエラーは含まれておらず、product_errors.log は空です。

Unicorn エラーログ unknown OID 17246: failed to recognize type of 'embeddings'. It will be treated as String. Failed to report error: Connection refused - connect(2) for 127.0.0.1:6379 (redis://localhost:6379) 2 EOFError subscribe failed, reconnecting in 1 second. Call stack /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-client-0.25.2/lib/redis_client/ruby_connection.rb:103:in `rescue in read' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-client-0.25.2/lib/redis_client/ruby_connection.rb:94:in `read' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-client-0.25.2/lib/redis_client.rb:535:in `next_event' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-5.4.0/lib/redis/subscribe.rb:66:in `subscription' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-5.4.0/lib/redis/subscribe.rb:17:in `subscribe' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-5.4.0/lib/redis.rb:175:in `_subscription' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-5.4.0/lib/redis/commands/pubsub.rb:17:in `subscribe' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/message_bus-4.4.1/lib/message_bus/backends/redis.rb:293:in `global_subscribe' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/message_bus-4.4.1/lib/message_bus.rb:769:in `global_subscribe_thread' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/message_bus-4.4.1/lib/message_bus.rb:740:in `block in new_subscriber_thread' Failed to report error: Connection refused - connect(2) for 127.0.0.1:6379 (redis://localhost:6379) 3 Error fetching job: Connection refused - connect(2) for 127.0.0.1:6379 Failed to report error: Connection refused - connect(2) for 127.0.0.1:6379 (redis://localhost:6379) 3 Error fetching job: Connection refused - connect(2) for 127.0.0.1:6379 Failed to report error: Connection refused - connect(2) for 127.0.0.1:6379 (redis://localhost:6379) 3 Error fetching job: Connection refused - connect(2) for 127.0.0.1:6379 Failed to report error: Connection refused - connect(2) for 127.0.0.1:6379 (redis://localhost:6379) 3 Error fetching job: Connection refused - connect(2) for 127.0.0.1:6379 Failed to report error: Connection refused - connect(2) for 127.0.0.1:6379 (redis://localhost:6379) 3 Error fetching job: Connection refused - connect(2) for 127.0.0.1:6379 Failed to report error: Connection refused - connect(2) for 127.0.0.1:6379 (redis://localhost:6379) 3 Job exception: Connection refused - connect(2) for 127.0.0.1:6379 sidekiq-exception Failed to report error: Connection refused - connect(2) for 127.0.0.1:6379 (redis://localhost:6379) 3 Job exception: Connection refused - connect(2) for 127.0.0.1:6379 sidekiq-exception Failed to report error: Connection refused - connect(2) for 127.0.0.1:6379 (redis://localhost:6379) 3 Job exception: Connection refused - connect(2) for 127.0.0.1:6379 sidekiq-exception Failed to report error: Connection refused - connect(2) for 127.0.0.1:6379 (redis://localhost:6379) 3 Job exception: Connection refused - connect(2) for 127.0.0.1:6379 sidekiq-exception Failed to report error: Connection refused - connect(2) for 127.0.0.1:6379 (redis://localhost:6379) 3 Job exception: Connection refused - connect(2) for 127.0.0.1:6379 sidekiq-exception Failed to report error: Connection refused - connect(2) for 127.0.0.1:6379 (redis://localhost:6379) 3 heartbeat: Connection refused - connect(2) for 127.0.0.1:6379 Failed to report error: Connection refused - connect(2) for 127.0.0.1:6379 (redis://localhost:6379) 3 Job exception: Connection refused - connect(2) for 127.0.0.1:6379 (redis://localhost:6379) sidekiq-exception Failed to report error: Connection refused - connect(2) for 127.0.0.1:6379 (redis://localhost:6379) 2 Connection refused - connect(2) for 127.0.0.1:6379 (redis://localhost:6379) subscribe failed, reconnecting in 1 second. Call stack /usr/local/lib/ruby/3.3.0/socket.rb:1219:in `__connect_nonblock' /usr/local/lib/ruby/3.3.0/socket.rb:1219:in `connect_nonblock' /usr/local/lib/ruby/3.3.0/socket.rb:60:in `connect_internal' /usr/local/lib/ruby/3.3.0/socket.rb:141:in `connect' /usr/local/lib/ruby/3.3.0/socket.rb:647:in `block in tcp' /usr/local/lib/ruby/3.3.0/socket.rb:231:in `each' /usr/local/lib/ruby/3.3.0/socket.rb:231:in `foreach' /usr/local/lib/ruby/3.3.0/socket.rb:637:in `tcp' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-client-0.25.2/lib/redis_client/ruby_connection.rb:120:in `connect' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-client-0.25.2/lib/redis_client/connection_mixin.rb:11:in `reconnect' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-client-0.25.2/lib/redis_client.rb:769:in `block in connect' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-client-0.25.2/lib/redis_client/middlewares.rb:12:in `connect' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-client-0.25.2/lib/redis_client.rb:768:in `connect' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-client-0.25.2/lib/redis_client.rb:759:in `raw_connection' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-client-0.25.2/lib/redis_client.rb:719:in `ensure_connected' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-client-0.25.2/lib/redis_client.rb:314:in `call_v' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-5.4.0/lib/redis/client.rb:90:in `call_v' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rack-mini-profiler-4.0.1/lib/mini_profiler/profiling_methods.rb:90:in `block in profile_method' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-5.4.0/lib/redis.rb:152:in `block in send_command' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-5.4.0/lib/redis.rb:151:in `synchronize' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-5.4.0/lib/redis.rb:151:in `send_command' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-5.4.0/lib/redis/commands/strings.rb:191:in `get' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/message_bus-4.4.1/lib/message_bus/backends/redis.rb:366:in `process_global_backlog' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/message_bus-4.4.1/lib/message_bus/backends/redis.rb:279:in `block in global_subscribe' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/message_bus-4.4.1/lib/message_bus.rb:769:in `global_subscribe_thread' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/message_bus-4.4.1/lib/message_bus.rb:740:in `block in new_subscriber_thread' unknown OID 17246: failed to recognize type of 'embeddings'. It will be treated as String.

Sidekiq のログは空です。

Nginx のログに問題はありません。

Unicorn ログで Redis 接続の問題を確認しましたが、Redis ログ自体にはエラーはありません。

9706:C 28 Aug 2025 15:11:25.025 * Fork CoW for RDB: current 1 MB, peak 1 MB, average 0 MB 881:M 28 Aug 2025 15:11:25.106 * Background saving terminated with success 881:M 28 Aug 2025 15:16:26.096 * 100 changes in 300 seconds. Saving... 881:M 28 Aug 2025 15:16:26.097 * Background saving started by pid 10037 10037:C 28 Aug 2025 15:16:26.109 * DB saved on disk 10037:C 28 Aug 2025 15:16:26.109 * Fork CoW for RDB: current 1 MB, peak 1 MB, average 0 MB 881:M 28 Aug 2025 15:16:26.198 * Background saving terminated with success 881:M 28 Aug 2025 15:21:27.004 * 100 changes in 300 seconds. Saving... 881:M 28 Aug 2025 15:21:27.004 * Background saving started by pid 10365 10365:C 28 Aug 2025 15:21:27.019 * DB saved on disk 10365:C 28 Aug 2025 15:21:27.019 * Fork CoW for RDB: current 1 MB, peak 1 MB, average 0 MB 881:M 28 Aug 2025 15:21:27.105 * Background saving terminated with success 881:M 28 Aug 2025 15:26:28.030 * 100 changes in 300 seconds. Saving... 881:M 28 Aug 2025 15:26:28.031 * Background saving started by pid 10703 10703:C 28 Aug 2025 15:26:28.050 * DB saved on disk 10703:C 28 Aug 2025 15:26:28.051 * Fork CoW for RDB: current 1 MB, peak 1 MB, average 0 MB 881:M 28 Aug 2025 15:26:28.132 * Background saving terminated with success 881:M 28 Aug 2025 15:31:29.094 * 100 changes in 300 seconds. Saving... 881:M 28 Aug 2025 15:31:29.095 * Background saving started by pid 11028 11028:C 28 Aug 2025 15:31:29.109 * DB saved on disk 11028:C 28 Aug 2025 15:31:29.110 * Fork CoW for RDB: current 1 MB, peak 1 MB, average 0 MB 881:M 28 Aug 2025 15:31:29.196 * Background saving terminated with success

PostgreSQL のログにエラーはありません。

それを有効にするにはどうすればよいですか?

申し訳ありません。「safe mode」の代わりに「safe-mode」と入力してしまい、自動リンクされていないことに気づきませんでした。

ありがとうございます。うまくいき、フォーラムは動作しています(完全にではありませんが、コンテキストでトピックにアクセスできます)。

ただし、セーフモードなしではフォーラムは使用できず、どのプラグインをインストールしたか正確には覚えていません。プラグインのリストはapp.ymlにあるはずですが、サーバーは停止しており、app.ymlが含まれていないバックアップしかありません。フォーラムを復元し、破損したプラグインを削除するにはどうすればよいですか?

既存の app.yml を使用せずに復元した場合、バンドルされているプラグイン(すべて公式のもの)以外はインストールされないはずです。

ただし、テーマとテーマコンポーネントはバックアップに含まれているため、それらを無効にしてみてください。

セーフモードを使用して、テーマとコンポーネントのみを無効にし、問題がそれらのいずれかによって引き起こされていることを確認してください。

「いいね!」 2

テーマなしでは機能しますが、テーマはどこで見つけられますか?バックアップには、dump.sql.gz とユーザーメディアとファイルのみを含む uploads フォルダの 2 つの項目しか表示されません。

管理インターフェースからテーマにアクセスできます。まずすべて無効にしてから、1つずつ有効にする(または他の方法で)ことができます。

「いいね!」 1