BETA

Mastodonのメディア移行の手順をいろいろ考えてみる

投稿日:2018-10-26
最終更新:2018-10-26

はじめに

この記事は考察するだけの記事です。ふわっとした結論しか出ません

移行方法の解説とかをお求めの方はほかを当たりましょう

そもそもなんでメディア移行する羽目になっちゃうんだよ!

Mastodonを動かしていると添付画像とかがどんどんと蓄えられていく

メディアはデフォルトでMastodonのインストールディレクトリ/public/systemに保存されることになっている

そしてこの蓄えられるメディアファイル、連合から流れてくる画像も全てキャッシュするので、放置しておくと途方もない量になるわけで、VPSのストレージが圧迫されていることに気付かずに放置していると

こうなる(これが貼りたかった)

リモートから飛んできた画像はコマンドで削除できるんだけど、cronに設定してなかったりすると悲しい結末が待っているわけだ

# Mastodon 2.6.0未満でのリモートメディア消去
$ RAILS_ENV=production bundle exec rails mastodon:remove_remote NUM_DAYS=7
# Mastodon 2.6.0以降のリモートメディア消去
$ RAILS_ENV=production bundle exec bin/tootctl media remove --days=7

このコマンドである程度減らすことはできるが、それでも限界はある、さあどうしよう

1つの手としてはVPSのスケールアップでストレージを増やしちゃうってのがある。結構金がかかる

もう1つが、オブジェクトストレージに移動しちゃおうという選択肢。こっちなら安くて済む

んで、じゃあどうやって移動するんだよ!ってのが今回の内容。本題出てくるの遅すぎね、ブラウザバックするぞおい

方法その1 : 先に設定変更するパターン

手順はこんな感じ

  1. まず.env.productionの設定を変更する
  2. ファイルを全部コピーする

最初に設定を変更しておくことで、新しく保存されるファイルはオブジェクトストレージに転送されるようになる。あとは蓄えてきた画像を全部一気に送りつけてあげれば、表示されてなかった画像も順次表示されるようになって完璧…ってわけ

メリットは、とっても楽なこと。すごいスムーズに移行できる

デメリットは、アップロードが完了するまでサーバーから画像という画像が消滅すること。新しくアップロードされた画像はちゃんと見えるけど、古い画像とかアイコンとかは全部一時的に見れない状態になる

何もかも画像が表示されないと結構心臓に良くないです。怖いです。

方法その2 : 先にコピーするパターン

手順はこうなる

  1. 先にファイルを全部コピーしておく
  2. 終わったら.env.productionの設定を変更する
  3. もう一回追い打ちで転送する

設定を変える前にファイルを転送しておけば設定を変えた後に見えないファイルが最小限に抑えられる。アイコンとかの画像がすでにある状態で切り替わるから切り替え後の違和感が少ないのでユーザーに気づかれずに切り替えが完了できるレベル。ただ、転送を始めてから設定を切り替えるまでにアップロードされたファイルは後でコピーしなおしてあげないといけない

メリットは、一時的にでも見られなくなるファイルが最小限に抑えられるってこと

デメリットはとにかくめんどくさいこと。画像の量が増えれば増えるほど手間もかかるししかも二度手間というこの面倒くささである。まぁほぼ放置なんだけどさ

方法その3 : 面倒だから鯖止めちゃう

一時的に見えるファイルがとか色々めんどくせーんだよってなったらこうしてしまったほうがいい

  1. 鯖を止める
  2. ファイルをコピーする。設定を変更する。順番は任意
  3. 鯖を動かす

完璧…っ!

メリットは楽で楽で仕方がないこと。見えない画像とかないし!そもそも鯖落ちてるんだから!余計なこと考えない!脳死!

デメリットは鯖が落ちることである。それだけ

結局どれがいいんだろう?

利用者に一番不便な思いをさせずに移行を完了させられる方法は方法その2

お一人様とかでユーザーの影響を考慮しなくていいんだったら1か3を選択してしまうのが楽で良さそう

個人的には被害少なめなその2を推していきたい

おしまい。

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

@kyoriの技術ブログ

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう