n8n安装与部署教程:从零搭建自动化工作流
网站发布教程 + SEO 文档 + FAQ + 相关阅读

适用读者:想在本机、VPS 或企业服务器上搭建 n8n 自动化工作流平台的新手、站长、运营、开发者和 AI 工作流玩家。
一、爆款标题
- 《n8n安装与部署教程:从零搭建自己的自动化工作流系统》
- 《不会写代码也能自动化:n8n自托管部署保姆级教程》
- 《n8n本地部署全流程:Docker、PostgreSQL、HTTPS一次讲清楚》
- 《AI工作流必备工具n8n:安装、部署、Webhook、反向代理完整指南》
- 《从0到上线:用n8n搭建自动化办公与AI工作流平台》
二、文章摘要
n8n 是一款面向开发者、运营和自动化爱好者的工作流自动化平台,可以把表格、邮箱、数据库、Webhook、AI 模型、企业微信、飞书、WordPress、Notion、GitHub 等工具串成自动流程。本文以新手能照着做为目标,系统讲解 n8n 的安装路线、Docker 快速部署、Docker Compose 生产部署、PostgreSQL 数据库、域名 HTTPS、反向代理、Webhook 配置、备份升级和常见问题排查。
如果只是体验,直接用 npx 或 Docker 单容器即可;如果要长期运行网站自动发布、AI内容生成、客户线索同步、邮件通知、数据抓取等自动化任务,建议使用 Docker Compose + PostgreSQL + 反向代理 + HTTPS 的自托管方案。
三、封面图

封面图说明:以“自动化节点连接”和“本地部署控制台”为视觉核心,突出 n8n 的工作流编排、API 连接和自托管部署属性。
四、n8n是什么?为什么适合做自动化工作流?
n8n 可以理解为一个“自动化流程编排器”:你可以把触发器、条件判断、API 请求、数据库操作、AI 生成、文件处理、通知发送等动作拖拽成流程。它既适合个人做自动化办公,也适合团队把重复业务流程标准化。
典型使用场景
- 自媒体自动化:RSS 抓取新闻 -> AI 总结改写 -> 生成封面图提示词 -> 发布到 WordPress。
- 电商运营:新订单触发 -> 写入表格 -> 通知客服 -> 调用 AI 生成跟进话术。
- 企业办公:表单提交 -> 审批流转 -> 飞书/钉钉通知 -> 归档到数据库。
- 开发运维:GitHub Issue 触发 -> 自动分类 -> 调用模型生成修复建议 -> 推送到 Slack。
- AI 工作流:Webhook 接收任务 -> 调用 OpenAI、DeepSeek、Ollama 或本地模型 -> 返回结构化结果。
它和 Zapier、Make、Coze、Dify 有什么区别?
| 工具 | 更适合 | 特点 | 部署方式 |
| n8n | 自托管自动化、API集成、团队流程 | 节点丰富、可写代码、可私有化、适合长期运行 | Cloud / Docker / npm / 服务器 |
| Zapier | 海外 SaaS 自动化 | 生态广、上手快,但高级功能价格较高 | 云端 |
| Make | 可视化业务流程编排 | 界面直观,适合营销和运营流程 | 云端 |
| Dify | AI 应用与 Agent 工作流 | 更偏 AI 应用、知识库、LLM 编排 | 云端 / 自托管 |
| Coze/扣子 | AI Bot 与智能体 | 适合搭建聊天机器人和渠道发布 | 云端为主 |
五、安装前准备:先确认你的部署路线

