mastodon

Mastodon v2.4.5 、そしてメディアを Amazon S3 へ

今回のアップデートはセキュリティに関係のあるアップデートということで、さぼっていたアップデート作業をやりました。
うちは基本的に何もいじらないバニラなインスタンスなので、いつものアップデートでは git pull でやってるんだけど、今回は backport の変更なので、git fetch でしか更新できないと。
・・・あんまり意味が分かってない(笑)

で、Mastodon 上で聞くと、タグは切られているが、いつものような本当の(いいかたがわからない)アップデートではなく、v2.4.3 のセキュリティに関する一部の変更によるものだから、現状のデータを更新しないといけないらしい。
それを聞いてもなんとなくしかわかっていないけど、いつもみたいにまっさらのバージョンを持ってきてもダメということは分かった。

でも git pull はあんまりよくないようなので、これを機会に git fetch のやり方に変えていこうと思う。
基本的なやり方は変わらないということなので、自分の備忘録として書いておきたい。

で、アップデートのついでにずっとやろうやろうと思ってできていなかったメディアの外出しも決行。
移行先は Amazon の S3 へ。
今後の Mastodon の動きを見ているとメディアの容量問題はたぶんすぐに出てくるだろうから。
まあ、一つの懸念は AWS は従量課金ってとこかな。
たくさん使えばたくさん請求されるってこと。
現状の場合だとほとんどかからない量だけど、こればっかりは分からない。
まあ、その時はその時かな。

Amazon の AWS の登録の仕方はいろんなところに書いてあるから書かないけど、Mastodon で設定するときに少し悩んだことだけ。

S3 へ移す際にとっても参考になったのはこちら
Mastodon の画像などメディアデータをAmazon S3に移行する(非Docker環境)- Takanory Blog
このブログの内容と、最後に書いている .env.production の ENDPOINT の設定を追加すればできた。

あとは、他に調べた内容で S3 のバケットの名前はドメインと同じ S3 内で一意の値なのでドメイン名を後ろにつけることで一意の値を確保することができる。
自分はドメイン名でないとダメなのかと思ってそのまま同じにしたら、あとで CDN の設定で困ってしまって、結局バケットを作り直した。
バケットの名前の付け方としては(例:media.yourdomain.com)みたいにしておいたほうが良い(これ AWS の命名規則だとピリオド使わない方がいいとかなってるらしくて、じゃあどうすんだよっていうのがわかりません。)
でも自分はこうしてしまった…

その後に現状の Mastodon インスタンスから画像データを作成したバケットへ全部コピーする。
画像データを全部コピーしないと Mastodon は過去のものを変更したからと言って再取得してくれない。
ただ、そのコピーするフォルダ関係が、public/system 以下の内容をコピーっていうことだったんだけど、system フォルダがいるのかどうかがわからなかった。

答えは system フォルダはいらなかった。
作ったバケットの中に pubic/system の中にある4つのフォルダ(accounts,custom_emojis,media_attachments,preview_cards、他にも画像を変更しているとあるのであれば全部)を中身も含めて全部コピーするだけ。
ただこのコピーするだけがまたすごい時間かかる。
うちのような弱小インスタンスでも容量が半年ほどで 20GB くらいになってたのでなかなかのもの。
データを移すのは Amazon CLI とかでやるのが王道なのかもしれないけど、やり方がわかりませんでした(笑)
なので、普通にダウンロードして、アップロードしなおした(超力技)

(Windows なら Amazon CLI インストーラがあったので、それでインストールして configure で設定をすれば普通にコマンドでできました。)
remove_remote はしてたんだけど、 v2.4.1 以降の変更でやり方が変わってうまくいってないのか、どんどん容量を圧迫していった。
ホントにこればっかりはやっぱり最初から S3 使うべきだった。
これからインスタンスを立てる人は、メディアに関してはどのオブジェクトストレージを使うかを考えたほうがいいかもしれない。

あとは.env.production の中の記述さえやっておけばコピーが終わらなくても今後の画像はすでに S3 へアップされていく。

この ENDPOINT を設定すると言うのが初期の頃はなかったみたいで躓きポイントだった。

これで、ようやくメディアの心配はなくなった。
また、しばらくは続けていけそう。
おつかれさまでした。