セルフホスティング型n8nのアップデート

このページでは、Docker 環境でセルフホスティングしている n8n を安全にアップデートする手順を解説します。n8n は自動アップデートされないため、定期的にご自身で更新が必要です。

前提:本記事の操作は、「n8nセルフホスティング完全ガイド」で構築した環境(Docker Compose/ボリューム永続化)を使用しています。環境が異なる場合は、サービス名やボリューム名などを読み替えてください。

目次

なぜアップデートが必要?

  • セキュリティ修正:脆弱性対応や依存パッケージ更新が含まれる場合があります。
  • 不具合修正:既知のバグが解消され、安定性が向上します。
  • 新機能・改善:UI/ノード/ワークフロー実行基盤(Task Runners など)の改善が入ります。

公式でもこまめな更新が推奨されています。特に本番運用の場合は、少なくとも月1回の定期メンテナンスをおすすめします。

頻繁にアップデートしましょう。複数のバージョンを一度にアップデートする必要がなくなり、アップデートによる混乱のリスクを軽減できます。少なくとも月に1回はアップデートするようにしてください。

https://docs.n8n.io/hosting/installation/updating/

n8n の UI 左下やサイドバーに Updates が表示されていれば、更新可能のサインです。クリックするとバージョン差分の概要を確認できます。

n8nのUpdates表示

バックアップ

アップデート前に、n8n の永続データが入っている Docker ボリュームをバックアップします(例:ボリューム名 n8n_n8n_data)。

cd /opt/n8n

# 例: ボリューム名が n8n_n8n_data の場合
VOL=n8n_n8n_data

docker run --rm -v $VOL:/data -v $(pwd):/backup busybox \
 sh -c 'tar -czf /backup/n8n_backup_$(date +%F).tgz -C /data . && ls -lh /backup'
STEP
STEP

アップデート実行

docker compose pullコンテナレジストリ(Docker Hub など)から最新イメージを取得します。その後、差し替えて起動します。

cd /opt/n8n

# 最新イメージ取得
docker compose pull n8n

# 停止
docker compose down

# 起動
docker compose up -d

動作確認

# ログ(DBマイグレーションやエラーの有無を確認)
docker compose logs -f n8n

# 稼働確認
docker compose ps

# バージョン表示
docker exec n8n n8n --version

UI の Updates 表示が消えていること、既存ワークフローの実行・編集、Webhook の受信などが正常であることを確認します。

更新後の確認

ロールバック(不具合時)

アップデート後に不具合が出た場合は、状況に応じて次のどちらかで切り戻します。

  • タグ/Digestで戻す: アプリのバイナリ(n8n本体のバージョン)を戻す。データ(ワークフロー・認証情報・実行履歴など)はそのまま残る
  • tgzで戻す: データ領域(/home/node/.n8n)をバックアップ時点に戻す。n8n本体のバージョンは戻らない(必要ならタグ/Digestと併用)。

パターンA:タグ/Digestでのロールバック(イメージだけ戻す)

  • こんな時に: アプリの不具合・互換性問題が疑わしく、データ自体は壊れていない場合。
  • ポイント: 以前に動いていた image:(例:n8nio/n8n:1.yy.z)や @sha256:… の Digest に戻します。Digest 固定は完全再現が可能です。
cd /opt/n8n

# (1) 以前に動いていたタグ/Digestを選ぶ
# 例: image: n8nio/n8n:1.yy.z または n8nio/n8n@sha256:xxxxxxxx
# 補助: ローカルの履歴を確認
# docker images --digests n8nio/n8n

# (2) docker-compose.yml の image を以前の値へ変更
# image: n8nio/n8n:1.yy.z
# # もしくは Digest 固定
# # image: n8nio/n8n@sha256:xxxxxxxx

# (3) 切り戻し実行
docker compose pull n8n
docker compose down
docker compose up -d

# (4) 仕上げ確認
docker exec n8n n8n --version

パターンB:バックアップからのロールバック(ボリューム復元)

  • こんな時に: マイグレーション失敗・設定破損・ワークフローや資格情報の不整合など、データそのものを元に戻したい場合。
  • 前提: 事前に作成した n8n_backup_YYYY-MM-DD.tgz を使います。復元中は n8n を停止してください。
cd /opt/n8n

# (1) n8n を止める
docker compose down

# (2) 復元対象(例)
VOL=n8n_n8n_data
BACKUP=n8n_backup_2025-08-27.tgz # 実ファイル名に置き換え

# (3) ボリュームを中身ごと置き換え(BusyBoxを使用)
docker run --rm -v $VOL:/data -v $(pwd):/backup busybox \
 sh -c "rm -rf /data/* && tar -xzf /backup/$BACKUP -C /data && \
 chown -R 1000:1000 /data && ls -lah /data | head"

# (4) n8n を起動
docker compose up -d

# (5) ログとバージョン確認
docker compose logs -f n8n
docker exec n8n n8n --version

まとめ

  • アップデート前にボリュームをバックアップ(tgz)。
  • 通常の更新は pull → down → up -d の3ステップ。
  • 不具合時は タグ/Digestでイメージを戻す or tgzでデータを戻す(必要に応じて両方)。
目次