还在把 n8n 当“玩具”?Node.js 开发者请止步
兄弟,如果你是 Node.js 开发者,还在用 Docker 跑 n8n,或者每次重启服务器都要手动敲一遍命令,那这篇文章就是为你准备的。
笔者在 N8N大学 经常被问到:“为什么我的 n8n 一断网就挂了?”或者“能不能直接在服务器上装,别搞那些镜像拉取了?”。其实,n8n 本质上就是个 Node.js 应用,直接用 npm 全局安装才是最符合开发者直觉的“原生”玩法。
今天,我们就来聊聊如何像管理后端服务一样,用 PM2 把 n8n 守护得死死的,让你的自动化流程 24 小时稳定运行。
准备工作:磨刀不误砍柴工
在动手之前,咱们先确认一下环境。既然是 Node.js 开发者,这些应该都是现成的,但为了保险起见,还是列一下:
- 一台 Linux 服务器:Ubuntu 或 CentOS 都行,建议 2G 内存以上(n8n 启动后还是有点吃资源的)。
- Node.js 环境:建议 v16 以上版本,v18 LTS 最佳。如果没有,先装上。
- PM2 进程管理器:这是今天的主角之一,负责“复活”你的 n8n。
核心实操:从安装到守护的三步走
这部分是硬核干货,建议直接复制命令,但理解每一步在做什么更重要。
第一步:全局安装 n8n (Global Install)
很多教程让你用 Docker,但对于开发者来说,直接 npm install -g 才是正道。这样你可以直接查看源码,甚至在 node_modules 里动手脚(虽然不推荐)。
npm install n8n -g
安装完后,你可以先手动跑一下试试:
n8n start
如果能看到 n8n 的启动界面,说明安装成功。但别急着用,直接用命令行跑,一旦你关闭 SSH 连接,服务就断了。这就是为什么要用 PM2。
第二步:安装并配置 PM2
如果你还没安装 PM2,先装上:
npm install pm2 -g
PM2 的强大之处在于它能守护进程。一旦 n8n 崩溃(比如内存溢出),PM2 会自动重启它。
这里有个坑,n8n 依赖一些环境变量,比如时区。在 PM2 启动时,我们最好显式指定一下,避免时间戳乱掉。
第三步:使用 PM2 启动 n8n (并配置自启)
这是最关键的一步。不要直接用 pm2 start n8n,因为 n8n 实际上是一个 CLI 工具,PM2 可能抓不到正确的入口。我们需要通过 node 去执行它。
在终端执行以下命令:
pm2 start $(which n8n) -- start
为了让它更健壮,我们可以给它起个名字,并指定日志路径:
pm2 start $(which n8n) -- start --name="n8n-server" --time
服务跑起来后,执行保存命令,把当前 PM2 的进程列表固化下来:
pm2 save
接下来,设置开机自启。这一步很多新手会漏掉,导致服务器重启后 n8n 还是挂的:
pm2 startup
执行完这行,终端会提示你复制一条命令,把那条命令粘贴回终端回车即可。至此,你的 n8n 已经是一个“打不死的小强”了。
避坑指南:N8N大学 的实战经验
别看上面步骤简单,笔者在部署时踩过不少坑,这里分享两个最常见的。
- 端口冲突与访问问题:n8n 默认监听
5678端口。如果你的服务器防火墙没开这个端口,或者你在本地电脑浏览器访问公网 IP 的 5678 端口,你会发现死活连不上。记得去云服务商控制台放行5678/tcp安全组。 - 数据库文件权限:默认 n8n 使用 SQLite,数据存在用户目录下。如果你之前用
root跑过,现在切回普通用户跑,可能会报EACCES: permission denied。解决办法是给 n8n 指定一个有权限的数据目录,或者在启动命令里加上--user-data-dir=/path/to/your/data。
FAQ 问答
Q1: 全局安装 n8n 会不会污染 Node.js 环境?
A: 对于生产服务器,其实还好。n8n 的依赖相对独立。如果你有洁癖,可以使用 npx n8n 结合 PM2 启动,或者使用 Docker。但在纯 Node.js 开发的场景下,全局安装管理起来最方便。
Q2: PM2 能监控 n8n 的内存使用吗?
A: 可以。PM2 提供了强大的监控面板。你可以运行 pm2 monit 来实时查看 n8n 的 CPU 和内存占用。如果发现内存持续上涨不释放,建议在 PM2 配置中设置 max_memory_restart 参数,比如 pm2 start ... --max-memory-restart 500M。
Q3: 我想更新 n8n 版本怎么办?
A: 流程很简单:先停止服务 pm2 stop n8n-server,然后重新全局安装 npm install n8n -g,最后重启服务 pm2 restart n8n-server。注意备份你的数据文件,以防万一。
总结与资源
作为 Node.js 开发者,使用 npm + PM2 部署 n8n 是最原生、最可控的方案。它让你能够脱离 Docker 的黑盒,直接掌控服务的生命周期。
在 N8N大学,我们推崇“把工具用到极致”。如果你在配置过程中遇到任何报错,或者对 n8n 的二次开发感兴趣,欢迎随时回来查阅更多教程。
祝你的自动化流程永不掉线!