目次
n8n のバックアップ・復元・バージョン更新チュートリアル
バックアップが必要なもの
| 項目 | 場所 | 重要度 |
|---|---|---|
| データベース(ワークフロー、認証情報、実行履歴) | PostgreSQL、または n8n_data 内の SQLite ファイル | 必須 |
| 暗号化キー | N8N_ENCRYPTION_KEY、または n8n_data 内の config ファイル | 必須。失うと認証情報を復号できません |
n8n_data データディレクトリ | Docker Volume | 推奨 |
| compose.yaml、.env | ホスト上のデプロイ用フォルダー | 推奨 |
方法 1:CLI でワークフローをエクスポートする
n8n にはエクスポート用コマンドが組み込まれています。ワークフローを JSON ファイルとしてエクスポートできるため、Git でのバージョン管理に適しています。
docker compose exec n8n n8n export:workflow --all --separate --output=/home/node/.n8n/backup/workflows/
docker compose exec n8n n8n export:credentials --all --separate --output=/home/node/.n8n/backup/credentials/
--separate:ワークフローごとにファイルを作成します- エクスポートした認証情報は、デフォルトでは暗号化されたままです。使用するには同じ暗号化キーが必要です
コンテナからファイルをコピーします。
docker compose cp n8n:/home/node/.n8n/backup ./n8n-backup-$(date +%F)
復元するには、次のコマンドを実行します。
docker compose exec n8n n8n import:workflow --separate --input=/home/node/.n8n/backup/workflows/
docker compose exec n8n n8n import:credentials --separate --input=/home/node/.n8n/backup/credentials/
方法 2:データベースをバックアップする
PostgreSQL
docker compose exec -T postgres pg_dump -U n8n n8n | gzip > n8n-db-$(date +%F).sql.gz
復元するには(新しいデータベースで実行します)。
gunzip -c n8n-db-2026-10-12.sql.gz | docker compose exec -T postgres psql -U n8n -d n8n
SQLite
SQLite データベースは n8n_data Volume 内にあります(database.sqlite)。途中まで書き込まれたファイルをコピーしないよう、バックアップの前に n8n を停止します。
docker compose stop n8n
docker run --rm -v n8n_n8n_data:/data -v "$PWD":/backup alpine \
tar czf /backup/n8n-data-$(date +%F).tar.gz -C /data .
docker compose start n8n
(Volume 名は「プロジェクト名_n8n_data」です。docker volume ls で確認できます。)
バックアップを自動化する
cron で毎日バックアップし、バックアップファイルを別の場所(別のホストやクラウドストレージ)にも同期します。
# /etc/cron.daily/n8n-backup
#!/bin/sh
cd /opt/n8n
docker compose exec -T postgres pg_dump -U n8n n8n | gzip > /backup/n8n-$(date +%F).sql.gz
find /backup -name 'n8n-*.sql.gz' -mtime +30 -delete
定期的にバックアップからの復元をテストし、実際に使えることを確認してください。
新しいホストに移行する
- 旧ホストでデータベースと
.env(N8N_ENCRYPTION_KEYを含む)をバックアップします。 - 新しいホストで、同じ compose.yaml と
.envを使って PostgreSQL を起動します。 - データベースを復元します。
- n8n を起動し、ワークフローと認証情報が正常に動作することを確認します。
- DNS が新しいホストを指すように更新します。
n8n を更新する
n8n はおよそ毎週、新しいバージョンがリリースされます。推奨される手順は次のとおりです。
-
リリースノートを読み、特に破壊的変更(breaking changes)の有無を確認します。
-
バックアップを作成します。
-
compose.yaml のイメージバージョンを、たとえば
n8nio/n8n:2.42.7から新しいバージョンに変更します。 -
次のコマンドを実行して更新します。
docker compose pull n8n docker compose up -d n8n docker compose logs -f n8n -
重要なワークフローが正常に動作することを確認します。
n8n は起動時にデータベースのマイグレーションを自動で実行します。ログで進行状況を確認できます。
バージョンタグ
n8n 2.x のイメージタグは次のとおりです。
| タグ | 説明 |
|---|---|
stable | 現在の安定版(以前の latest に代わるタグ) |
beta | 不安定な可能性があるテスト版(以前の next に代わるタグ) |
2.42.7 など | 固定バージョン。本番環境での使用を推奨します |
n8n 1.x から 2.x にアップグレードする
2.0 には複数の破壊的変更があります。アップグレードの前に、公式の 2.0 breaking changes の説明を読んでください。主な変更点は次のとおりです。
- Activate トグルが Publish / Unpublish に変更:保存しただけでは反映されず、公開が必要です。
- Task runners がデフォルトで有効になり、Code ノードは独立したプロセスで実行されます。
- Code ノードはデフォルトでは環境変数を読み取れません。以前のワークフローで
$envを使っていた箇所を調整する必要があります。 - Python Code ノードはネイティブ Python に変更され、外部の Task runner が必要です。構文も旧バージョンとは異なります。
- システムコマンドの実行(Execute Command)とローカルファイルトリガーはデフォルトで無効です。
- ファイルの読み書きを行うノードは、デフォルトでは特定のフォルダーだけにアクセスできます。
- n8n のデータベースとして MySQL / MariaDB を使用できなくなりました。先に PostgreSQL または SQLite に移行する必要があります。
- 子ワークフローから親ワークフローに返されるデータが、子ワークフローの最後のノードの出力に変更されました。
- Start ノードが削除されました。代わりに Manual Trigger を使用してください。
まずテスト環境でバックアップデータを使って 2.x を試し、重要なワークフローがすべて正常に動作することを確認してから、本番環境をアップグレードしてください。
更新日 2026年10月12日