前置说明:本教程基于一台已安装 Claude Code 的 VPS(Ubuntu 22.04/24.04),通过对接第三方 AI 聚合网关(OpenAI 兼容协议)来调用 Claude、Gemini、GPT、Grok 等多模型,让你的 VPS 能用最强 AI 帮你写代码、维护网站。
我的架构是双 VPS:
用途 部署内容 VPS A 主力开发机 Claude Code + CCR 路由器 VPS B API 网关 CPA(CLIProxyAPI,Docker 部署) 如果你只有一台 VPS,把 A、B 装一起也完全可以。
一、安装 Claude Code(VPS A)
官网文档:https://code.claude.com/docs/zh-CN/quickstart#homebrew
直接输入即可:
curl -fsSL https://claude.ai/install.sh | bash
若缺少 node、npm 等文件,直接复制 Ubuntu 提示的语句粘贴后即可下载
安装后验证①:
node -v
npm -v
安装后验证②:
claude -v
安装后验证③:
git -v
二、Node.js 版本检查(关键)
CCR 路由器要求 Node.js ≥ v20,老版本会报 EBADENGINE 警告,跑起来不稳定。
2.1、查看当前 Node 版本
node -v
如果输出 v18.xx 或更老,必须升级。如果已经是 v20+,跳过本章。
2.2、安装 nvm(Node 版本管理工具)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
2.3、让 nvm 立刻生效(不用重开终端)
export NVM_DIR="$HOME/.nvm" && [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
2.4、装 Node 20 LTS 并设为默认
nvm install 20
nvm use 20
nvm alias default 20
2.5、验证
node -v
应显示 v20.x.x
⚠️ 切换 Node 版本后,全局包要重新安装(nvm 每个 Node 版本的全局包是独立的)
2.6、重装 Claude Code
npm install -g @anthropic-ai/claude-code
三、为什么不能直接用 Claude Code 接第三方网关
直接修改 ~/.claude.json 是没用的——这个文件只存客户端 UI 状态,不是 API 配置。
Claude Code 原生只认 Anthropic 协议(/v1/messages),但绝大多数 AI 聚合网关用的是 OpenAI 兼容协议(/v1/chat/completions),格式不一样。
所以需要 CCR(claude-code-router) 做中间翻译层:
Claude Code → CCR(协议翻译)→ 网关 → 真实模型
CCR 拦截 Claude Code 发出的请求,转换成 OpenAI 格式,再发给你的网关。
四、安装 CCR 路由器(VPS A)
4.1、全局安装
npm install -g @musistudio/claude-code-router
4.2、验证
ccr -v
应该看到版本号 2.0.0 或更新
五、配置 CCR 接入网关
5.1、创建配置目录
mkdir -p ~/.claude-code-router
5.2、写配置文件
nano ~/.claude-code-router/config.json
5.3、nano 编辑器输入:
{
"LOG": false,
"HOST": "127.0.0.1",
"PORT": 3456,
"Providers": [
{
"name": "cpamc",
"api_base_url": "http://你的网关IP:端口/v1/chat/completions",
"api_key": "你的API密钥",
"models": [
"claude-opus-4-7",
"claude-opus-4-6",
"claude-opus-4-6-thinking",
"claude-sonnet-4-6",
"claude-sonnet-4-5-20250929",
"claude-haiku-4-5-20251001",
"gpt-5.4",
"gpt-5.5",
"gemini-3.1-pro-low",
"gemini-pro-agent",
"grok-4.3"
]
}
],
"Router": {
"default": "cpamc,claude-opus-4-7",
"background": "cpamc,claude-haiku-4-5-20251001",
"think": "cpamc,claude-opus-4-6-thinking",
"longContext": "cpamc,claude-sonnet-4-5-20250929",
"webSearch": "cpamc,claude-sonnet-4-6"
}
}
配置说明:
| 字段 | 作用 |
|---|---|
api_base_url |
网关完整地址,必须带 /v1/chat/completions,不是只到 /v1 |
api_key |
网关给你的密钥(sk-开头) |
models |
网关支持的模型列表,名字必须精确(区分大小写和短横线) |
Router.default |
日常默认用的模型 |
Router.background |
后台小任务用的便宜快速模型 |
Router.think |
深度思考任务用的模型 |
Router.longContext |
长上下文任务用的模型 |
Router.webSearch |
网搜任务用的模型 |
保存按 Ctrl + O,然后按 Enter 确认
退出按 Ctrl + X
5.4、验证配置能拉通网关
curl 你的网关IP:端口/v1/models -H "Authorization: Bearer 你的API密钥"
能看到模型列表的 JSON 输出说明网络和密钥都没问题
六、清理环境变量冲突(重要)
如果你之前尝试过其他方法,可能在 ~/.bashrc 里设过 ANTHROPIC_* 环境变量,会和 CCR 冲突。
6.1、检查现有变量
grep -E "ANTHROPIC_(API_KEY|AUTH_TOKEN|BASE_URL)" ~/.bashrc ~/.bash_profile ~/.profile ~/.zshrc 2>/dev/null
6.2、有就清掉
sed -i '/ANTHROPIC_BASE_URL/d;/ANTHROPIC_AUTH_TOKEN/d;/ANTHROPIC_API_KEY/d' ~/.bashrc
6.3、清空当前 shell
unset ANTHROPIC_BASE_URL
unset ANTHROPIC_AUTH_TOKEN
unset ANTHROPIC_API_KEY
source ~/.bashrc
6.4、验证全空
env | grep ANTHROPIC
应该没有任何输出。所有 ANTHROPIC_* 都让 CCR 自己管,你不要手动设。
七、启动 Claude Code
7.1、用 CCR 包装启动(关键)
ccr code
不是 claude,是 ccr code。这两个命令的区别:
| 命令 | 行为 |
|---|---|
claude |
直连 Anthropic 官方 API(需要官方 key) |
ccr code |
启动 CCR 路由 → 注入环境变量 → 调起 claude → 走网关 |
7.2、测试是否接通
进入 Claude Code 后随便发一句:
你是什么模型
如果回复正常(不是报错),说明整条链路 Claude Code → CCR → 网关 → 模型 已经打通。
八、切换模型(核心用法)
Claude Code CLI 里切换模型有两种方式。
8.1、原生菜单(只能选 Anthropic 内置)
输入框敲:
/model
弹出菜单选 Opus / Sonnet / Haiku,方向键选择回车确认。但看不到你网关里的 Gemini/GPT 等自定义模型。
8.2、CCR 切换(用这个,看到所有模型)
输入框敲完整路径:
/model cpamc,claude-opus-4-7
/model cpamc,claude-sonnet-4-6
/model cpamc,claude-haiku-4-5-20251001
/model cpamc,gemini-3.1-pro-low
/model cpamc,gpt-5.4
/model cpamc,grok-4.3
格式:/model provider名,模型ID
模型名要完全精确,例如:
| 写法 | 结果 |
|---|---|
/model cpamc,claude-sonnet-4-6 |
✅ 正确 |
/model cpamc,Claude Sonnet 4.6 |
❌ 502 unknown provider |
/model cpamc,gpt-5.4 |
✅ 正确 |
/model cpamc,GPT 5.4 |
❌ 错误 |
💡 提示:网关里模型分类大标题(如"Claude"、"Gemini 3.1 Pro Series")不是模型名,不能直接用。要去网关后台「模型列表」页看每个模型的精确 ID。
九、开启 YOLO 模式(免确认权限)
默认状态下,Claude Code 每次想读文件、跑命令、访问网络都会问你。在 VPS 上做网站维护这种场景,频繁确认非常烦。可以开启 YOLO 模式。
⚠️ 警告:YOLO 模式下 Claude 可无确认地读写任何文件、跑任意 bash 命令。只在 VPS / 容器 / 沙箱里用,不要在自己主力开发机上用。
重要数据请先 git 备份,出问题能回滚。
9.1、启动时加参数(一次性)
ccr code --dangerously-skip-permissions
9.2、改成持久化(推荐)
将启动参数写入别名:
echo "alias cc='ccr code --dangerously-skip-permissions'" >> ~/.bashrc && source ~/.bashrc && alias cc
以后输入 cc 即可一键启动 YOLO 模式 Claude Code
9.3、项目级配置(更稳)
mkdir -p ~/.claude
cat > ~/.claude/settings.json <<EOF
{
"permissions": {
"defaultMode": "bypassPermissions"
}
}
EOF
这样不管怎么启动,都是 YOLO 模式
9.4、折中方案:只放宽部分工具
如果觉得全开太危险,可以只让常用工具免问:
mkdir -p ~/.claude
cat > ~/.claude/settings.json <<EOF
{
"permissions": {
"allow": [
"Bash(*)",
"WebFetch(*)",
"Read(*)",
"Write(*)",
"Edit(*)"
]
}
}
EOF
十、实战:用 Claude Code 维护你的网站
到这里搭建已经完成。下面是几个实战场景,让你感受 Claude Code 的威力。
10.1、启动并进入项目目录
cd /root/data/docker_data/halo
cc
💡 一定要在项目目录里启动,不要在
/root里启动。Claude Code 会自动读取当前目录作为工作空间。
10.2、常用任务示例
示例 1:让 Claude 帮你看博客的 Docker 配置有没有问题
进入 cc 后直接说:
帮我检查 docker-compose.yml,看密码、端口、卷挂载有没有安全风险
示例 2:让 Claude 排查为什么网站 502
nginx 反代 8090 端口的 Halo,浏览器访问报 502,帮我排查
它会自动跑 docker ps、docker logs、curl localhost:8090 等命令诊断
示例 3:让 Claude 写一个数据库定时备份脚本
给我的 halodb (MySQL 8.0) 写一个每天凌晨 3 点自动备份的 bash 脚本,保留最近 7 天
它会写好脚本 + 配好 crontab,全程不用你动手
示例 4:切到 Gemini 处理长文档
/model cpamc,gemini-3.1-pro-low
读取 /var/log/nginx/access.log,分析过去 7 天哪些 IP 在频繁扫描我的网站
Gemini 的 200 万 token 上下文适合处理大日志
十一、常见问题排错
11.1、ccr: command not found
npm 全局路径没在 PATH 里:
export PATH=$PATH:$(npm prefix -g)/bin
11.2、启动后顶部出现 ⚠ Auth conflict
环境变量没清干净,回到第六章再清一遍
11.3、401 Unauthorized
密钥错误。检查 ~/.claude-code-router/config.json 里 api_key 字段,和网关后台对一遍
11.4、404 Not Found
api_base_url 路径不对。常见错误是只写到 /v1,应该是 完整的 /v1/chat/completions
11.5、model not found 或 502 unknown provider for model xxx
模型名拼错了。去网关后台「模型列表」页复制精确模型 ID
11.6、400 User location is not supported
调用的上游 API(典型如 Google Gemini Code Assist)拦截了请求来源 IP 地理位置。这是上游限制,跟 Claude Code 和 CCR 都无关。解决方法:
- 换网关上游凭证
- 换 VPS 节点到 Google 友好地区
- 给 VPS 配住宅代理
11.7、/model 菜单看不到自定义模型
正常现象。新版 Claude Code 的 /model 菜单只显示 Anthropic 内置模型。自定义模型用 /model provider,模型名 直接输入切换,参考第八章
11.8、API 调用失败但 /model 菜单显示模型正常
/model 菜单显示什么不代表实际在用什么。CCR 完全劫持请求,按 Router 配置路由。要看真实模型可以问:
你是哪个模型?回答型号即可
十二、补充:CCR Web 面板(可选)
CCR 自带一个网页配置面板,可以图形化管理。
12.1、启动 UI
ccr ui
会监听 127.0.0.1:3456
12.2、本机通过 SSH 隧道访问
VPS 是远程的,本地浏览器访问不了 127.0.0.1。需要做 SSH 端口转发:
ssh -L 3456:127.0.0.1:3456 root@你的VPS_IP
12.3、浏览器打开
http://127.0.0.1:3456/ui
可以图形化切换路由、看请求日志、测试模型,比命令行直观
到这里所有配置就完成了。你的 VPS 现在拥有一个:
- 可调用多家顶级 AI 模型(Claude Opus、Gemini Pro、GPT-5、Grok)
- 一键启动免确认的开发助手
- 能直接读写文件、执行命令、维护服务
- 通过 CCR 智能路由(深度任务用 Opus,小活用 Haiku 省钱,长文用 Gemini)
的 AI 开发环境,从此搭建网站、写脚本、排查故障、写博客文章都可以让 AI 帮你干。
评论区