🔒

一键部署 n8n

👤 沧州小伙 📦 v1.0.0 ⭐ 4.5 ⬇️ 190 下载
🔒 IT运维与安全 免费

📖 技能介绍


name: deploy-n8n slug: deploy-n8n version: 1.0.0 displayName: "一键部署 n8n" description: "一键本地部署 n8n 工作流自动化平台并创建桌面启动快捷方式。This skill should be used when the user asks to install, deploy, set up, or run n8n locally on Windows. Covers npm-based installation with all known pitfalls pre-solved including zod version conflict and missing sqlite3, background service startup, and desktop shortcut creation." summary: "一键本地部署 n8n 工作流自动化平台,预解 zod 冲突与 sqlite3 缺失,自动生成桌面启动脚本。" triggers: - 部署n8n - 安装n8n - 启动n8n - 运行n8n - 本地部署n8n - n8n desktop - install n8n - deploy n8n - run n8n locally agent_created: true


deploy-n8n — 一键本地部署 n8n

用途

在 Windows 上本地部署 n8n 工作流自动化平台,包含:npm 安装、依赖冲突预处理、后台服务启动、桌面快捷方式生成。本技能已规避 n8n v2.x 在 Windows npm 安装时的所有已知坑点。

何时使用

  • 用户要求安装、部署、运行 n8n
  • 用户提到 "n8n"、"工作流自动化"、"workflow automation" 并希望本地使用
  • 用户想在桌面放一个 n8n 启动图标

    小葱技能7w4.net持续更新中。

前置条件

  • Node.js >= 20(推荐 v22 LTS)
  • npm >= 10
  • 约 1.5GB 磁盘空间(n8n 依赖较多)
  • 网络可访问 npm registry

标准部署流程(严格按顺序执行)

阶段 1:创建项目目录与 package.json

在用户期望的安装位置(默认当前工作目录下的 n8n-app/)创建:

mkdir -p n8n-app
cd n8n-app
npm init -y

阶段 2:写入「坑点已规避」的 package.json

关键:必须预先锁定 zod 版本为 3.25.67,否则 n8n v2.x 会因 zod 3.x/4.x 实例冲突而启动失败。

用 Write 工具创建 n8n-app/package.json,内容:

{
  "name": "n8n-app",
  "version": "1.0.0",
  "private": true,
  "dependencies": {
    "n8n": "^2.28.5",
    "sqlite3": "^5.1.7",
    "zod": "3.25.67"
  }
}

说明: - zod: 3.25.67(精确版本,不带 ^):n8n 的 @n8n/api-types 和 n8n-workflow 内部依赖 zod 3.25.67。若根目录装了 zod 4.x,会导致 discriminatedUnion('__type', ...) 抛出 "A discriminator value for key __type could not be extracted" 错误。锁定 3.25.67 可让所有子包共用根目录的同一个 zod 实例。 - sqlite3:n8n 默认使用 SQLite 作为数据库,但其 npm 包未把 sqlite3 列为自动安装的依赖,需手动加入。

阶段 3:安装依赖

cd n8n-app
npm install --no-audit --no-fund

此步耗时较长(n8n 有 2000+ 依赖,约 15-25 分钟)。使用 run_in_background: true 后台执行,完成后会自动通知。

阶段 4:清理残留的嵌套 zod 副本(保险措施)

即使 package.json 锁定了版本,npm 仍可能在某些子包的 node_modules 下放置 zod 副本。安装完成后执行:

cd n8n-app
find node_modules -maxdepth 5 -name "zod" -type d -path "*/node_modules/zod" -not -path "node_modules/zod" | while read d; do rm -rf "$d"; done

然后用以下命令验证 zod 已统一:

node -e "try { require('@n8n/api-types'); console.log('zod OK'); } catch(e) { console.error('FAIL:', e.message); }"

若输出 zod OK 则继续;若报 discriminator 错误,再次清理嵌套副本。

阶段 5:创建数据目录

mkdir -p ../n8n-data

n8n 的数据库、配置、加密密钥都存放在此目录(通过 N8N_USER_FOLDER 环境变量指定)。

阶段 6:创建桌面启动脚本

用 Write 工具在用户桌面创建 启动n8n.bat(路径:C:\Users\<用户名>\Desktop\启动n8n.bat)。模板见 assets/start-n8n.txt(存储为 .txt 以规避上传平台对可执行脚本的限制),使用时复制内容并保存为 .bat 文件。需替换以下占位符:

  • {{N8N_APP_DIR}} — n8n-app 的绝对路径
  • {{N8N_DATA_DIR}} — n8n-data 的绝对路径

脚本功能:双击即启动 n8n 服务,自动打开浏览器访问 http://localhost:5678,关闭窗口即停止服务。

注意:由于沙箱安全限制无法创建 .lnk 快捷方式,.bat 启动脚本是等效替代方案。如需 .lnk,可指导用户右键 .bat → 发送到 → 桌面快捷方式。

阶段 7:启动 n8n 并验证

后台启动服务:

export N8N_USER_FOLDER=<n8n-data 绝对路径>
cd <n8n-app 绝对路径>
node node_modules/n8n/bin/n8n start

使用 run_in_background: true。等待 30-40 秒后验证:

curl -s -o /dev/null -w "%{http_code}" http://localhost:5678

返回 200 表示启动成功。首次启动会执行约 100+ 个数据库迁移,日志中可见 "Editor is now accessible via: http://localhost:5678"。

阶段 8:打开浏览器

使用 present_files 工具呈现 http://localhost:5678,用户首次访问需注册管理员账号。

常见错误速查表

症状 原因 解决
discriminator value for key __type could not be extracted zod 版本冲突(3.x vs 4.x) package.json 锁定 zod: 3.25.67,删除所有嵌套 zod 副本
Failed to load module "breaking-changes" 上述 zod 冲突的连锁反应 同上
SQLite package has not been found installed 缺少 sqlite3 依赖 package.json 加入 sqlite3 依赖
Cannot find module '../package.json' n8n 安装不完整 等待 npm install 完全结束再启动
端口 5678 无响应 服务还在迁移数据库 首次启动需 30-60 秒,耐心等待
MCP registry timeout 外部网络问题,非致命 忽略,不影响本地使用

资源引用

  • assets/start-n8n.txt — 桌面启动脚本模板(.txt 格式,使用时改名为 .bat)
  • references/known-issues.md — 详细的问题诊断与修复指南

卸载方法

# 停止 n8n 进程后删除两个目录即可
rm -rf <n8n-app 目录>
rm -rf <n8n-data 目录>
rm <桌面>/启动n8n.bat

🤖 AI 评测

质量不错!部署步骤清晰有序,常见安装问题都有预判和解决方案,基本能一次性部署成功。错误说明通俗易懂,对新手友好。缺点是文件比较单一,缺少使用示例或演示视频。

📊 多维度评分

适应性4.5
规范性4.4
有效性4.7
可靠性4.3
可信度4.8

📁 包含文件 (3 个)

📄 SKILL.md 6.1 KB
📄 assets/start-n8n.txt 567 B
📄 references/known-issues.md 3.2 KB