しばらくしてからdiscourseのアップデートに問題が発生 - POSTGRESのアップグレードが失敗しました

ブラウザの admin/update で確認したところ、すべて最新バージョンであるというメッセージが表示されますが、バージョンは v2.4.0.beta2 +17 となっており、最新バージョンは 3.6.0.beta2 であると理解しています。

そのため、ターミナルから ./launcher rebuild app を使用して更新を試みましたが、「UPGRADE OF POSTGRES FAILED」というメッセージが表示され、更新は失敗しました。POSTGRES の更新に関する問題について、サポートページ および類似の投稿の指示に従いましたが、問題を解決できませんでした。

/var/discourse/shared/standalone/log/var-log/postgres のログを確認したところ、以下のようなエラーメッセージが繰り返し表示されていました。

2025-11-19 21:42:13.815 GMT [242] LOG: skipping missing configuration file “/shared/postgres_data/postgresql.auto.conf”
2025-11-19 21:42:13.816 UTC [242] FATAL: data directory “/shared/postgres_data” has wrong ownership
2025-11-19 21:42:13.816 UTC [242] HINT: The server must be started by the user that owns the data directory.

理解できない点として、/shared/postgres_data というディレクトリは存在せず、代わりに /shared/standalone/postgres_data が存在します。

ターミナルからのエラーメッセージを以下に示します。更新を機能させるためのヒントをいただけると幸いです。

よろしくお願いします。

ニック


Success. You can now start the database server using:



    /usr/lib/postgresql/13/bin/pg_ctl -D /shared/postgres_data_new -l logfile start



Ign:1 
 buster-pgdg InRelease

Ign:2 
 buster/updates InRelease

Err:3 
 buster-pgdg Release

  404  Not Found [IP: 151.101.67.52 80]

Err:4 
 buster/updates Release

  404  Not Found [IP: 151.101.2.132 80]

Ign:5 
 buster InRelease

Ign:6 
 buster-updates InRelease

Err:7 
 buster Release

  404  Not Found [IP: 151.101.2.132 80]

Err:8 
 buster-updates Release

  404  Not Found [IP: 151.101.2.132 80]

Get:9 https://deb.nodesource.com/node_15.x buster InRelease [4,584 B]

Reading package lists...

Reading package lists...

Building dependency tree...

Reading state information...

The following additional packages will be installed:

  postgresql-client-10

Suggested packages:

  postgresql-doc-10

The following NEW packages will be installed:

  postgresql-10 postgresql-client-10

0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.

Need to get 6,441 kB of archives.

After this operation, 30.6 MB of additional disk space will be used.

Err:1 
 buster-pgdg/main amd64 postgresql-client-10 amd64 10.17-1.pgdg100+1

  404  Not Found [IP: 151.101.195.52 80]

Err:2 
 buster-pgdg/main amd64 postgresql-10 amd64 10.17-1.pgdg100+1

  404  Not Found [IP: 151.101.195.52 80]

Stopping PostgreSQL 13 database server: main.



check for "/usr/lib/postgresql/10/bin" failed: No such file or directory



Failure, exiting

-------------------------------------------------------------------------------------

UPGRADE OF POSTGRES FAILED

Please visit 
 for support.



You can run ./launcher start app to restart your app in the meanwhile



FAILED

--------------------

Pups::ExecError: /root/upgrade_postgres failed with return #<Process::Status: pid 50 exit 1>

Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'

exec failed with the params "/root/upgrade_postgres"

9f400ba2cca88f79359496e95027cf26c2d5a3672837c5594793cf723585407b

** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.

./discourse-doctor may help diagnose the problem.

コマンドラインで2回再構築する必要があります。PostgreSQL 15 updateを参照してください。

うーん。app.yml に標準的でないバインドがある可能性があります。お使いのOSもほぼ確実に最新ではありません。新しいVMに移行し、そこでデータベースを復元することを推奨します。Move a Discourse site to another VPS with rsyncを参照してください。

データベースをコピーしないでください。バックアップを復元する方が簡単です。

Jay様、ご返信ありがとうございます。OK、新しい仮想マシンを作成し、「新しいVPSの準備」の下にある手順に従いました。次に何をすべきかわかりません。新しいVPSにファイルをコピーするの下の手順に進むべきでしょうか?Discourseの新規インストールを行い、その後古いインストールからデータベースを復元するのか、それとも古いインストールからDiscourseファイルをコピーするのか迷っています。古いVMからDiscourseファイルをコピーするだけだと、問題が新しいVMでも再現されるのではないかと考えていますが、おそらく何か誤解しているのでしょう。

非常に古くなっているので、クリーンインストールを実行し、バックアップのみを新しいサーバーにコピーすることをお勧めします。

  • 古いサイトのバックアップ
  • rsync -rav oldsite:/var/discourse/shared/backups /var/discourse/shared/
  • DNSを新しいサーバーに切り替える
  • 新しいサーバーで ./discourse-setup を実行する(古い app.yml から SMTP の値を​​取得します)
  • ./launcher enter app
  • discourse backup(これにより、適切な権限でデフォルトのバックアップディレクトリが作成されます)
  • discourse enable_restore
  • discourse restore(利用可能なバックアップが表示されます)
  • 復元コマンドをコピー&ペーストします。

より複雑なバージョンとして、データベースを除くすべてを次のように rsync する方法があります。

rsync -rav --numeric-ids OLD-IP:/var/discourse/shared/ /var/discourse/shared/ --exclude log --exclude postgres_* --exclude redis_data --exclude letsencrypt --exclude ssl --exclude log --exclude tmp --exclude state

ジェイさん、改めてありがとうございます。あなたの指示に従って、古いVMからバックアップをリストアし、Discourseのクリーンインストールを行うことができ、すべて順調に動作しているようです。もっと頻繁にアップデートすることを忘れないようにしなければ!

「いいね!」 2

素晴らしい!それはすごいですね。うまくいってよかったです!

もし私の投稿が解決策であった場合は、トピックをクローズするために :check_mark: をクリックしてください。