🐘
Mastodonの移行をした
もともと自宅サーバーで動かしていた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