AI 自动化工作流环境配置:n8n、Docker、API Key 全流程
网站发布教程文章|从服务器准备到生产部署、密钥管理与第一个 AI 自动化工作流
适合读者:内容站站长、自媒体团队、独立开发者、企业自动化负责人

封面图:AI 自动化工作流环境配置
| 发布定位:这是一篇偏实战的网站教程,核心目标是让读者能在一台云服务器上搭起可用、可维护、可扩展的 AI 自动化工作流环境。 |
文章摘要
想把 AI 写作、资料整理、表单处理、消息通知、WordPress 发文等动作串成自动化流程,n8n 是非常适合新手入门的可视化平台。本文按“服务器准备 → Docker 安装 → n8n 部署 → API Key 配置 → 安全加固 → 第一个 AI 工作流”的顺序,带你完成一套可用于网站内容生产和企业自动化的基础环境。
| 项目 | 建议值 |
| 教程难度 | 入门到进阶 |
| 适用系统 | Ubuntu 22.04 / 24.04 / 26.04 LTS 等 64 位 Linux 服务器 |
| 核心工具 | n8n、Docker Engine、Docker Compose、PostgreSQL、反向代理、API Key |
| 最终效果 | 可访问的 n8n 工作台 + 可保存凭据 + 可运行 AI 自动化流程 |
| 发布分类建议 | 保姆级教程 / 环境配置教程 / 自动化工作流 |
文章目录
- 为什么要先配置 AI 自动化工作流环境
- 准备清单:服务器、域名、端口与账号
- 安装 Docker 与 Docker Compose
- 快速启动 n8n:先跑通再优化
- 生产部署:Docker Compose + PostgreSQL
- 反向代理与 HTTPS:让 Webhook 正确工作
- API Key 全流程:申请、保存、调用与轮换
- 第一个 AI 自动化发布工作流示例
- 备份、升级与常见错误排查
- FAQ 与相关阅读
为什么要先配置 AI 自动化工作流环境
很多人第一次接触 AI 自动化,会直接去搭一个“自动写文章”“自动发视频”“自动回复客户”的工作流,结果常常卡在三个基础问题上:环境跑不起来、API Key 不知道放哪里、Webhook 外网回调失败。
所以真正稳定的做法不是先堆节点,而是先把底层环境配置清楚。n8n 负责流程编排,Docker 负责把应用打包运行,API Key 负责让 n8n 安全访问大模型、网站、邮件、表格、消息机器人等外部服务。

