PleromaでAmazon S3を使う

Pleroma/8mitsuのサーバーはさくらのVPS(512MB)を使っています。ストレージが25GBのため、枯渇する前にオブジェクトストレージに対応させておきましょうという話です。

例によって日本語の情報がすくない(泣)もしかしたら英語の情報も少ないんじゃないか?と思う程度にはPleromaは情報が少なく、今回は以下2つの記事を読んで設定しました。

Mastodon インスタンスの画像や動画の保存先をクラウドストレージ (Amazon S3) に移行した話
https://hyper-text.org/archives/2017/04/mastodon-instance-with-amazon-s3.shtml

Pleromaはいいぞ
https://h3poteto.hatenablog.com/entry/2019/12/09/180020

最初の記事はMastodonについてなのですが、S3のバケット作成やIAMについての記述があり、そこを参考にさせていただきました。静的サイトホスティングはOFFのままでいいようですが、バケットへのパブリックアクセスを許可していて、これはこれでいいのか謎である(しかし許可しないと画像が表示できないもしかしたら適切な絞り方とかあるのかもしれないので知ってる人は教えて欲しい)。

2本目の記事はPleromaの設定ファイル(/opt/pleroma/config/prod.secret.exs)の書き方ですが、この記事のとおりだとうまく動かなくて結果としてこうなった。

config :pleroma, Pleroma.Uploaders.S3,
  bucket: "pl.8mitsu.net",
  public_endpoint: "https://s3-ap-northeast-1.amazonaws.com"
#
# Configure S3 credentials:
config :ex_aws, :s3,
  access_key_id: "[アクセスキー]",
  secret_access_key: "[アクセスシークレット]",
  region: "ap-northeast-1", # 東京リージョン
  scheme: "https://"

# テンプレートにない下3行を追記
config :pleroma, Pleroma.Upload,
  uploader: Pleroma.Uploaders.S3,
  strip_exif: false

テンプレートにない下3行が重要で、これを書かないとS3にアップロードしてくれない。

あと、オブジェクトストレージ適用前の画像はサーバーのローカルに保存されているのでS3にコピーしてあげないといけない。ファイル数が多い場合はAWS CLIとか使うみたいだけど、少なかったのでSCPでヒュッヒュッとコピーしておわり。
画像は/opt/pleroma/uploads/にある。

PleromaはMastodonと違ってリモートの画像をローカルに保存したりしないため、画像は基本的に自分がアップロードした画像だけになります(おひとりさまだからね)。なのでMastodonよりはオブジェクトストレージの恩恵が少ないかもしれない。というかMastodonはリソースを食い過ぎで、自分のMastodonサーバーもかなりコア数メモリ数マシマシにしてやっと動いている状況。。