1. 为什么要在 Linux 上给 OpenClaw 接统一 Key 通道
OpenClaw 是一个跑在本地或服务器上的 AI Agent 网关,它本身不绑定某一家模型服务,而是通过配置去调用外部大模型接口。你在 Linux 上把它部署起来之后,真正决定它能不能干活、干活稳不稳的,其实是后面那层模型通道。很多人卡在部署完成、Control UI 能打开,但一发消息就报鉴权失败或者超时,问题基本都出在 Key 和 Base URL 这一层。
这篇手册面向的是已经在 Linux 上折腾 OpenClaw 的开发者,把常规安装、Docker、Docker Compose 三条部署路径都走一遍,重点不是重复官方安装步骤,而是每一步之后怎么把 TaoToken 的统一 Key/API 通道接进去。TaoToken 在这里扮演的角色是一个统一的模型调用入口,你拿到一个 Key,配好 Base URL,OpenClaw 就能通过它去请求背后的模型,不用在多个厂商的 Key 之间来回切换。官网入口在 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 地址是 https://taotoken.net/api ,这两个地址后面配置里会反复用到。
适合谁看:已经在 Ubuntu、Debian 或者 CentOS 上装过 OpenClaw,或者正准备装,并且希望把模型调用收敛到一个统一通道的人。如果你还没拿到 Key,先去控制台建一个,后面所有配置都围绕它展开。整篇的节奏是:先讲清楚三种部署方式各自怎么落地,再给出可复制的 config.toml 和 settings.json 骨架,最后用连通性命令验证调用真的生效了。
2. 部署前的准备:TaoToken Key 与系统要求
2.1 拿到统一 Key 和 API 地址
在开始装 OpenClaw 之前,先把 TaoToken 这边的信息准备好。你需要两样东西:一个 API Key,一个 Base URL。Key 在控制台的 API Keys 页面创建,地址是 https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。创建的时候给它起个能认出来的名字,比如 openclaw-linux,方便以后轮换或者吊销。
Base URL 统一用 https://taotoken.net/api ,注意这个地址后面不要多加斜杠,也不要在末尾拼 /v1,OpenClaw 的配置里会自己处理路径拼接。我见过有人手动补成 /api/v1 结果 404,这个坑后面排障章节会再提。
注意:Key 只在创建时完整显示一次,复制下来存到密码管理器或者临时环境变量里,别直接写进会提交到 Git 的文件。
2.2 系统与依赖要求
三种部署方式对系统的要求不完全一样,先对照一下自己的机器:
| 项目 | 常规安装 | Docker | Docker Compose |
|---|---|---|---|
| 操作系统 | Ubuntu 20.04+ / Debian 11+ / CentOS 等 | 同左 | 同左 |
| Node.js | 24 推荐,22.19+ 可用 | 不需要 | 不需要 |
| Docker | 不需要 | Engine + Compose v2 | Engine + Compose v2 |
| 内存 | ≥ 1 GB | 本地构建镜像 ≥ 2 GB | 本地构建镜像 ≥ 2 GB |
| 磁盘 | 预留配置与日志空间 | 预留镜像空间 | 预留镜像与卷空间 |
默认端口记住两个:Gateway 是 18789,Bridge 是 18790。后面健康检查和 Control UI 都走 18789。
2.3 环境变量先摆好
不管走哪条路,建议先把 Key 和地址放进环境变量,避免散落在各个配置文件里。在 ~/.bashrc 或者一个单独的 env 文件里写:
export TAOTOKEN_API_KEY="sk-你的Key" export TAOTOKEN_BASE_URL="https://taotoken.net/api"改完执行 source ~/.bashrc 让它生效。Docker 和 Compose 场景下,这些变量会通过 compose 的 environment 段传进容器,所以命名保持一致能省很多事。
3. 方式一:常规安装并接入 TaoToken
3.1 安装 OpenClaw
常规安装适合本机开发或者单机调试。一键脚本最省事:
curl -fsSL https://openclaw.ai/install.sh | bash如果你不想走交互式引导,加个参数跳过:
curl -fsSL https://openclaw.ai/install.sh | bash -s -- --no-onboard不想依赖系统 Node 的话,用本地 prefix 安装,OpenClaw 和 Node 都会装到 ~/.openclaw 下面:
curl -fsSL https://openclaw.ai/install-cli.sh | bash也可以用 npm、pnpm 或 bun 全局装:
npm install -g openclaw@latest openclaw onboard --install-daemon装完先确认版本和健康状态:
openclaw --version openclaw doctor openclaw gateway status3.2 配置 config.toml 接入统一通道
OpenClaw 的模型通道配置集中在 config.toml 里。常规安装下它一般在 ~/.openclaw/config.toml。下面是一个可以直接改的骨架,把 provider 指向 TaoToken:
[gateway] mode = "local" bind = "lan" port = 18789 [providers.taotoken] type = "openai-compatible" base_url = "https://taotoken.net/api" api_key = "${TAOTOKEN_API_KEY}" default_model = "claude-sonnet-4-20250514" [agents.default] provider = "taotoken" model = "claude-sonnet-4-20250514"几个关键点解释一下。type 用 openai-compatible,因为 TaoToken 的接口是兼容 OpenAI 调用格式的,OpenClaw 里选这个类型就能直接对接。base_url 写 https://taotoken.net/api ,不要带尾斜杠。api_key 用 ${TAOTOKEN_API_KEY} 引用环境变量,这样配置文件本身可以安全地放进版本管理。default_model 填你实际要用的模型名,具体可用列表在模型对话页面能看到,地址是 https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。
3.3 settings.json 补充运行时参数
有些运行时参数放在 settings.json 里更顺手,路径通常是 ~/.openclaw/settings.json。骨架如下:
{ "gateway": { "token": "${OPENCLAW_GATEWAY_TOKEN}", "allowedOrigins": [ "http://localhost:18789", "http://127.0.0.1:18789" ] }, "providers": { "taotoken": { "baseUrl": "https://taotoken.net/api", "apiKeyEnv": "TAOTOKEN_API_KEY", "timeoutMs": 60000, "maxRetries": 2 } } }timeoutMs 给到 60 秒,是因为有些模型首 token 返回慢,设太短会误判成失败。maxRetries 设 2 次,网络抖动时能自动重试,但别设太大,否则真出错时会等很久。
3.4 启动守护进程并验证
配置写好后,装守护进程让它开机自启:
openclaw onboard --install-daemonLinux 和 WSL2 下会创建 systemd user service。然后跑连通性检查:
curl -fsS http://127.0.0.1:18789/healthz返回 ok 之类的健康标识就说明 Gateway 起来了。接着验证模型通道是否真的通,用 OpenClaw 自带的诊断:
openclaw doctor --provider taotoken如果这一步返回模型列表或者成功响应,说明 Key 和 Base URL 都对了。浏览器打开 http://127.0.0.1:18789/ ,在 Settings 里粘贴 Gateway Token,就能进 Control UI 发消息测试。
4. 方式二:Docker 部署并接入 TaoToken
4.1 前置检查
Docker 方式适合不想污染宿主机环境,或者在 VPS 上做隔离运行的场景。先确认 Docker 和 Compose v2 都在:
docker --version docker compose version两个命令都能输出版本号再往下走。
4.2 用官方 setup 脚本拉起
克隆仓库后执行官方脚本:
git clone https://github.com/openclaw/openclaw.git cd openclaw ./scripts/docker/setup.sh小内存 VPS 强烈建议用预构建镜像,避免本地构建时 OOM:
export OPENCLAW_IMAGE="ghcr.io/openclaw/openclaw:latest" ./scripts/docker/setup.sh脚本会自动拉镜像、跑交互式 onboarding、生成 .env 和 Gateway Token,最后用 Compose 把 Gateway 启动起来。
4.3 把 TaoToken 配置注入容器
Docker 场景下配置目录是 bind-mount 进容器的,所以你在宿主机改 ~/.openclaw/config.toml,容器里立刻生效。config.toml 的内容和 3.2 节一样,重点是环境变量要传进去。在仓库根目录的 .env 文件里加:
TAOTOKEN_API_KEY=sk-你的Key TAOTOKEN_BASE_URL=https://taotoken.net/api OPENCLAW_GATEWAY_TOKEN=你生成的Token然后在 docker-compose.yml 的 openclaw-gateway 服务 environment 段引用:
environment: HOME: /home/node OPENCLAW_GATEWAY_TOKEN: ${OPENCLAW_GATEWAY_TOKEN} TAOTOKEN_API_KEY: ${TAOTOKEN_API_KEY} TAOTOKEN_BASE_URL: ${TAOTOKEN_BASE_URL}这样容器里的 config.toml 用 ${TAOTOKEN_API_KEY} 就能取到值。
4.4 手动 Docker 流程(可选)
如果你想完全手动控制,不用 setup 脚本,可以这样:
docker build -t openclaw:local -f Dockerfile . docker compose run --rm --no-deps --entrypoint node openclaw-gateway \ dist/index.js onboard --mode local --no-install-daemon docker compose up -d openclaw-gateway启动后拿 dashboard 链接:
docker compose run --rm openclaw-cli dashboard --no-open4.5 健康检查
Docker 下有两个检查端点,liveness 和 readiness 分开:
curl -fsS http://127.0.0.1:18789/healthz curl -fsS http://127.0.0.1:18789/readyzhealthz 通说明进程活着,readyz 通说明依赖都就绪了。如果 healthz 通但 readyz 不通,多半是模型通道没配好,回去检查 config.toml 里的 base_url 和 Key。
5. 方式三:Docker Compose 生产部署与统一通道
5.1 标准 Compose 结构
官方 docker-compose.yml 里有两个服务,分工明确:
| 服务 | 作用 |
|---|---|
| openclaw-gateway | 常驻 Gateway,对外暴露 18789/18790 |
| openclaw-cli | 一次性 CLI 容器,执行管理命令 |
核心结构长这样:
services: openclaw-gateway: image: ${OPENCLAW_IMAGE:-openclaw:local} environment: HOME: /home/node OPENCLAW_GATEWAY_TOKEN: ${OPENCLAW_GATEWAY_TOKEN} TAOTOKEN_API_KEY: ${TAOTOKEN_API_KEY} TAOTOKEN_BASE_URL: ${TAOTOKEN_BASE_URL} volumes: - ${OPENCLAW_CONFIG_DIR:-~/.openclaw}:/home/node/.openclaw - ${OPENCLAW_WORKSPACE_DIR:-~/.openclaw/workspace}:/home/node/.openclaw/workspace ports: - "${OPENCLAW_GATEWAY_PORT:-18789}:18789" - "${OPENCLAW_BRIDGE_PORT:-18790}:18790" restart: unless-stopped command: ["node", "dist/index.js", "gateway", "--bind", "lan", "--port", "18789"] openclaw-cli: image: ${OPENCLAW_IMAGE:-openclaw:local} network_mode: "service:openclaw-gateway" volumes: - ${OPENCLAW_CONFIG_DIR:-~/.openclaw}:/home/node/.openclaw - ${OPENCLAW_WORKSPACE_DIR:-~/.openclaw/workspace}:/home/node/.openclaw/workspace entrypoint: ["node", "dist/index.js"]完整文件以官方仓库为准,这里只是把和 TaoToken 相关的环境变量标出来。
5.2 一键启动
cd openclaw export OPENCLAW_IMAGE="ghcr.io/openclaw/openclaw:latest" ./scripts/docker/setup.sh5.3 常用 Compose 命令
docker compose up -d openclaw-gateway docker compose logs -f openclaw-gateway docker compose down docker compose run --rm openclaw-cli channels add --channel telegram --token "<token>" docker compose run --rm openclaw-cli devices list docker compose run --rm openclaw-cli devices approve <requestId>5.4 环境变量速查
| 变量 | 用途 |
|---|---|
| OPENCLAW_IMAGE | 使用远程预构建镜像 |
| OPENCLAW_GATEWAY_TOKEN | Gateway 认证 Token |
| OPENCLAW_CONFIG_DIR | 配置目录挂载路径 |
| OPENCLAW_WORKSPACE_DIR | 工作区挂载路径 |
| TAOTOKEN_API_KEY | 统一通道 Key |
| TAOTOKEN_BASE_URL | 统一通道地址 |
| OPENCLAW_SANDBOX | 启用 Agent Sandbox(1/true) |
5.5 持久化与权限
容器 bind-mount 两个路径,替换容器后数据保留:~/.openclaw 存配置和 openclaw.json,~/.openclaw/workspace 存 Agent 工作区。容器以 uid 1000(node)运行,宿主机挂载目录权限要对:
sudo chown -R 1000:1000 ~/.openclaw权限不对会报 EACCES,这是 Compose 部署里最常见的坑之一。
5.6 启用 Agent Sandbox
想让 Agent 工具在独立容器里执行,加个环境变量:
export OPENCLAW_SANDBOX=1 ./scripts/docker/setup.shSandbox 在独立 Docker 容器中跑 Agent 工具,Gateway 仍在主容器里,隔离性更好。
6. 验证请求与成功结果
配置写完不算完,得确认调用真的生效。分三层验证。
第一层,Gateway 健康:
curl -fsS http://127.0.0.1:18789/healthz curl -fsS http://127.0.0.1:18789/readyz第二层,直接打 TaoToken 的接口,确认 Key 和地址本身没问题:
curl -fsS https://taotoken.net/api/v1/models \ -H "Authorization: Bearer $TAOTOKEN_API_KEY"返回模型列表 JSON 就说明 Key 有效、地址正确。如果这里就失败,先别折腾 OpenClaw,去控制台确认 Key 状态。
第三层,通过 OpenClaw 发一条测试消息。在 Control UI 里发一句简单的话,或者在 CLI 容器里执行:
docker compose run --rm openclaw-cli agents run --message "ping"成功的话你会看到模型返回的文本,日志里也能看到请求打到了 https://taotoken.net/api 。实测下来,三层都通之后,OpenClaw 的模型调用就稳定了。
7. 本篇常见错误排查
7.1 构建镜像 OOM(exit 137)
1 GB 内存的 VPS 本地构建镜像会失败。改用预构建镜像:
export OPENCLAW_IMAGE="ghcr.io/openclaw/openclaw:latest" ./scripts/docker/setup.sh7.2 EACCES 权限错误
容器以 uid 1000 运行,宿主机目录属主不对就会报错:
sudo chown -R 1000:1000 ~/.openclaw7.3 Gateway 重启循环
检查 gateway.bind 的值,用 lan 或 loopback,不要写 0.0.0.0 作为 bind 值。写错了 Gateway 起不来会一直重启。
7.4 模型调用 404 或鉴权失败
最常见的是 base_url 写错。正确写法是 https://taotoken.net/api ,不要补 /v1,不要加尾斜杠。鉴权失败则检查环境变量有没有真的传进容器,用 docker compose exec openclaw-gateway env | grep TAOTOKEN 确认。
7.5 Docker 内访问宿主机 Ollama/LM Studio
如果你同时用本地模型,容器内不能用 127.0.0.1,要换成 host.docker.internal:
| Provider | Docker 内 URL |
|---|---|
| Ollama | http://host.docker.internal:11434 |
| LM Studio | http://host.docker.internal:1234 |
宿主机服务需监听 0.0.0.0。
7.6 openclaw 命令找不到(常规安装)
npm 全局 bin 不在 PATH 里:
export PATH="$(npm prefix -g)/bin:$PATH" echo 'export PATH="$(npm prefix -g)/bin:$PATH"' >> ~/.bashrc8. 按场景选路径并接入统一通道
三条路走下来,选择其实很清楚。本机开发调试,用常规安装,curl install.sh 或者 npm 全局装,改 config.toml 最快。单容器验证或者 VPS 隔离,用 Docker 加预构建镜像,省内存也省心。生产环境直接上 Docker Compose,配合预构建 GHCR 镜像和持久化卷,升级就是 compose pull 加 up。
不管哪条路,接入 TaoToken 的动作是一样的:拿到 Key,把 base_url 指向 https://taotoken.net/api ,在 config.toml 里配好 provider,环境变量传进容器,最后用 healthz、readyz 和模型列表接口三层验证。Key 在 https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 建,接入细节看文档 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。如果你后面要长期跑编码类 Agent,可以了解下 Coding Plan,地址是 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,把通道和额度一起规划好,省得中途换 Key 打断工作流。