目次

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

定期的にバックアップからの復元をテストし、実際に使えることを確認してください。

新しいホストに移行する

  1. 旧ホストでデータベースと .env(N8N_ENCRYPTION_KEY を含む)をバックアップします。
  2. 新しいホストで、同じ compose.yaml と .env を使って PostgreSQL を起動します。
  3. データベースを復元します。
  4. n8n を起動し、ワークフローと認証情報が正常に動作することを確認します。
  5. DNS が新しいホストを指すように更新します。

n8n を更新する

n8n はおよそ毎週、新しいバージョンがリリースされます。推奨される手順は次のとおりです。

  1. リリースノートを読み、特に破壊的変更(breaking changes)の有無を確認します。

  2. バックアップを作成します。

  3. compose.yaml のイメージバージョンを、たとえば n8nio/n8n:2.42.7 から新しいバージョンに変更します。

  4. 次のコマンドを実行して更新します。

    docker compose pull n8n
    docker compose up -d n8n
    docker compose logs -f n8n
  5. 重要なワークフローが正常に動作することを確認します。

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日