blog@noellaboの技術ブログトップ記事一覧ログ一覧2020-01-08Pixelfedのオブジェクトストレージ対応Pixelfedオブジェクトストレージの有効化Pixelfedは主に写真を投稿するサービスであるが、まだオブジェクトストレージに保存する機能は完成していない。ほとんどできあがっていて、動くことは動く。AWS_ENDPOINT=https://s3.us-east-2.wasabisys.com最初のPF_ENABLE_CLOUDが重要。その他は、wasabiのus-east-2を利用する例である。オブジェクトを参照するためのURLは、オブジェクトストレージのURLそのままだとあとで大変苦労するので、専用のサブドメインを割り当てることが望ましい。DNSのCNAMEで参照先を振り替えたり、nginxなどリバースプロキシを立てて中継すると良い。nginxはキャッシュサーバとしてもしっかり働いてくれる。Cloudflareを通すのであれば、CNAMEを指定すると同時にキャッシュさせることができる。}Pixelfedにおけるオブジェクトストレージの使い方Pixelfedでは、まずローカルのファイルシステムにファイルを保存する。オブジェクトストレージへの保存が有効になっている場合、前述のようにまずローカルに保存したあと、オブジェクトストレージにファイル保存を試み、成功した場合、データベース上に保存したオブジェクトストレージを参照するURLを記録する。オブジェクトストレージは、しばしば障害によりダウンしていることがあるが、Pixelfedでは何事も無かったかのようにローカルにファイル保存して参照URLを記録し、オブジェクトストレージの方はあっさりあきらめる。最初に保存したローカルのファイルは、そのままでは削除されずに残る。オブジェクトストレージと重複するファイルについては、バックグラウンドで掃除するタスクを別途走らせる予定であるという。ローカルにだけ保存されたファイルは、オブジェクトストレージのようにメディア用のサブドメインではなく、Pixelfed本体と同じドメインのローカルパスで参照される。これについては、オブジェクトストレージと同じURLで参照すると、ローカルに保存されたファイルがある場合はそちらを、ない場合はオブジェクトストレージを参照するなど、ユーザーからは見分けがつかないように振る舞うべきであると思う。