mastodonのDBをDockerからはがし、別のサーバーに分ける

Dockerで運用されているmastodonインスタンスからDBだけ分離し、ほかのサーバーに移行する方法。

  • DBサーバーにするサーバーにpostgresqlをインストール
  • 初期設定等を済ませる
  • postgresqlの外部からのアクセスを許可
  • listen_addresses=‘localhost,サーバーのip’
  • firewalldで不特定多数からのhttpやhttpsのアクセスを拒否(httpやhttpsをpublic zoneから削除)しつつ、Webサーバーからのアクセスを許可(webサーバーのipをtrustゾーンに追加)
  • firewalldをpermanentに保存しreload
  • postgresqlも再起動
  • webサーバーにpsql(クライアント)をインストールし、DBサーバーにアクセスできることを確認。psql -h DBサーバーのip -U postgres
  • できたら、webサーバーのnginxを一旦停止
  • docker exec mastodon_db_1 pg_dumpall -U postgres > 任意の名前.sql
  • 念のためdocker-compose downでwebサーバー側のmastodonを停止
  • sqlファイルをDBサーバーにコピー
  • DBサーバーのDBにインポート
  • psql -U postgres -f 任意の名前.sql
  • postgresユーザーにパスワードをかけるとかする
  • webサーバー側の.env.productionのDBホスト、パスワード等いい感じに書き換える
  • Webサーバーをdocker-compose buildする
  • docker-compose up -dする
  • データベースのユーザーは、dockerの中ではpostgresになっていると思うが、移行するときにmastodonユーザーなどほかのユーザーで運用したいと思うときは、いったん上記のようにpostgresユーザーでpostgresデータベースにインポートし、データベースをリネームなどしたほうが混乱がなくてよい。
Built with Hugo
テーマ StackJimmy によって設計されています。