2026/01/17 追記
この記事は大昔に書いた内容で、今はより良い情報がネット上に書かれています。
小規模なMisskeyサーバーの引越しなどには使えますが、日常的なバックアップ用途としては推奨しません。
画像などの保管は./files配下ではなくオブジェクトストレージを使うことで、バックアップの手間を省略できます。
私はpg_dumpを用いたシェルスクリプト(backup-misskey-db at v1)を定期実行しており、この記事の内容は実施していません。
追記終わり
Dockerを使って構築したMisskey のデータをバックアップする手順を忘れないようにメモしておきます。
本番環境を停止してバックアップを取得する手順のため、ユーザー影響(サービス断)が発生します。
前提条件
- Ubuntu 22.04
- Docker 20.10.22
- Docker Compose v2.14.1
- Postgresql 15.1
- Misskey v13.7.0
- Misskey、Postgresql含め一式Dockerで構築してあること
データのバックアップ
Misskeyのdocker composeがあるディレクトリへ移動し、Misskeyのコンテナを停止します。
|
|
docker composeのディレクトリをtar.gzで圧縮し1つ上の階層にバックアップ misskey_backup.tgz を作成します。
|
|
バックアップを終えたら、Misskeyコンテナを起動します。
|
|
これでバックアップは終わりです。
データのリストア
データのリストアはバックアップファイルのtar.gzを解凍し、 docker compose up -d すれば完了です。
-C で解凍先を指定します。(今回は misskey_restore というディレクトリにバックアップを解凍します。)
|
|
バックアップの自動化
cronを使ってバックアップを自動化するサンプルです。
まず、以下のシェルスクリプト backup_misskey.sh を用意します。
DIR はMisskeyのdocker-compose.ymlが設置してあるディレクトリを記載してください。
BKDIR はバックアップを保存するディレクトリを記載してください。
|
|
次にroot権限になり、 crontab -e してから以下を記載します。
編集が完了したら :wq で保存してください。
これで、毎週金曜日の午前3時5分にMisskeyのバックアップを行なってくれます。
|
|
あとがき
とても簡易な方法ですが、Misskeyのバックアップ方法について記載しました。
オンラインでバックアップを取得する方法(Postgresqlコンテナでdumpをとるetc)もありますが、
個人的には(DBとアップロードされたファイルの)不整合が怖いのでこちらを採用しています。
(もっと賢いやり方があれば教えてください。)
そうそう。生成されたバックアップファイルがリストアできることを確認することをお勧めします。
動作確認(試験)はしっかりやった方がいいです。いざという時バックアップがうまく取れてなかったら悲しいですしね。
取得したバックアップはオブジェクトストーレジなど別の場所に転送するといいです。
それでは。