1. Docker 里跑 OpenClaw为什么一启动就报鉴权错如果你正在用 Docker 自托管 OpenClaw多半会遇到这样一幕容器docker run之后日志刷出Gateway auth is set to token, but no token is configured或者干脆Missing config. Run openclaw setup然后进程直接退出。浏览器打开 Dashboard 又是 401或者提示control ui requires HTTPS or localhost。这几个报错看着吓人其实都指向同一件事——OpenClaw 的网关配置没有初始化完整或者配置写了但没被容器读到。OpenClaw 是一个可以自托管的 AI 网关/控制台它把模型调用、会话管理、工具编排收在一个 Gateway 后面默认用 Token 认证保护远程访问。Docker 部署时配置目录、数据卷、反向代理这三样只要有一个没对齐就会触发上面那串报错。这篇就按真实排障顺序走一遍先讲清楚每个报错在说什么再给出可复制的config.toml和settings.json骨架接着把 TaoToken 的统一 Key/API 通道接进去最后用命令验证 Gateway 鉴权确实生效。适合已经会docker run、但被配置卡住的自托管用户。我试过在全新机器上从零部署最深的感受是OpenClaw 的报错文案很直白但它不会告诉你「配置该放哪」。所以下面每个步骤都会带上路径和预期输出你照着敲就能定位。2. 先把 TaoToken 通道准备好再谈 OpenClaw 配置OpenClaw 本身不生产模型能力它需要一个上游 API 通道。与其在 OpenClaw 里分别填各家模型的 Key不如先用 TaoToken 把通道统一起来一个 Key、一个 Base URL后面 OpenClaw 的config.toml里只写一份 provider 配置就行。这样排查 Gateway 报错时变量更少出问题也更容易定位是网关层还是上游层。TaoToken 的接入信息很固定API 地址用https://taotoken.net/apiKey 在控制台创建。你可以先到 TaoToken 控制台 生成一个 Key再打开 API Keys 管理页 确认它处于启用状态。如果你还没决定用哪个模型可以先去 模型对话 里试一条请求确认 Key 能通再回来配 OpenClaw。这一步的意义在于等会儿 OpenClaw 报Gateway auth时你能确定上游是好的问题一定出在网关配置或容器挂载上。很多新手把两类错误混在一起查越查越乱。3. 可复制的 config.toml 与 settings.json 骨架OpenClaw 在容器里的配置目录通常是/root/.openclaw。最稳的做法是先在宿主机建好目录把配置文件写进去再用-v挂载而不是进容器手改——容器一重建手改的全丢这正是Missing config反复出现的原因。先建目录和配置文件mkdir -p /opt/openclaw/data cd /opt/openclaw写config.toml重点是[gateway.auth]和[gateway]两段# /opt/openclaw/config.toml [gateway] host 0.0.0.0 port 8090 # 反向代理场景下把代理所在网段加进来避免 untrusted address trustedProxies [127.0.0.1, 172.16.0.0/12, 192.168.0.0/16] [gateway.auth] mode token # 这里必须是非空字符串否则就是 no token is configured token 换成你自己的16位以上随机串 [provider] name taotoken baseUrl https://taotoken.net/api apiKey 你的 TaoToken Key defaultModel claude-sonnet-4-20250514 [database] driver sqlite dsn /root/.openclaw/openclaw.db再写settings.json它管的是控制台和会话层{ controlUi: { enabled: true, allowInsecureLocalhost: true }, session: { store: sqlite, path: /root/.openclaw/sessions.db }, logging: { level: info } }两个文件都放在/opt/openclaw/下。注意token字段千万别留空也不要写成token 那和没配是一样的效果。trustedProxies先按上面写等会儿如果日志里出现具体 IP再针对性调整。启动容器时把配置目录和数据目录一起挂进去docker run -d --name openclaw \ -p 8090:8090 \ -v /opt/openclaw/config.toml:/root/.openclaw/config.toml \ -v /opt/openclaw/settings.json:/root/.openclaw/settings.json \ -v openclaw_data:/root/.openclaw/data \ maoouhu/openclaw-chinese这里openclaw_data是命名卷专门存数据库避免容器重建后配置和会话一起丢。挂载路径写错是Missing config的头号原因启动后一定用docker exec进去确认文件真的在。4. 验证 Gateway 鉴权是否真的生效配置挂好、容器起来之后别急着开浏览器先用命令验证。第一步看容器状态和日志docker ps | grep openclaw docker logs --tail 50 openclaw预期是状态Up日志里不再出现no token is configured或Missing config。如果还有说明挂载没生效进容器确认docker exec -it openclaw ls -l /root/.openclaw/ docker exec -it openclaw cat /root/.openclaw/config.toml确认config.toml存在且token非空后直接读配置项验证docker exec openclaw openclaw config get gateway.auth.token预期返回你设置的那串 token而不是空行或报错。接着验证端口在监听docker exec openclaw netstat -tlnp | grep 8090预期看到LISTEN。最后用 curl 打一次带 Token 的请求这是最接近真实调用的验证curl -i http://127.0.0.1:8090/api/health \ -H Authorization: Bearer 你的token预期返回HTTP/1.1 200 OK和一段 JSON。如果返回 401说明 Token 没被读到如果连接被拒说明端口或 host 配置有问题。浏览器访问时用http://127.0.0.1:8090?token你的tokenlocalhost 场景下不会触发 HTTPS 限制。远程访问则必须走 HTTPS否则就会撞上control ui requires HTTPS or localhost。5. 本篇常见错排查报错一Gateway auth is set to token, but no token is configured现象是日志刷这行、Dashboard 返回 401。根因是mode token但token为空或者配置文件根本没挂进去。解决确认config.toml里token有值用docker exec openclaw openclaw config get gateway.auth.token验证返回非空然后docker restart openclaw。报错二Missing config. Run openclaw setup容器启动即退出或命令提示配置缺失。根因是首次运行没初始化或数据卷没挂导致配置丢失。解决确保-v挂载了配置目录然后执行docker exec -it openclaw openclaw setup走一遍交互初始化完成后openclaw config list应无报错。重建容器时务必保留数据卷。报错三control ui requires HTTPS or localhost本地 localhost 正常换 IP 或域名就报错。这是浏览器的安全上下文限制不是 OpenClaw 故障。开发阶段用?token参数走 localhost生产环境配 Nginx 反向代理加 TLS把X-Forwarded-Proto传进去。报错四Proxy headers detected from untrusted address配了反向代理后出现日志里带具体 IP。根因是代理 IP 不在trustedProxies里。解决从日志拿到 IP写进配置docker exec openclaw openclaw config set gateway.trustedProxies [172.18.0.1] docker restart openclaw如果是 Docker Compose 同网络代理地址写服务名信任 IP 用docker network inspect查到的网关地址。快速自检清单检查项命令预期容器状态docker ps | grep openclawUp配置初始化docker exec openclaw openclaw config list无报错Token 已设docker exec openclaw openclaw config get gateway.auth.token非空信任代理docker exec openclaw openclaw config get gateway.trustedProxies含代理 IP端口监听docker exec openclaw netstat -tlnp | grep 8090LISTEN6. 接上 TaoToken把通道和网关一次配通Gateway 鉴权通了之后最后一步是确认上游模型通道也通。OpenClaw 的 provider 配置里baseUrl指向https://taotoken.net/apiapiKey填你在控制台创建的 Key。如果你打算长期跑编码类任务或 Agent建议直接上 Coding Plan额度模型更适合持续调用只是临时验证模型连通性用 模型对话 发一条消息最快。接入细节和参数说明都在 接入文档 里配置字段对不上时优先查它。验证上游是否通可以在容器里直接打一次模型请求docker exec openclaw curl -s https://taotoken.net/api/v1/models \ -H Authorization: Bearer 你的TaoToken Key返回模型列表就说明通道没问题。如果这一步失败而 Gateway 鉴权已经通过那问题就在 Key 或网络出口跟 OpenClaw 本身无关。把这两层分开验证排障效率会高很多。最后提醒一句config.toml里的 token 和 TaoToken Key 是两回事前者保护你的 Gateway后者访问上游别混用也别把 Key 提交到公开仓库。
