はじめに
ご覧いただきありがとうございます。ペグ酸です。
今回は、Docker上で動作するMisskeyのバックアップと復元の方法を、個人的な備忘録も兼ねてまとめます。
参考にされる際は自己責任にてお願いいたします。
目次
環境
以下の環境で検証しています。
- OS: Ubuntu Server 22.04.5 LTS
- Docker: 24.0.7 (Server, Client両方)
- Docker Compose: v2.29.7
- Nginx(リバースプロキシ): 1.18.0 (Ubuntu)
バックアップの流れ
1. Misskeyを停止する
Misskeyのディレクトリに移動し、以下のコマンドを実行して停止します。
$ sudo docker compose down
2. データベースだけ起動する
データベースをバックアップする下準備として、Misskeyのデータベースだけ起動します。
$ sudo docker compose up -d db
3. データベースをダンプする
以下のコマンドでデータベースをダンプします。Qiitaの記事を参考にしました。
# データベースをダンプ $ sudo docker compose -f ./docker-compose.yml exec -T db bash -c "pg_dump -Fc -U misskey -d misskey > /var/lib/postgresql/data/misskey_db.dump" # ダンプデータ取り出し $ sudo mv ./db/misskey_db.dump ./ # ダンプデータの名称変更 $ sudo mv db db.old
4. 設定ファイルをバックアップする
$ cp .config/default.yml ./default.yml.old $ cp .config/docker.env ./docker.env.old $ cp ./compose.yml ./compose.yml.old
5. リバースプロキシの設定をバックアップする
$ cp /etc/nginx/sites-available/misskey.conf misskey.conf
6. (必要に応じて)files
ディレクトリをバックアップする
オブジェクトストレージではなくローカルに保存しているデータが有るときは、files
ディレクトリをバックアップします。
$ tar cvf ./files ./files.tar
バックアップからの復元の流れ
基本的には公式の手順と同じですが、sudo docker compose run --rm web pnpm run init
の前にデータベースをインポートします。
1. リポジトリの取得
$ git clone -b master https://github.com/misskey-dev/misskey.git $ cd misskey $ git checkout master
2. 設定
バックアップしたものを使います。
$ cp ./default.yml.old .config/default.yml $ cp ./docker.env.old .config/docker.env $ cp ./compose.yml.old ./compose.yml
3. ビルド
ビルドします。
$ sudo docker compose build
4. データベースのインポート
データベースをインポートします。こちらもQiitaの記事を参考にしました。
# データベースを起動して初期化 $ sudo docker compose up -d db # PostgreSQLのコンテナID取得 $ sudo docker ps # ダンプファイルをコンテナにコピー $ sudo docker cp misskey_db.dump [先程調べたコンテナID]:/db.dump # データベースインポート $ docker compose exec -T db pg_restore -U misskey -d misskey /db.dump # データベースを停止 $ docker compose down
5. (必要に応じて)files
ディレクトリを復元する
オブジェクトストレージではなくローカルに保存しているデータが有るときは、復元します。
$ tar xf ./files.tar ./files
6. 初期化
Misskeyの初期化を行います。
$ sudo docker compose run --rm web pnpm run init
7. リバースプロキシの設定ファイルをインポート
適宜SSL証明書の設定も行ってください。(Let's Encryptのcertbotなど)
$ sudo cp misskey.conf /etc/nginx/sites-available/misskey.conf $ ln -s /etc/nginx/sites-available/misskey.conf /etc/nginx/sites-enabled/misskey.conf
8. 起動
Misskeyとリバースプロキシを起動します。これにて完了です。
$ sudo docker compose up -d $ sudo service nginx start