How to move Misskey database between machines

Fedora での作業記録

手順

移行元のマシンで Misskey を停止

これ以降新しいデータが書き込まれないようにするため。

sudo systemctl stop misskey

移行元のマシンでデータベースを dump

pg_dump -f filename -Fc -Z 9 -d username -U dbname -v

pg_dump [connection-option...] [option...] [dbname]
-f 出力先のファイル名
-Z 圧縮レベル 9(最高)でOK
-F フォーマット -Fc でOK
-U Postgres ユーザー名
-d データベースの名前
-v 進捗が見れる
ドキュメント: https://www.postgresql.jp/document/15/html/app-pgdump.html

出力先は現在いる階層に出力されるので、ユーザーディレクトリ(/home/userid)のトップにいる状態でやるといいかも。
dump が終わったらローカルに落とす

/etc/nginx/conf.d から misskey.conf をローカルに落とす

適当に

新しいサーバーの準備をする

Misskey のバージョンは同じで。
現在 Cloudflare を利用していても、以前 Let's Encrypt を利用していた場合は一度 Let's Encrypt の設定を行っておいた方がいい可能性がある。

ローカルに落とした移行元の misskey.conf をユーザーディレクトリの適当な場所にアップロードし、 /etc/nginx/conf.d の場所にコピー
http2 は非推奨になったため、テストで怒られた場合は削除して大丈夫。

/home/userid に落としたデータベースを上げる

適当に

データベースをリストア

pg_restore -d username -U dbname -v filename

pg_restore [connection-option...] [option...] [filename]
-d リストア先のデータベースの名前
-U Postgres ユーザー名
-v 進捗が見れる
filename は現在のディレクトリを参照するため、ユーザーディレクトリのトップに移動した状態で行う。(データベースを他のディレクトリにアップした場合はそこでやる。)
ドキュメント: https://www.postgresql.jp/document/15/html/app-pgrestore.html

Misskey ビルド、起動

データベースのイニシャライズ、マイグレーションは不要です。

終わり

やらなくていいこと: ServiceWorker の設定

ナビゲーション