n8nを手元のPCで動かす:Mac・WindowsにnpxとDocker Desktopで入れる

公開 書いた人 大林 諒

n8nは手元のPCでも動きます。ここではMacとWindowsに、npx・npm・Docker Desktopの3つの方法で n8n 2.44.7 を入れ、「問い合わせ受付」ワークフローを作り始められる状態にします。読み終わると、自分のPCに合う入れ方で起動でき、手元で作ったワークフローをVPSの本番へ移せます。前提は、ターミナル(WindowsならPowerShellかUbuntuの画面)でコマンドを打てることです。版は執筆時点の安定版 2.44.7 で確かめています。

この記事の内容
  1. 先に決めること
  2. 3つの入れ方の比較
  3. npxとnpmで入れる
  4. Docker Desktopで入れる
  5. 手元から本番へ移す
  6. 応用
  7. できないことと、その代わり
  8. よく詰まるところ
  9. 次にやること

先に決めること

手元のn8nを何に使うか

手元のn8nは、PCを閉じれば止まり、外からは届きません。だから本番には使わず、ノードの動きを覚える、本番に出す前のワークフローを組む、といった練習と試作に使います。毎日の業務は最初から24時間動くサーバーに載せます。その立て方は「n8nをセルフホストで導入する:Docker ComposeでVPSに立て、独自ドメインとHTTPSで使う」に書いています。

画面を触りたいだけなら、インストールの要らないn8n Cloudの無料体験のほうが早く、「n8n Cloudの始め方:登録から最初のワークフロー、プラン変更・解約まで」に分けました。

会社のPCに入れてよいか

WSL2を入れる wsl --install は管理者のPowerShellで打ち、Docker Desktopもすべてのユーザー向けに入れると管理者の許可を求められます。情シスの許可が要る会社なら先に話を通します。

Docker Desktopは、従業員250人未満かつ年間売上1,000万ドル未満の会社なら無料で、それを超える会社が仕事で使うには有料のサブスクリプションが要ります。社員30名ほどでも売上の条件は確かめます。n8n自体のライセンスは「n8nの料金:Cloudとセルフホストの費用、商用利用の線引き」にあります。

PCの種類

n8n 2.44.7 のパッケージに入っている組み立て済みの部品(isolated-vm)は、Apple siliconのMac、x64のWindows、Linux向けだけです。Intel MacやARMのWindowsでnpx・npmを使うと、入れる途中でビルドが走り、開発用のツールが要ります。Intel MacならDocker Desktopのほうが早いです。

Docker Desktopの要件は、WindowsがWindows 10 22H2(ビルド19045)以上かWindows 11 23H2(ビルド22631)以上・WSL 2.1.5以上(wsl --update で上げられます)・メモリ8GB・BIOSで仮想化が有効、Macが今の版から2つ前までのmacOS・メモリ4GB以上です。

版を本番と揃える

版が違うと、手元で確かめた意味がなくなります。手元も 2.44.7 のように番号で固定し、本番を上げたら手元も上げます。版を書かずに npx n8n と打つと、その日の最新が入ります。

3つの入れ方の比較

項目npxで試すnpmで入れるDocker Desktopで入れる
必要なものNode.js 24系Node.js 24系Docker Desktop(WindowsはWSL2も)
起動のコマンドnpx n8n@2.44.7n8n startdocker compose up -d
データの置き場所ホームの .n8nホームの .n8nDockerのボリューム
PCを再起動したあと自分で起動し直す自分で起動し直すDocker Desktopが立ち上がれば自動で戻る
本番との近さ低い低い本番と同じイメージ
n8n Assistant使えない使えない公式のサンドボックス込みの構成なら使える
今後npmでの導入は3.0で廃止予定npmでの導入は3.0で廃止予定続く
向いている場面今日1時間だけ触るDockerを入れられないPCで続けて使う本番の練習台として何週間も使う

画面を見たいだけならnpx、Docker Desktopを入れられないPCならnpm、それ以外はDocker Desktopにします。npmでの導入は3.0で廃止予定(npxも同じ導入方式です)で本番もDockerなので、長く使うならDocker Desktopが手戻りがありません。

npxとnpmはどちらもデータをホームの .n8n(Macは ~/.n8n、Windowsは C:\Users\ユーザー名\.n8n)に置くので、npxで作ったものはnpmのn8nからも見えます。環境変数 N8N_USER_FOLDER を指定すると、その下に .n8n が作られます。

npxとnpmで入れる

Node.jsの版の合わせ方

公式ドキュメントのnpmのページには「Node.js 20.19〜24.x」とありますが、2.44.7 のパッケージ自体が求めるのは24以上です。22で起動すると次のように断られます。

