#mastodon

6 posts

Keisuke Hayashi
Keisuke Hayashi

メモ: 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

これでデータがない状態でアプリが起動する。

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バージョンの不一致でデータがうまく表示されずに詰まったけどなんとか完了。

Keisuke Hayashi
Keisuke Hayashi

重い腰を上げて、Mastodonインスタンスのクローズ作業を進めることにした。最終的には、Mastodon上の投稿データをこのmemoサイトへ移行したいと考えている。

そのための前段階として、まずはエクスポート済みのデータを参照できる形で、Mastodonをローカル環境で起動できるようにしたい。理想的には、エクスポートした投稿を別のMastodonインスタンスへインポートする方法が最良だが、調査の結果、それは現実的に不可能だった。

そこで方針を切り替え、エクスポートした投稿データをもとに、スクリプトまたはAIエージェントを使って、このmemoサイトへ直接インポートする形で移行を行う予定。

Keisuke Hayashi
Keisuke Hayashi

忘れていたが、思い入れの要素も大きいよなあ。とりあえずMastodonを立ち上げてみたけど大して更新もしていない場合と、何年も地道に積み上げてきたブログでは比較する対象としては間違っている。思い入れみたいな純粋に数値化できない要素を比較時はどのように考慮すべきなのか、その辺を知りたい。

Keisuke Hayashi
Keisuke Hayashi

Mastodonでおひとり様サーバを建てました!って人のブログ記事を見ると、肝心のMastodonへのリンクが切れているパターンがほとんど。やはり、みんな資金不足で泣く泣くインスタンスを破棄したのだろうか。Mastodonだけではなく、Misskeyも同様のイメージ。

Keisuke Hayashi
Keisuke Hayashi

ライフログとしてMastodonを活用していたが、これからさらに円高に振れていくことを考えると海外のサーバで運用し続けるのは厳しい。かといって、Xに全て賭けるのはバンされる可能性を考えると難しい。やっぱり、どの環境でもビルドさえすれば公開できる仕組みを整えるのがいいのかもしれない。

Keisuke Hayashi
Keisuke Hayashi

Mastodonでおひとり様サーバを運用していたから理解できるXの凄さ。毎月サーバ代に悩まなくて良いし、動画もアップロードし放題。これが無料で使えるのは本当に凄いことだ。