你有多少工作是每天重复做的?发通知、拉数据、转存文件、定时发邮件……这些事情 N8N 都能帮你自动完成。本文带你用 Docker 10分钟部署一套自己的自动化平台。
N8N 是什么?为什么选它?
N8N(发音 n-eight-n)是一个开源的工作流自动化平台,类似于 Zapier、Make(Integromat),但最大的区别是:
它可以自托管,数据不出你的服务器,完全免费。
| 对比维度 | N8N(自托管) | Zapier | Make |
|---|---|---|---|
| 价格 | 免费(服务器自付) | $20+/月 | $9+/月 |
| 数据隐私 | 完全自控 | 云端 | 云端 |
| 节点数量 | 400+ | 5000+(但贵) | 1000+ |
| AI 集成 | 原生支持 | 有限 | 有限 |
| 自定义代码 | 支持 JS/Python | 不支持 | 有限 |
| 适合场景 | 技术团队/个人 | 非技术用户 | 非技术用户 |
核心优势总结:
– 可视化拖拽编排,无需写代码
– 支持 HTTP 请求、数据库、Webhook
– 原生支持 AI 节点(调用大模型)
– 社区活跃,模板丰富
使用场景举例
在开始部署之前,先看看 N8N 能干什么,找到你的使用动机:
🔔 消息通知自动化
– 监控网站每小时请求一次接口,有异常自动发微信/钉钉告警
– GitHub 有新 Issue/PR 自动通知团队
📊 数据同步
– 定时从数据库拉数据,同步到飞书多维表格或 Notion
– 爬取竞品价格,每天汇总发邮件
🤖 AI 工作流
– 监听邮件 → AI 分类 → 自动回复草稿
– 定时抓取新闻 → 大模型摘要 → 发布到公众号
📁 文件处理
– 监听文件夹变化,自动压缩/上传到云存储
– 定时备份数据库并发送到邮件
部署准备
环境要求
- 一台 Linux 云服务器(1核2G 够用,推荐 2核4G)
- 已安装 Docker 和 Docker Compose
- 开放 5678 端口(N8N 默认端口)
安装 Docker(未安装的话)
# Ubuntu/Debian
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
newgrp docker
# 验证
docker --version
docker compose version
一键部署:Docker Compose 方案
方案一:最简单版(快速体验)
docker run -d \
--name n8n \
-p 5678:5678 \
-v ~/.n8n:/home/node/.n8n \
-e N8N_BASIC_AUTH_ACTIVE=true \
-e N8N_BASIC_AUTH_USER=admin \
-e N8N_BASIC_AUTH_PASSWORD=your_password \
--restart unless-stopped \
n8nio/n8n
访问 http://服务器IP:5678,输入用户名密码即可进入。
方案二:生产级部署(推荐)
创建项目目录:
mkdir ~/n8n && cd ~/n8n
docker-compose.yml
version: '3.8'
services:
n8n:
image: n8nio/n8n:latest
container_name: n8n
restart: unless-stopped
ports:
- "5678:5678"
environment:
# 基本认证
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin
- N8N_BASIC_AUTH_PASSWORD=${N8N_PASSWORD}
# 域名配置(有域名才配置)
- N8N_HOST=${N8N_HOST:-localhost}
- N8N_PORT=5678
- N8N_PROTOCOL=${N8N_PROTOCOL:-http}
- WEBHOOK_URL=${WEBHOOK_URL:-http://localhost:5678/}
# 时区
- GENERIC_TIMEZONE=Asia/Shanghai
- TZ=Asia/Shanghai
# 数据加密密钥(必须设置,随机字符串)
- N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
# 禁用遥测(可选)
- N8N_DIAGNOSTICS_ENABLED=false
- N8N_VERSION_NOTIFICATIONS_ENABLED=false
volumes:
- n8n_data:/home/node/.n8n
- /var/run/docker.sock:/var/run/docker.sock:ro # 可选,允许控制Docker
networks:
- n8n_network
# 可选:用 PostgreSQL 替代默认的 SQLite(更稳定)
postgres:
image: postgres:15-alpine
container_name: n8n_postgres
restart: unless-stopped
environment:
- POSTGRES_DB=n8n
- POSTGRES_USER=n8n
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- n8n_network
volumes:
n8n_data:
postgres_data:
networks:
n8n_network:
driver: bridge
.env 文件(同目录下)
# 必填
N8N_PASSWORD=你的密码_至少8位
N8N_ENCRYPTION_KEY=随机字符串_用于加密凭证
# 有域名时填写
N8N_HOST=n8n.yourdomain.com
N8N_PROTOCOL=https
WEBHOOK_URL=https://n8n.yourdomain.com/
# PostgreSQL 密码
POSTGRES_PASSWORD=pg密码
生成随机加密密钥:
openssl rand -hex 32
启动
docker compose up -d
# 查看日志
docker compose logs -f n8n
# 验证运行状态
docker compose ps
配置 HTTPS(强烈推荐)
用 Nginx 反向代理 + Let’s Encrypt 证书:
# /etc/nginx/sites-available/n8n
server {
listen 80;
server_name n8n.yourdomain.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name n8n.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/n8n.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/n8n.yourdomain.com/privkey.pem;
# Webhook 需要较大的请求体
client_max_body_size 16M;
# WebSocket 支持(N8N 需要)
location / {
proxy_pass http://localhost:5678;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
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_read_timeout 86400;
}
}
# 申请证书
certbot --nginx -d n8n.yourdomain.com
# 重载 Nginx
nginx -s reload
实战:搭建第一个自动化工作流
下面用一个实际案例演示:每天早上9点,自动获取今日天气,发送到钉钉群。
步骤1:进入 N8N 界面
打开 https://你的域名,登录后点击右上角「+ New Workflow」。
步骤2:添加触发节点
搜索「Schedule Trigger」,配置每天 09:00 触发:
Mode: Every Day
Hour: 9
Minute: 0
步骤3:获取天气数据
添加「HTTP Request」节点:
Method: GET
URL: https://wttr.in/郑州?format=j1
步骤4:用代码节点处理数据
添加「Code」节点(JavaScript):
const weather = $input.first().json;
const current = weather.current_condition[0];
const temp = current.temp_C;
const feels = current.FeelsLikeC;
const desc = current.weatherDesc[0].value;
const humidity = current.humidity;
return [{
json: {
message: `🌤️ 今日郑州天气播报\n\n` +
`温度:${temp}°C(体感 ${feels}°C)\n` +
`天气:${desc}\n` +
`湿度:${humidity}%\n\n` +
`祝你今天工作顺利!`
}
}];
步骤5:发送钉钉消息
添加「HTTP Request」节点,配置钉钉 Webhook:
Method: POST
URL: https://oapi.dingtalk.com/robot/send?access_token=你的token
Headers: Content-Type: application/json
Body:
{
"msgtype": "text",
"text": {
"content": "{{ $json.message }}"
}
}
步骤6:保存并激活
点击右上角开关激活工作流,第二天早上9点就会自动执行。
接入 AI 大模型
N8N 内置 AI Agent 节点,直接支持 OpenAI、通义千问等:
- 进入「Settings → Credentials」添加 AI API Key
- 工作流中添加「AI Agent」节点
- 配置模型和 System Prompt
- 连接上游(如邮件、Webhook 触发)和下游(如发消息、写数据库)
典型 AI 工作流:
邮件触发 → AI 提取关键信息 → 判断优先级 →
高优先级 → 钉钉告警
低优先级 → 自动归档标签
常见问题
Q:N8N 免费版有什么限制?
自托管版本完全免费,无节点数量和执行次数限制。官方云托管版有免费额度限制。
Q:数据安全吗?
完全自托管,数据存在你自己的服务器,API Key 加密存储。
Q:如何备份数据?
# 备份数据卷
docker run --rm -v n8n_data:/data -v $(pwd):/backup alpine \
tar czf /backup/n8n-backup-$(date +%Y%m%d).tar.gz -C /data .
Q:能不能在本地运行测试?
可以,直接 docker run 本地启动,访问 http://localhost:5678 即可。
总结
N8N 是自动化工作流领域少有的既开源、又好用、又便宜的选择。对于有云服务器的技术人来说,用 Docker 部署一套永久免费的自动化中枢,是性价比极高的投入。
一台 2核4G 的轻量云服务器,一个下午,换来以后无数重复工作的自动化——非常值得。
如果你已经跑起来了,欢迎在评论区分享你的工作流创意!
关于作者
长期关注大模型应用落地与云服务器实战,专注技术在企业场景中的落地实践。
个人博客:y1cloud.cn —— 持续更新云计算、AI大模型实战教程,欢迎访问交流。