Your Node.js version 22.x.x is currently not supported by n8n.
Please use a Node.js version that satisfies the following version range: >=24.0.0

2026年10月時点のNode.jsのLTS(長期サポート版)の最新は 24.22.1 です。26系はLTSではなく、ドキュメントの範囲からも外れるので、24系を入れます。

Macの手順

  1. nodejs.org のダウンロードページから、24系(LTS)のmacOS用インストーラーを入れる
  2. ターミナルを開き、node -v が v24 で始まることを確かめる
  3. mkdir ~/n8n-local で作業フォルダを作り、cd ~/n8n-local で入る
  4. 下の .env をこのフォルダに作る
  5. npx n8n@2.44.7 を実行する
  6. 「Ok to proceed? (y)」と聞かれたら y を押す
  7. 「Editor is now accessible via:」の下に http://localhost:5678 が出るまで待つ
  8. o のキーを押してブラウザを開き、オーナーアカウントを作る
GENERIC_TIMEZONE=Asia/Tokyo
TZ=Asia/Tokyo

n8nは起動したフォルダの .env を読み込みます。GENERIC_TIMEZONE が無いと、日本のPCでもアメリカ東部時間(America/New_York)で動き、Schedule Trigger(定期実行のきっかけ)が13〜14時間ずれます。止めるときは Ctrl と C を押します。初回は部品のダウンロードに数分かかります。版は npx n8n@2.44.7 --version で確かめられます。

http://localhost:5678 の「Set up owner account」。Email・First Name・Last Name・Password の欄
http://localhost:5678 の「Set up owner account」。Email・First Name・Last Name・Password の欄

Windowsの手順

Windowsは、Microsoftの案内どおり nvm-windows でNode.jsを入れます。既に入っているNode.jsは先に消し、C:\Program Files\nodejs も残さないようにします。

  1. nvm-windows のGitHubのリリースページから nvm-setup.zip をダウンロードする
  2. zipを開き、nvm-setup.exe を実行して画面どおりに入れる
  3. PowerShellを管理者として開き、nvm list available でLTSの番号を見る
  4. nvm install 24.22.1 を実行する
  5. nvm use 24.22.1 を実行する
  6. PowerShellを普通に開き直し、node -v が v24.22.1 になることを確かめる
  7. mkdir C:\n8n-local で作業フォルダを作り、cd C:\n8n-local で入る
  8. Macと同じ .env をこのフォルダに作る
  9. npx n8n@2.44.7 を実行し、http://localhost:5678 を開いてオーナーアカウントを作る

npmで入れる場合

n8n のコマンドで起動したいなら、npmで入れます。

npm install -g n8n@2.44.7
n8n --version
n8n start

上げるときは番号を指定して入れ直します。Macでインストーラーから入れたNode.jsだと、-g が EACCES(権限がない)で止まることがあり、直し方は後の表にあります。

Docker Desktopで入れる

Macの手順

  1. 左上のアップルメニューの「このMacについて」で、チップがApple siliconかIntelかを見る
  2. docs.docker.com のMac用のページから、チップに合うDocker Desktopをダウンロードする
  3. Docker.dmg を開き、DockerをApplicationsフォルダへドラッグする
  4. ApplicationsからDockerを起動し、Subscription Service Agreement(利用規約)で「Accept」を押す
  5. Docker Desktopの「Settings」の「General」で「Start Docker Desktop when you sign in to your computer」をオンにする
  6. ターミナルで docker --version と docker compose version が版を返すことを確かめる

5は既定でオフで、オフのままだと再起動後にn8nも上がってきません。

Windowsの手順(WSL2)

Windowsでは、Docker DesktopをWSL2(Windowsの中でLinuxを動かす仕組み)の上で動かします。

  1. タスクマネージャーの「パフォーマンス」→「CPU」で、仮想化が「有効」になっていることを確かめる。無効ならBIOS/UEFIで有効にする
  2. PowerShellを管理者として開き、wsl --install を実行する
  3. PCを再起動する
  4. 自動で開くUbuntuの画面で、Linuxのユーザー名とパスワードを決める(ユーザー名は英小文字)
  5. Docker Desktop Installer.exe を実行し、「Configuration」で「Use WSL 2 instead of Hyper-V」にチェックを入れたまま進める
  6. Docker Desktopを起動し、利用規約で「Accept」を押す
  7. 「Settings」の「Resources」→「WSL integration」で、Ubuntuをオンにする
  8. 「Settings」の「General」で「Start Docker Desktop when you sign in to your computer」をオンにする
  9. スタートメニューからUbuntuを開き、docker --version が版を返すことを確かめる

