Mastodonのお一人様サーバ をv4.3.0にアップグレードしたところ、画像などのファイルが表示されなくなってしまいました。 私のサーバは、ConoHaのVPS上に建てているのですが、メディアファイルはConoHaのオブジェクトストレージ上に設置されていて、nginxのreverse proxy経由で https://media.procydon.net/ というURL経由でアクセスするようになっています。ConoHaのオブジェクトストレージはSWIFT互換なので、Mastodonでも SWIFT用の設定 で動作しています。 ブラウザのDev Toolsを見ると、メディアファイルの読み込みが「CSP blocked」( CSP = Content Security Policy )ということでエラーになっているのを確認。で、サーバからのレスポンスを確認すると、上記のメディア用のURLがContent-Security-Policyヘッダに含まれていないので、画像が表示されないのはこれが原因ということで確定しました。 いったん、nginxでサーバからのContent-Security-Policyヘッダを削除することで動作することを確認したものの、これはせっかく設定されたセキュリティをゆるめるものなので本質的な解決には結びつかない。というわけで、 Mastodon serverのGitHubリポジトリ を見てみると、どうも、 app/lib/content_security_policy.rb でCSPヘッダの設定をしているようす。 読んでみると、 ContentSecurityPolicy#media_hosts でCSPのmedia_hostsを設定していて、その中で呼ばれている ContentSecurityPolicy#cdn_host_value で、CDNやらオブジェクトストレージのホストを取りだしているのですが、ここにS3やらAzureやらはあるのに、SWIFTの記述がない。というか、そもそもこの ContentSecurityPolicy というクラス内にSWIFTに関する設定を読み込んでいるようすがないということで、ビンゴ! なら、S3などと同様に設定(環境変数)を読み込んであげれば大丈夫そうなので、修正してプルリクを上げてみようかと。 ...