图 1:n8n + Docker + API Key 环境架构图
这套环境适合做什么
- AI 内容生产:自动抓取信息源、生成摘要、改写为网站草稿。
- 自媒体运营:把选题、脚本、配图提示词、发布提醒串成流程。
- 办公自动化:表单收集、邮件整理、客户线索同步、日报周报生成。
- 运维通知:监控接口、定时检查、异常消息推送到微信、飞书或邮箱。
- 私有化数据流程:在自己的服务器上运行,便于控制数据、日志和凭据。
新手最容易混淆的三个概念
| 概念 | 通俗理解 | 在本教程中的作用 |
| n8n | 可视化自动化工作台 | 拖拽节点、连接 API、运行自动化流程 |
| Docker | 应用运行容器 | 避免系统依赖冲突,便于启动、停止、迁移和升级 |
| API Key | 服务访问钥匙 | 让 n8n 调用 OpenAI、WordPress、飞书、邮件等外部接口 |
准备清单:服务器、域名、端口与账号
如果只是本机学习,可以用 Windows、macOS 或 Linux 上的 Docker Desktop;如果要长期运行工作流,建议直接使用一台 Linux 云服务器。
推荐服务器配置
| 场景 | CPU / 内存 | 磁盘 | 说明 |
| 学习测试 | 1 核 1GB 起 | 20GB | 只适合少量流程,不建议跑大型 AI 任务。 |
| 个人内容站 | 2 核 2GB 起 | 40GB SSD | 可运行 n8n + PostgreSQL + 少量定时任务。 |
| 团队/生产环境 | 2-4 核 4-8GB | 80GB SSD 起 | 建议启用备份、HTTPS、日志轮转和执行数据清理。 |
| 建议:n8n 只是编排工具,真正消耗资源的通常是文件处理、浏览器自动化、图片视频处理和大批量执行。新手先把工作流跑通,再根据执行量升级服务器。 |
域名和端口规划
- 域名:建议使用 n8n.example.com 这样的独立子域名,后续配置 Webhook 更省事。
- 开放端口:服务器安全组通常只需要开放 22、80、443;n8n 的 5678 建议只在容器内部或本机代理使用。
- HTTPS:涉及 Telegram、支付、登录回调、OAuth、Webhook 的流程,尽量使用 HTTPS。
- 备份路径:提前规划 /opt/n8n、/opt/n8n/backups、Docker volume 或数据库备份目录。
账号与密钥准备
| 账号/密钥 | 用途 | 注意事项 |
| 服务器 SSH 账号 | 登录服务器并执行部署命令 | 不要长期开放密码登录,建议改用密钥登录。 |
| 域名 DNS 管理权限 | 解析 n8n 子域名到服务器 IP | A 记录生效后再配置 HTTPS。 |
| n8n 登录账号 | 进入工作流编辑器 | 首次启动后创建管理员账号。 |
| OpenAI/其他模型 API Key | 调用大模型生成、总结、分类 | 不要写进前端页面和公开仓库。 |
| WordPress 应用密码 | 自动创建文章草稿 | 只给需要的账号权限,避免使用站点管理员主密码。 |
安装 Docker 与 Docker Compose
在 Linux 服务器上,建议使用 Docker 官方 apt 源安装 Docker Engine 和 Docker Compose 插件。这样后续升级、卸载和排查问题更规范。
一键检查系统版本
cat /etc/os-release
uname -m
如果是 Ubuntu 22.04、24.04、26.04 等常见 64 位版本,通常可以继续下面的步骤。
清理可能冲突的旧包
sudo apt remove -y docker.io docker-compose docker-compose-v2 docker-doc \
podman-docker containerd runc
安装 Docker 官方源
sudo apt update
sudo apt install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
-o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
sudo tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo “${UBUNTU_CODENAME:-$VERSION_CODENAME}”)
Components: stable
Architectures: $(dpkg –print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sudo apt update
安装 Docker Engine 与 Compose 插件
sudo apt install -y docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-plugin
sudo systemctl enable –now docker
sudo docker run hello-world
docker –version
docker compose version
| 提醒:如果你希望普通用户不加 sudo 运行 docker,可以把用户加入 docker 组;但 docker 组接近 root 权限,生产服务器要谨慎授权。 |
快速启动 n8n:先跑通再优化
第一次部署不要一上来就配数据库、反向代理、HTTPS 和复杂变量。先用官方 Docker 命令把 n8n 跑起来,确认端口、镜像、卷挂载都没有问题。
创建持久化卷并启动
docker volume create n8n_data
docker run -it –rm \
–name n8n \
-p 5678:5678 \
-e GENERIC_TIMEZONE=”Asia/Shanghai” \
-e TZ=”Asia/Shanghai” \
-e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \
-e N8N_RUNNERS_ENABLED=true \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n
浏览器访问 http://服务器IP:5678 或 http://localhost:5678,首次进入后按提示创建管理员账号。
| 不要长期这样跑生产环境:上面的 docker run 更适合验证环境。正式部署建议用 Docker Compose 文件保存配置,并使用 PostgreSQL、反向代理和 HTTPS。 |
快速验证是否可用
- 进入 n8n 编辑器,创建一个新 Workflow。
- 添加 Manual Trigger 节点和 Set 节点。
- 点击 Execute Workflow,确认执行记录正常生成。
- 进入 Settings / Credentials,测试是否能新建一个凭据。
生产部署:Docker Compose + PostgreSQL
生产部署的核心思路是:用 Docker Compose 管理 n8n 与 PostgreSQL,用 .env 管理环境变量,用 volume 保存数据库和 n8n 配置,用反向代理对外提供 HTTPS。
推荐目录结构
/opt/n8n/
├── docker-compose.yml
├── .env
├── backups/
└── README.md
.env 示例
| 重要:下面示例中的密码、域名、加密密钥必须改成你自己的。N8N_ENCRYPTION_KEY 一旦上线后不要随便更换,否则历史凭据可能无法解密。 |
# 基础访问
DOMAIN_NAME=n8n.example.com
N8N_HOST=n8n.example.com
N8N_PROTOCOL=https
N8N_EDITOR_BASE_URL=https://n8n.example.com
WEBHOOK_URL=https://n8n.example.com/
N8N_PROXY_HOPS=1
# 时区
GENERIC_TIMEZONE=Asia/Shanghai
TZ=Asia/Shanghai
# n8n 安全与执行
N8N_ENCRYPTION_KEY=请替换为_足够长_随机字符串
N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
N8N_RUNNERS_ENABLED=true
N8N_DIAGNOSTICS_ENABLED=false
# 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=请替换为_数据库强密码
docker-compose.yml 示例
services:
postgres:
image: postgres:16-alpine
container_name: n8n-postgres
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
container_name: n8n
restart: unless-stopped
depends_on:
– postgres
ports:
– “127.0.0.1:5678:5678”
environment:
N8N_HOST: ${N8N_HOST}
N8N_PROTOCOL: ${N8N_PROTOCOL}
N8N_EDITOR_BASE_URL: ${N8N_EDITOR_BASE_URL}
WEBHOOK_URL: ${WEBHOOK_URL}
N8N_PROXY_HOPS: ${N8N_PROXY_HOPS}
GENERIC_TIMEZONE: ${GENERIC_TIMEZONE}
TZ: ${TZ}
N8N_ENCRYPTION_KEY: ${N8N_ENCRYPTION_KEY}
N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS: ${N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS}
N8N_RUNNERS_ENABLED: ${N8N_RUNNERS_ENABLED}
N8N_DIAGNOSTICS_ENABLED: ${N8N_DIAGNOSTICS_ENABLED}
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}
volumes:
– n8n_data:/home/node/.n8n
volumes:
postgres_data:
n8n_data:
启动、查看日志和停止
cd /opt/n8n
sudo docker compose up -d
sudo docker compose ps
sudo docker compose logs -f n8n
# 停止但保留数据
sudo docker compose down
# 仅重启 n8n
sudo docker compose restart n8n
反向代理与 HTTPS:让 Webhook 正确工作
很多 n8n 新手会遇到“本地能打开,Webhook 回调失败”的问题。原因通常是 n8n 在容器内部只知道自己运行在 5678 端口,而外部用户访问的是 https://n8n.example.com。
必须配置的几个外部访问变量
| 变量 | 示例 | 作用 |
| N8N_HOST | n8n.example.com | 告诉 n8n 对外主机名是什么。 |
| N8N_PROTOCOL | https | 告诉 n8n 对外协议是 http 还是 https。 |
| N8N_EDITOR_BASE_URL | https://n8n.example.com | 编辑器、邮件链接、部分回调地址会用到。 |
| WEBHOOK_URL | https://n8n.example.com/ | 反向代理后强制生成正确的 Webhook URL。 |
| N8N_PROXY_HOPS | 1 | n8n 位于一层反向代理后面时常用。 |
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 https;
}
}
| 检查点:打开任意 Webhook 节点,如果 Production URL 显示的是 https://n8n.example.com/webhook/…,说明外部地址配置基本正确。 |
API Key 全流程:申请、保存、调用与轮换
AI 自动化的“钥匙”就是 API Key。没有 API Key,n8n 只能做本地节点编排;有了 API Key,它才能调用大模型、网站后台、邮箱、表格、消息机器人、CRM 等外部系统。
API Key 应该放在哪里
| 位置 | 适合场景 | 是否推荐 |
| n8n Credentials | 绝大多数第三方服务认证,如 OpenAI、WordPress、Slack、Telegram | 推荐 |
| 服务器 .env 环境变量 | 需要被 Code 节点或自定义 HTTP 请求复用的通用密钥 | 谨慎推荐 |
| 工作流节点字段明文填写 | 临时测试 | 不推荐 |
| 前端网页 / 公开 Git 仓库 | 任何场景 | 禁止 |
以 n8n API Key 为例
- 登录 n8n 工作台。
- 进入 Settings → n8n API。
- 选择 Create an API key。
- 填写 Label,设置过期时间;企业版可进一步配置 Scopes。
- 复制 API Key,调用 n8n API 时放入 X-N8N-API-KEY 请求头。
curl -X GET “https://n8n.example.com/api/v1/workflows?active=true” \
-H “accept: application/json” \
-H “X-N8N-API-KEY: 你的_n8n_API_Key”
以 OpenAI API Key 为例
- 进入 OpenAI 平台的 API Key 管理页面。
- 为当前项目创建单独的 API Key,不要多人共用同一个密钥。
- 在 n8n 中新增 OpenAI 凭据,粘贴 API Key 并保存。
- 新建一个 AI 节点或 HTTP Request 节点,选择刚才保存的凭据。
- 跑一次最小请求,确认模型能返回结果。
| 安全原则:API Key 是秘密凭据。不要发给别人,不要写进浏览器端代码,不要提交到 GitHub。团队环境建议按项目创建、按用途授权、定期轮换。 |
API Key 管理清单
- 命名清楚:例如 openai-content-site-prod、wordpress-draft-writer。
- 权限最小:能创建草稿就不要给发布和管理员权限。
- 定期轮换:重要密钥至少每 3-6 个月轮换一次。
- 异常监控:API 消耗突然增大时,要能快速禁用密钥。
- 离职回收:团队成员离开后及时删除或轮换相关密钥。
第一个 AI 自动化发布工作流示例
对网站站长来说,最实用的入门工作流是“信息源 → AI 摘要/改写 → WordPress 草稿 → 人工审核发布”。它既能体现 n8n 的价值,又不会一开始就把风险放大到“全自动发布”。

