ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

【AI工作流搭建n8n】—— Docker + PostgreSQL 生产环境部署全攻略:MCP 集成与 Skills 技能实战(TaoToken 统一 Key 接入篇)

【AI工作流搭建n8n】—— Docker + PostgreSQL 生产环境部署全攻略:MCP 集成与 Skills 技能实战(TaoToken 统一 Key 接入篇) 1. 为什么生产环境部署 n8n 必须上 Docker PostgreSQLn8n 是一个开源的工作流自动化平台你可以把它理解成「可以自己部署的 Zapier」——把不同服务用节点连起来定时或触发式地跑任务。它支持 400 多个集成节点原生带 LangChain、OpenAI 节点还能通过 MCP 协议让 Claude、GPT 这类 AI 直接调用你的工作流。适合谁适合需要数据不出内网、又想把 AI 能力接进业务流程的团队和个人开发者。我试过用 SQLite 跑 n8n 做本地 Demo零配置确实爽但工作流一多、并发一上来就锁表卡顿。生产环境直接上 PostgreSQL别犹豫。Docker 负责把 n8n 和 PostgreSQL 的依赖、版本、网络隔离干净PostgreSQL 负责稳定并发和可靠备份。这套组合的核心检索词就是「n8n Docker PostgreSQL 生产环境部署」本文会把 MCP 集成和 Skills 技能模块一起讲透。架构选型对照如下方案适用场景优势劣势Docker SQLite本地测试、Demo零配置开箱即用单文件数据库并发差Docker PostgreSQL生产环境稳定、支持并发、易于备份需要额外配置Kubernetes PostgreSQL大规模部署高可用、自动扩缩容复杂度高本文交付的可复制内容包含docker-compose 配置、PostgreSQL 初始化脚本、MCP 服务注册参数、Skills 调用示例以及容器健康检查和端到端工作流触发验证。AI 能力接入部分统一走 TaoToken 的 Key/API 通道这样 MCP 服务和 Skills 技能模块不用各自维护一套密钥。2. TaoToken 前置准备统一 Key 接入 MCP 与 Skills在讲配置之前先把 AI 通道这件事说清楚。n8n 里的 MCP 集成和 Skills 技能模块本质上都要调用大模型或外部 AI 服务。如果每个节点单独配 Key密钥管理会变成灾难。TaoToken 提供统一的 Key/API 通道你只需要一个 Key就能在 n8n 的多个 AI 节点、MCP 服务、Skills 模块里复用。先拿到 Key。访问官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 注册后进入控制台在 API Keys 页面创建一个新 Key。控制台地址是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite API Keys 管理页是 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 。创建时建议按用途命名比如n8n-mcp-prod方便后续轮换。拿到 Key 后你需要记住三个核心参数后面配置 MCP 和 Skills 都会用到Base URLhttps://taotoken.net/apiAPI Key你刚创建的那串密钥Model ID按需选择比如对话类、代码类模型如果你不确定该选哪个模型可以先去模型对话页 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chatutm_campaignrewrite 试跑几句确认响应正常再写进配置。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 里面有各语言的调用示例。这里有个关键点n8n 的 MCP 服务注册时认证头用的是 Bearer Token这个 Token 既可以是 n8n 自己生成的 MCP Access Token也可以是你在 n8n 里配置的 AI 节点凭证。为了让 MCP 调用的 AI 能力走统一通道建议在 n8n 的凭证管理里新建一个「Header Auth」凭证把 TaoToken 的 Key 填进去然后在 AI 节点里引用这个凭证。这样 Skills 技能模块和 MCP 服务共享同一个 Key轮换时只改一处。如果你后续要做长期编码类或 Agent 类工作流可以关注 Coding Plan https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 它更适合高频调用的场景。但本文的部署链路用标准 API Key 就够了。3. 可复制配置docker-compose 与 PostgreSQL 初始化这一节是全文的核心所有配置都可以直接复制。先建项目目录mkdir -p n8n-prod/{local-files,backups,initdb} cd n8n-prod3.1 docker-compose.yml 完整配置services: postgres: image: postgres:15 container_name: n8n-postgres restart: always environment: POSTGRES_DB: n8n POSTGRES_USER: n8n POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-n8n_password} volumes: - postgres_data:/var/lib/postgresql/data - ./initdb:/docker-entrypoint-initdb.d healthcheck: test: [CMD-SHELL, pg_isready -U n8n] interval: 10s timeout: 5s retries: 5 n8n: image: docker.n8n.io/n8nio/n8n container_name: n8n restart: always ports: - 5678:5678 environment: - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONStrue - GENERIC_TIMEZONEAsia/Shanghai - TZAsia/Shanghai - NODE_ENVproduction - NODE_EXCLUDE[] - N8N_ENABLE_EXECUTE_COMMANDtrue - N8N_BLOCK_ENV_VARS_IN_EXECUTE_COMMANDfalse - N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGEtrue - DB_TYPEpostgresdb - DB_POSTGRESDB_DATABASEn8n - DB_POSTGRESDB_HOSTpostgres - DB_POSTGRESDB_PORT5432 - DB_POSTGRESDB_USERn8n - DB_POSTGRESDB_PASSWORD${POSTGRES_PASSWORD:-n8n_password} - DB_POSTGRESDB_SCHEMApublic - N8N_BASIC_AUTH_ACTIVEtrue - N8N_BASIC_AUTH_USERadmin - N8N_BASIC_AUTH_PASSWORD${N8N_PASSWORD:-secure_password} - N8N_MCP_MANAGED_BY_ENVtrue - N8N_MCP_ACCESS_ENABLEDtrue - N8N_COMMUNITY_PACKAGES_MANAGED_BY_ENVtrue - N8N_COMMUNITY_PACKAGES[{name:n8n-nodes-redis,version:1.0.0}] volumes: - n8n_data:/home/node/.n8n - ./local-files:/files depends_on: postgres: condition: service_healthy volumes: postgres_data: driver: local n8n_data: driver: local3.2 .env 环境变量POSTGRES_PASSWORDyour_secure_password_here N8N_PASSWORDyour_n8n_password_here GENERIC_TIMEZONEAsia/Shanghai TZAsia/Shanghai TAOTOKEN_API_KEYsk-your-taotoken-key-here TAOTOKEN_BASE_URLhttps://taotoken.net/api3.3 PostgreSQL 初始化脚本在initdb/目录下创建01-init.sql用于初始化扩展和索引优化-- 启用 UUID 扩展n8n 部分节点会用到 CREATE EXTENSION IF NOT EXISTS uuid-ossp; -- 启用 pg_trgm加速工作流名称模糊搜索 CREATE EXTENSION IF NOT EXISTS pg_trgm; -- 为执行记录表创建索引n8n 自动建表后生效 -- 这里只做扩展准备表结构由 n8n 首次启动时迁移3.4 启动服务docker compose up -d docker compose ps docker compose logs -f n8n成功标志访问http://localhost:5678看到 n8n 登录界面。用.env里的N8N_BASIC_AUTH_USER和N8N_BASIC_AUTH_PASSWORD登录。3.5 MCP 服务注册参数登录 n8n 后进入 Settings API Access Tokens生成一个 MCP Token。然后在 Claude Desktop 的claude_desktop_config.json里注册{ mcpServers: { n8n: { command: npx, args: [ mcp-remote, http://localhost:5678/mcp-server/http, --header, Authorization: Bearer YOUR_MCP_TOKEN ], env: { AUTH_TOKEN: YOUR_MCP_TOKEN, TAOTOKEN_API_KEY: sk-your-taotoken-key-here, TAOTOKEN_BASE_URL: https://taotoken.net/api } } } }Claude CLI 用户用这条命令claude mcp add --transport http n8n-mcp http://localhost:5678/mcp-server/http \ --header Authorization: Bearer YOUR_MCP_TOKEN3.6 Skills 技能模块调用示例Skills 在 n8n 里体现为社区节点和可复用的子工作流。安装社区节点后在 AI 节点里引用 TaoToken 凭证。以 HTTP Request 节点调用 TaoToken 为例{ method: POST, url: https://taotoken.net/api/v1/chat/completions, headers: { Authorization: Bearer {{$credentials.taotokenApiKey}}, Content-Type: application/json }, body: { model: your-model-id, messages: [ {role: user, content: {{$json.prompt}}} ] } }在 n8n 凭证管理里新建「Header Auth」凭证Name 填AuthorizationValue 填Bearer sk-your-taotoken-key-here然后在节点里引用。这样 MCP 和 Skills 共享同一个 Key。4. 验证请求容器健康检查与端到端工作流触发配置写完不算完得验证。这一节给你完整的验证动作从容器健康到工作流触发。4.1 容器健康检查# 检查两个容器是否都 healthy docker compose ps # 单独检查 PostgreSQL 就绪 docker compose exec postgres pg_isready -U n8n # 检查 n8n 数据库连接 docker compose exec n8n env | grep DB_预期输出n8n-postgres和n8n状态都是Up (healthy)pg_isready返回accepting connections。4.2 验证 MCP 连接在 Claude 里输入请列出我所有的 n8n 工作流如果返回工作流列表哪怕是空的说明 MCP 集成成功。如果报错看第 5 节的排查。4.3 端到端工作流触发验证在 n8n 里新建一个测试工作流添加 MCP Trigger 节点认证方式选 Access Token添加一个 HTTP Request 节点指向 TaoToken API添加一个 Set 节点把响应结果整理成字段保存并激活工作流然后用 curl 触发curl -X POST http://localhost:5678/webhook-test/your-webhook-path \ -H Content-Type: application/json \ -d {prompt: 用一句话解释什么是工作流自动化}预期结果n8n 执行记录里出现一次成功执行HTTP Request 节点返回 TaoToken 的模型响应Set 节点输出整理后的字段。如果执行记录显示绿色对勾端到端链路就通了。4.4 验证 Skills 社区节点# 进入容器确认社区节点已安装 docker compose exec n8n sh ls /home/node/.n8n/nodes exit如果看到n8n-nodes-redis等目录说明环境变量安装生效。在 n8n 界面搜索节点名能搜到就说明 Skills 模块可用。5. 本篇常见错排查401、local proxy failed、reading choices、OAuth部署过程中最容易卡在这几类报错逐个对照。5.1 401 Unauthorized症状MCP 调用或 HTTP Request 节点返回 401。原因通常是 Key 没填对或者 Bearer 前缀漏了。检查 n8n 凭证里的 Value 是不是Bearer sk-xxx格式注意Bearer和 Key 之间有一个空格。如果是 MCP Token 报 401去 Settings API Access Tokens 重新生成确认 Token 没有过期。5.2 local proxy failed症状MCP 客户端连接 n8n 时报local proxy failed或连接被拒。原因一般是 n8n 容器没起来或者端口没映射。先docker compose ps确认 n8n 是Up状态再lsof -i :5678确认端口没被占用。如果 n8n 日志里有ECONNREFUSED说明 PostgreSQL 还没就绪等 healthcheck 通过再试。5.3 reading choices 报错症状调用模型接口后报reading choices或Cannot read properties of undefined。这是响应结构没对上。TaoToken 的 API 返回是标准 OpenAI 兼容格式choices[0].message.content才是正文。检查你的 HTTP Request 节点有没有正确解析 JSON或者在 Set 节点里用{{$json.choices[0].message.content}}取值。如果返回体是空的先确认 Model ID 填对了。5.4 OAuth 相关报错症状配置某些社区节点时提示 OAuth 回调失败或 redirect_uri 不匹配。这类问题多半出在回调地址上。本地开发用http://localhost:5678/rest/oauth2-credential/callback生产环境必须换成你的域名并配 HTTPS。如果你在 n8n 里配了N8N_HOST和WEBHOOK_URL确保这两个值和实际访问地址一致否则 OAuth 回调会对不上。5.5 数据库连接失败症状日志显示ECONNREFUSED或password authentication failed。docker compose exec postgres pg_isready -U n8n docker compose exec n8n env | grep DB_常见原因是.env里的POSTGRES_PASSWORD和 docker-compose 里引用的不一致或者 PostgreSQL 数据卷是旧的、密码没更新。改密码后需要docker compose down -v删卷重建注意这会清数据生产环境先备份。5.6 社区节点安装失败症状安装社区节点提示权限错误。确认 docker-compose 里有这三行- N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGEtrue - N8N_ENABLE_EXECUTE_COMMANDtrue - N8N_COMMUNITY_PACKAGES_MANAGED_BY_ENVtrue改完环境变量必须docker compose down docker compose up -d重建容器restart不生效。6. 长期运行建议与统一 Key 的接入入口部署跑通只是开始长期运行还有几件事要做。备份脚本建议按 excerpt 里的思路写成backup.sh用pg_dump导数据库、tar打包数据卷挂到 crontab 每天凌晨跑一次。更新镜像前必须先备份docker compose down docker compose up -d重建别用down -v。MCP 和 Skills 的 Key 统一走 TaoToken 之后轮换只需要改一处凭证。如果你后续要接 Claude Code 做编码类 Agent可以看 ClaudeCodeAnthropic 接入文档 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentclaudecodeutm_campaignrewrite 里面有针对编码场景的配置说明。需要管理多个 Key 或查看用量去控制台 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite 。高频调用或长期 Agent 工作流Coding Plan https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 更划算。最后提醒一句生产环境必须配 HTTPSMCP 的 Access Token 别硬编码在配置文件里用环境变量注入。工作流设计才是真正花时间的地方部署这步配置写好、一键启动剩下的就是调试节点逻辑了。
返回列表