ARTICLE DETAIL

资讯详情

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

Linux 服务器上部署 OpenClaw 完整教程:TaoToken 统一 Key 接入与 config.toml 配置骨架

Linux 服务器上部署 OpenClaw 完整教程:TaoToken 统一 Key 接入与 config.toml 配置骨架 1. 为什么要在 Linux 服务器上跑 OpenClaw以及多 Key 管理到底痛在哪OpenClaw 是一个可以常驻在服务器上的 AI 助手网关它把模型调用、消息渠道、会话管理这些能力打包成一个本地服务你可以通过 Web UI、命令行或者飞书这类 IM 渠道跟它交互。适合谁用适合手里有一台 Linux 服务器、想让 AI 助手 7×24 小时在线、又不想每次换模型都去改一堆环境变量的开发者。但真正部署过的人都知道最烦的不是装 OpenClaw 本身而是模型 Key 的管理。你可能会同时用 Claude 做代码、用 Gemini 做多模态、用某个便宜模型做日常问答每个供应商一套 baseUrl、一套 apiKey、一套模型 ID。时间一长配置文件里散落着七八个 Key换一个就要全局搜一遍还容易把测试 Key 和生产 Key 搞混。这篇教程要解决的就是这个问题用 TaoToken 的统一 Key 接入 OpenClaw把多供应商的配置收敛成一份可复制的config.toml骨架。你跟着走完能拿到一个跑在 systemd 里的 OpenClaw 服务并且用一条 curl 命令验证 API 通道是通的。我试过在 Ubuntu 22.04 和 Debian 12 上各部署一遍下面这套流程两边都跑通了。开始之前先确认你的服务器满足基本条件Node.js 22.x 或更高、至少 2GB 内存、5GB 可用磁盘、能正常访问外网。内存这条别省OpenClaw 启动时会加载模型元数据1GB 的机器大概率会在启动阶段被 OOM Killer 干掉。2. TaoToken 前置准备拿到统一 Key 和接入地址TaoToken 在这里扮演的角色是「统一入口」——你不需要在 OpenClaw 里为每个模型供应商单独配 baseUrl 和 apiKey而是把请求都指向 TaoToken 的 API 地址用同一个 Key 去调用不同模型。对 OpenClaw 来说它只看到一个 provider配置量直接砍半。第一步打开 TaoToken 官网注册并登录https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content登录之后进控制台创建 API Key。建议按用途分 Key比如openclaw-prod、openclaw-test这样后面排查问题时能快速定位是哪个 Key 出的问题。创建完把 Key 复制下来格式通常是sk-开头的一串字符只显示一次丢了就得重建。https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleKey 管理页面在这里后面如果要轮换或者禁用某个 Key 也在这个入口操作https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keys接入地址这块要记清楚TaoToken 的 API 根地址是https://taotoken.net/api注意这个地址不带任何查询参数。OpenClaw 配置里的baseUrl填这个就行具体到某个接口路径由 OpenClaw 自己拼接。注意不要把 Key 直接写进会提交到 Git 的文件里。下面配置骨架里我用环境变量占位实际部署时通过 systemd 的Environment注入这样配置文件可以安全地放进版本管理。如果你后面想先验证模型能不能正常对话可以先用模型对话页面测一下确认 Key 有效再往下走https://taotoken.net/model-chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chat3. 可复制的 config.toml 配置骨架OpenClaw 支持 TOML 格式的配置文件默认路径是~/.openclaw/config.toml。下面这份骨架是我实际在用的你可以直接复制只需要替换api_key那一行的环境变量引用方式。先创建配置目录mkdir -p ~/.openclaw touch ~/.openclaw/config.toml然后写入以下内容# ~/.openclaw/config.toml # OpenClaw 主配置骨架 —— TaoToken 统一 Key 接入 [gateway] mode local port 18789 bind loopback # token 建议用 openclaw dashboard --no-open 生成后回填 auth_token ${OPENCLAW_GATEWAY_TOKEN} [providers.taotoken] # TaoToken 统一接入地址不带查询参数 base_url https://taotoken.net/api api_key ${TAOTOKEN_API_KEY} auth api-key api anthropic-messages # 模型清单按需增删id 必须与 TaoToken 侧支持的模型名一致 [[providers.taotoken.models]] id claude-sonnet-4-5-20250929 name Claude Sonnet 4.5 input [text] context_window 200000 max_tokens 8192 [[providers.taotoken.models]] id claude-haiku-4-5-20251001 name Claude Haiku 4.5 input [text] context_window 200000 max_tokens 8192 [[providers.taotoken.models]] id gemini-3-pro name Gemini 3 Pro input [text, image] context_window 1000000 max_tokens 8192 [agents.defaults.model] primary taotoken/claude-sonnet-4-5-20250929 fallback taotoken/claude-haiku-4-5-20251001 [channels.feishu] enabled false app_id ${FEISHU_APP_ID} app_secret ${FEISHU_APP_SECRET} [logging] level info format json几个关键点解释一下。base_url必须是https://taotoken.net/api不要自作主张加/v1之类的后缀OpenClaw 会按api字段声明的协议自己去拼路径。api anthropic-messages表示走 Anthropic Messages 协议这是目前兼容性最好的选择如果你要调 Gemini 的原生协议把对应 provider 的api改成google-genai即可但同一个 provider 块里只能声明一种协议混用要拆成两个 provider。primary和fallback的写法是provider名/模型id中间用斜杠分隔。这个格式写错了 OpenClaw 不会报错但会在调用时静默失败所以配完一定要用openclaw models list确认。环境变量通过 systemd 注入先创建 env 文件sudo mkdir -p /etc/openclaw sudo tee /etc/openclaw/env /dev/null EOF TAOTOKEN_API_KEYsk-你的实际Key OPENCLAW_GATEWAY_TOKEN你的网关Token FEISHU_APP_IDcli_xxx FEISHU_APP_SECRETxxx EOF sudo chmod 600 /etc/openclaw/env权限设成 600 很重要这个文件里有明文 Key不能让其他用户读到。4. 安装 OpenClaw 并接入 systemdNode.js 22 的安装我用 nvm比直接 apt 装省心版本切换也方便curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash source ~/.bashrc nvm install 22 nvm use 22 node -vnode -v应该输出v22.x.x。然后全局装 OpenClawnpm install -g openclaw openclaw --version版本号能正常打印就说明装好了。接下来创建 systemd 用户级服务这样不用 root 也能管理mkdir -p ~/.config/systemd/user nano ~/.config/systemd/user/openclaw-gateway.service写入以下内容[Unit] DescriptionOpenClaw Gateway Afternetwork.target [Service] Typesimple EnvironmentFile/etc/openclaw/env ExecStart/usr/bin/openclaw gateway run --bind loopback --port 18789 --force Restartalways RestartSec10 StandardOutputjournal StandardErrorjournal [Install] WantedBydefault.target注意ExecStart里的路径要跟你which openclaw的输出一致nvm 装的可能是/home/你的用户名/.nvm/versions/node/v22.x.x/bin/openclaw写错了服务起不来。启用并启动systemctl --user daemon-reload systemctl --user enable openclaw-gateway.service systemctl --user start openclaw-gateway.service systemctl --user status openclaw-gateway.service状态里看到active (running)就对了。如果服务器重启后想让服务自动起来还要开 lingeringsudo loginctl enable-linger $USER5. 验证 API 通道连通性具体命令与预期输出服务起来不代表模型通道就通了这一步必须单独验证。先确认模型列表能正确加载openclaw models list预期输出里应该能看到taotoken/claude-sonnet-4-5-20250929和taotoken/claude-haiku-4-5-20251001如果只显示默认模型说明config.toml没被读到检查文件路径和 TOML 语法。然后用 curl 直接打 TaoToken 的接口验证 Key 和网络都正常curl -sS -X POST https://taotoken.net/api/v1/messages \ -H x-api-key: $TAOTOKEN_API_KEY \ -H anthropic-version: 2023-06-01 \ -H content-type: application/json \ -d { model: claude-haiku-4-5-20251001, max_tokens: 64, messages: [{role: user, content: reply with OK only}] }预期返回是一段 JSONcontent数组里能看到模型回复的文本。如果返回 401说明 Key 不对返回 404检查 URL 路径连接超时则是服务器出网有问题。最后通过 OpenClaw 自身发一条测试消息确认整条链路打通openclaw chat --model taotoken/claude-haiku-4-5-20251001 --message ping预期输出里会带上模型返回的内容。到这一步你的 OpenClaw 就已经能通过 TaoToken 统一 Key 正常调模型了。如果你打算长期跑编码类任务或者接 Agent建议看一下 Coding Plan额度模型和按量计费不太一样长期用更划算https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-plan6. 本篇常见错误排查报错一openclaw models list只显示默认模型九成是config.toml路径不对或者 TOML 语法有误。先确认文件在~/.openclaw/config.toml然后用openclaw config validate检查语法。如果报unknown field多半是字段名拼错了比如把base_url写成baseUrl。报错二服务启动后立刻退出journalctl 里看到EnvironmentFile not foundsystemd 的EnvironmentFile路径写错了或者文件权限不对导致服务用户读不到。确认/etc/openclaw/env存在且chmod 600后属主是当前用户。报错三curl 返回 401 UnauthorizedKey 无效或者没被正确注入。先在 shell 里echo $TAOTOKEN_API_KEY确认变量有值如果为空说明EnvironmentFile没生效。注意 systemd 的EnvironmentFile不会自动 export 到你的交互 shell手动测试时要先source /etc/openclaw/env。报错四调用模型时返回model not foundconfig.toml里声明的模型 id 跟 TaoToken 侧实际支持的名字不一致。去模型对话页面确认一下可用模型列表把 id 改成完全一致的值。这个错误 OpenClaw 不会在启动时报只在调用时暴露所以配完一定要跑一次实际请求。报错五端口 18789 被占用lsof -i :18789找到占用进程后要么 kill 掉要么改config.toml里的port和 systemd 服务里的--port参数两处必须一致。排查时最有用的一条命令是实时看日志journalctl --user -u openclaw-gateway.service -f大部分配置问题都会在这里打出具体的错误行号比盲猜快得多。接入相关的完整参数说明可以对照文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdoc整套流程跑下来最花时间的其实是环境变量注入和 systemd 路径这两块配置骨架本身复制粘贴就能用。建议第一次部署时把openclaw config validate和 curl 验证这两步当成固定动作能省掉后面大量的返工。
返回列表