添付ファイルがサーバーでローカルに提供されているが、公開されていない

問題の概要

ライブ Discourse サイト (https://techenclave.com) の URL 経由で画像アップロードにアクセスすると 404 エラーが発生します。画像はディスク上に存在し、内部的には正しく提供されているにもかかわらずです。投稿をリベイクし、アプリを再起動し、内部提供が機能することを確認しましたが、外部からは依然として 404 が返されます。


正常に動作している点

1. DB にアップロードが存在する

Rails コンソールを使用して、アップロードがすべての正しいメタデータとともに存在することを確認しました。

Upload.find_by(sha1: 'a8fbe877e685e6a6994532c946c446b1279da7d2')

出力には以下が含まれます:

  • url: \"/uploads/default/original/3X/a/8/a8fbe877e685e6a6994532c946c446b1279da7d2.jpeg\"
  • ファイル名: IMG202506252257011.jpg
  • ID: 170265
  • 投稿 ID で使用中: 3125774

2. ディスク上にファイルが存在する

ファイルがコンテナ内に存在することを確認しました。

ls -l /shared/uploads/default/original/3X/a/8/a8fbe877e685e6a6994532c946c446b1279da7d2.jpeg

:check_mark: 正しい所有権と権限を持つファイルが存在します:
discourse:www-data, -rw-r--r--


3. 公開フォルダからのシンボリックリンクが機能する

public/uploads のシンボリックリンクはそのままです。

ls -l /var/www/discourse/public/uploads
# => /shared/uploads

4. Discourse は内部的に提供できる

以下でテストしました。

curl -I http://localhost:3000/uploads/default/original/3X/a/8/a8fbe877e685e6a6994532c946c446b1279da7d2.jpeg

結果: HTTP/1.1 200 OK


5. 投稿がリベイクされた

以下を使用して投稿をリベイクしました。

Post.find(3125774).rebake!

6. アプリが再起動された

以下を実行しました。

./launcher restart app

以下も試しました。

sudo ./launcher rebuild app

(Docker デーモンは一時的に利用できませんでしたが、後に修正されました。)


動作していない点

画像への外部アクセス

以下にアクセスします。

https://techenclave.com/uploads/default/original/3X/a/8/a8fbe877e685e6a6994532c946c446b1279da7d2.jpeg

返されるのは:

404 Not Found

これはブラウザやシークレットモードでも発生します。


助けが必要なこと

以下のような原因を特定するのを手伝ってもらえませんか?

  • localhost:3000 経由で提供される正常に動作するアップロードが、
  • 公開ドメインで外部から 404 を返すのはなぜですか?

他に確認すべきことはありますか?関連する設定やログを調べるべきものはありますか?

よろしくお願いします!

新しくアップロードされた画像も読み込まれていません。404エラーが発生しています。

これは標準的なインストールではないということでしょうか?
ここでサポートされているのは、ほとんどそれだけです。

Discourseはどのようにインストールしましたか?

「いいね!」 1

次回は、最近移行したことを言及したほうがいいかもしれませんね。

temp.techenclave.com から techenclave.com に変更した際に、このガイドに従いましたか?

「いいね!」 2

ありがとうございます。

インストールは、GitHub の標準的なディスコースのインストールガイドに従いました。

はい、ローカルのラップトップで移行を行い、バックアップを取得し、そのバックアップをサーバーに復元するためにファイルをアップロードして、管理パネルからバックアップの復元を行いました。添付ファイルがすべて復元されたわけではないにもかかわらず成功と表示されたため、これは行うべきではありませんでした。いずれにせよ、ラップトップのローカルインストールからサーバーへの rsync を実行して、それらを最新の状態にしました。

次に、テストのために一時的なドメインからルートドメインへのドメイン移行を行いました。

上記を言及しなかった理由は、上記すべてのアクティビティの後でアップロードされた最新のファイルさえも表示されていないためです。再構築したにもかかわらずです。そのため、その情報は関連性がないと判断しました。

そのガイドに従っていません。しかし、それを見ると、ステップは次のとおりであることがわかります。

  1. 設定で、古いドメインが新しいドメインとともに許可されたiframeリストに表示されます。
  2. 投稿のドメインの再マッピング。これは、この問題が解決されたら、いずれ行う予定でした。問題の投稿は再ベイクされ、画像URLに古いドメインは含まれていません。

これら2つの点は関連性がありますか?

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.