📌 目标
将运行在 Docker 容器中的 n8n 迁移到 Windows 本地 Node.js 环境,并保留原有的账户、数据、工作流信息。
一、前提条件
✅ 原有环境:
Docker Desktop 已安装,n8n 运行在容器中。
数据目录映射为:
C:\n8n\data
✅ 目标环境:
本地已安装 Node.js(推荐版本 >=18.17 <=22)
希望将 n8n 运行在
C:\node
目录下
二、迁移步骤
1. 卸载 Docker 版本(可选)
如果后续不再使用 Docker,可停止并移除容器:
# 查看运行中的容器
docker ps
# 停止并删除 n8n 容器
docker stop <container-id>
docker rm <container-id>
2. 安装 n8n(全局)
npm install -g n8n
说明:
npm
命令依赖于 Node.js,因此需确保 Node 环境安装无误。
3. 指定 n8n 使用原有数据目录
启动 n8n 时指定用户配置目录:
n8n --user-folder "C:\n8n\data"
或使用
.env
文件(放在C:\n8n\data
下):
N8N_USER_FOLDER=C:\n8n\data
N8N_RUNNERS_ENABLED=true
三、配置自动启动(可选)
✅ 方法一:使用 pm2
npm install -g pm2
pm2 start n8n --name n8n --env production -- --user-folder "C:\n8n\data"
pm2 save
pm2 startup # 拷贝并执行提示的命令
✅ 方法二:使用 nssm 注册为 Windows 服务
下载并安装
nssm
:https://nssm.cc/download执行:
nssm install n8n
设置:
Path
:C:\node\npm\n8n.cmd
(或where n8n
路径)Startup directory
:C:\n8n\data
添加环境变量:
N8N_RUNNERS_ENABLED=true
点击 Install,启动服务。
四、常见问题与处理方式
❓ 启动时重新进入注册页面
原因:数据目录未正确挂载或权限问题。
解决:
确保使用
--user-folder
指定了正确的数据目录确保
C:\n8n\data\.n8n\config
存在并有users.json
等文件
❓ bash 无法执行(Docker)
OCI runtime exec failed: exec: "bash": executable file not found
解决:使用 sh
而非 bash
docker exec -it n8n-n8n-1 sh
❓ Node.js 版本不兼容
Your Node.js version 18.14.2 is currently not supported by n8n.
解决:使用 nvm
切换 Node 版本:
nvm install 18.17.1
nvm use 18.17.1
❓ npm root -g 显示路径不存在
说明:某些系统下 npm root -g
的路径需要管理员权限访问。 建议:手动切换为自定义目录:
npm config set prefix "C:\node\npm"
并将该路径添加到系统环境变量 PATH
中。
五、附:运行方式对比
运行方式 | 说明 | 是否推荐 |
---|---|---|
Docker | 容器隔离,适合部署 | ✅生产推荐 |
Node + n8n | 本地开发调试方便 | ✅开发推荐 |
pm2 | 管理 Node 进程、可开机启动 | ✅推荐 |
nssm 服务 | 以 Windows 服务方式运行稳定 | ✅推荐 |
✅ 总结
迁移过程中,核心是保持 .n8n
数据目录不变,无论你是通过 Docker、Node 还是其它方式运行,n8n 都会使用该目录中的配置和数据库文件。因此,指定好 --user-folder
是关键所在。