初心者向け

n8nをDockerで動かす

n8n を Docker で動かす手順を、公式のコマンドで実際に起動して確かめました(n8n 2.42.6、Docker Desktop、Windows 11)。ボリュームがあるときと、ないときで、再起動・作り直し・docker compose down -v のたびに、データが残るかを試した結果、同じポートを使うときのエラー、公式の説明が古い扱いになっていて Compose を勧めていること、確認していないことまで書きました。

動作確認: — n8n 2.42.6(Docker の公式イメージ n8nio/n8n の latest) / Docker Desktop 29.8.0(Windows 11 Home)

n8n を、自分のパソコンやサーバーで動かす方法の1つが、Docker です。この記事は、公式のコマンドで、実際に n8n を起動して、動いたこと、データが残るか、つまずく点を確かめた記録です。

先に結論です。

  • 公式のコマンド(docker volume create と docker run)で、n8n 2.42.6 が、起動して25秒後には動いていました。ブラウザで http://localhost:5678 を開くと、最初に、管理者のアカウントを作る画面が出ます
  • ボリューム(データの置き場所)をつながないと、コンテナを作り直したときに、データが消えます。 再起動では消えません。筆者は、両方を試しました
  • 公式の Docker のページは、「古い」扱いで、Docker Compose のページを勧めています。そちらは、n8n 以外のサービスも含む、大きめの構成でした(筆者は、実行していません)
  • 筆者は、最小の Compose の設定ファイルも作って、起動、停止、データの残り方を確かめました
ボリュームなしデータは、コンテナの中にある・再起動(docker restart)残る・消して作り直す(docker rm)消える更新(新しいイメージに替える)は、コンテナを作り直すので、データも消えるボリュームありデータは、コンテナの外のボリュームにある・再起動残る・消して作り直す残る・docker compose down残る・docker compose down -v消える筆者が n8n 2.42.6 の公式イメージで試した結果(Docker Desktop、Windows 11)
データを残したいなら、ボリュームをつなぐ。ボリュームごと消す操作(down -v など)には、気をつける。

先に用意するもの

  • Docker(Docker Desktop など)が、動いていること。筆者は、Windows 11 の Docker Desktop(29.8.0)で確かめました
  • ポート 5678 が空いていること。 筆者の場合は、別の n8n が同じポートを使っていたので、先に止めました

docker run で起動する(公式の手順)

n8n の公式ドキュメント「Docker」に、次のコマンドが載っています(2026年10月10日に確認)。

docker volume create n8n_data

docker run -it --rm \
 --name n8n \
 -p 5678:5678 \
 -e GENERIC_TIMEZONE="<YOUR_TIMEZONE>" \
 -e TZ="<YOUR_TIMEZONE>" \
 -e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \
 -v n8n_data:/home/node/.n8n \
 n8nio/n8n
  • -p 5678:5678:自分のパソコンのポート 5678 で、n8n を開く
  • GENERIC_TIMEZONE と TZ:時間の設定。日本なら Asia/Tokyo。設定しないと、n8n の時刻がずれることがあります(VPS で設定せずに動かしたときの記録)
  • -v n8n_data:/home/node/.n8n:データを、n8n_data というボリュームに保存する

公式の例は、-it --rm で、手元の画面に出しながら動かし、止めるとコンテナを消す形です。筆者は、裏で動かし続けたかったので、-it --rm を、-d(バックグラウンド)に替えて、次のように実行しました(筆者の PowerShell では、1行にまとめました)。

docker volume create n8n_data
docker run -d --name n8n -p 5678:5678 -e GENERIC_TIMEZONE="Asia/Tokyo" -e TZ="Asia/Tokyo" -e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true -v n8n_data:/home/node/.n8n n8nio/n8n

結果は、次のとおりです。

確かめたこと 結果
イメージの取得(docker pull n8nio/n8n) 取得できた。ディスク上の大きさは、約 1.79GB(docker images の表示)
起動して、25秒後 http://localhost:5678/healthz が {"status":"ok"} と返した
n8n のバージョン 2.42.6(docker exec n8n n8n --version)
コンテナの中の時刻 日本時間(TZ が効いている)
ブラウザで開く 「Set up owner account」(管理者のアカウントを作る)画面が出た
n8n を Docker で初めて起動して開いた画面。Set up owner account と書かれ、Email、First Name、Last Name、Password の入力欄がある。パスワードは8文字以上で、数字と大文字を1つずつ含める、と書かれている
初めて開くと、管理者のアカウントを作る画面が出る(n8n 2.42.6、Docker)

