てなわけで、CloudFlare R2がGAされました。(結構前だけど)

ベータ版を使って結構感触がよかったので、無料範囲内で収まるやつでR2を試してみようかなと思い、GoToSocialのメディアをR2にすることにしました。

なお、現在はローカル保存にしていて大体50MBくらいです。

あまり外とつながっていないのでとりあえず無料枠内の10GBには収まるかと。

あと、使ってるのも私だけなので各種100万回操作も行くことはないはず・・。

R2バケットの作成

まあ、ある程度の流れは説明を省くとして、R2はこんな感じの画面です。

Create bucketから新しいバケットを作成します。

モザイクだらけですが、バケット名と各種詳細が表示されています。

バケットポリシーとかそのあたりはないみたい。

やるべき設定はDomain Accessを有効にすることだけ。
ちなみにCloudFlareで管理しているドメインじゃないとダメです。

これを使うとキャッシュやWAFが使えるようになるそう。

あとは"Manage R2 API Tokens"からトークンを発行します。

あ、パブリックアクセスは有効にしなくても大丈夫ですよ。

GoToSocialの設定変更

設定はこんな感じ。

storage-backend: "s3"
storage-s3-endpoint: "アカウントID.r2.cloudflarestorage.com"
storage-s3-access-key: "発行したアクセスキー"
storage-s3-secret-key: "発行したシークレットキー"
storage-s3-bucket: "バケット名"

アカウントIDはR2の画面から確認できます。

あとは既存のファイルたちをR2に移動させます。

私はAWS CLIをつかってサクッと移動させましたが、GTS公式だとMinIOを使う方法とかも書かれています。
まあどちらでもいいはず。

AWS CLIの方はCloudFlareに記事がありました。

まだ再起動はしません。

nginxの設定

あのままでも問題はないんですが、先程設定したドメインを使ってくれないのでキャッシュがきいてくれません。

なのでnginxでリバプロの設定を入れてあげます。

  set $bucket バケットで設定したドメイン;
  location ~ ^/fileserver/(.*)$ {
    resolver 1.1.1.1;
    add_header Cache-Control max-age=31536000;
    proxy_ssl_server_name on;
    proxy_set_header Host $bucket;
    proxy_pass https://$bucket/$1;
  }

参考

https://blog.cyberjake.xyz/Nginx-Proxy-R2/

ここまで来たらnginxとGoToSocialを再起動してWebUIかクライアントで確認して画像が表示されてたらOKです。

懸念点

不安になるくらいアップロード速度が遅いw
同期したときは普通だったのでGTSの問題?

あと別タブで開くとDLされますね。content-type周りなのかなんなのか。