Docker版Misskeyをv12からv13へアップグレードした
分散型SNS Misskey の
最新バージョン13(以降v13)が公開されました。
バージョン12(以降v12)で構築した既存のインスタンスをアップグレードしたので、手順をメモがてら残します。
あくまで私個人の非公式な手順です。実際に作業する際はフルバックアップを取るなど失敗しても良いように対策してくださいね。
前提条件
- Ubuntu 22.04
- Docker 20.10.22
- Docker Compose v2.14.1
- Postgresql 12.2
- Misskey v12.119.2
- Misskey、Postgresql含め一式Dockerで構築してあること
Postgresqlのアップグレード
Misskey v13からPostgresql 15が必須になったため、Postgresqlを12.2から15へアップグレードする必要があります。
ただし、PostgresqlのDockerコンテナはバージョンが異なるとデータを読み込んでくれないため、手動でdumpファイルを取り移行します。
まずは動作しているMisskeyのコンテナ群を停止します。
docker compose down
次にPostgresqlのコンテナのみを起動します。
docker compose up -d db
pg_dumpall
でデータベースのデータをエクスポートします。
[container_id]
はPostgresqlのコンテナIDに読み替えてください。
[db_user]
もMisskeyのデータベースのユーザ名に読み替えます。
docker exec [container_id] pg_dumpall -U [db_user] > dump.sql
完了したら、Postgresqlのコンテナをシャットダウンします。
docker compose down db
続いて、docker-compose.ymlを編集します。
image: postgres:12.2-alpine
を image: postgres:15.1-alpine
にします。
編集を終えたら、データベースのバックアップを取ります。
mv ./db ./db_backup
Postgresql 15のコンテナを起動します。
docker compose up -d db
エクスポートしたファイルをインポートします。
[database]
はMisskeyのデータベース名に読み替えてください。
cat dump.sql | docker exec -i [container_id] psql -U [db_user] -d [database]
これでデータベースの移行は完了ですが、私の環境では次のエラーが出てMisskeyが起動しませんでした。
Connection matched pg_hba.conf line 100: "host all all all scram-sha-256"
パスワードのハッシュ化方式がmd5から変更になった影響のようなので、データベースのユーザのパスワードを再設定します。
docker exec -it [container_id] psql -U [db_user] -d [database]
alter role "[db_user]" with password '***';
Postgresqlのコンテナをシャットダウンします。
docker compose down db
Misskeyのアップグレード
v13からDockerの実行をrootで行わないようになったため、以下のコマンドを実行します。
(object storageを使用している場合は不要です。)
chown -hR 991.991 ./files
docker compose pull
して最新版のMisskey v13にし、アクセスできるか確認します。
v12.119.2からv13.3.4へのアップグレード時はDBのスキーム変更があるため、
任意のタイミングで docker compose run --rm web pnpm run migrate
をする必要があるそうです。
docker compose pull
docker compose run --rm web pnpm run migrate
docker compose up -d
以上で完了です。
参考サイト
以下のサイトを参考にしました。