wsl -l -v の「VERSION」が 2 ならWSL2です。WindowsのHomeでも、n8nのようなLinuxのコンテナは動きます。

ここから先はUbuntuの画面で打ちます。公式も、作業フォルダはWSLの中(~/n8n-local など)に置き、/mnt/c/ の下は遅く権限の問題も出るので避けるよう書いています。

n8nを起動する(Mac・Windows共通)

  1. mkdir -p ~/n8n-local/local-files で作業フォルダとファイルのやり取り用のフォルダを作る
  2. cd ~/n8n-local で入る
  3. 下の compose.yaml を作る
  4. docker compose up -d を実行する
  5. docker compose ps で n8n が running になっていることを確かめる
  6. ブラウザで http://localhost:5678 を開き、オーナーアカウントを作る
services:
  n8n:
    image: n8nio/n8n:2.44.7
    restart: unless-stopped
    ports:
      - "127.0.0.1:5678:5678"
    environment:
      - GENERIC_TIMEZONE=Asia/Tokyo
      - TZ=Asia/Tokyo
      - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
      - N8N_RESTRICT_FILE_ACCESS_TO=/files
    volumes:
      - n8n_data:/home/node/.n8n
      - ./local-files:/files

volumes:
  n8n_data:

公式の docker run の例(今は古い方式とされ、Docker Composeのページへ案内されています)を、Composeの形に直したものです。ポートの 127.0.0.1: は、同じWi-Fiの別のPCから開けないようにするためです。restart: unless-stopped で、Docker Desktopが立ち上がればn8nも戻ります。データは n8n-local_n8n_data というボリュームに残ります(頭に作業フォルダ名が付きます)。local-files はコンテナの中から /files に見え、ファイルの読み書きと後で書く書き出しに使います。

止めるときは docker compose stop、もう一度動かすときは docker compose start です。docker compose down -v の -v はボリュームまで消すので付けません。

起動ログにCodeノードの実行方式(内部モード)の注意が出ますが、手元で試す分にはそのままで構いません。PythonのCodeノードを使うなら、セルフホストの記事の task-runners を同じように足します。Codeノードの書き方は「n8nのCodeノード:JavaScriptとPythonで足りないところを書く」にあります。

版を上げる

compose.yaml の版の番号を書き換え、docker compose pull、docker compose up -d の順に打ちます。新しい版は起動時にデータベースを作り替えることがあり、番号を戻すだけでは元に戻らないので、上げる前にボリュームを控えます。控え方は「n8nを止めずに運用する:アップデート・バックアップ・エラー通知・脆弱性」にあります。

手元から本番へ移す

手元で組み終えた「問い合わせ受付」をVPSの本番へ移す方法は3つです。

移し方移るもの移らないもの向いている場面
画面で書き出し・取り込み1本ずつのワークフローCredentialの中身1〜3本だけ
CLIで書き出し・取り込み全ワークフロー(Credentialは任意)ユーザー、実行履歴、Variables、暗号鍵などの設定まとめて移す
.n8n フォルダごと全部なし(同じSQLite同士のとき)手元をそのまま本番にしたい

おすすめはCLIでワークフローだけを移し、Credential(接続情報)は本番で作り直す形です。GoogleやSlackのOAuthの戻り先が http://localhost:5678/... から https://n8n.example.co.jp/... に変わり、どうせ各サービス側の登録を直すからです。フォルダごと移すと、テストの実行履歴まで本番に入ります。

1. 手元で書き出す

Docker Desktopで動かしているなら、作業フォルダで次を打ちます。

cd ~/n8n-local
docker compose exec -u node n8n n8n export:workflow --backup --output=/files/export/workflows/
ls local-files/export/workflows/

--backup は全ワークフローを1本ずつJSONに書き出す指定で、/files は手元の local-files です。

npxで動かしているなら、作業フォルダで npx n8n@2.44.7 export:workflow --backup --output=./export/workflows/ を打ちます。

2. 本番へ送る

本番はセルフホストの記事の構成(作業フォルダ n8n-compose、local-files がコンテナの /files)を前提にします。

scp -r ~/n8n-local/local-files/export ubuntu@n8n.example.co.jp:~/n8n-compose/local-files/

3. 本番で取り込む

取り込みのコマンドはユーザーがいることが前提なので、本番のオーナーアカウントを先に作っておきます。

cd ~/n8n-compose
sudo docker compose exec -u node n8n n8n import:workflow --separate --input=/files/export/workflows/

取り込んだワークフローは無効(Publishされていない)状態で入り、同じIDのものは上書きされます。

