Docker一键部署N8N:打造你的自动化工作流中枢,月省30小时重复劳动

阿里云上云采购季 2核2G云服务器99元/年 续费同价

你有多少工作是每天重复做的?发通知、拉数据、转存文件、定时发邮件……这些事情 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、通义千问等:

  1. 进入「Settings → Credentials」添加 AI API Key
  2. 工作流中添加「AI Agent」节点
  3. 配置模型和 System Prompt
  4. 连接上游(如邮件、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大模型实战教程,欢迎访问交流。

发表评论