
部署這類自動化工作流工具很多人的第一反應是直接裝個服務跑起來不就行了。從個人項目到小團隊工具N8N這類開源編排平臺用好了確實能省掉大量重復勞動但如果一上來就在宿主機裸裝后面升級、遷移、備份都會讓你頭疼。我踩過幾次坑之后現(xiàn)在所有涉及N8N的部署都一律走Docker尤其是跑在Ubuntu這種服務器系統(tǒng)上容器化帶來的收益比想象中大得多。這篇內(nèi)容從一個實際部署任務出發(fā)完整拆解在Ubuntu上用Docker部署N8N的選型邏輯、配置要點、完整步驟和常見坑適合準備自建工作流平臺的開發(fā)者、運維以及想把手動任務自動化的效率黨參考。不管你是第一次接觸容器化部署還是已經(jīng)跑過一些服務想搞清楚N8N的參數(shù)細節(jié)這里都給了可復現(xiàn)的操作路徑。1. 項目概述與方案選型1.1 N8N 到底是什么N8N是一個可視化的自動化工作流工具你可以通過拖拽節(jié)點的方式把不同的服務、API、數(shù)據(jù)庫操作串聯(lián)起來形成一個自動化流程。比如收到郵件后自動創(chuàng)建表格記錄定時抓取某個接口的數(shù)據(jù)寫入數(shù)據(jù)庫或者把多個系統(tǒng)間的數(shù)據(jù)搬移做成一條流水線。它最核心的價值在于編排——把零散的觸發(fā)器和動作組合成完整業(yè)務邏輯而且不用寫太多膠水代碼。N8N和同類工具的差異在于它可以自己托管數(shù)據(jù)掌握在自己手里插件生態(tài)和節(jié)點類型非常豐富社區(qū)模板也很多。再加上它對自托管部署的友好程度很多個人開發(fā)者和中小團隊把它當作內(nèi)部的自動化中樞。1.2 為什么選擇 Docker 部署而不是直接裸裝裸裝N8N的思路是直接在Ubuntu上裝Node.js環(huán)境然后下載安裝包跑起來。表面上看似乎更直接但實際操作中會遇到幾個讓我很難受的痛點第一環(huán)境隔離。Node.js的版本、全局依賴、系統(tǒng)庫互相之間很容易沖突。我曾在同一臺服務器上跑過其他Node應用N8N依賴的某些原生模塊編譯完重啟系統(tǒng)后直接加載失敗排查了半天才發(fā)現(xiàn)是系統(tǒng)庫版本被其他包改掉了。第二升級回滾麻煩。N8N更新頻率不算低裸裝升級需要手動停服務、備份數(shù)據(jù)、替換文件、再啟動萬一新版本有問題回滾步驟相當繁瑣。用Docker鏡像一個pull加restart就完成升級回滾也只是一個標簽切換的事。第三遷移成本。容器化之后數(shù)據(jù)和配置都掛載在卷里整個實例可以原封不動搬到另一臺服務器。裸裝的話環(huán)境差異、依賴兼容、路徑配置都要重新折騰一遍。第四進程管理。Docker自帶了restart策略容器掛掉自動拉起配合系統(tǒng)的開機自啟基本能做到服務長期在線。裸裝的進程管理還要額外配systemd多一層維護量。從長期維護角度看Docker在可重復性、可移植性、可管理性上全面占優(yōu)代價無非是多理解幾個容器概念。對維護過任何容器化服務的人來說這個選擇幾乎沒有懸念。1.3 選型時的理論依據(jù)與實際場景匹配Docker部署N8N還有一個隱形的優(yōu)勢數(shù)據(jù)分離。N8N的配置數(shù)據(jù)工作流、憑據(jù)、用戶信息默認存放在/home/node/.n8n目錄下將目錄掛載為數(shù)據(jù)卷后容器的文件層就完全是無狀態(tài)的。這意味著我可以隨時刪掉容器重建只要數(shù)據(jù)卷還在所有工作流和配置都安然無恙。生產(chǎn)場景里這種計算與存儲分離的思路極其重要。我自己經(jīng)歷過一次服務器磁盤被日志占滿容器啟動失敗但數(shù)據(jù)卷完好無損換個磁盤掛進去直接恢復。如果是裸裝這種故障恢復通常要費很大勁。另外容器還順帶解決了權(quán)限問題。N8N官方鏡像內(nèi)部以node用戶運行UID固定宿主機的數(shù)據(jù)目錄只要權(quán)限對就不會有寫入失敗的問題。這些在裸裝時都要自己處理容器化后基本開箱即用。2. 核心細節(jié)解析與前置準備2.1 一個 N8N 容器是怎么工作的先理解N8N鏡像的運行邏輯。官方鏡像以Node.js為基礎啟動時默認執(zhí)行n8n命令讀取環(huán)境變量來加載配置然后啟動Web服務默認監(jiān)聽容器內(nèi)部的5678端口。前端界面通過瀏覽器訪問后端通過API執(zhí)行工作流。N8N在運行時需要處理的幾類數(shù)據(jù)工作流定義和用戶賬戶存儲在SQLite或PostgreSQL等數(shù)據(jù)庫里加密過的憑據(jù)信息也存儲在數(shù)據(jù)庫但解密依賴一個密鑰后面細說執(zhí)行歷史記錄屬于數(shù)據(jù)量增長最快的部分靜態(tài)資源文件由鏡像內(nèi)部管理不需要掛載對容器生命周期而言只有數(shù)據(jù)庫和憑據(jù)數(shù)據(jù)需要被持久化因此掛載/home/node/.n8n就是關鍵。默認情況下N8N使用SQLite數(shù)據(jù)庫所有數(shù)據(jù)就在這個目錄下一個名為database.sqlite的文件。2.2 環(huán)境變量配置詳解環(huán)境變量是Docker部署N8N最重要的配置入口每一個都有它存在的意義。整理幾個我實際部署中必須顯式設置的變量環(huán)境變量作用不設置的后果GENERIC_TIMEZONE指定N8N運行時區(qū)的標識符定時觸發(fā)節(jié)點會按默認UTC執(zhí)行時間錯亂TZ容器內(nèi)部系統(tǒng)時區(qū)日志時間、文件時間與本地不一致N8N_HOST對外訪問的域名或IP端口執(zhí)行/調(diào)用Webhook時可能報403或地址錯誤N8N_PROTOCOL訪問協(xié)議 http 或 httpsWebhook回調(diào)地址協(xié)議錯誤N8N_PORTN8N服務監(jiān)聽端口默認5678端口映射不一致時外部訪問失敗N8N_ENCRYPTION_KEY憑據(jù)加解密密鑰支持32字符密鑰如果不顯式指定容器重建后密鑰變動歷史憑據(jù)解密失敗N8N_BASIC_AUTH_ACTIVE基礎認證開關未設置時無鑒權(quán)N8N會引導初始化管理員用戶N8N_BASIC_AUTH_USER基礎認證用戶名開啟后無認證就裸奔暴露重點說N8N_ENCRYPTION_KEY。N8N會把所有連接服務的密碼、Token做加密存儲密鑰如果發(fā)生變化已保存的憑據(jù)全部無法解密工作流會大量報錯。自己機器上重新pull一個新鏡像沒問題但如果你在開發(fā)環(huán)境和生產(chǎn)環(huán)境之間復制部署或者容器被刪除重建密鑰一旦變了就麻煩。所以生產(chǎn)環(huán)境務必備一份這個密鑰。2.3 數(shù)據(jù)持久化方案的考量N8N默認的持久化方案是掛載一個命名卷到/home/node/.n8n優(yōu)點是省心Docker自己管理目錄位置不用關心路徑。缺點是你不知道數(shù)據(jù)具體在宿主機哪個位置備份時要通過docker cp或直接操作卷目錄稍微繞一點。我推薦的方式是顯式掛載一個宿主機目錄比如/opt/n8n/data:/home/node/.n8n。這么做的好處非常直接數(shù)據(jù)和容器徹底分離刪除容器不影響數(shù)據(jù)備份時直接打包宿主機目錄容器升級前后可以隨時看到數(shù)據(jù)目錄里的變化排查問題時可以直接進目錄檢查SQLite文件大小、數(shù)據(jù)庫狀態(tài)這個方式唯一需要注意的是目錄權(quán)限。啟動容器前先把宿主目錄的屬主改成UID 1000因為容器內(nèi)的node用戶UID是1000sudo mkdir -p /opt/n8n/data sudo chown -R 1000:1000 /opt/n8n/data如果忘記這一步容器啟動時可能因為無法寫入數(shù)據(jù)目錄而直接退出。這個坑在第一次部署時非常容易踩。2.4 網(wǎng)絡與端口規(guī)劃N8N默認監(jiān)聽5678端口外部訪問時有兩種方式一是直接映射到宿主機端口-p 5678:5678適合內(nèi)網(wǎng)使用二是通過反向代理暴露到域名這時N8N容器可以不直接映射端口到宿主機由Nginx或Caddy代理到容器IP。我個人的建議是即便有反向代理也把端口映射出來方便調(diào)試同時用防火墻限制來源IP。比如只允許內(nèi)網(wǎng)訪問5678域名流量統(tǒng)一走443端口這樣既不影響調(diào)試又能減少暴露面積。3. 實操過程與核心環(huán)節(jié)實現(xiàn)3.1 安裝 Docker 與 Docker Compose在Ubuntu上安裝Docker最穩(wěn)妥的方式是使用官方源不要用系統(tǒng)自帶的老版本。先更新索引然后安裝依賴包sudo apt update sudo apt install apt-transport-https ca-certificates curl software-properties-common -y curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository deb [archamd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y安裝完成后執(zhí)行docker --version和docker compose version驗證。這里我特意裝了docker-compose-plugin它提供的是docker compose帶空格子命令相比老版本單獨的docker-compose二進制語法完全兼容而且會隨Docker一起升級。別忘了把當前用戶加入docker組否則每次都加sudo會非常煩躁sudo usermod -aG docker $USER newgrp docker3.2 編寫 docker-compose.yml有了docker compose管理N8N就變成維護一個YAML文件。我最常用的生產(chǎn)模板長這樣services: n8n: image: n8nio/n8n:latest container_name: n8n restart: unless-stopped ports: - 5678:5678 environment: - GENERIC_TIMEZONEAsia/Shanghai - TZAsia/Shanghai - N8N_HOSTyour-domain.com - N8N_PROTOCOLhttps - N8N_PORT5678 - N8N_ENCRYPTION_KEY請?zhí)鎿Q為一個32位的隨機字符串 - N8N_BASIC_AUTH_ACTIVEtrue - N8N_BASIC_AUTH_USERadmin - N8N_BASIC_AUTH_PASSWORD請?zhí)鎿Q為強密碼 volumes: - /opt/n8n/data:/home/node/.n8n networks: - n8n_network networks: n8n_network: driver: bridge說明幾個參數(shù)的選擇原因restart: unless-stopped使容器在異常退出或被守護進程回收后自動重新拉起這是長期穩(wěn)定運行的基礎。N8N_BASIC_AUTH_ACTIVEtrue是在沒有初始化用戶的情況下啟用HTTP基礎認證避免服務裸奔。如果你計劃初始化管理員賬號可以去掉這幾個變量讓N8N的引導流程接管。N8N_ENCRYPTION_KEY要生成一個至少32字符的隨機串可以用openssl rand -hex 16生成。如果N8N要對接外部PostgreSQL而不是默認的SQLitecompose文件就要增加一個數(shù)據(jù)庫服務。這點我放在后面的進階配置里細講。3.3 啟動容器并初始化配置文件寫好后在目錄下執(zhí)行docker compose up -d這條命令會拉取鏡像、創(chuàng)建網(wǎng)絡、啟動容器。等待一會兒后檢查容器狀態(tài)docker ps docker logs -f n8n日志中出現(xiàn)Editor is now accessible via: http://localhost:5678之類的信息說明N8N已經(jīng)啟動成功。瀏覽器訪問http://服務器IP:5678首次進入會引導創(chuàng)建一個管理員賬號。這個賬號和之后用基礎認證的賬號是兩套體系N8N內(nèi)部有自己的用戶管理。如果頁面一直轉(zhuǎn)圈或者報錯最常見的原因就是N8N_HOST沒有設置正確。對于純內(nèi)網(wǎng)訪問至少要把N8N_HOST設成服務器IP加端口例如192.168.1.10:5678這樣各個節(jié)點執(zhí)行回調(diào)時才能正確拼出地址。3.4 驗證工作流是否能正常執(zhí)行只看到登錄頁還不算部署完成。N8N能不能真正干活關鍵要看工作流能否完整執(zhí)行。登錄后創(chuàng)建一個最簡單的測試流程加一個Manual Trigger節(jié)點再接一個Set節(jié)點然后執(zhí)行。如果執(zhí)行成功說明核心鏈路沒問題。接著再驗證Webhook場景加一個Webhook節(jié)點填上路徑保存后把生成的Webhook URL放到瀏覽器里訪問看N8N是否收到請求。這一步非常關鍵因為Webhook回調(diào)地址依賴N8N_HOST配置如果當初沒設置這里十有八九會出問題。3.5 反向代理和HTTPS配置生產(chǎn)環(huán)境里通過IP加端口訪問既不美觀也不安全。配置一個二級域名用Nginx做反向代理是更合理的方案。Nginx的關鍵配置片段server { listen 443 ssl; server_name n8n.your-domain.com; location / { proxy_pass http://127.0.0.1:5678; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade; proxy_buffering off; } }N8N使用WebSocket來推送實時執(zhí)行日志和前端更新所以Upgrade和Connection這兩個header必須轉(zhuǎn)發(fā)否則前端遲遲看不到節(jié)點執(zhí)行的進度。另外proxy_buffering off用于減少執(zhí)行結(jié)果回傳的緩沖延遲親測對長時間運行的工作流體驗提升明顯。對應修改docker-compose里的環(huán)境變量- N8N_HOSTn8n.your-domain.com - N8N_PROTOCOLhttps修改后重啟容器docker compose restart n8n。3.6 使用 PostgreSQL 替代 SQLite默認SQLite適合輕量使用但執(zhí)行歷史多、并發(fā)高的時候數(shù)據(jù)庫鎖會成為瓶頸。N8N官方推薦的生產(chǎn)配置是PostgreSQLdocker compose可以很容易地把數(shù)據(jù)庫也容器化。完整的compose文件如下services: n8n: image: n8nio/n8n:latest container_name: n8n restart: unless-stopped depends_on: - postgres ports: - 5678:5678 environment: - GENERIC_TIMEZONEAsia/Shanghai - TZAsia/Shanghai - N8N_HOSTyour-domain.com - N8N_PROTOCOLhttps - N8N_PORT5678 - DB_TYPEpostgresdb - DB_POSTGRESDB_HOSTpostgres - DB_POSTGRESDB_PORT5432 - DB_POSTGRESDB_DATABASEn8n - DB_POSTGRESDB_USERn8n - DB_POSTGRESDB_PASSWORD數(shù)據(jù)庫密碼 - N8N_ENCRYPTION_KEY請?zhí)鎿Q為32位隨機字符串 volumes: - /opt/n8n/data:/home/node/.n8n networks: - n8n_network postgres: image: postgres:15 container_name: n8n-postgres restart: unless-stopped environment: - POSTGRES_USERn8n - POSTGRES_PASSWORD數(shù)據(jù)庫密碼 - POSTGRES_DBn8n volumes: - /opt/n8n/postgres:/var/lib/postgresql/data networks: - n8n_network networks: n8n_network: driver: bridge從SQLite遷移到PostgreSQL最省事的方式是N8N在DB_TYPEpostgresdb配置下啟動時如果數(shù)據(jù)庫為空會自動從.n8n目錄中導入現(xiàn)有數(shù)據(jù)。如果不自動遷移可以導出工作流為JSON文件再導入。備份和恢復都方便很多。4. 常見問題與排查技巧實錄4.1 端口被占用排查啟動容器時報端口沖突通常提示port is already allocated。先用命令確認占用情況sudo lsof -i :5678找到占用進程后視情況停掉沖突服務或者修改compose里的宿主機映射端口。注意如果改了N8N容器的端口監(jiān)聽環(huán)境變量還得同步調(diào)整映射和N8N_PORT三處保持一致才不會混亂。4.2 容器啟動后立即退出這種情況九成是數(shù)據(jù)目錄權(quán)限問題。/opt/n8n/data目錄的屬主不是UID 1000容器內(nèi)node用戶無法寫入SQLite文件進程直接退出。解決方式sudo chown -R 1000:1000 /opt/n8n/data然后重啟容器。遇到這種情況不要盲目去改鏡像先看日志docker logs n8n日志里會明確寫出EACCES: permission denied之類的錯誤定位非??臁?.3 執(zhí)行工作流時遇到 403 或回調(diào)地址錯誤場景是這樣的工作流手動執(zhí)行正常但Webhook節(jié)點被外部調(diào)用時總報錯或者HTTP Request節(jié)點回調(diào)時指向了localhost:5678。原因基本就是N8N_HOST、N8N_PROTOCOL沒配置。N8N生成回調(diào)地址時會拼接這幾個變量而不是讀取請求頭。檢查compose里的對應值改好后重啟容器再把相關工作流重新保存一次回調(diào)地址才會刷新。4.4 憑據(jù)解密失敗如果容器重建后已保存的憑據(jù)全部失效核心原因必然是N8N_ENCRYPTION_KEY變掉了。官方鏡像在沒有顯式設置該變量時會自己生成一個新密鑰并持久化到.n8n目錄表面上看沒事。問題是有些部署場景下比如同時啟動多個實例、卷目錄讀寫權(quán)限變化、鏡像升級后邏輯改變密鑰沒落盤或讀取失敗憑據(jù)就解不開了。我在初始部署時就強制顯式設置這個變量哪怕內(nèi)網(wǎng)測試也設養(yǎng)成習慣就少一次災難。4.5 日志量過大占滿磁盤N8N默認會把每次執(zhí)行的數(shù)據(jù)都存到數(shù)據(jù)庫里長時間跑下來SQLite文件或者PostgreSQL數(shù)據(jù)體積增長很快。如果磁盤被占滿容器可能會進入不可用狀態(tài)。控制執(zhí)行數(shù)據(jù)存儲的常用環(huán)境變量環(huán)境變量推薦值效果EXECUTIONS_DATA_MAX_SIZE16mb單次執(zhí)行數(shù)據(jù)超過16MB就丟棄詳情EXECUTIONS_DATA_SAVE_ON_SUCCESSnone成功執(zhí)行不保存詳細數(shù)據(jù)EXECUTIONS_DATA_SAVE_ON_FAILUREall失敗執(zhí)行全部保留便于排查同時可以設置定時清理環(huán)境變量推薦值效果EXECUTIONS_DATA_PRUNEtrue啟用自動清理EXECUTIONS_DATA_MAX_AGE168保留最近168小時7天的執(zhí)行數(shù)據(jù)這套組合下來數(shù)據(jù)庫的增長速度會被限制在一個很健康的范圍。4.6 常見問題速查表現(xiàn)象可能原因排查命令/動作頁面一直轉(zhuǎn)圈登錄不了N8N_HOST未配置或配置錯誤檢查環(huán)境變量重啟后瀏覽器強刷容器啟動即退出數(shù)據(jù)目錄權(quán)限錯誤docker logs n8nchown UID 1000端口沖突宿主機端口被占用lsof -i :5678Webhook回調(diào)地址錯誤N8N_PROTOCOL/HOST設置不對修改后重啟并重新保存工作流工作流執(zhí)行超時執(zhí)行歷史數(shù)據(jù)過多配置自動清理重啟容器前端日志不實時刷新反代未轉(zhuǎn)發(fā)WebSocket檢查Upgrade/Connection頭憑據(jù)全部失效ENCRYPTION_KEY變更恢復原密鑰重建容器5. 生產(chǎn)環(huán)境優(yōu)化與持續(xù)維護5.1 備份與恢復方案備份N8N的核心思路是把兩個部分分別處理一是.n8n目錄SQLite數(shù)據(jù)庫和配置二是PostgreSQL數(shù)據(jù)庫如果用的話。SQLite場景下最穩(wěn)妥的備份方式是先停容器再打包目錄避免數(shù)據(jù)庫文件復制時處于寫入狀態(tài)docker stop n8n tar -czf n8n_backup_$(date %Y%m%d).tar.gz -C /opt/n8n data docker start n8n恢復則相反暫停容器、把備份解壓回/opt/n8n/data、保證文件屬主是1000、啟動容器。PostgreSQL場景下備份用官方工具更優(yōu)雅docker exec n8n-postgres pg_dump -U n8n n8n n8n_pg_backup.sql恢復時管道導入cat n8n_pg_backup.sql | docker exec -i n8n-postgres psql -U n8n n8n無論哪種方式我都建議把備份文件同步到另一臺機器或?qū)ο蟠鎯Σ灰央u蛋放在同一臺服務器的磁盤上。5.2 鏡像升級策略N8N迭代快新節(jié)點和Bug修復經(jīng)常發(fā)布。升級步驟非常簡單但順序很重要先備份數(shù)據(jù)按上面的方法編輯compose文件把鏡像標簽從latest改為你當前使用的具體版本比如1.x.x在升級前確認當前版本號執(zhí)行docker compose pull拉取新鏡像執(zhí)行docker compose up -d重建容器如果你之前一直用的是latest升級前務必要知道兩件事當前版本號和備份是否干凈。否則升級失敗回滾時會發(fā)現(xiàn)鏡像標簽已經(jīng)更新舊版本不好找回來。更穩(wěn)的做法升級前先docker tag n8nio/n8n:latest n8nio/n8n:backup-20240101哪怕新版本有問題也能快速切回。5.3 性能調(diào)優(yōu)建議N8N的并發(fā)執(zhí)行默認是串行處理的當工作流數(shù)量增多時可以通過設置環(huán)境變量來提升并發(fā)能力環(huán)境變量說明N8N_CONCURRENCY_PRODUCTION_LIMIT生產(chǎn)環(huán)境同時執(zhí)行的工作流數(shù)量上限N8N_CONCURRENCY_TEST_LIMIT測試環(huán)境并發(fā)上限N8N_EXECUTIONS_PROCESS執(zhí)行模式main為單進程內(nèi)執(zhí)行如果單機跑大量工作流建議把N8N_EXECUTIONS_PROCESS設為queue并配合Redis使用但這套架構(gòu)復雜度明顯上升適合真正有并發(fā)壓力的場景。我的經(jīng)驗是個人和小團隊在100個工作流以內(nèi)、并發(fā)不高的前提下默認模式已經(jīng)非常夠用不要為了看起來更專業(yè)而引入多余的中間件。5.4 安全加固的幾個關鍵動作跑了N8N之后它就是一個能觸達你多個業(yè)務系統(tǒng)的入口安全上不能只靠默認配置。我每次部署完都會做這幾件事修改服務監(jiān)聽地址。如果單機使用可以在compose端口映射里只綁定內(nèi)網(wǎng)地址127.0.0.1:5678:5678再由反向代理轉(zhuǎn)發(fā)避免5678端口直接暴露到公網(wǎng)。配置防火墻。Ubuntu的ufw如果開啟了注意放行443和80不要無腦放行5678。開啟N8N的認證。無論是管理員賬戶還是基礎認證總有一個要在服務暴露前配置好。定期更新鏡像和系統(tǒng)補丁。容器不等于安全沙箱鏡像里的基礎組件一樣會有漏洞。5.5 部署后的使用心得把這次部署過程中體會比較深的地方梳理成幾條算是給同樣在折騰容器的朋友一個參考第一環(huán)境變量是N8N部署的靈魂。很多問題看起來是工作流配置錯誤實際根源在環(huán)境變量。部署前花十分鐘把所有環(huán)境變量過一遍比出問題后再翻文檔省時間得多。第二數(shù)據(jù)目錄的權(quán)限問題早處理早省心。我在干凈的服務器上首次部署沒踩坑但在已有用戶的服務器上踩了好幾次幾乎都是因為忘了chown。第三日志不是越多越好。N8N的執(zhí)行日志在問題上很感人但長時間不清理會拖垮數(shù)據(jù)庫。把自動清理打開保留7到14天足夠定位業(yè)務問題。第四如果拿不準生產(chǎn)部署方案先在本地用同樣的compose文件跑一遍。容器的好處就是環(huán)境一致性本地能跑通的生產(chǎn)環(huán)境大概率也能。這也是Docker部署N8N相比裸裝最大的確定性來源。這個項目后續(xù)如果要擴展可以往隊列模式加Redis、接入SSO登錄、用Observability工具監(jiān)控執(zhí)行指標方向上都沒有什么阻礙。但基礎打牢了后面的每一步都會順很多。