Thread
Keisuke Hayashi
Keisuke Hayashi

次に本番環境で稼働しているデータをダンプして、ローカル環境でリストアする手順。

7. ssh vps_server

8. pg_dump mastodon_production > mastodon_production_$(date +%Y%m%d).sql

9. gzip mastodon_production_$(date +%Y%m%d).sql

10. exit

11. mkdir -p backups

Keisuke Hayashi
Keisuke Hayashi

12. scp 'vps_server:/home/mastodon/mastodon_production_*.sql.gz' backups/

13. gunzip backups/mastodon_production_*.sql.gz

14. docker compose -f .devcontainer/compose.yaml exec db psql -U postgres -d template1 -c "DROP DATABASE IF EXISTS postgres;"

15. docker compose -f .devcontainer/compose.yaml exec db psql -U postgres -d template1 -c "CREATE DATABASE postgres;"

16. docker compose -f .devcontainer/compose.yaml exec -T db psql -U postgres -d postgres < backups/mastodon_production_xxx.sql

Keisuke Hayashi
Keisuke Hayashi

本番サーバーから必要な環境変数を取得してローカル環境用にコピペする。ActiveRecord暗号化キーやCloudflare R2の設定で必要。

17. ssh vps_server "sudo cat /home/mastodon/live/.env.production | grep -E '(SECRET_KEY_BASE|OTP_SECRET|VAPID_|ACTIVE_RECORD_ENCRYPTION|S3_|AWS_|CDN_)'"

18. vi .env.development

その後に開発サーバーを再起動すると、投稿や画像が表示されるはず。

Keisuke Hayashi
Keisuke Hayashi

Good.

Image 1
Keisuke Hayashi
Keisuke Hayashi

これでようやくMastodonインスタンスを消せる。DB名やMastodonバージョンの不一致でデータがうまく表示されずに詰まったけどなんとか完了。