ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

n8n智能体开发:Docker-Compose 部署配 TaoToken 统一 Key 通道

n8n智能体开发:Docker-Compose 部署配 TaoToken 统一 Key 通道 1. 为什么要在 Docker-Compose 里给 n8n 配统一 Key 通道n8n 是一个开源的工作流自动化平台你可以把它理解成「能自己写逻辑的 Zapier」拖拽节点、写几行 JS、接上大模型就能搭出一个会思考的智能体。它适合谁适合想把 AI 能力塞进日常流程、又不想被某个 SaaS 平台锁死的开发者和小团队。而 Docker-Compose 部署 n8n是本地自托管 AI 工作流最省心的方式——一条命令拉起服务数据留在自己机器上。但真正动手后很多人会卡在同一个地方模型凭据。n8n 里每个 AI 节点都要填 API Key、Base URLOpenAI 一个、Claude 一个、国产模型又一个。工作流一多Key 散落在各个节点的 Credential 里改一次要翻半天团队协作时更是灾难。我试过把 Key 写进环境变量再逐个节点引用结果节点配置里还是得手动选 Credential没省多少事。这篇就解决这个问题用 Docker-Compose 部署 n8n再通过 TaoToken 统一 Key/API 通道让所有模型调用走同一个入口。你只需要维护一份凭据n8n 里所有 AI 节点共用它。下面给出可直接复制的docker-compose.yml和.env骨架以及容器起来后验证工作流调用成功的具体动作。2. TaoToken 前置拿到统一 Key 和 API 地址TaoToken 在这里扮演的是「模型调用的统一网关」。你不需要在 n8n 里分别配置各家模型的地址和密钥而是把请求都发到 TaoToken 的 API 端点由它按模型名路由。对 n8n 来说它看到的就是一个兼容 OpenAI 协议的接口配置方式和接 OpenAI 一模一样。动手前先准备两样东西第一一个 TaoToken 账号并创建 API Key。登录官网后进入控制台在 API Keys 页面新建一个 Key复制保存。这个 Key 就是后面.env里的TAOTOKEN_API_KEY。第二确认 API 基础地址。TaoToken 的 API 端点是https://taotoken.net/api注意这里不带任何查询参数。在 n8n 的 OpenAI 类节点里Base URL 填这个地址即可n8n 会自动拼接/v1/chat/completions这类路径。提示API Key 只在创建时完整显示一次建议创建后立刻存进密码管理器。如果怀疑泄露直接在控制台吊销重建n8n 侧只需改.env里一个值。如果你还没决定用哪个模型可以先去模型对话页面试跑几个 prompt确认响应质量再写进工作流。长期跑编码类或 Agent 类工作流的话Coding Plan 的额度模型会更划算这个后面按需了解即可。3. 可复制配置docker-compose.yml 与 .env 骨架先建项目目录所有文件都放这里mkdir -p ~/n8n-taotoken cd ~/n8n-taotoken mkdir -p local-files3.1 .env 文件在项目目录创建.env填入以下内容。这里把 n8n 的基础配置和 TaoToken 凭据放在一起容器启动时自动注入# n8n 访问配置 N8N_HOSTlocalhost N8N_PORT5678 N8N_PROTOCOLhttp WEBHOOK_URLhttp://localhost:5678/ GENERIC_TIMEZONEAsia/Shanghai # n8n 基础安全 N8N_BASIC_AUTH_ACTIVEtrue N8N_BASIC_AUTH_USERadmin N8N_BASIC_AUTH_PASSWORDchange_this_password # 数据持久化加密密钥首次生成后不要改 N8N_ENCRYPTION_KEYplease_replace_with_random_32_chars # TaoToken 统一通道 TAOTOKEN_API_KEYsk-你的TaoToken密钥 TAOTOKEN_BASE_URLhttps://taotoken.net/apiN8N_ENCRYPTION_KEY用来加密存在数据库里的凭据随便生成一串 32 位随机字符即可但一旦设定就别再改否则已保存的 Credential 会解不开。N8N_BASIC_AUTH_*是给 Web 界面加一层登录本地测试可以关掉暴露到公网必须开。3.2 docker-compose.yml 文件同目录创建docker-compose.ymlservices: n8n: image: docker.n8n.io/n8nio/n8n:latest container_name: n8n restart: unless-stopped ports: - 5678:5678 env_file: - .env environment: - N8N_HOST${N8N_HOST} - N8N_PORT${N8N_PORT} - N8N_PROTOCOL${N8N_PROTOCOL} - WEBHOOK_URL${WEBHOOK_URL} - GENERIC_TIMEZONE${GENERIC_TIMEZONE} - N8N_BASIC_AUTH_ACTIVE${N8N_BASIC_AUTH_ACTIVE} - N8N_BASIC_AUTH_USER${N8N_BASIC_AUTH_USER} - N8N_BASIC_AUTH_PASSWORD${N8N_BASIC_AUTH_PASSWORD} - N8N_ENCRYPTION_KEY${N8N_ENCRYPTION_KEY} - TAOTOKEN_API_KEY${TAOTOKEN_API_KEY} - TAOTOKEN_BASE_URL${TAOTOKEN_BASE_URL} volumes: - n8n_data:/home/node/.n8n - ./local-files:/files volumes: n8n_data:这里只跑一个 n8n 容器没有引入反向代理。本地自托管、内网使用足够了要上公网再叠加 Traefik 或 Nginx 做 TLS那是另一层的事不影响本篇的 Key 通道配置。关键点在于env_file和environment两段前者把.env全部变量读进来后者显式把 TaoToken 的两个变量传进容器。这样容器内的 n8n 进程就能通过process.env.TAOTOKEN_API_KEY读到密钥你在工作流的 Code 节点里也能直接引用避免把 Key 硬编码在节点里。3.3 启动容器docker compose up -d docker compose logs -f n8n看到日志里出现Editor is now accessible via: http://localhost:5678就说明起来了。首次启动会初始化 SQLite 数据库稍等十几秒。4. 验证请求让 n8n 工作流真正调通模型容器起来只是第一步真正要验证的是「n8n 能不能通过 TaoToken 调通模型」。分两步走。4.1 在 n8n 里创建统一凭据浏览器打开http://localhost:5678用.env里的 Basic Auth 账号登录。进入 Credentials新建一个OpenAI类型的凭据TaoToken 兼容 OpenAI 协议所以直接复用这个类型API Key填你的 TaoToken KeyBase URL填https://taotoken.net/api保存后给它起个名字比如TaoToken Unified。之后所有 AI 节点都选这个凭据不再各自填 Key。4.2 用 Code 节点直接验证通道新建一个工作流加一个Code节点粘贴以下代码。它绕过 UI 凭据直接用环境变量发一次请求用来确认容器内的 Key 注入和网络都正常const apiKey $env.TAOTOKEN_API_KEY; const baseUrl $env.TAOTOKEN_BASE_URL; const response await this.helpers.httpRequest({ method: POST, url: ${baseUrl}/v1/chat/completions, headers: { Authorization: Bearer ${apiKey}, Content-Type: application/json, }, body: { model: gpt-4o-mini, messages: [{ role: user, content: 只回复两个字通了 }], max_tokens: 20, }, json: true, }); return [{ json: { reply: response.choices[0].message.content } }];点 Execute Step。如果返回{ reply: 通了 }说明从容器到 TaoToken 的整条链路是通的。如果报 401检查 Key 是否复制完整报连接超时检查容器能否访问外网。4.3 用 AI Agent 节点跑一次真实工作流Code 节点验证的是底层通道再补一个更贴近实际的拖入AI Agent节点Chat Model 选 OpenAI Chat Model凭据选刚才建的TaoToken Unified模型名填gpt-4o-mini。给 Agent 一个简单任务比如「把用户输入翻译成英文」接一个 Manual Trigger手动执行。执行成功后你会在节点输出里看到模型返回的翻译结果。到这一步n8n 智能体的模型接入就算真正跑通了——凭据统一、通道统一、后续加节点只需复用同一个 Credential。5. 本篇常见错排查容器启动后访问 5678 无响应。先看docker compose ps确认容器状态是 Up 而非 Restarting。如果是 Restarting多半是N8N_ENCRYPTION_KEY为空或.env格式有误比如等号两边多了空格。看docker compose logs n8n的报错行定位。Code 节点报$env is not defined。n8n 的 Code 节点默认沙箱不暴露process.env。需要在.env里加NODE_FUNCTION_ALLOW_BUILTIN*和NODE_FUNCTION_ALLOW_EXTERNAL*重启容器。生产环境慎用通配按需放开具体模块更安全。调用返回 404 或路径错误。检查 Base URL 是否误写成https://taotoken.net/api/v1。TaoToken 的基础地址就是https://taotoken.net/apin8n 和 OpenAI SDK 会自动补/v1/...多写一层就会 404。凭据保存后节点仍报未授权。确认 AI 节点里选的 Credential 是TaoToken Unified而不是默认的空凭据。n8n 的节点凭据是逐个选择的不会自动继承。改了.env但容器没生效。docker compose up -d不会自动重建容器读取新环境变量需要docker compose down docker compose up -d。只restart不重新读取 env_file。Webhook 地址不对导致外部触发失败。WEBHOOK_URL必须和实际访问地址一致。本地测试填http://localhost:5678/如果从另一台机器触发要改成宿主机的局域网 IP。6. 后续怎么走按场景选下一步通道打通后接下来取决于你要做什么。如果你在排障或准备接入更多模型先去 API Keys 页面管理密钥再对照接入文档确认各模型的参数差异——不同模型对max_tokens、temperature的支持范围不一样文档里有对照表。如果你想先验证某个模型适不适合你的工作流别急着写进 n8n先去模型对话页面手动跑几轮 prompt确认输出风格和稳定性再决定用哪个模型名填进节点。如果你打算长期跑编码类或 Agent 类工作流调用量大、对额度敏感可以了解 Coding Plan它的计费模型更适合高频自动化场景比按次调用更可控。本地自托管 n8n 的价值在于数据和控制权都在自己手里而统一 Key 通道让这份控制权不至于变成维护负担。把.env和docker-compose.yml存进 Git换台机器docker compose up -d就能复现整套环境——这才是自托管该有的样子。
返回列表