如果你也受够了 Zapier 高昂的订阅费用,或者对国内自动化工具的组件封闭性感到绝望,那么开源的 n8n 绝对是你必须掌握的效率神器。
最近为了打通公司内部的飞书、GitHub 和几个 AI 大模型的 API,我折腾了一整套 n8n 的私有化部署。踩了不少坑,尤其是网络环境和数据持久化方面。今天把这套经过生产环境验证的部署方案开源出来,照着抄,半小时就能跑通。
一、 为什么强烈建议私有化部署 n8n?
- 数据安全与隐私: 自动化工作流通常包含大量的数据库凭证、API Key 和核心业务数据。放在第三方 SaaS 平台上,相当于把命脉交给了别人。
- 打破 API 调用限制: 官方云端版本对执行次数有严格限制,而私有化部署只要你的服务器扛得住,想跑多少次跑多少次。
- 高度可定制: 可以自由挂载本地脚本(Python/Node.js),甚至接入内部局域网的数据库。
二、 准备工作与"避坑"建议(核心!)
部署 n8n 本身不难,难的是网络环境。
🚨 避坑血泪史: 很多兄弟习惯用国内某某大厂的机器直接搞,结果第一步拉取 Docker 镜像就疯狂超时;后面在 n8n 里调 OpenAI、Claude 或者 Telegram 的 API 时,又因为网络阻断,不得不天天折腾各种反代和全局代理,极其痛苦。
我的解决方案: 为了图省事,也为了保证工作流 7x24 小时的稳定,我这台机器没有用传统大厂,而是直接上了一台 新星云 (Nova Cloud) 的海外轻量服务器。
- 推荐理由很简单: 自带优质跨境路由,原生网络环境。不需要配任何代理,拉镜像秒下,调各类 AI 大模型 API 直接畅通无阻。对于搞独立开发或者做 AI 业务的兄弟来说,省下的折腾网络的时间,早就够这台机器一年的钱了。
- 配置建议: n8n 是基于 Node.js 的,稍微有点吃内存。如果是个人跑着玩,2C2G 勉强够用;但如果要跑复杂的并发流,强烈建议 2C4G 起步。

三、 Docker Compose 一键部署实战
废话不多说,直接上代码。我们采用 Docker Compose 来部署,方便后期升级和维护。
1. 创建项目目录并进入
Bash
bash
mkdir -p /opt/n8n && cd /opt/n8n
2. 编写 docker-compose.yml 文件 在 /opt/n8n 目录下创建 docker-compose.yml,并将以下内容粘贴进去。这套配置我已经做了时区优化和数据持久化映射:
YAML
ini
version: '3.8'
volumes:
n8n_data:
services:
n8n:
image: docker.n8n.io/n8nio/n8n
container_name: n8n
restart: always
ports:
- "5678:5678"
environment:
- N8N_HOST=你的服务器IP或域名
- N8N_PORT=5678
- N8N_PROTOCOL=http
- NODE_ENV=production
- WEBHOOK_URL=http://你的服务器IP或域名:5678/
- GENERIC_TIMEZONE=Asia/Shanghai # 强制修改为国内时区,非常重要!
volumes:
- n8n_data:/home/node/.n8n
- /opt/n8n/local_files:/files # 映射本地文件目录,方便 n8n 读取本地文件
3. 启动服务 确保你已经安装了 Docker 和 docker-compose,然后执行:
Bash
docker-compose up -d
等待几秒钟,在浏览器中输入 http://你的服务器IP:5678,就能看到 n8n 的初始化设置界面了。
四、 进阶:如何优雅地暴露到公网?
在生产环境中,我们绝对不应该直接通过 IP 和端口访问 n8n,尤其是当你的工作流包含了 Webhook 触发器时(比如接收 GitHub 的代码提交推送),很多平台强制要求 HTTPS。
推荐做法:使用 Nginx + Let's Encrypt 证书反向代理。
在你的 Nginx 配置文件中加入以下反代规则:
Nginx
ini
server {
listen 80;
server_name n8n.yourdomain.com; # 替换为你的域名
# 强制跳转 HTTPS (建议配置)
# return 301 https://$host$request_uri;
location / {
proxy_pass http://127.0.0.1:5678;
proxy_set_header Connection '';
proxy_http_version 1.1;
chunked_transfer_encoding off;
proxy_buffering off;
proxy_cache off;
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;
}
}
配置完成后,重启 Nginx,你就可以通过优雅的域名访问 n8n,并愉快地接收外部 Webhook 了。
五、 总结
把 n8n 跑起来只是第一步,真正的乐趣在于发挥想象力,把日常繁琐的运营、研发流程全部交给机器。
再次提醒,做这套基建,网络环境的稳定性大于一切。少花时间在配代理上,多花时间在业务逻辑上。如果你还没选好合适的服务器,可以去看看我前面提到的类似**新星云(novacloud)**这种对开发者友好的海外轻量机,确实能少掉很多头发。
最后,兄弟们如果对 n8n 接入微信机器人、飞书或者 Dify 有兴趣,可以在评论区留言,人多的话我下周再更一篇实战工作流的连线教程!求个赞不过分吧?👍