腾讯云宝塔面板部署openclaw后,公网IP访问不通怎么排查?TaoToken统一通道配置思路
发布时间:2026/10/12 15:44:58 锦皓数字建站

1. 腾讯云宝塔面板部署 openclaw 后公网 IP 访问不通的完整排查链路腾讯云服务器上装好 openclaw容器也跑起来了docker ps看着一切正常结果浏览器输入公网 IP 就是转圈、超时、连接被拒绝——这个场景我遇到过不止一次。openclaw 是一个可自托管的 AI 网关/助手服务能对接多种模型通道、跑本地 Agent 任务适合想在自己服务器上掌控数据、又需要统一模型入口的开发者。它默认只监听127.0.0.1加上腾讯云安全组、宝塔反代、Docker 网络三层叠加任何一层没打通公网就是进不去。这篇按「从外到内」的顺序拆先看腾讯云安全组端口有没有放行再看 Docker 端口映射和监听地址然后看宝塔反向代理配置最后看 openclaw 自身的网关鉴权与绑定模式。每一层我都给出可复制的命令和配置片段以及对应的curl验证方式你可以逐层排除不用瞎猜。排查的核心思路是公网请求要经过 安全组 → 服务器防火墙 → Nginx/宝塔反代 → Docker 端口映射 → 容器内进程监听这条链路任何一环断了都会表现为「公网 IP 访问不通」。所以不要一上来就改 openclaw 配置先确认前面几层是通的。我试过最典型的坑容器用--nethost启动了但 openclaw 网关默认绑定127.0.0.1:18789宿主机上curl 127.0.0.1:18789通curl 公网IP:18789不通。这时候问题不在安全组而在进程监听地址。下面逐层展开。2. TaoToken 统一通道前置准备与 openclaw 网关鉴权配置openclaw 本身是网关它需要对接上游模型通道才能真正干活。如果你只是想让公网能访问到 openclaw 的 Web 界面那这一节可以先跳过但如果你要让它调用模型、跑 Agent就需要一个稳定的统一通道。TaoToken 提供的就是这种统一入口官网地址是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 端点是 https://taotoken.net/api 。在 openclaw 里配置上游通道通常是在它的配置文件里指定 Base URL、API Key 和 Model ID 三件套。openclaw 的配置目录一般挂载在/home/node/.openclaw你可以通过docker exec -it openclaw cat /home/node/.openclaw/config.json查看当前配置。如果要用 TaoToken 作为统一通道配置片段大致如下JSON 格式路径以你实际挂载为准{ gateway: { mode: local, bind: lan, port: 18789 }, providers: { taotoken: { baseUrl: https://taotoken.net/api, apiKey: sk-你的TaoToken密钥, model: claude-sonnet-4-20250514 } } }这里gateway.bind设成lan是关键它让网关监听所有网卡而不是只监听回环。gateway.mode设成local是为了绕过新版本的安全检查——2026.3.11 之后的版本如果没设这个启动时会被Gateway start blocked: set gateway.modelocal (current: unset) or pass --allow-unconfigured拦住。API Key 的获取入口在 https://taotoken.net/api-keys 登录后创建即可。如果你打算长期跑编码类 Agent 任务可以了解下 Coding Plan https://taotoken.net/coding-plan 。模型对话调试入口在 https://taotoken.net/chat 接入文档在 https://taotoken.net/doc 。需要强调的是TaoToken 在这里的角色是「模型通道」不是「网络通道」。它解决的是 openclaw 调用模型时的统一鉴权和路由问题不解决公网访问问题。公网访问不通还是要回到安全组、Docker、反代这三层去查。把这两件事分开排查思路会清晰很多。配置改完后重启容器让配置生效docker restart openclaw。然后进入容器确认配置被读取docker exec -it openclaw cat /home/node/.openclaw/config.json | grep -A3 gateway。3. 腾讯云安全组 Docker 端口映射 宝塔反代的可复制配置这一节是重头戏把三层配置全部给全。先说你最容易漏的腾讯云安全组。登录腾讯云控制台 → 轻量应用服务器或云服务器 CVM → 找到你的实例 → 防火墙/安全组 → 添加入站规则。你需要放行的是最终对外暴露的端口。如果你用宝塔反代对外只需要放行 80 和 443如果你直接暴露 openclaw 端口那就放行对应端口比如 18789。规则配置参考方向协议端口来源说明入站TCP800.0.0.0/0HTTP宝塔反代用入站TCP4430.0.0.0/0HTTPS宝塔反代用入站TCP187890.0.0.0/0仅调试时临时开放生产建议关放行后在服务器上用curl从外部验证端口是否真的通了。你可以在本地电脑执行telnet 你的公网IP 80或者用在线端口检测工具。如果 80 不通先别往下查安全组或服务器防火墙firewalld/ufw还没放行。接下来是 Docker 端口映射。openclaw 的启动命令有两种写法效果不同# 写法一host 网络模式容器直接使用宿主机网络栈 docker run -d \ --name openclaw \ --restart unless-stopped \ --nethost \ -v openclaw-data:/home/node/.openclaw \ ghcr.m.daocloud.io/openclaw/openclaw:2026.3.11 # 写法二bridge 模式显式映射端口 docker run -d \ --name openclaw \ --restart unless-stopped \ -p 18789:18789 \ -v openclaw-data:/home/node/.openclaw \ ghcr.m.daocloud.io/openclaw/openclaw:2026.3.11--nethost的好处是容器直接用宿主机端口不用做映射但前提是容器内进程监听的是0.0.0.0而不是127.0.0.1。如果 openclaw 网关只监听回环host 模式下公网照样不通。这时候要么改配置让gateway.bindlan要么在启动命令里加--bind lan。如果你用 bridge 模式加-p映射同样要确保容器内监听0.0.0.0。-p 18789:18789只是把宿主机端口转发到容器端口容器内如果只听127.0.0.1转发进去也是拒绝连接。然后是宝塔反向代理。进入宝塔面板 → 网站 → 添加站点域名填你要用的域名比如claw.yourdomain.comPHP 版本选「纯静态」。创建后点进站点设置 → 反向代理 → 添加反向代理# 宝塔反代核心配置在站点设置的反向代理里填 代理名称openclaw 目标 URLhttp://127.0.0.1:18789 发送域名$host保存后宝塔会自动生成 Nginx 配置。你可以手动检查一下/www/server/panel/vhost/nginx/claw.yourdomain.com.conf确认proxy_pass指向正确。如果 openclaw 容器用的是 bridge 模式且映射到宿主机 18789那proxy_pass http://127.0.0.1:18789就是对的。如果你之前把容器端口映射成了 3000那这里就写 3000。一个常见错误是反代目标写成了容器 IP比如http://172.17.0.2:18789。容器 IP 会变重启后可能就失效了应该统一走宿主机端口。4. curl 验证请求与成功结果对照配置改完别急着开浏览器先用curl逐层验证。这样出问题时你能精确定位是哪一层。第一层验证宿主机本地能否访问 openclawcurl -v http://127.0.0.1:18789/如果返回Connection refused说明 openclaw 进程没监听这个端口或者监听在别的端口。进容器查docker exec -it openclaw netstat -tlnp | grep 187。如果看到127.0.0.1:18789而不是0.0.0.0:18789那就是绑定模式问题需要在配置里设gateway.bindlan或启动时加--bind lan。第二层验证宿主机公网 IP 能否访问curl -v http://你的公网IP:18789/如果本地127.0.0.1通但公网 IP 不通检查安全组是否放行了 18789以及服务器防火墙。腾讯云轻量服务器默认有防火墙ufw status或firewall-cmd --list-ports看一下。第三层验证宝塔反代是否生效curl -v -H Host: claw.yourdomain.com http://127.0.0.1/如果返回 openclaw 的页面内容说明反代通了。如果返回宝塔默认页或 404检查反代配置是否保存、Nginx 是否重载nginx -t nginx -s reload。第四层验证域名解析和公网访问curl -v http://claw.yourdomain.com/成功的话你会看到 openclaw 的响应头比如HTTP/1.1 200 OK或者重定向到登录页。如果卡在Trying xxx.xxx.xxx.xxx...说明 DNS 没解析或安全组没放行 80。一个完整的成功响应大概长这样 HTTP/1.1 200 OK Server: nginx Content-Type: text/html; charsetutf-8 Connection: keep-alive如果 openclaw 开启了鉴权可能会返回 401 或跳转到登录页这属于正常。你要区分「网络不通」和「鉴权拦截」——前者是连接超时/拒绝后者是能连上但返回 401/403。5. 本篇常见错误排查401、local proxy failed、reading choices、OAuth这一节把几个高频报错单独拎出来对照。报错一Gateway start blocked: set gateway.modelocal (current: unset) or pass --allow-unconfigured这是 openclaw 2026.3.11 之后新增的安全检查。解决方式有两种在配置文件里设gateway: {mode: local}或者在启动命令里加--allow-unconfigured。推荐用配置文件方式持久化更稳。报错二local proxy failed或connection refused这个通常出现在 openclaw 尝试调用上游模型通道时。检查你的 Base URL 是否写对TaoToken 的 API 端点是https://taotoken.net/api不要漏掉/api路径。另外检查 API Key 是否有效可以在 https://taotoken.net/api-keys 重新生成一个测试。报错三reading choices或unexpected end of JSON input这是模型返回格式解析失败常见原因是 Base URL 指向了一个不兼容 OpenAI 格式的端点或者 Model ID 写错了。确认你的 Model ID 和通道支持的模型一致。如果用的是 TaoToken 统一通道Model ID 按文档里列出的填。报错四OAuth 相关报错如果你在 openclaw 里配置了需要 OAuth 的通道回调地址必须和你在通道侧登记的一致。公网访问不通的情况下OAuth 回调根本回不来所以先把公网链路打通再配 OAuth。报错五openclaw-2026.3.11.tar.gz: No such file or directory这是导入镜像时路径不对。用find / -name openclaw-*.tar.gz 2/dev/null找到实际路径再执行gunzip -c 实际路径 | docker load。排查时记住一个原则先确认网络层通不通再确认应用层报什么错。网络层用curl -v和telnet验证应用层看容器日志docker logs -f openclaw。两者分开效率高很多。6. 打通公网后的模型通道接入与长期使用建议公网能访问只是第一步接下来是让 openclaw 真正跑起来。如果你还没配模型通道建议用 TaoToken 统一入口这样 Base URL、Key、Model ID 三件套一次配好后面换模型只改 Model ID 就行。API Key 在 https://taotoken.net/api-keys 创建接入文档在 https://taotoken.net/doc 有完整的参数说明。对于长期跑编码类 Agent 任务的场景Coding Plan 会比按量调用更划算入口在 https://taotoken.net/coding-plan 。如果你只是想先验证模型能不能通用模型对话页面 https://taotoken.net/chat 发一条消息最快。最后给几个实操建议生产环境别直接暴露 openclaw 端口到公网走宝塔反代加 HTTPS安全组只放行 80 和 44318789 只在调试时临时开容器重启策略用--restart unless-stopped服务器重启后自动拉起配置文件和 data 目录一定要挂载出来不然容器重建数据就没了。把这些做完你的 openclaw 在腾讯云上就算真正跑稳了。
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。