Mastodon v4.3.0で画像が表示されなくなった

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などと同様に設定(環境変数)を読み込んであげれば大丈夫そうなので、修正してプルリクを上げてみようかと。

ということで、MastodonをGitHub上でいったんforkし、そこで修正。自分のサーバで動くことを確認の上、Mastodon本体のリポジトリにissueを立てて、プルリクを送信。

軽微な修正だし、副作用とかはなさそうなので、確認さえしてもらえば問題ないんじゃないかと思うけど、プルリクを送るとか慣れていないので、結構不安。ちゃんと受け入れてもらえるんだろうか。

コメント

このブログの人気の投稿

Linuxでの省電力設定

MSFS2020 G1000でのVORの使い方 (C172)

Word 2016の不具合