#1049·grok2api

[Question]: 官方 Docker 在办公网 NAT 下 grok.com 被 CF challenge,Build/Web 应先走哪条出口?

Author: YSheldonCreated Sep 12, 2026Updated Sep 20, 2026
Labelsstale

环境

  • 官方镜像 ghcr.io/chenyme/grok2api:latest(VERSION v3.1.5
  • 按 README 使用 docker compose,端口只绑 127.0.0.1:8000
  • 宿主机:WSL2 Ubuntu,linux/amd64,办公网 NAT 出口(CHINANET)
  • 未导入任何 Grok 账号,未启用 WARP / FlareSolverr / quality-guard

已确认能工作的部分

  • 容器 healthyGET /healthz 返回 {"ok":true}
  • 管理端可登录
  • GET /readyznot_readygrok_web / grok_console 提示「当前没有可用于已启用路由的账号」。这点符合预期
  • 容器内访问 https://api.x.ai/v1/models 返回 401 JSON(TLS/HTTP 通,只是没有官方 Key)

被 Cloudflare 拦住的部分

容器内访问 https://grok.com/ 返回 403,响应头包含 cf-mitigated: challenge。这和宿主机上直接 curl https://grok.com/ 的结果一致,所以不像是 Docker 网络单独坏了,而是当前出口打网页通道会被挑战。

想确认的问题

  1. 在这种办公网 NAT / 非家宽出口上,Grok Web / Console 是否预期必须走文档里的独立出口(WARP 或自备代理),即使还没导入 SSO?
  2. 同一出口下,Grok Build 的 Device OAuth 是否可以不经过 grok.com 的 Cloudflare 挑战完成接入?如果可以,服务器部署是否应优先 Build?
  3. README 里的 FlareSolverr 是「已有 Web 账号之后刷新 Clearance」用的,还是「容器刚起来、网页 403 challenge 时」也需要先开?

不需要绕过 Cloudflare 的实现细节。只要官方推荐的部署顺序:先 Build、先换出口,还是先开 Clearance。

复现

bash
git clone https://github.com/chenyme/grok2api.git
cd grok2api
cp config.example.yaml config.yaml
# 填入 secrets / bootstrapAdmin
docker compose pull
docker compose up -d
curl -sS http://127.0.0.1:8000/healthz
docker exec grok2api wget -qS -O /dev/null https://grok.com/
docker exec grok2api wget -qS -O /dev/null https://api.x.ai/v1/models