4. 本番で仕上げる

  1. 本番のn8nで「Credentials」を開き、GoogleスプレッドシートとSlackのCredentialを作り直す
  2. 取り込んだ「問い合わせ受付」の各ノードで、作り直したCredentialを選び直す
  3. Webhookノードを開き、「Production URL」が https://n8n.example.co.jp/webhook/ で始まることを確かめる
  4. ワークフロー名の横の「…」から「Settings」を開き、「Timezone」を確かめる
  5. 「Publish」を押す
  6. 自社サイトのフォームの送信先を、本番の「Production URL」に差し替える
  7. 試しに1件送り、シートとSlackに届くことを確かめる
  8. 手元のn8nで同じワークフローをUnpublishする

8を忘れると、定期実行が手元と本番の両方で動き、Slackに同じ通知が2通届きます。セルフホストでのCredentialの作り方は「n8nの使い方入門:最初のワークフローを作って動かす」にあります。

本番に取り込んだワークフローで、Credentialが未選択の警告が出ているGoogle Sheetsノード
本番に取り込んだワークフローで、Credentialが未選択の警告が出ているGoogle Sheetsノード

1〜3本だけなら画面で移す

  1. 手元でワークフローを開き、画面上部のワークフロー名の横の「…」を押す
  2. 「Export JSON」を選び、JSONファイルを保存する
  3. 本番で「Create workflow」を押して空のワークフローを作る
  4. 「…」から「Import」→「From file」を選び、保存したJSONを選ぶ

ノードを選んで Ctrl と C(Macは cmd と C)でコピーし、別のn8nに貼り付けても移せます。JSONにはCredentialの名前とIDが入り、cURLから取り込んだHTTP Requestノードは認証のヘッダーを持っていることがあるので、人に渡す前に中を見ます。

ワークフロー名の横の「…」メニュー。「Export JSON」と「Import」が並んでいるところ
ワークフロー名の横の「…」メニュー。「Export JSON」と「Import」が並んでいるところ

Credentialも移したいとき

n8nはCredentialを暗号鍵で暗号化して保存しているので、取り込む側に同じ鍵が要ります。手元の鍵は、npxならホームの .n8n/config、Dockerなら docker compose exec -u node n8n cat /home/node/.n8n/config の encryptionKey です。

本番を立てる前なら、本番の .env の N8N_ENCRYPTION_KEY に手元の鍵を入れ、export:credentials --backup で書き出したものを import:credentials --separate で入れます。本番が別の鍵で動いているなら --decrypted で平文に書き出す方法もありますが、すべての秘密が見えるファイルになるので、取り込んだらすぐ消します。.n8n フォルダごと移すときも、鍵が違うと起動時に「Mismatching encryption keys.」で止まります。

応用

外からのWebhookを手元で試す(トンネル)

トンネルは、手元のn8nに外から届くURLを一時的に付ける仕組みです。Cloudflareの Quick Tunnel なら、アカウントもドメインも無しで https://〜.trycloudflare.com のURLが手元のn8nにつながります。

  1. Macなら brew install cloudflared、WindowsならGitHubのリリースページから cloudflared を入れる
  2. 別のターミナルで cloudflared tunnel --url http://localhost:5678 を実行する
  3. 表示された https://〜.trycloudflare.com のURLを控える
  4. n8nを止め、.env に下の2行を足して起動し直す(Dockerなら compose.yaml の environment に - を付けて足す)
  5. Webhookノードの「Test URL」が https://〜.trycloudflare.com/webhook-test/ で始まっていることを確かめる
  6. 試し終わったら cloudflared を Ctrl と C で止め、2行を消して起動し直す
N8N_WEBHOOK_URL=https://〜.trycloudflare.com/
N8N_PROXY_HOPS=1

公式ドキュメントのトンネルはソースコードから動かす開発者向けで、以前の n8n start --tunnel は2.0で無くなりました。

使うのは外部サービスのWebhookの形を見たいときだけです。Quick Tunnel は稼働の保証がなく、同時200リクエストまで、URLは作るたびに変わります。編集画面ごと外に出てログイン画面が誰からでも開けるので、終わったらすぐ止めます。Webhookの受け方そのものは「n8nで外部サービスとつなぐ:Webhook・HTTP Request・API」に書いています。

本番の検証用に使う

手元のn8nは、本番の版を上げる前の試し場所になります。本番のバックアップを手元に戻し、全ワークフローを止めてから新しい版を当てます。手順は「n8nを止めずに運用する:アップデート・バックアップ・エラー通知・脆弱性」の「戻せるかを試す」です。

手元のAIモデルとつなぐ