图 2:AI 自动化发布工作流示例
节点设计
| 节点 | 功能 | 关键配置 |
| Schedule Trigger / RSS Trigger | 定时或订阅信息源 | 控制频率,避免过度抓取。 |
| HTTP Request | 读取网页、接口或 RSS 数据 | 设置超时、重试和请求头。 |
| AI Agent / OpenAI / LLM 节点 | 摘要、分类、标题生成、改写 | 要求输出 JSON,方便后续节点解析。 |
| Set / Code | 整理字段 | 生成 title、excerpt、content、tags。 |
| WordPress | 创建草稿 | 不要默认直接发布。 |
| Email / 飞书 / 企业微信 | 通知人工审核 | 附上草稿链接和摘要。 |
给 AI 节点的提示词模板
你是网站编辑助理。请根据输入资料,生成一篇中文网站文章草稿信息。
要求:
1. 输出 JSON,不要输出 Markdown 包裹。
2. title:爆款但不夸张,30 字以内。
3. excerpt:80-120 字摘要。
4. outline:给出 5-7 个二级标题。
5. tags:给出 5 个标签。
6. risk_notes:列出可能需要人工核实的事实。
输入资料:
{{$json[“source_text”]}}
上线前的三道保险
- 第一道:先发草稿,不自动发布。人工审核是内容站最重要的质量阀门。
- 第二道:所有外部链接、价格、版本号、法律政策、医疗金融建议都标记为待核实。
- 第三道:失败分支必须通知管理员,避免流程静默失败。
备份、升级与常见错误排查
备份 PostgreSQL 数据库
cd /opt/n8n
mkdir -p backups
sudo docker compose exec -T postgres pg_dump \
-U “$POSTGRES_USER” “$POSTGRES_DB” > backups/n8n_$(date +%F).sql
备份 n8n 持久化卷
sudo docker run –rm \
-v n8n_n8n_data:/data \
-v /opt/n8n/backups:/backup \
alpine tar czf /backup/n8n_data_$(date +%F).tar.gz -C /data .
升级 n8n
cd /opt/n8n
sudo docker compose pull
sudo docker compose down
sudo docker compose up -d
sudo docker compose logs -f n8n
| 生产建议:升级前先备份数据库和 n8n_data;团队环境建议先在测试服务器验证流程兼容性,再升级生产环境。 |
常见问题快速排查表
| 问题 | 常见原因 | 解决办法 |
| 打不开 n8n 页面 | 5678 未监听、容器未启动、服务器安全组未放行 | docker compose ps / logs,优先用反向代理访问。 |
| Webhook 显示 localhost | 未配置 WEBHOOK_URL 或 N8N_EDITOR_BASE_URL | 在 .env 中设置公开域名并重启。 |
| 凭据突然失效 | N8N_ENCRYPTION_KEY 改了或 .n8n 数据丢失 | 恢复原密钥和持久化卷。 |
| API 调用 401 | API Key 错误、过期或请求头写错 | 重新创建密钥,检查 Bearer 或 X-N8N-API-KEY。 |
| 定时任务时间不准 | TZ / GENERIC_TIMEZONE 未设置 | 统一设置为 Asia/Shanghai 或你的业务时区。 |
| 执行数据越来越大 | 历史执行记录没有清理 | 配置执行数据保留策略,定期备份和清理。 |
发布到网站时怎么排版
建议文章模块顺序
- 封面图:放在文章特色图位置,标题不要完全重复堆字。
- 开头摘要:说明读者能获得什么结果。
- 准备清单:服务器、域名、端口、账号、API Key。
- 部署步骤:命令尽量分块,避免长代码挤在一起。
- 安全提醒:单独用提示框展示,提升转化和收藏率。
- FAQ:覆盖“能不能免费”“API Key 怎么办”“Webhook 失败”等搜索问题。
推荐发布分类与标签
- 分类:保姆级教程 / 环境配置教程 / AI 自动化工作流。
- 标签:n8n、Docker、API Key、AI 自动化、工作流环境配置、Docker Compose、WordPress 自动化。
- URL 别名:ai-workflow-env-n8n-docker-api-key。
FAQ
n8n 一定要用 Docker 安装吗?
不一定。n8n 也可以用 npm 等方式安装,但 Docker 更适合大多数自托管场景,尤其是希望减少系统依赖冲突、方便迁移和升级的新手。
个人电脑可以跑 n8n 吗?
可以。学习阶段可以用 Docker Desktop 在本地跑;长期自动化、Webhook 回调和网站发文,更建议部署到云服务器并配置 HTTPS。
API Key 放在 .env 里安全吗?
比写在代码和节点明文里更好,但仍要限制服务器权限,避免把 .env 上传到公开仓库。能用 n8n Credentials 的服务,优先使用 Credentials。
为什么 Webhook 地址显示 localhost?
通常是反向代理场景下没有正确设置 WEBHOOK_URL、N8N_HOST、N8N_PROTOCOL 或 N8N_EDITOR_BASE_URL。改完环境变量后需要重启 n8n。
n8n 能不能自动发布 WordPress 文章?
可以通过 WordPress 节点或 REST API 创建文章,但建议先创建草稿并通知人工审核,不建议新手直接全自动发布。
PostgreSQL 必须安装吗?
学习测试可以先用默认 SQLite;生产环境更建议 PostgreSQL,便于备份、恢复和承载更高执行量。
N8N_ENCRYPTION_KEY 是什么?
它用于加密 n8n 数据库中的凭据。生产环境应手动设置并妥善保存,避免容器或卷迁移后历史凭据无法解密。
参考资料与依据
- n8n Docker Installation:https://docs.n8n.io/hosting/installation/docker/
- n8n Environment Variables Overview:https://docs.n8n.io/hosting/configuration/environment-variables/
- n8n Deployment Environment Variables:https://docs.n8n.io/hosting/configuration/environment-variables/deployment/
- n8n Configure Webhooks with Reverse Proxy:https://docs.n8n.io/hosting/configuration/configuration-examples/webhook-url/
- n8n API Authentication:https://docs.n8n.io/api/authentication/
- Docker Engine on Ubuntu:https://docs.docker.com/engine/install/ubuntu/
- Docker Linux post-installation steps:https://docs.docker.com/engine/install/linux-postinstall/
- OpenAI API Authentication:https://developers.openai.com/api/reference/overview/