マストドンのサーバ引越で詰まったこと

AWSの1か月の無料期間が終わりそうだったので安価のVPSに引っ越しさせたました。

5日もかかってしまったので、もったいないので自分のためにも調べたことをまとめます。(覚えてる範囲ですみませんm(_ _)m)

 

まず手順は以下のとおり

mastodonフォルダをまるまるコピー

DNS設定

・引っ越し前サーバのDocker内DBのデータのバックアップ

・引っ越し先サーバのDocker内DBへレストア

 

mastodonフォルダをまるまるコピー

(AWS)home/ubuntu/にmastodonというフォルダがあったので

それを引っ越し先の/var/(**ヒミツ**)/以下にまるまるコピーしました。(どこでもいいと思います。任意)

 

DNS設定

ドメインサービスによるとおもいますので省略。

自分はお名前.comでドメインを取っているので改めて設定しました。

 

letsencrypt

mastodonフォルダ置いてDNS設定しただけで普通にSSLアクセスできるようになったと思います。SSL通信はAWSでもできていたので、設定ファイルなどそのままで大丈夫なのかな。nginxは適切に設定すべきかと思いますが(特に触らなかったような気がします。)

 

エラー

マストドンのdocker内のデータベースのデータを復活させるのに苦労しました。

SSL通信はできても、表示されるページはエラーページでした。ログを見てみるとデータベースのuserテーブルを見つけられませんというふうにエラー吐いていました。(アクセスされたら最初にuserテーブルを探すようです)つまりデータベースが空っぽでした。

 

・引っ越し前サーバのDocker内DBのデータのバックアップ

AWSで以下のコマンド打って「.sql」ファイルを取得しました。

docker exec mastodon_db_1 pg_dumpall -U postgres > ./mastodon_backup.sql

(青部分は任意)

このmastodon_backup.sqlファイルを大事に保管します。

 

この辺で一度migrateしました(2コマンド)。

docker-compose run --rm web rake assets:precompile

docker-compose run --rm web rake db:migrate

 

・引っ越し先サーバのDocker内DBへレストア

※激詰まりポイント

dockerコンテナにアクセスして「mastodon_db_1」を操作します。

 

-まずはDBコンテナを起動します。(今回は全部起動させました…)

docker-compose up -d

-mastodon_db_1コンテナの/tmp/直下に取得したバックアップ.sqlファイルをコピー。

docker cp mastodon_backup.sql mastodon_db_1:/tmp/mastodon_backup.sql

-mastodon_db_1コンテナに入ります。

docker exec -it mastodon_db_1 /bin/bash

-次にDB_USER(.env.productionで設定済)に代わります。

su - [DB_USER]

-psqlに入ります。

pslq

-/tmp/フォルダ内の.sqlをたたきます

\i /tmp/mastodon_backup.sql

 

 

以上です。REDISもレストアした方がいいみたいですがやってません。

 

[参考にさせていただきました!]

Mastodonの永続化を忘れた場合の対処 « 徒然なるままに

postgreSQLにコマンドラインからSQLファイルを実行 - Qiita

マストドン引っ越し記 - shi3zの長文日記

CentOS7でmastodonを建てる - Qiita