Docker版Misskeyをv12からv13へアップグレードした

Docker版Misskeyをv12からv13へアップグレードしたのでやったことを書く

分散型SNS Misskey の 最新バージョン13(以降v13)が公開されました。
バージョン12(以降v12)で構築した既存のインスタンスをアップグレードしたので、手順をメモがてら残します。

あくまで私個人の非公式な手順です。実際に作業する際はフルバックアップを取るなど失敗しても良いように対策してくださいね。

前提条件

Postgresqlのアップグレード

Misskey v13からPostgresql 15が必須になったため、Postgresqlを12.2から15へアップグレードする必要があります。
ただし、PostgresqlのDockerコンテナはバージョンが異なるとデータを読み込んでくれないため、手動でdumpファイルを取り移行します。

まずは動作しているMisskeyのコンテナ群を停止します。

1
docker compose down

次にPostgresqlのコンテナのみを起動します。

1
docker compose up -d db

pg_dumpall でデータベースのデータをエクスポートします。
[container_id]はPostgresqlのコンテナIDに読み替えてください。
[db_user] もMisskeyのデータベースのユーザ名に読み替えます。

1
docker exec [container_id] pg_dumpall -U [db_user] > dump.sql

完了したら、Postgresqlのコンテナをシャットダウンします。

1
docker compose down db

続いて、docker-compose.ymlを編集します。
image: postgres:12.2-alpineimage: postgres:15.1-alpine にします。

編集を終えたら、データベースのバックアップを取ります。

1
mv ./db ./db_backup

Postgresql 15のコンテナを起動します。

1
docker compose up -d db

エクスポートしたファイルをインポートします。 [database] はMisskeyのデータベース名に読み替えてください。

1
cat dump.sql | docker exec -i [container_id] psql -U [db_user] -d [database]

これでデータベースの移行は完了ですが、私の環境では次のエラーが出てMisskeyが起動しませんでした。

1
Connection matched pg_hba.conf line 100: "host all all all scram-sha-256"

パスワードのハッシュ化方式がmd5から変更になった影響のようなので、データベースのユーザのパスワードを再設定します。

1
2
docker exec -it [container_id] psql -U [db_user] -d [database]
alter role "[db_user]" with password '***';

Postgresqlのコンテナをシャットダウンします。

1
docker compose down db

Misskeyのアップグレード

v13からDockerの実行をrootで行わないようになったため、以下のコマンドを実行します。
(object storageを使用している場合は不要です。)

1
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 をする必要があるそうです。

1
2
3
docker compose pull
docker compose run --rm web pnpm run migrate
docker compose up -d

以上で完了です。

参考サイト

以下のサイトを参考にしました。

comments powered by Disqus
Built with Hugo
テーマ StackJimmy によって設計されています。