docker ps の表示は、0.0.0.0:5678->5678/tcp でした。0.0.0.0 は、同じネットワークの他の機器からも、つながる設定です。サーバーで動かすときは、外に開いてよいかを、必ず考えてください(VPS で、開けたポートの確認)。

データは残るのか:ボリュームの有無で試した

「作り直したら、設定が消えた」という失敗は、起こりやすいところです。管理者のアカウントを作ったあとに、次の操作をして、また画面を開くと、アカウントの作成画面(最初の画面)が出るかを、確かめました。出れば、データが消えた、ということです。

操作 ボリュームあり ボリュームなし
コンテナを作る 最初の画面が出る 最初の画面が出る
管理者のアカウントを作る 作れた 作れた
再起動(docker restart) (試していない) データは残った
コンテナを消して、作り直す(docker rm -f のあと docker run) データは残った(最初の画面は出ない) データは消えた(最初の画面が、また出た)

つまり、ボリュームがないと、再起動では残りますが、コンテナを作り直すと消えます。 n8n を更新するときは、コンテナを作り直すので、ボリュームがないと、更新のたびにデータが消えます。公式の例が、最初に docker volume create n8n_data をするのは、このためだと、筆者は読みました。

ポートが使われているとき

すでに、ポート 5678 を使っているもの(別の n8n など)があるときに、同じポートで起動すると、次のエラーになります。

Bind for 0.0.0.0:5678 failed: port is already allocated

対処は、使っているものを止めるか、別のポートにする(-p 5679:5678 のように、左側の数字を変える)ことです。筆者も、試験で 5679:5678 にして、別の n8n を動かしました。別のポートにしたときは、ブラウザで開く番号も、変わります(http://localhost:5679)。

Docker Compose で動かす

公式の Docker のページは、「古い」扱いで、Docker Compose のページを勧めています。筆者が読んだ範囲では、その Compose の構成は、n8n のほかに、サンドボックスや検索サービスなどの別のサービスを含み、.env ファイルに、多くの値(認証トークンなど)を入れる形でした(ページの要約を読んだだけで、構成の全文は読んでいません。筆者は、この公式の Compose を、実行していません)。

そこで、n8n だけの、最小の Compose の設定を、筆者が作って、試しました。これは公式のものではなく、筆者の構成です。

services:
  n8n:
    image: n8nio/n8n:2.42.6
    restart: unless-stopped
    ports:
      - "5678:5678"
    environment:
      - GENERIC_TIMEZONE=Asia/Tokyo
      - TZ=Asia/Tokyo
      - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
    volumes:
      - n8n_data:/home/node/.n8n

volumes:
  n8n_data:
  • image の末尾にバージョンを書いて固定しています(:2.42.6)。書かないと、latest(そのときの最新)になります
  • restart: unless-stopped:パソコンやサーバーの再起動のあとに、自動で立ち上がる設定。筆者は、この自動の再起動までは、試していません

次のコマンドで、動かしました。

docker compose up -d      # 起動
docker compose down       # 止めて、コンテナを消す(ボリュームは残る)
docker compose down -v    # ボリュームも消す
操作 結果
docker compose up -d 約24秒後に、healthz が ok。最初の画面が出た
管理者のアカウントを作って、down のあとに up -d データは残った
down -v のあとに up -d データは消えた(最初の画面が、また出た)

後片づけ

試したあとは、次で消しました(試し用の n8n なので、データは不要でした)。

docker compose down -v
docker volume rm n8n_data

イメージ(約 1.79GB)は、残っています。要らなければ、docker rmi n8nio/n8n で消せます。

確認していないこと

  • 管理者のアカウントは、画面の入力ではなく、n8n の API(/rest/owner/setup)で作りました。 データが残るかの確認には、これで足りますが、画面からの作成は、筆者の試験では行っていません
  • 更新の手順(新しいバージョンのイメージに替えて、同じボリュームで起動し直す)は、試していません。公式のページには、docker pull n8nio/n8n のあとに、止めて、消して、起動し直す、と書かれています
  • 公式の Docker Compose の構成は、実行していません。ページの要約を読んだだけです
  • Docker Desktop(Windows)だけで確かめました。Linux のサーバーや、Mac での動きは、確かめていません
  • 外に公開するときの、HTTPS、リバースプロキシ、WEBHOOK_URL の設定は、試していません
  • Postgres などの外部のデータベースを使う構成は、試していません。筆者の試験は、n8n の標準のデータベース(SQLite)です
  • restart: unless-stopped で、パソコンの再起動のあとに自動で立ち上がるかは、試していません
  • n8n と Docker のバージョンは、2026年10月10日のものです。このサイトの他の記事は、n8n 2.36.8(npm で入れたもの)で確かめています

次に読む

次に読む