メモ: Mastodonをローカル環境で立ち上げる手順。
1. git clone git@github.com:mastodon/mastodon.git
2. cd mastodon
3. docker compose -f .devcontainer/compose.yaml build --no-cache
4. docker compose -f .devcontainer/compose.yaml up -d
5. docker compose -f .devcontainer/compose.yaml exec app bin/setup
6. docker compose -f .devcontainer/compose.yaml exec app bin/dev
これでデータがない状態でアプリが起動する。
次に本番環境で稼働しているデータをダンプして、ローカル環境でリストアする手順。
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
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
本番サーバーから必要な環境変数を取得してローカル環境用にコピペする。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
その後に開発サーバーを再起動すると、投稿や画像が表示されるはず。
Good.
これでようやくMastodonインスタンスを消せる。DB名やMastodonバージョンの不一致でデータがうまく表示されずに詰まったけどなんとか完了。