🐘

Mastodonの移行をした

2021/10/16に公開

もともと自宅サーバーで動かしていたMastodon(ユーザー数約160人、30万トゥートぐらいある)を、VPS上に移行したので、その備忘録
旧サーバーはDockerコンテナ(docker-compose)で動いていて、
新サーバーはホストOSで動かす事になっている

* 自分用備忘録なので、あまり詳しくコマンドとか書いていません。ちゃんと動くかも検証していません。

PostgreSQLのダンプ

移行中にトゥートされると整合性が取れなくなりそうなので、一時Mastodonを落とした。

$ docker-compose run --rm db /bin/bash
$ pg_dump -d $DB_NAME -f /var/lib/postgresql/data/mastodon.sql

/var/lib/postgresql/data/mastodon.dumpの場所に置くのは、コンテナでボリュームマウントされている場所が/var/lib/postgresql/data/であるため。ホスト側からは、$MASTODON_DIR/postgres/mastodon.sqlでアクセスできる

PostgreSQLのレストア

ちょっと詰まった。
rails側で、RAILS_ENV=production bundle exec rails db:createしてから、pg_restoreを叩かないとRailsがMigrationしていないと認識してしまう。。。

$ RAILS_ENV=production bundle exec rails db:create
$ psql $DB_NAME < mastodon.sql
$ sudo systemctl restart mastodon-web mastodon-sidekiq mastodon-streaming

アセットの同期

アセットファイル共を同期する。
rsyncでSSH経由で同期する。

$ rsync  -ahv --progress $MASTODON_DIR/public/system/* $REMOTE_SERVER_NAME:/home/mastodon/live/public/system/ --max-size=10M

ここで、転送先サーバーのディレクトリ(/home/mastodon/live/public/system/)の所有者を、SSH先ユーザーにしておかなければ、書き込み可能な権限設定をしていてもエラーがでて、転送できなかった。

DNSレコード等の変更

レコードを変更する。
私の場合は自宅サーバーが5分ごとにCloudflare DNSのAPIを叩いてIPを更新するDDNSを構築していたので、その場合はちゃんとcronのジョブを削除しておく

Discussion