本頁內容

難度
初階
所需時間
約 20–40 分鐘
你需要準備
Windows 10/11 · Docker Desktop · Windows PowerShell · 網頁瀏覽器 · n8n Community Edition
開始之前
- 可在 Windows 安裝及啟動 Docker Desktop,並已開啟所需虛擬化/WSL 2 支援
- 至少預留數 GB 磁碟空間,並可下載 Docker 映像
- 明白本教學只建立本機學習環境,不是可直接公開上網的正式生產部署
- 開始前不要把真實客戶資料、API key 或公司憑證放入測試 workflow
n8n 是一個以節點連接服務、API 和資料處理步驟的工作流程自動化平台。本地部署的吸引力,是可以在自己的電腦控制運行環境、資料保存位置和更新時間;但「成功開到 localhost:5678」只代表容器開始運行,並不等於資料已持久化、服務已安全或可以公開給團隊使用。
這篇教學以 Windows 和 Docker Desktop 為主線,先跟着畫面理解安裝和啟動,再按現行 n8n 與 Docker 官方文件補回 named volume、香港時區、設定檔權限、task runners、本機連接埠、更新和備份。完成後,你會有一個可重建的本機學習環境,而不是一個只在今天可用的臨時容器。
一、本地部署值得做甚麼,也不會自動解決甚麼

資料控制:workflow、憑證和執行紀錄可以留在你管理的 Docker volume,而不是由託管平台保存。不過,workflow 連接 Gmail、CRM、LLM 或付款服務時,資料仍會傳給那些第三方;本地部署不等於資料永遠不離開電腦。
成本與彈性:你不按託管平台的執行次數付費,也可自行選版本和整合方式;代價是電腦必須保持運行,你要負責更新、備份、安全、磁碟容量和故障處理。筆記型電腦睡眠、Docker Desktop 關閉或 Windows 更新重啟,都會令排程暫停。
適合:個人學習、workflow 原型、開發測試和只在本機使用的流程。
不應直接照搬:公司多人協作、關鍵排程、公開 webhook、客戶資料或需要 24×7 可用性的正式服務。
二、安裝前檢查 Windows 和 Docker Desktop

