Mastodon(railsアプリ)を別サーバに引っ越しする


Mastodonを容量不足の問題のため別サーバへ引っ越ししました。
移行手順を備忘録として残しておきます。
全体像が分かりやすいように多少シンプルに書いています。

前提

  • サーバAからサーバBへ移すことを前提とする※どちらもnon-docker
  • ドメインは同一のものを使用し、Aレコードを変更する

移行前の事前準備

  • 移行することをインスタンス内で告知し、バックアップする手順を案内

  • 公式のインストール手順を参考にサーバBへMastodonを新規で入れて動作させておく
  • rsyncコマンド(下記がコマンド例)でサーバAのMastodonメディアファイルをサーバBへ同期させる
rsync -av --delete -e "ssh -p SSHのポート名" /home/サーバAユーザ/public_html/mastodon/public/system/ サーバBユーザ@サーバBのIPアドレス:/home/サーバBユーザ/public_html/mastodon/public/system/
  • DNS切り替えのためドメインのTTLを短くしておく

移行作業

  • サーバAとサーバBのMastodon系のサービスをstopさせる
  • 下記のコマンドでサーバAのDBデータをエクスポート
pg_dump -U mastodon -Ft mastodon_production > /home/サーバAユーザ/mastodon_production.tar
  • SFTPなどでサーバAのDBデータをサーバBに移す
  • サーバBでエクスポートしたサーバAのDBデータをインポート
pg_restore -U postgres -d postgres -v -C -c -Ft /home/サーバBユーザ/mastodon_production.tar
  • 移行前の事前準備で実施したrsyncをもう一度実施して、差分が出た分の同期をとる
  • サーバBの.env.productionファイルのドメイン情報を書き換える
  • certbotコマンドなどでサーバBの証明書を新規発行
  • RAILS_ENV=production bundle exec rails mastodon:feeds:buildでホームの再構築※移行させると何故かホームが空っぽになるので
  • bundle exec rails r 'Rails.cache.clear'でRails(+ Redis & memcached) キャッシュのクリア
  • サーバBのMastodon系のサービスをstartさせる
  • 動作の確認が取れたらドメインのTTLを元に戻しておく

下記のURLを参考にさせていただきました、ありがとうございました