mastodonとpleromaのメディアをwasabiからS3に戻した
Overview
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インスタンスごと死ぬ)
というわけで手っ取り早くt3a.mediumのスポットインスタンスを借りて実行しました。
所要時間は6時間ほど。
データ移行
かなりのファイルを消したとはいえ、mastodonで使っていたバケットには以下のファイルが残っています
- 40万ファイル
- 合計30GBくらい
とてもEC2でやろうとは思えなかったので、ConoHaの最低プランを借りて作業しました。
wasabiとS3の認証情報を書いたrclone.confを用意して、
rclone copy wasabi-mstdn:media-mstdn.asterism.xyz s3-mstdn:media-mstdn.asterism.xyz \n
-P --multi-thread-streams 16 --transfers 16
という具合。
pleromaは大体20分ほどで、mastodonは何度かやり直して合計20時間ほどかかりました。 :very_sad:
Cloudflareとmastodon, pleromaの設定変更
この2つは同時に行わないほうがいい気もするし行ったほうがいい気もする。
私はCloudflareのTTL Autoを信じて同時にやりました。
結果は問題無いように見えます。
最後にもう一度rclone copy
これはpleromaは関係なく、mastodon固有の作業です。
最初のrclone copy完了後、Cloudflareとmastodonの設定を変更するまでの間にリモートメディアがいくつか増えるので、そのためのものです。
基本的にはファイルチェックだけで、いくつか増えてる分が新しくコピーされるという形になります。多分半分くらいの時間で終わるんじゃないかな。
感想
wasabiそのものが悪くて移行するわけじゃなくて、私の使い方と合わないからやめるって感じ。(まぁ確かに今年夏頃のアレとか酷かったけど)
正直分散SNSサーバにwasabiはあんまり合わないんじゃないかなぁと思ってます。
中小規模のサーバに1TBもいらないし、通信料もCDN噛ませばかなりマシになるでしょうし。