アップグレードページが完全に空白になっています。
./launcher rebuild app を実行して v2.6.0beta4 へのアップグレードに成功しましたが、その後でもアップグレードページは空白のままです。このページの <body> タグは以下の通りです:
<body class="highlighter-context">
</body>
何か解決策はありますか?
アップグレードページが完全に空白になっています。
./launcher rebuild app を実行して v2.6.0beta4 へのアップグレードに成功しましたが、その後でもアップグレードページは空白のままです。このページの <body> タグは以下の通りです:
<body class="highlighter-context">
</body>
何か解決策はありますか?
あなたのサイトのリンクを共有していただけませんか?
クローズドなフォーラムです。共有は喜んでしますが、それが違いを生むと思いますよね?
サードパーティ製のプラグインをすべて削除して再構築することをお勧めします。また、セーフモードを試してください。詳細はこちら:
ありがとうございます。試す時間ができました。セーフモードの各種オプションを試しましたが効果はありませんでした。すべてのサードパーティ製プラグインを無効にし、docker_manager のみを有効にしても状況は変わりませんでした。まだ白い画面が表示されたままです。
今年早些頃に 同じ問題の投稿 がありましたが、投稿者が返信を停止したため、明らかな原因や解決策はわかりませんでした。
アプリ.yml の情報を加工したバージョンを投稿することをお勧めします。問題の特定に役立ちます。
はい、こちらです:
## これはオールインワン、スタンドアロンの Discourse Docker コンテナテンプレートです
##
## このファイルを編集した後は、必ず再構築してください
## /var/discourse/launcher rebuild app
##
## 編集時には非常に注意してください!
## YAML ファイルは空白やアライメントのミスに極めて敏感です!
## 必要に応じて http://www.yamllint.com/ を訪れてこのファイルを検証してください
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
## Lets Encrypt (https) を追加したい場合は、以下の 2 行のコメントを外してください
# - "templates/web.ssl.template.yml"
# - "templates/web.letsencrypt.ssl.template.yml"
- "templates/web.socketed.template.yml"
## このコンテナが公開する TCP/IP ポートはどれですか?
## Discourse を Apache や nginx などの他の Web サーバーとポートを共有したい場合は、
## https://meta.discourse.org/t/17247 を参照してください
expose:
# - "80:80" # http
# - "443:443" # https
params:
db_default_text_search_config: "pg_catalog.english"
## db_shared_buffers を総メモリの最大 25% に設定します。
## 検出された RAM に基づいてブートストラップで自動的に設定されますが、上書きすることも可能です
db_shared_buffers: "128MB"
## ソートパフォーマンスを向上させる可能性がありますが、接続ごとのメモリ使用量が増加します
#db_work_mem: "40MB"
## このコンテナが使用する Git リビジョンはどれですか?(デフォルト: tests-passed)
#version: tests-passed
env:
LANG: en_US.UTF-8
# DISCOURSE_DEFAULT_LOCALE: en
## 同時にサポートされる Web リクエストの数は?メモリと CPU コア数に依存します。
## 検出された CPU に基づいてブートストラップで自動的に設定されますが、上書きすることも可能です
UNICORN_WORKERS: 2
## TODO: この Discourse インスタンスが応答するドメイン名
## 必須です。Discourse は IP アドレスのみでは動作しません。
DISCOURSE_HOSTNAME: <公開投稿のため削除済み>
## コンテナを上記で指定したのと同じホスト名 (-h オプション) で起動したい場合は、
## 以下のコメントを外してください(デフォルト: "$hostname-$config")
#DOCKER_USE_HOSTNAME: true
## TODO: 初期登録時に管理者および開発者として設定されるカンマ区切りのメールアドレスリスト
## 例: 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: <公開投稿のため削除済み>
## TODO: 新しいアカウントの検証と通知送信に使用する SMTP メールサーバー
# SMTP アドレス、ユーザー名、パスワードは必須です
# 警告: SMTP パスワードに '#' 文字が含まれていると問題が発生する可能性があります!
DISCOURSE_SMTP_ADDRESS: smtp.mailgun.org
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: <公開投稿のため削除済み>
DISCOURSE_SMTP_PASSWORD: <公開投稿のため削除済み>
DISCOURSE_SMTP_ENABLE_START_TLS: true # (オプション、デフォルトは true)
## Lets Encrypt テンプレートを追加した場合は、以下をコメント外して無料の SSL 証明書を取得してください
LETSENCRYPT_ACCOUNT_EMAIL: <公開投稿のため削除済み>
## この Discourse インスタンスの http または https CDN アドレス(プルするように設定)
## 詳細は https://meta.discourse.org/t/14857 を参照してください
#DISCOURSE_CDN_URL: https://discourse-cdn.example.com
# S3 設定
DISCOURSE_CDN_URL: <公開投稿のため削除済み>
DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION: "us-west-002"
DISCOURSE_S3_ENDPOINT: https://s3.us-west-002.backblazeb2.com
DISCOURSE_S3_ACCESS_KEY_ID: <公開投稿のため削除済み>
DISCOURSE_S3_SECRET_ACCESS_KEY: <公開投稿のため削除済み>
DISCOURSE_S3_CDN_URL: <公開投稿のため削除済み>
DISCOURSE_S3_BUCKET: <公開投稿のため削除済み>
DISCOURSE_S3_BACKUP_BUCKET: <公開投稿のため削除済み>
DISCOURSE_BACKUP_LOCATION: s3
DISCOURSE_S3_INSTALL_CORS_RULE: false
## Docker コンテナはステートレスです。すべてのデータは /shared に保存されます
volumes:
- volume:
host: /var/discourse/shared/standalone
guest: /shared
- volume:
host: /var/discourse/shared/standalone/log/var-log
guest: /var/log
## プラグインはここに記述します
## 詳細は https://meta.discourse.org/t/19157 を参照してください
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
- git clone https://github.com/discourse/discourse-user-notes
- git clone https://github.com/discourse/discourse-assign
- git clone https://github.com/discourse/discourse-policy
- git clone https://github.com/discourse/discourse-tooltips
- git clone https://github.com/discourse/discourse-saved-searches
- git clone https://github.com/discourse/discourse-knowledge-explorer
- git clone https://github.com/discourse/discourse-voting
- git clone https://github.com/discourse/discourse-translator
- git clone https://github.com/angusmcleod/discourse-elections
- git clone https://github.com/discourse/discourse-styleguide
- git clone https://github.com/Ahmedgagan/discourse-custom-trust-level
- git clone https://github.com/paviliondev/discourse-quick-messages
- git clone https://github.com/paviliondev/discourse-locations
- git clone https://github.com/discourse/discourse-calendar
# オブジェクトストレージ
after_assets_precompile:
- exec:
cd: $home
cmd:
- su discourse -c 'bundle exec rake s3:upload_assets'
## ビルド後に実行するカスタムコマンド
run:
- exec: echo "カスタムコマンドの開始"
## 最初の登録用の 'From' メールアドレスを設定したい場合は、以下のコメントを外して変更してください:
## 最初の登録メールを受け取った後、再度コメントアウトしてください。一度だけ実行すれば十分です。
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
- exec: echo "カスタムコマンドの終了"
まず、サードパーティ製のプラグインを一切使わずに、このシステムを再構築することをお勧めします。/discourse/discourse のものだけを残してください。
それで動作すれば、どのプラグインが問題を引き起こしているか特定するために二分探索を行うことができます。
さて、docker_manage プラグインは discourse/discourse のパスではありませんが、これを無効にすると ...admin/upgrade ページが存在しなくなります。
docker_manage プラグインのみを有効にしても、同じように空白のアップグレードページが表示されます。
すみません、おっしゃる通りですね。私が幻覚を見ていたのでしょう。その件は取り下げます。discourse/パスにあります。
しかし、とにかく、まだ真っ白な画面のままです。
2.6.0.beta5(私は 2.6.0.beta4 を使用しています)が利用可能になったにもかかわらず、引き続きアップグレードページが空白のまま表示されてしまいます。プラグインを無効化しても改善しなかったため、さらにアドバイスいただけると幸いです。
Chrome DevToolsを確認してみてください。ページが白くなっている際にコンソールにエラーは表示されていますか?おそらくこれは、あなたのCSPに関連する問題だと思われます。
ありがとうございます、おっしゃる通りです。私のCDNを介して読み込まれるスクリプトの読み込みが拒否されています。URLを匿名化すると以下のようになります:
upgrade:1 スクリプト 'https://cdn-to-discourse.b-cdn.net/assets/docker-manager-app-32418f2f7cd50e6f4a0b8d13badc4e59f6a1ad74e7bed270f3a051478fed773d.js' の読み込みが拒否されました。これは、以下のコンテンツセキュリティポリシーディレクティブに違反するためです:「script-src https://forum.example.com/logs/ https://forum.example.com/sidekiq/ https://forum.example.com/mini-profiler-resources/ https://cdn-to-s3.b-cdn.net/assets/ https://cdn-to-s3.b-cdn.net/brotli_asset/ https://forum.example.com/extra-locales/ https://cdn-to-discourse.b-cdn.net/highlight-js/ https://cdn-to-discourse.b-cdn.net/javascripts/ https://cdn-to-discourse.b-cdn.net/plugins/ https://cdn-to-discourse.b-cdn.net/theme-javascripts/ https://cdn-to-discourse.b-cdn.net/svg-sprite/ https://matomo.example.com」。'script-src-elem' が明示的に設定されていないため、フォールバックとして 'script-src' が使用されています。
セキュリティ設定ページには「現在のホストとCDNはデフォルトで含まれます」と表示されています。それでも手動でCDNをホワイトリストに追加すべきでしょうか?
here で、同じ問題が提起されているのを目にしました。デフォルトのホワイトリスト設定が機能しなかった理由については、最終的な回答が出ていません。
こんにちは、
管理画面の CSP(コンテンツセキュリティポリシー)設定の script-src に、以下の URL を追加することをお勧めします。
https://cdn-to-discourse.b-cdn.net/assets/
その後、Chrome 開発者ツールのエラーを再度確認してください。
はい、それで問題ありません。ただ、なぜデフォルトのホワイトリスト設定がこれを自動的に実行しないのか気になります。
私も気になります。CDN はどのように設定されていますか?docker-manager プラグインの何らかの特別な機能が見逃されているかもしれません。
cc @pmusaraj
はい、その通りです。docker_manager プラグインは、javascript_include_tag を使用してテンプレート内で 2 つの JS ファイルをロードしていましたが、これは DISCOURSE_S3_CDN_URL を認識しないため、デフォルトで DISCOURSE_CDN_URL を使用し、CSP に問題を引き起こしていました。
FIX: blank upgrade page when using S3 CDN and CSP · discourse/docker_manager@3d37fd6 · GitHub を通じて、現在は修正されています。
@paulrudy さん、docker_manager プラグインを更新すれば、CSP に https://cdn-to-discourse.b-cdn.net/assets/ を手動で追加する必要はなくなります。