同じPCのOllamaを使えば、問い合わせの振り分けを社外にデータを出さずに試せます。Dockerのn8nからは host.docker.internal で呼びます。詳しくは「n8nでAIエージェントを作る:ChatGPT・Claude・Geminiをつなぐ」にあります。

できないことと、その代わり

できないこと理由代わりの手
自社サイトのフォームやSlackからWebhookを受けるlocalhost は社外から届かない試すだけならトンネル。業務はVPSに立てる
PCを閉じている間・スリープ中に動かすPCと一緒にn8nも止まる。止まっていた間のScheduleやWebhookは取り戻せない24時間動かすものはVPSかn8n Cloudに置く
他の社員と一緒に使う他のPCからは開けない(開けてもHTTPでないとログインできない)VPSに独自ドメインとHTTPSで立てる
npm・npxでn8n Assistantを使う公式がnpmでは使えないとしているDocker Desktopで、公式のサンドボックス込みの構成にする
npxや1つのコンテナでPythonのCodeノードを動かす2.0からPythonは外部モードが前提n8nio/runners のコンテナを足す
大きい会社でDocker Desktopを無料で使うDocker Desktopの利用条件有料のサブスクリプションにするか、npxで試す

Macなら caffeinate -i npx n8n@2.44.7 で起動中のスリープは防げますが、蓋を閉じれば止まるので、業務を載せる理由にはなりません。

よく詰まるところ

症状原因直し方
Your Node.js version 22.x.x is currently not supported by n8n. で止まる2.44.7 はNode.js 24以上が必要24系を入れ、node -v で確かめる
n8n's port 5678 is already in use. と出るnpxとDockerの両方で起動している、または前のn8nが残っているMacは lsof -i :5678、Windowsは netstat -ano で相手を見て止める。並べるなら .env に N8N_PORT=5679
docker compose up -d で port is already allocated5678番を別のn8nやアプリが使っている相手を止めるか、127.0.0.1:5679:5679 にして N8N_PORT=5679 を足す
npm install -g が EACCES で止まるインストーラーのNode.jsは全体用のフォルダに書く権限がないnvmで入れ直すか、npm config set prefix ~/.local にしてPATHに ~/.local/bin を足す
入れる途中で node-gyp のビルドが失敗するIntel MacやARMのWindowsには組み立て済みの部品がないMacは xcode-select --install で開発ツールを入れるか、Docker Desktopにする
PowerShellで npx が「スクリプトの実行が無効」と言われるWindowsの実行ポリシーSet-ExecutionPolicy -Scope CurrentUser RemoteSigned を打つか、コマンドプロンプトから実行する
ユーザー名が日本語のWindowsで、導入や起動が途中で失敗するホームのパスの日本語をビルドの道具やnpmのキャッシュが扱えないことがあるN8N_USER_FOLDER=C:\n8n-data とし、npm config set cache C:\npm-cache でキャッシュも移す。WSL2の中なら起きない
Safariでログインできず、secure cookie の警告が出るログインのCookieはHTTPSが前提で、Safariは localhost でも通さないChromeかEdgeで開く
定期実行が夜中に動く、時刻がずれるGENERIC_TIMEZONE が無く、America/New_Yorkで動いている.env か compose.yaml に GENERIC_TIMEZONE=Asia/Tokyo と TZ=Asia/Tokyo
「Read/Write Files from Disk」で Access to the file is not allowed.2.0からファイルの読み書きは決まったフォルダの中だけnpxは ~/.n8n-files、Dockerは local-files に置き、/files/〜 で指定する
Cannot connect to the Docker daemon と出るDocker Desktopが起動していないDocker Desktopを起動し、「General」で自動起動をオンにする
Ubuntuで docker が見つからないWSL integrationでUbuntuがオフ「Settings」→「Resources」→「WSL integration」でオンにする
PythonのCodeノードで Failed to start Python task runner in internal mode.1つの仕組みの中でPythonを動かそうとしているn8nio/runners のコンテナを足して外部モードにする
起動し直したらワークフローが全部消えたdown -v でボリュームを消した、または作業フォルダ名を変えた-v を付けない。フォルダ名を戻す
移した先が「Mismatching encryption keys.」で起動しないconfig の鍵と N8N_ENCRYPTION_KEY が違うどちらかに揃える

次にやること

  • n8nをセルフホストで導入する:Docker ComposeでVPSに立て、独自ドメインとHTTPSで使う
  • n8nの使い方入門:最初のワークフローを作って動かす
  • n8n Cloudの始め方:登録から最初のワークフロー、プラン変更・解約まで
  • n8nを止めずに運用する:アップデート・バックアップ・エラー通知・脆弱性

あわせて読む