2019/7/17に私が管理するmastodonとpleromaサーバのメディアをS3+Cloudflareの構成から、wasabi+Cloudflareの構成に変更しました。
理由としては、当時私のPCのバックアップ先として使うクラウドストレージを探しており、色々試すにつれて転送料金がネックということが判明。wasabiは総容量1TB/転送料金無料で $6/month という中々期待できるお値段だったため。
(あくまでmastodonとpleromaのメディアはついでだった)
ただそのバックアップ用途も、G suite契約したことでGoogle Driveで事足りるようになったので、wasabiを解約することにしました。
今回はその前準備として、mastodonとpleromaで使っているバケットをS3に移しました。
注意 wasabiはアップロードから90日経たないファイルを消すと$6とは別にお金取られるので気をつけてね。そんなに高くないけど。
環境はmastodonはv3.0.0, pleromaは2019/12/19のdevelopです。(自動アプデかけてるのでcommitID調べるの面倒)
その他インフラ構成は過去のブログ投稿か、もしくは私のmastodonサーバのサムネイル画像を見てください。
作業
バケット準備
元々のものとURLが変わると古い自分の投稿に着いているメディアが見れなくなるので、そこは変わらないようにしましょう。
と思ったけど今はそうじゃないかも?分からんね。
私の場合は media-mstdn.asterism.xyz と media-pl.asterism.xyz にCloudflareでS3(もしくはwasabi)の仮想ホスト形式のアドレスを指定しているのでバケットを移行してもURLは変わりません。
(s3-ap-northeast-1.amazonaws.com/bucket-name/でアクセスするんじゃなくて、bucket-name.s3-ap-northeast-1.amazonaws.com みたいな表記の方)
本当はmedia.mstdn.asterism.xyzにしたいけど、それをするためにはCloudflareに$10/monthくらい払わなきゃなので…。
そんなわけで行った作業としては以下の通り
- AWSにS3FullAccessを持つIAMを作成
- mastodon用とpleroma用(一応分けた)
- S3にwasabiと同じバケット名のバケットを作成
- media-mstdn.asterism.xyz
- media-pl.asterism.xyz
- バケットポリシーで以下を許可
- 上記のIAMからのフルアクセス(putとdeleteだけで動くならそれでよさそう。未確認)
- Principal:”*”のs3:GetObject
- バケットポリシーにはDefaultDenyがあるので一番下に拒否を書くみたいなのは不要
不要データの削除
mastodonのメディアをwasabiに移行してからというもの、かなり長い間リモートメディアの削除を行っていませんでした。
ただまぁそんなものを全てS3にもコピーする意味は無いので、とりあえずwasabiにいる間にtootctl media removeをする方が良いです。
なんなら3.0.0から追加されたprevivew_cardを削除する機能も使うべきです。(今回こっちは忘れてたせいで移行にかなり時間がかかった)
しかし数ヶ月放置されたリモートメディアは約10万ファイル。
しばらく実行していなかっただけに私の知識は2.9系で止まっており、てっきり今も 普段使っているswarmのworker node RAM1GB, 2vCPUではとてもじゃありませんが処理できません。(他のコンテナも相乗りしてるので、2000ファイル消したくらいでEC2インスタンスごと死ぬ)