Docker 部署 OpenClaw 后配置 Anthropic / Claude 模型教程
这篇教程记录一下在 VPS 上用 Docker 部署 OpenClaw 后,如何配置 Anthropic Claude 模型。重点解决几个常见问题:
Claude CLI is not authenticated on this host
Unknown command: openclaw sh
claude: not found
OpenClaw 支持两种 Anthropic 接入方式:一种是 Anthropic API Key,另一种是复用本机已经登录的 Claude CLI / Claude Code。官方文档也说明,API Key 更适合长期运行和生产环境;Claude CLI 则适合复用已有 Claude Code 登录状态。
一、两种接入方式怎么选
方式一:Anthropic API Key
适合:
服务器长期运行
需要稳定计费
不想折腾 Claude CLI 登录状态
多人或生产环境使用
优点是稳定,缺点是走 API 计费。
方式二:Anthropic Claude CLI
适合:
已经有 Claude Pro / Max / Claude Code 登录
想让 OpenClaw 复用 Claude CLI
个人 VPS 自用
缺点是 Docker 环境里必须正确安装并登录 Claude CLI,而且要保证 Claude CLI 文件和登录凭证不会因为容器重建而丢失。OpenClaw Docker 文档明确提醒:Claude CLI reuse 依赖 Claude Code 的安装版本、账号登录、计费和更新行为;长期生产环境更建议使用 API Key。
方案 A:推荐,使用 Anthropic API Key
这是最稳的方式。
1. 准备 Anthropic API Key
去 Anthropic Console 创建 API Key。
然后在 VPS 上进入 OpenClaw 目录:
cd ~/openclaw
把 API Key 写入 .env:
echo 'ANTHROPIC_API_KEY=你的_Anthropic_API_Key' >> .env
2. 运行 OpenClaw onboarding
docker compose run --rm -e ANTHROPIC_API_KEY="你的_Anthropic_API_Key" openclaw-cli onboard
交互选择:
Model/auth provider: Anthropic
Anthropic auth method: Anthropic API key
OpenClaw 的 onboarding 支持 Anthropic API Key,并且可以通过 ANTHROPIC_API_KEY 环境变量读取 key。
3. 重启 gateway
docker compose restart openclaw-gateway
4. 检查模型是否可用
docker compose run --rm openclaw-cli models list --provider anthropic
看到 anthropic/... 模型,就说明配置成功。
方案 B:使用 Claude CLI / Claude Code 登录
这个方案适合想复用 Claude 订阅账号的人。
你之前遇到的问题主要是:
Claude CLI is not authenticated on this host
原因是你选了:
Anthropic → Anthropic Claude CLI
但是 Claude CLI 没有在 OpenClaw Docker 容器环境 里登录。
注意:在 VPS 宿主机登录 Claude 不一定有用。OpenClaw Docker 运行在容器里,它需要容器里也能找到 claude 命令,并且能读取 Claude 登录凭证。
1. 先确认 OpenClaw 容器的 home 目录
执行:
cd ~/openclaw
docker compose run --rm --entrypoint sh openclaw-cli -lc '
echo "HOME=$HOME"
echo "OPENCLAW_HOME=$OPENCLAW_HOME"
ls -la "$OPENCLAW_HOME"
'
你可能会看到类似:
HOME=/home/node
OPENCLAW_HOME=/home/node
这说明容器里的用户目录是 /home/node。
2. 为什么直接安装后会丢?
你可能执行过:
docker compose run --rm --entrypoint sh openclaw-cli -lc '
curl -fsSL https://claude.ai/install.sh | bash
export PATH="$HOME/.local/bin:$PATH"
claude --version
'
当时安装成功了:
2.1.204 (Claude Code)
但下一次执行:
docker compose run --rm --entrypoint sh openclaw-cli -lc '
export PATH="$HOME/.local/bin:$PATH"
claude auth login
'
却报:
claude: not found
原因是:docker compose run --rm 启动的是一次性容器,容器退出后,安装到 /home/node/.local/bin 的文件没有持久化。
OpenClaw Docker 官方文档也提到,Claude CLI 路径需要持久化,例如 /home/node/.local/bin、/home/node/.local/share/claude、/home/node/.claude、/home/node/.claude.json 等;只持久化 /home/node/.openclaw 并不够。
方案 B-1:官方推荐,重新用持久化 home 部署
新部署时建议这样启动:
cd ~
git clone https://github.com/openclaw/openclaw.git
cd openclaw
export OPENCLAW_IMAGE="ghcr.io/openclaw/openclaw:latest"
export OPENCLAW_HOME_VOLUME="openclaw_home"
./scripts/docker/setup.sh
这样 /home/node 会被持久化,Claude CLI 安装到 /home/node/.local/bin 后不会丢。
然后安装 Claude Code:
docker compose run --rm --entrypoint sh openclaw-cli -lc '
curl -fsSL https://claude.ai/install.sh | bash
export PATH="$HOME/.local/bin:$PATH"
claude --version
'
Claude Code 官方 Linux/macOS/WSL 安装命令就是:curl -fsSL https://claude.ai/install.sh | bash。
登录 Claude:
docker compose run --rm --entrypoint sh openclaw-cli -lc '
export PATH="$HOME/.local/bin:$PATH"
claude auth login
'
登录后检查:
docker compose run --rm --entrypoint sh openclaw-cli -lc '
export PATH="$HOME/.local/bin:$PATH"
claude auth status --text
'
再让 OpenClaw 使用 Claude CLI:
docker compose run --rm openclaw-cli models auth login \
--provider anthropic \
--method cli \
--set-default
OpenClaw 的 CLI backend 文档说明,Claude CLI 必须在同一 host / 运行环境里登录,然后再执行 openclaw models auth login --provider anthropic --method cli --set-default。
最后重启:
docker compose restart openclaw-gateway
检查:
docker compose run --rm openclaw-cli models list --provider anthropic
方案 B-2:已经部署好了,不想重装,手动持久化 Claude CLI
如果你已经部署好了 OpenClaw,而且现在只有 /home/node/.openclaw 是稳定持久化目录,可以把 Claude CLI 和 Claude 配置目录放到 /home/node/.openclaw 下面。
Claude Code 支持 CLAUDE_CONFIG_DIR 环境变量,用来覆盖默认配置目录;所有设置、凭证、会话历史和插件都会存储在这个路径下。
1. 安装 Claude 到持久化目录
cd ~/openclaw
docker compose run --rm --entrypoint sh openclaw-cli -lc '
set -e
mkdir -p /home/node/.openclaw/claude-bin
mkdir -p /home/node/.openclaw/claude-config
curl -fsSL https://claude.ai/install.sh | bash
cp /home/node/.local/bin/claude /home/node/.openclaw/claude-bin/claude
chmod +x /home/node/.openclaw/claude-bin/claude
/home/node/.openclaw/claude-bin/claude --version
'
看到版本号,例如:
2.1.204 (Claude Code)
说明安装成功。
2. 使用持久化配置目录登录 Claude
cd ~/openclaw
docker compose run --rm --entrypoint sh openclaw-cli -lc '
export CLAUDE_CONFIG_DIR=/home/node/.openclaw/claude-config
/home/node/.openclaw/claude-bin/claude auth login
'
终端会给你一个登录链接。复制到浏览器打开,完成 Claude 登录。
登录后检查:
docker compose run --rm --entrypoint sh openclaw-cli -lc '
export CLAUDE_CONFIG_DIR=/home/node/.openclaw/claude-config
/home/node/.openclaw/claude-bin/claude auth status --text
'
如果显示已登录,就说明 Claude 凭证已经写入:
/home/node/.openclaw/claude-config
3. 让 OpenClaw Gateway 每次都能找到 Claude
创建 docker-compose.override.yml:
cd ~/openclaw
cat > docker-compose.override.yml <<'EOF'
services:
openclaw-gateway:
environment:
CLAUDE_CONFIG_DIR: /home/node/.openclaw/claude-config
PATH: /home/node/.openclaw/claude-bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
openclaw-cli:
environment:
CLAUDE_CONFIG_DIR: /home/node/.openclaw/claude-config
PATH: /home/node/.openclaw/claude-bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
EOF
让 override 生效:
docker compose up -d
docker compose restart openclaw-gateway
4. 验证 CLI 容器能找到 Claude
docker compose run --rm --entrypoint sh openclaw-cli -lc '
which claude
claude --version
claude auth status --text
'
正常应该输出:
/home/node/.openclaw/claude-bin/claude
2.x.x (Claude Code)
Logged in
5. 验证 Gateway 容器也能找到 Claude
docker compose exec openclaw-gateway sh -lc '
which claude
claude --version
claude auth status --text
'
如果 gateway 里也能正常显示 Claude 版本和登录状态,就说明最关键的一步已经完成。
6. 在 OpenClaw 里启用 Anthropic Claude CLI
执行:
docker compose run --rm openclaw-cli onboard
交互选择:
Model/auth provider: Anthropic
Anthropic auth method: Anthropic Claude CLI
这次就不应该再出现:
Claude CLI is not authenticated on this host.
配置完成后重启:
docker compose restart openclaw-gateway
检查模型:
docker compose run --rm openclaw-cli models list --provider anthropic
常见报错处理
1. Unknown command: openclaw sh
错误:
Unknown command: openclaw sh
原因是 openclaw-cli 这个 service 默认 entrypoint 就是 openclaw,所以你执行:
docker compose run --rm openclaw-cli sh -lc '...'
实际相当于执行:
openclaw sh -lc '...'
正确写法是覆盖 entrypoint:
docker compose run --rm --entrypoint sh openclaw-cli -lc '
echo hello
'
2. claude: not found
错误:
sh: 3: claude: not found
常见原因:
Claude 安装在一次性容器里,退出后丢了;
PATH没有包含 Claude 所在目录;gateway 容器没有读取到 override 环境变量。
排查:
docker compose run --rm --entrypoint sh openclaw-cli -lc '
echo PATH=$PATH
which claude || true
ls -la /home/node/.openclaw/claude-bin || true
'
3. Claude CLI is not authenticated on this host
错误:
Claude CLI is not authenticated on this host.
Run claude auth login first, then re-run this setup.
原因是 OpenClaw 所在容器里没有 Claude 登录状态。
解决:
docker compose run --rm --entrypoint sh openclaw-cli -lc '
export CLAUDE_CONFIG_DIR=/home/node/.openclaw/claude-config
claude auth login
'
然后检查:
docker compose run --rm --entrypoint sh openclaw-cli -lc '
export CLAUDE_CONFIG_DIR=/home/node/.openclaw/claude-config
claude auth status --text
'
最终推荐
个人 VPS 自用,可以用:
Anthropic Claude CLI
但要保证:
Claude CLI 安装路径持久化
Claude 登录凭证持久化
gateway 容器能找到 claude 命令
长期稳定运行、生产环境、多人使用,更推荐:
Anthropic API Key
官方文档也明确提示,长期 gateway host、共享自动化和可预测生产成本场景,优先使用 Anthropic API Key。
一键排查命令
最后贴一个排查命令:
cd ~/openclaw
docker compose exec openclaw-gateway sh -lc '
echo PATH=$PATH
echo CLAUDE_CONFIG_DIR=$CLAUDE_CONFIG_DIR
which claude || true
claude --version || true
claude auth status --text || true
'
只要这里能看到:
which claude 正常
claude --version 正常
claude auth status 正常
OpenClaw 里选择 Anthropic Claude CLI 基本就可以成功。