推荐路线速查
| 使用场景 | 推荐方案 | 适合人群 | 备注 |
| 本机尝鲜 | npx n8n 或 Docker 单容器 | 零基础、新手体验 | 最快,但不适合长期生产 |
| 个人长期使用 | Docker + 数据卷 | 个人站长、自动化玩家 | 需要定期备份数据卷和密钥 |
| 网站/团队生产 | Docker Compose + PostgreSQL + 反向代理 + HTTPS | 企业、小团队、VPS用户 | 更稳定,便于升级和迁移 |
| 企业高并发 | Queue Mode + PostgreSQL + Redis + 多 Worker | 技术团队 | 需要运维能力与监控体系 |
| 不想运维 | n8n Cloud | 非技术用户、业务团队 | 省心,但数据和费用按云服务规则走 |
最低准备清单
- 一台电脑或服务器:Windows、macOS、Linux、VPS 都可以。
- Docker Desktop 或 Docker Engine + Docker Compose。
- 如果要公网访问:准备一个域名或子域名,例如 n8n.example.com。
- 如果要生产部署:建议使用 PostgreSQL,而不是长期依赖 SQLite。
- 如果要接收第三方 Webhook:服务器必须能被外网访问,且 HTTPS 配置正确。
- 准备一组强密码,并保存好 N8N_ENCRYPTION_KEY,这个密钥关系到凭据能否解密。
六、方式一:npx 快速体验 n8n
npx 适合本机临时体验,不需要完整部署。官方文档说明,npm 方式要求本机安装 Node.js,且 n8n 要求 Node.js 版本在 20.19 到 24.x 范围内。
安装步骤
- 安装 Node.js,建议使用 LTS 版本。
- 打开终端或 PowerShell。
- 运行 npx n8n。
- 浏览器访问 http://localhost:5678。
- 首次进入后创建管理员账号。
| # 查看 Node 与 npm 版本 node -v npm -v # 不安装,直接临时运行 n8n npx n8n # 浏览器打开 http://localhost:5678 |
注意:npx 适合测试和学习,不建议直接作为生产环境。关闭终端后服务会停止,数据和运行方式也不如 Docker Compose 易管理。
七、方式二:npm 全局安装 n8n
npm 全局安装比 npx 更固定,但生产环境依然更推荐 Docker。适合开发者在本机长期测试节点、调试插件或学习 n8n CLI。
| # 全局安装 npm install n8n -g # 启动 n8n # 或 n8n start # 更新到最新版 npm update -g n8n # 安装 next 版本(不建议生产使用) npm install -g n8n@next |
Windows 下 npm 安装常见问题
- 如果提示权限不足,优先使用管理员 PowerShell 或修改 npm 全局安装目录。
- 如果 node-gyp 编译失败,通常与 Python、Visual Studio Build Tools、Node 版本有关。
- 如果只是为了使用 n8n,不建议在 Windows 上死磕 npm 编译问题,Docker Desktop 通常更省事。
八、方式三:Docker 单容器快速部署
官方文档推荐大多数自托管场景优先使用 Docker,因为它能提供干净、隔离的运行环境,减少操作系统和依赖冲突,也更方便管理数据库、环境变量和数据卷。
本机快速启动
| # 创建数据卷 sudo docker volume create n8n_data # 启动 n8n sudo docker run -it –rm –name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n |
Windows/macOS 用户如果使用 Docker Desktop,可以去掉 sudo。启动后访问 http://localhost:5678。
适合长期本机运行的命令
| docker volume create n8n_data docker run -d –name n8n –restart unless-stopped -p 5678:5678 -e GENERIC_TIMEZONE=Asia/Shanghai -e TZ=Asia/Shanghai -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n:stable |
常用管理命令
| # 查看容器状态 docker ps # 查看日志 docker logs -f n8n # 停止 / 启动 / 重启 docker stop n8n docker start n8n docker restart n8n # 删除容器(不会删除数据卷) docker rm -f n8n |
九、方式四:Docker Compose 生产部署
如果你准备把 n8n 放到 VPS、云服务器或公司内网服务器长期运行,建议使用 Docker Compose。这样可以把 n8n、PostgreSQL、反向代理、数据卷和环境变量写成可复用配置,升级和迁移也更清晰。
目录结构建议
| /opt/n8n/ ├── compose.yaml ├── .env ├── local-files/ └── backups/ |
.env 示例
| # 基础访问配置 DOMAIN_NAME=example.com SUBDOMAIN=n8n GENERIC_TIMEZONE=Asia/Shanghai TZ=Asia/Shanghai # n8n 关键配置 N8N_HOST=n8n.example.com N8N_PROTOCOL=https N8N_PORT=5678 WEBHOOK_URL=https://n8n.example.com/ N8N_PROXY_HOPS=1 N8N_ENCRYPTION_KEY=请替换为足够长的随机字符串 # PostgreSQL POSTGRES_USER=n8n POSTGRES_PASSWORD=请替换为强密码 POSTGRES_DB=n8n DB_TYPE=postgresdb DB_POSTGRESDB_HOST=postgres DB_POSTGRESDB_PORT=5432 DB_POSTGRESDB_DATABASE=n8n DB_POSTGRESDB_USER=n8n DB_POSTGRESDB_PASSWORD=请替换为强密码 |
compose.yaml 示例:n8n + PostgreSQL
| services: postgres: image: postgres:16-alpine restart: unless-stopped environment: POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_DB: ${POSTGRES_DB} volumes: – postgres_data:/var/lib/postgresql/data n8n: image: docker.n8n.io/n8nio/n8n:stable restart: unless-stopped ports: – “127.0.0.1:5678:5678” environment: DB_TYPE: ${DB_TYPE} DB_POSTGRESDB_HOST: ${DB_POSTGRESDB_HOST} DB_POSTGRESDB_PORT: ${DB_POSTGRESDB_PORT} DB_POSTGRESDB_DATABASE: ${DB_POSTGRESDB_DATABASE} DB_POSTGRESDB_USER: ${DB_POSTGRESDB_USER} DB_POSTGRESDB_PASSWORD: ${DB_POSTGRESDB_PASSWORD} N8N_HOST: ${N8N_HOST} N8N_PORT: ${N8N_PORT} N8N_PROTOCOL: ${N8N_PROTOCOL} WEBHOOK_URL: ${WEBHOOK_URL} N8N_PROXY_HOPS: ${N8N_PROXY_HOPS} N8N_ENCRYPTION_KEY: ${N8N_ENCRYPTION_KEY} GENERIC_TIMEZONE: ${GENERIC_TIMEZONE} TZ: ${TZ} volumes: – n8n_data:/home/node/.n8n – ./local-files:/files depends_on: – postgres volumes: n8n_data: postgres_data: |
启动与查看日志
| cd /opt/n8n docker compose pull docker compose up -d docker compose ps docker compose logs -f n8n |
如果你没有反向代理,上面的配置仅监听本机 127.0.0.1:5678,外部无法直接访问。这是更安全的默认选择,后面再由 Nginx、Caddy 或 Traefik 代理到 HTTPS 域名。
十、配置反向代理与 HTTPS
n8n 的 Webhook URL 对自动化非常关键。官方文档说明,n8n 默认会用 N8N_PROTOCOL、N8N_HOST 和 N8N_PORT 拼接 Webhook 地址;如果服务在反向代理后面运行,必须手动设置 WEBHOOK_URL,并设置 N8N_PROXY_HOPS=1。
Nginx 反向代理示例
| server { listen 80; server_name n8n.example.com; return 301 https://$host$request_uri; } server { listen 443 ssl http2; server_name n8n.example.com; ssl_certificate /etc/letsencrypt/live/n8n.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/n8n.example.com/privkey.pem; location / { proxy_pass http://127.0.0.1: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-Host $host; proxy_set_header X-Forwarded-Proto $scheme; } } |
Caddy 反向代理示例
| n8n.example.com { reverse_proxy 127.0.0.1:5678 } |
Caddy 的优势是 HTTPS 证书申请和续期更自动化,适合希望少写配置的用户;Nginx 更通用,适合已有服务器环境。
十一、n8n 典型生产架构

架构说明
- 用户通过浏览器访问 n8n Editor UI。
- 第三方平台通过 Webhook 调用 n8n 的生产 URL。
- 反向代理负责 HTTPS、域名转发和真实客户端信息传递。
- n8n 服务负责执行工作流、管理凭据和调度任务。
- PostgreSQL 保存工作流、凭据元数据、执行记录等。
- n8n 数据卷保存加密密钥、本地文件、二进制数据等。
- 外部 API 包括 AI 模型、数据库、CRM、邮件、企业 IM、WordPress 等。
十二、数据库选择:SQLite 还是 PostgreSQL?
官方文档说明,自托管 n8n 默认使用 SQLite,同时支持 PostgreSQL;MySQL 和 MariaDB 在 n8n v1.0 后已被废弃支持。
| 数据库 | 适合场景 | 优点 | 注意事项 |
| SQLite | 本机体验、小流程、临时测试 | 免配置、启动快、简单 | 不适合多人协作和生产高负载 |
| PostgreSQL | 生产环境、团队使用、长期运行 | 稳定、可扩展、备份工具成熟 | 需要额外维护数据库 |
| MySQL/MariaDB | 旧项目历史配置 | 不建议新项目使用 | 官方已废弃支持,避免新部署使用 |
PostgreSQL 关键环境变量
| 变量 | 示例 | 说明 |
| DB_TYPE | postgresdb | 指定数据库类型 |
| DB_POSTGRESDB_HOST | postgres | Docker Compose 服务名或数据库地址 |
| DB_POSTGRESDB_PORT | 5432 | PostgreSQL 默认端口 |
| DB_POSTGRESDB_DATABASE | n8n | 数据库名 |
| DB_POSTGRESDB_USER | n8n | 数据库用户 |
| DB_POSTGRESDB_PASSWORD | 强密码 | 数据库密码 |
| DB_POSTGRESDB_POOL_SIZE | 2 或更高 | 连接池大小,需根据服务器资源调整 |
十三、首次进入 n8n:初始化账号和安全设置
- 浏览器访问 http://localhost:5678 或你的 HTTPS 域名。
- 创建 owner 管理员账号。
- 设置强密码,不要使用默认弱密码。
- 进入 Settings 检查实例 URL、时区、用户与权限。
- 创建第一个测试 Workflow:Manual Trigger -> Set -> Respond。
- 如果要使用第三方平台回调,测试 Webhook 的 Test URL 与 Production URL 是否正确。
建议立即完成的安全动作
- 保存好 N8N_ENCRYPTION_KEY,不要在迁移时丢失。
- 生产环境必须配置 HTTPS。
- 不要把 5678 端口直接暴露在公网,建议只让反向代理访问。
- 服务器防火墙只开放 80、443、SSH 必要端口。
- 定期备份数据库和 n8n 数据卷。
- 邀请团队成员时使用最小权限原则。
十四、创建第一个自动化工作流
示例:Webhook 接收内容 -> AI 处理 -> 返回结果
- 新建 Workflow。
- 添加 Webhook Trigger 节点,方法选择 POST。
- 添加 Set 节点,提取 body 中的 title、content、url 等字段。
- 添加 HTTP Request 或 AI 节点,调用 OpenAI、DeepSeek、Ollama、Dify 等服务。
- 添加 Respond to Webhook 节点,把处理结果返回给调用方。
- 保存并激活 Workflow。
- 用 curl 或 Postman 测试生产 Webhook 地址。
| curl -X POST https://n8n.example.com/webhook/article-demo -H “Content-Type: application/json” -d ‘{“title”:”n8n教程”,”content”:”请帮我总结这篇文章”}’ |
示例:定时抓取 RSS -> 自动发布到 WordPress
- Cron 节点:每天 9:00 触发。
- RSS Read 节点:读取 AI 新闻源。
- IF 节点:过滤重复标题。
- AI 节点或 HTTP Request:生成摘要、标题、SEO 描述。
- WordPress 节点:创建草稿或直接发布。
- 企业微信/飞书节点:推送发布结果。
十五、AI 工作流接入:OpenAI、DeepSeek、Ollama 怎么连?
| 接入对象 | 推荐方式 | 适合场景 | 注意事项 |
| OpenAI / Claude / Gemini | 官方 API 或 HTTP Request | 高质量写作、代码、总结 | 注意 API Key 安全和费用控制 |
| DeepSeek API | HTTP Request / OpenAI兼容配置 | 中文内容、代码、低成本推理 | 确认 base_url 与模型名 |
| Ollama 本地模型 | HTTP Request 调用 http://主机:11434 | 私有化、本地测试、低成本 | 模型质量和速度受硬件影响 |
| Dify / Coze | HTTP API / Webhook | 已有 AI 应用需要串流程 | 注意请求格式和鉴权 |
| 本地向量数据库 | HTTP Request / 社区节点 | RAG、知识库自动化 | 需要管理索引和数据更新 |
调用 Ollama 的 HTTP Request 示例
| POST http://host.docker.internal:11434/api/chat Content-Type: application/json { “model”: “qwen2.5:7b”, “messages”: [ {“role”:”user”, “content”:”请把这段文字改写成公众号风格”} ], “stream”: false } |
如果 n8n 和 Ollama 都在 Docker 中,需根据网络结构调整 host.docker.internal、容器名或 Docker network。Linux 服务器上通常更推荐把 Ollama 与 n8n 放到同一自定义网络中。
十六、备份、升级与迁移
备份什么?
- PostgreSQL 数据库:保存工作流、凭据元数据、执行记录。
- n8n_data 数据卷:保存 .n8n 目录、加密密钥和本地文件。
- compose.yaml 与 .env:保存部署结构和环境变量。
- N8N_ENCRYPTION_KEY:必须单独安全备份,丢失后可能无法解密已有凭据。
PostgreSQL 备份示例
| # 进入项目目录 cd /opt/n8n # 备份数据库 docker compose exec postgres pg_dump -U n8n n8n > backups/n8n_$(date +%F).sql # 备份配置文件 cp .env backups/env_$(date +%F).bak cp compose.yaml backups/compose_$(date +%F).bak |
升级步骤
| cd /opt/n8n # 1. 先备份数据库和配置 mkdir -p backups cp .env backups/env_$(date +%F).bak cp compose.yaml backups/compose_$(date +%F).bak # 2. 拉取新镜像 docker compose pull # 3. 重启服务 docker compose up -d # 4. 查看日志 docker compose logs -f n8n |
生产环境建议固定镜像版本,例如 docker.n8n.io/n8nio/n8n:2.18.5,而不是一直使用 latest。这样出现兼容问题时更容易回滚。
十七、常见问题排查

1. 打不开 http://localhost:5678
- 运行 docker ps,确认容器是否正在运行。
- 运行 docker logs -f n8n,看是否有启动失败日志。
- 检查端口是否被占用:Windows 用 netstat,Linux/macOS 用 lsof。
- 如果是在 VPS 上访问,确认防火墙和安全组是否开放了对应端口。
2. Webhook 在本地能用,外部平台收不到
- 确认你使用的是 Production URL,而不是 Test URL。
- 确认 Workflow 已经 Active。
- 反向代理场景下设置 WEBHOOK_URL=https://你的域名/。
- 设置 N8N_PROXY_HOPS=1,并确保代理传递 X-Forwarded-* 头。
- 检查第三方平台是否要求 HTTPS。
3. 数据库连接失败
- 检查 DB_TYPE 是否为 postgresdb。
- Docker Compose 中 DB_POSTGRESDB_HOST 通常应填写 postgres 服务名。
- 确认 PostgreSQL 用户、密码、数据库名一致。
- 查看 postgres 容器日志,确认数据库已启动完成。
4. 迁移后凭据无法使用
- 重点检查 N8N_ENCRYPTION_KEY 是否与旧环境一致。
- 不要只导出 Workflow 而忽略凭据和环境变量。
- 迁移前备份 .env、数据库和 n8n_data 数据卷。
5. 内存越来越高
- 减少执行记录保存量,避免保存过多大体积数据。
- 将图片、音频、大文件放到外部存储,不要长期堆在数据库或容器内。
- 复杂流程拆分为多个小流程。
- 生产环境使用 PostgreSQL,并关注数据库体积。
十八、适合新手的部署方案推荐
| 你的情况 | 推荐方案 | 不推荐 |
| 只想学习 n8n | npx n8n 或 Docker 单容器 | 上来就配置复杂反向代理 |
| 本地长期自动化 | Docker + 数据卷 + 定期备份 | npm 裸跑且不备份 |
| VPS 上线使用 | Docker Compose + PostgreSQL + Caddy/Nginx + HTTPS | 直接暴露 5678 到公网 |
| 要接企业微信/飞书/GitHub Webhook | 公网域名 + HTTPS + WEBHOOK_URL | 使用临时 tunnel 做长期生产 |
| 企业团队使用 | PostgreSQL + 权限管理 + 备份监控 + 版本锁定 | 所有人共用一个管理员账号 |
十九、FAQ
Q1:n8n 是免费的吗?
n8n 自托管 Community edition 可以免费使用;如果需要企业级功能、云服务或商业支持,需要根据官方版本和授权规则选择。
Q2:n8n 一定要部署在服务器上吗?
不一定。本机也能运行,但如果要接收外部 Webhook、定时任务长期运行或给团队使用,建议部署在 VPS 或内网服务器。
Q3:n8n 能不能和本地大模型一起用?
可以。常见方式是通过 HTTP Request 调用 Ollama、LocalAI、vLLM、LM Studio 等本地模型 API。
Q4:SQLite 可以长期使用吗?
小规模个人任务可以,但生产和团队协作更建议 PostgreSQL。
Q5:为什么 Webhook 地址显示 localhost?
通常是没有正确配置 N8N_HOST、N8N_PROTOCOL、WEBHOOK_URL,或者反向代理环境没有设置 N8N_PROXY_HOPS。
Q6:Docker 和 npm 哪个更推荐?
体验可用 npx/npm;长期自托管更推荐 Docker 或 Docker Compose。
Q7:n8n 可以自动发布 WordPress 文章吗?
可以。可以用 RSS、HTTP Request、AI 模型、WordPress 节点组合成自动发布或自动生成草稿流程。
Q8:升级 n8n 会不会丢数据?
正常不会,但升级前必须备份数据库、数据卷、.env 和加密密钥。生产环境建议固定版本并先在测试环境验证。
Q9:n8n 和 Dify 哪个更适合 AI 工作流?
n8n 更偏通用自动化和系统集成;Dify 更偏 AI 应用、知识库和 LLM 编排。两者可以互相调用。
Q10:没有域名能用 n8n 吗?
本地使用可以不需要域名;外部 Webhook、团队访问、HTTPS 生产部署通常建议配置域名。
官方参考来源
- n8n Self-hosting 文档:https://docs.n8n.io/hosting/
- n8n Docker Installation:https://docs.n8n.io/hosting/installation/docker/
- n8n Docker Compose:https://docs.n8n.io/hosting/installation/server-setups/docker-compose/
- n8n npm Installation:https://docs.n8n.io/hosting/installation/npm/
- n8n Supported databases:https://docs.n8n.io/hosting/configuration/supported-databases-settings/
- n8n Database environment variables:https://docs.n8n.io/hosting/configuration/environment-variables/database/
- n8n Webhook reverse proxy:https://docs.n8n.io/hosting/configuration/configuration-examples/webhook-url/