- 確認 Windows 版本符合 Docker Desktop 當時的系統要求,BIOS/UEFI 已啟用硬件虛擬化。
- 按 Docker 官方 Windows 安裝指引啟用 WSL 2 或合適後端,完成安裝後重新登入或重啟。
- 啟動 Docker Desktop,等候狀態顯示 engine running。
- 開啟 Windows PowerShell,輸入
docker version;應同時看到 Client 和 Server,而不是只能看到 client。 - 預留足夠磁碟空間,並確保公司代理、防火牆或 VPN 沒有阻止 Docker registry。
Docker Desktop 可在介面內查看 Containers、Images 和 Volumes。本文仍以 PowerShell 指令為準,因為指令較容易記錄、重複和審核。
三、下載時要選對平台版本
Windows 一般選 Docker Desktop for Windows。Mac 下載頁會另分 Apple Silicon 和 Intel;不要把 Mac 安裝程式或 Linux 套件套用到 Windows。安裝完成後,先用 docker run --rm hello-world 做最小測試;成功看到說明訊息,才進入 n8n。
若 hello-world 也不能運行,問題仍在 Docker Desktop、虛擬化、WSL、網絡或權限層,不應急着修改 n8n 指令。
四、先看懂啟動流程:終端、持久化、連接埠
一個可重建的 n8n 本機環境至少包含:
- 映像:
docker.n8n.io/n8nio/n8n,提供應用程式。 - 容器:正在運行的 n8n process,可停止和重建。
- named volume:
n8n_data,保存/home/node/.n8n。 - 連接埠:主機
127.0.0.1:5678對應容器5678。 - 環境變數:時區、設定檔權限和 task runners。
重要更新:不要直接照抄畫面中的舊式簡短指令。現行 n8n 官方 Docker 指引會建立
n8n_datavolume,設定TZ和GENERIC_TIMEZONE,啟用N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS及N8N_RUNNERS_ENABLED。本文另外把端口綁在127.0.0.1,令這個學習環境只限本機。
五、Windows PowerShell:建立 volume 並啟動 n8n
步驟 1:建立 named volume
docker volume create n8n_data
docker volume inspect n8n_data
volume 的內容獨立於容器。停止或移除 n8n 容器,不會自動刪除這個 named volume;但執行 docker volume rm 或不加判斷地清理 volumes 仍會刪除資料。
步驟 2:貼上 PowerShell 多行指令
docker run -it --rm `
--name n8n `
-p 127.0.0.1:5678:5678 `
-e GENERIC_TIMEZONE="Asia/Hong_Kong" `
-e TZ="Asia/Hong_Kong" `
-e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true `
-e N8N_RUNNERS_ENABLED=true `
-v n8n_data:/home/node/.n8n `
docker.n8n.io/n8nio/n8n
PowerShell 的續行符號是行尾反引號 `。反引號後面不要加空格或註解;若複製後出現逐行執行或「缺少運算式」,請改用以下單行版本:
docker run -it --rm --name n8n -p 127.0.0.1:5678:5678 -e GENERIC_TIMEZONE="Asia/Hong_Kong" -e TZ="Asia/Hong_Kong" -e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true -e N8N_RUNNERS_ENABLED=true -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n
六、逐個參數解釋:不要只把長指令當咒語
| 參數 | 作用 | 要留意 |
|---|---|---|
-it --rm | 前景互動運行;停止後移除容器物件 | volume 不會因此刪除;下次要重跑指令 |
--name n8n | 給容器固定名稱 | 方便 logs、inspect、stop;同名舊容器會造成衝突 |
-p 127.0.0.1:5678:5678 | 本機 5678 對應容器 5678 | 只綁 IPv4 loopback;不應視為正式互聯網部署 |
GENERIC_TIMEZONE | 控制 Schedule Trigger 等排程時區 | 香港使用 Asia/Hong_Kong |
TZ | 控制容器系統時間及指令所見時間 | 與 GENERIC_TIMEZONE 保持一致 |
N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true | 要求 n8n 設定檔使用較安全權限 | 是現行官方 Docker 範例的一部分 |
N8N_RUNNERS_ENABLED=true | 啟用執行 Code node 工作的 task runners | 單容器預設為 internal;正式環境應評估 external mode |
-v n8n_data:/home/node/.n8n | 保存資料庫、憑證相關資料和 instance 設定 | 備份時要備份整個 volume |
docker.n8n.io/n8nio/n8n | n8n 官方容器映像 | 正式環境宜記錄或鎖定經測試版本 |
為甚麼同時需要兩個時區變數? TZ 影響容器內的系統時間;GENERIC_TIMEZONE 影響 n8n 的排程節點。只設其中一個,可能出現介面、日誌和實際觸發時間不一致。
task runners 是否等於完整 sandbox? 不是。啟用後,Code node 工作交由 runner 執行;這個單容器基線使用 internal mode。n8n 文件亦提供 external mode、認證 token、並行和 timeout 等設定,較高風險或多人正式環境要另行 harden,而不是把 N8N_RUNNERS_INSECURE_MODE 打開。
七、驗證容器真的運行,而不是只看瀏覽器
另開一個 PowerShell 視窗,依次檢查:
docker ps --filter "name=n8n"
docker port n8n
docker logs --tail 100 n8n
docker ps應有名為 n8n 的 running container。docker port n8n應顯示主機的127.0.0.1:5678映射。- logs 不應持續重啟、報 database locked、permission denied 或 migration failure。
- 第一次啟動要下載映像和建立資料,需時可能比重啟長。
Docker Desktop 的綠點很方便,但部署紀錄應同時保存實際指令、映像版本、volume 名稱和驗證結果。
八、開啟 localhost,安全建立擁有者帳戶
http://localhost:5678,到達未填寫的擁有者帳戶表格。- 在同一部 Windows 電腦開啟
http://localhost:5678。 - 建立 instance owner 帳戶;使用獨立、長而隨機的密碼,不要重用公司電郵密碼。
- 不要在教學錄影、截圖、工單或群組訊息展示真實電郵、姓名、密碼、自動填寫清單或 API key。
- 登入後先建立一個 Manual Trigger → Edit Fields 的無敏感資料測試 workflow。
- 執行一次、重新整理頁面、停止 n8n、再以同一指令啟動;確認帳戶和 workflow 仍存在,才算持久化測試通過。
如果停止後所有設定消失,先檢查新容器是否仍掛載 n8n_data:/home/node/.n8n;不要在未備份前反覆建立新的 volumes。
九、「只限本機」的真正意思:webhook 和排程限制
Docker 若只寫 -p 5678:5678,通常會把連接埠發布到主機所有網絡介面。Docker 官方明確提醒,公開 port 預設可能讓外部網絡存取;本文使用 127.0.0.1:5678:5678,只讓 Docker 主機打開。
- 手動 workflow:可以在本機正常建立和執行。
- Schedule Trigger:只要電腦、Docker Desktop 和 n8n 一直運行便可;睡眠或關機期間不會神奇補回所有觸發。
- Polling:視乎節點,可由 n8n 主動連外。
- 外部 webhook:第三方通常不能連入 localhost。
- OAuth callback:部分供應商不接受 localhost,亦可能需要正式 HTTPS callback URL。
需要讓互聯網或同事存取時,不要只把 IP 改成
0.0.0.0。應建立正式網域、反向代理、TLS、正確的 base URL/webhook URL、防火牆、登入與權限、秘密管理、更新、監控和備份。n8n 官方建議以反向代理處理 TLS。
十、停止、重啟和改成背景運行
使用本文的 -it --rm 基線時,在原 PowerShell 按 Ctrl+C 會停止 n8n,容器物件隨後移除;重新貼上同一條 docker run 指令,就會用同一個 volume 啟動。
如果只為本機長時間測試,可把指令開頭的 -it --rm 改成 -d --restart unless-stopped。這是操作模式調整,不是把環境變成 production:
docker stop n8n
docker start n8n
docker logs -f n8n
改參數或更新映像時,舊容器不能原地修改完整啟動設定;做法是先備份、停止、移除容器,再以相同 volume 和新參數重建。移除容器時不要把 n8n_data 一併刪除。
十一、更新 n8n:先知道版本、再備份、最後重建
- 在 n8n release notes 和 Docker 安裝文件確認目標版本、breaking changes 和相容要求。
- 記錄目前映像:
docker inspect n8n --format "{{.Config.Image}}"。 - 完整備份
n8n_data,並測試可以還原到另一個 volume。 - 停止並移除舊容器;named volume 保留。
- 拉取穩定版或指定版本:
docker pull docker.n8n.io/n8nio/n8n。 - 以原本的時區、權限、runner、port 和 volume 參數重建。
- 檢查 logs、登入、憑證、手動 workflow、排程和 webhook。
正式環境宜使用明確版本 tag 並經過 staging 測試;「永遠拉最新」會把更新時間和風險交給未知變化。資料庫完成 migration 後,單純改回舊 image 不一定安全,真正 rollback 通常需要可驗證的更新前備份。
十二、備份 named volume,並做一次還原演習
只匯出 workflow JSON 不足以還原完整 instance。/home/node/.n8n 可能包含 SQLite 資料庫、credentials 相關資料、encryption key 和其他設定。以下 PowerShell 範例先停止寫入,再把 volume 打包到目前資料夾:
docker stop n8n
docker run --rm `
-v n8n_data:/data:ro `
-v "${PWD}:/backup" `
alpine `
sh -c "tar czf /backup/n8n-data-backup.tar.gz -C /data ."
若你使用前景 --rm 模式,先在原終端按 Ctrl+C。備份檔應移到另一個受保護位置,設定保留期和存取權限;只留在同一部電腦、同一顆磁碟不算災難復原。
還原到新 volume 測試,不要直接覆蓋原本資料
docker volume create n8n_restore_test
docker run --rm `
-v n8n_restore_test:/data `
-v "${PWD}:/backup:ro" `
alpine `
sh -c "tar xzf /backup/n8n-data-backup.tar.gz -C /data"
然後以另一個容器名稱、另一個主機 port 和 n8n_restore_test:/home/node/.n8n 啟動,確認可以登入、打開 workflow 和解密憑證。測試完成後才決定保留或刪除測試 volume。每次更新前備份但從不還原測試,風險仍然很高。
十三、正式使用前的安全清單
- 本機學習保持
127.0.0.1綁定;公開服務使用 TLS 反向代理和防火牆。 - 擁有者帳戶使用獨立強密碼,按可用功能啟用 2FA,避免共用管理員帳戶。
- API key、OAuth secret 和資料庫密碼不要寫入 workflow 名稱、截圖、PowerShell history 或公開 compose 檔。
- 只安裝受信任、經審查的 community nodes;按需要封鎖 Execute Command、Read/Write Files 等高風險節點。
- 限制 workflow 會讀取、傳送和保留哪些個人或公司資料;設定 execution data 保留和刪除政策。
- 保留
N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true,不要為消除警告而關閉保護。 - 保留 task runners 的安全預設;多人或不受信任 code 要研究 external mode 和 runner hardening。
- 定期執行 n8n security audit,檢查未使用 credentials、危險 nodes、未受保護 webhooks 和過時版本。
- 備份 volume、部署指令、映像版本和外部秘密;加密備份並測試還原。
十四、常見問題快速排查
| 症狀 | 先檢查 | 常見處理 |
|---|---|---|
| Cannot connect to Docker daemon | Docker Desktop 是否 engine running | 啟動 Docker Desktop;重試 docker version |
| port is already allocated | 5678 是否被其他 process/container 使用 | 停用衝突服務,或改成 127.0.0.1:5679:5678 |
| container name already in use | docker ps -a --filter "name=n8n" | 確認舊容器資料已在 volume,再停止/移除舊容器 |
| 瀏覽器無法開啟 | docker ps、docker logs n8n | 等 migration 完成;確認網址和 port 映射 |
| 排程差八小時 | TZ 和 GENERIC_TIMEZONE | 兩者都設為 Asia/Hong_Kong 後重建容器 |
| 重啟後資料消失 | Mounts 是否有 n8n_data | 用同一 volume 重建;不要建立另一個空 volume |
| PowerShell 多行報錯 | 反引號後是否有空格 | 使用本文單行版本 |
| 外部 webhook 收不到 | 服務是否仍是 localhost | 改用經安全設計的公開 HTTPS 部署,而非直接開 port |
到這裏,你已不只是「把 n8n 跑起來」,而是建立了一個有持久化資料、正確香港時區、基本安全邊界、可更新和可還原的 Windows 學習環境。下一步可先做一個完全不含真實資料的 workflow,練習 Manual Trigger、Edit Fields、If 和 HTTP Request;等你能解釋每項資料會去哪裏,再接入正式帳戶和業務系統。
資料來源與引用
我們附上第一手及官方來源,方便你逐一核實。
- 1.Docker installation for n8n — n8n Docs
- 2.Task runner environment variables — n8n Docs
- 3.Update self-hosted n8n — n8n Docs
- 4.Security audit — n8n Docs
- 5.Set up SSL — n8n Docs
- 6.Install Docker Desktop on Windows — Docker Docs
- 7.Volumes — Docker Docs
- 8.Port publishing and mapping — Docker Docs
- 9.Back up and restore Docker Desktop data — Docker Docs
常見問題
本地部署 n8n 是否完全免費?
在自己的電腦運行可避免 n8n Cloud 訂閱費,但仍有電腦、電力、維護、備份及第三方 API 成本;可使用範圍亦要遵守 n8n 當時的授權條款。正式業務系統還要計算監控、網絡、安全和故障恢復成本。
為甚麼本文不用畫面中的簡短 Docker 指令?
簡短指令可示範基本概念,但現行 n8n 官方 Docker 指引加入 named volume、時區、設定檔權限和 task runners。本文亦把主機連接埠收窄至 127.0.0.1,較適合只在自己的 Windows 電腦學習。
named volume 和 Windows 資料夾 bind mount 有甚麼分別?
named volume 由 Docker 管理,不依賴 D 槽或某個使用者資料夾的固定路徑,跨電腦指令較一致;bind mount 讓你直接在 Windows 檔案系統存取內容,但路徑、共享權限和 Linux 容器檔案權限較容易出錯。兩者都要另做備份。
關閉 PowerShell 後 n8n 為甚麼停止?
本文的官方基線用 -it --rm,容器連着目前終端;按 Ctrl+C 或關閉終端會停止並移除容器物件,但 named volume 仍在。若要背景運行,可改用 -d 並移除 --rm,再配合明確的停止、更新和重建流程。
同一個 Wi-Fi 的其他電腦可否開啟這個 n8n?
本文用 127.0.0.1:5678:5678,設計上只讓 Docker 主機存取。不要為了方便直接改成對所有介面公開;多人或遠端使用應以正式網域、反向代理、TLS、防火牆、登入控制、備份和監控重新設計。
localhost 可以接收 Stripe、GitHub 或其他外部 webhook 嗎?
通常不可以,因為第三方服務無法連入你的 localhost。臨時 tunnel 會把服務帶到互聯網,必須當作公開服務處理;正式 webhook 應使用受保護的可達網域、HTTPS 和正確 WEBHOOK_URL。
更新或重建容器會否刪除 workflow?
只要新容器重新掛載同一個 n8n_data volume,資料通常會保留;但錯誤刪除 volume、資料庫遷移、磁碟故障或不完整備份仍可造成損失。更新前要備份整個 volume,並實際測試還原。
可以把這個方法直接用作公司正式系統嗎?
不建議原樣照搬。這是單機、localhost、SQLite 的學習基線。正式環境要評估 PostgreSQL、反向代理與 TLS、固定版本、秘密管理、外置 task runners、備份還原、可觀測性、更新窗口、權限和事故應變。
本文遵循我們的 編輯準則.

關於作者
HK Learn AI 編輯部
HK Learn AI 編輯部負責研究、查證同編寫每一篇內容,並引用官方及第一手來源。
此主題相關文章

2026 還值得學 n8n 嗎?自動化工具定位、適用場景與 Inbox Triage 工作流
n8n 沒有被 AI Agent 取代,但亦不應成為每個任務的預設答案。本文以 2026 年產品、價格和授權資料,拆解何時用固定 workflow、何時加入模型、何時改用程式;再逐步重建 Gmail → 資料整理 → Sheets 查價 → AI 草稿 → 人工批准 → 回覆的 inbox triage 流程,補上資料契約、冪等、監控、安全與驗收清單。

n8n AI 意圖分類教學:Structured Output Parser 與 Switch 語意路由
由 Chat Trigger、Basic LLM Chain、OpenAI Chat Model、Structured Output Parser、Switch、Merge 到 HTML 結果頁,逐步建立可測試的「問題/要求/抱怨」分類器。本文補上 JSON Schema、fallback、注入防護、成本、錯誤處理、評估集與人工覆核,並附 5 段已去識別預覽。

AI Agent 香港中小企指南:工作流程、自動化、MCP、風險點樣做?
AI Agent 不只是會聊天的 ChatGPT,而是可以按指令、使用工具、讀取資料、執行工作和等待人手審批的流程系統。本文教香港中小企如何選場景、設計 agent 架構、連接工具、設定權限、加入人手審批、做測試評估和保護客戶資料。