<h1 align="center">
<a href="https://prompts.chat">
> **Fork 说明**: 本仓库 Fork 自 [Wei-Shaw/claude-relay-service](https://github.com/Wei-Shaw/claude-relay-service),感谢原作者的开源贡献。
Sign in to like and favorite skills
Fork 说明: 本仓库 Fork 自 Wei-Shaw/claude-relay-service,感谢原作者的开源贡献。
使用本项目前请仔细阅读:
🚨 服务条款风险: 使用本项目可能违反Anthropic的服务条款。请在使用前仔细阅读Anthropic的用户协议,使用本项目的一切风险由用户自行承担。
📖 免责声明: 本项目仅供技术学习和研究使用,作者不对因使用本项目导致的账户封禁、服务中断或其他损失承担任何责任。
如果有以上困惑,那这个项目可能适合你。
✅ 找朋友拼车: 三五好友一起分摊Claude Code Max订阅
✅ 隐私敏感: 不想让第三方镜像看到你的对话内容
✅ 技术折腾: 有基本的技术基础,愿意自己搭建和维护
✅ 稳定需求: 需要长期稳定的Claude访问,不想受制于镜像站
✅ 地区受限: 无法直接访问Claude官方服务
推荐使用管理脚本进行一键部署,简单快捷,自动处理所有依赖和配置。
curl -fsSL https://pincc.ai/manage.sh -o manage.sh && chmod +x manage.sh && ./manage.sh install
crs 命令随时管理服务状态crs install # 安装服务 crs start # 启动服务 crs stop # 停止服务 crs restart # 重启服务 crs status # 查看状态 crs update # 更新服务 crs uninstall # 卸载服务
$ crs install # 会依次询问: 安装目录 (默认: ~/claude-relay-service): 服务端口 (默认: 3000): 8080 Redis 地址 (默认: localhost): Redis 端口 (默认: 6379): Redis 密码 (默认: 无密码): # 安装完成后自动启动并显示: 服务已成功安装并启动! 访问地址: 本地 Web: http://localhost:8080/web 公网 Web: http://YOUR_IP:8080/web 管理员账号信息已保存到: data/init.json
Ubuntu/Debian用户:
# 安装Node.js curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - sudo apt-get install -y nodejs # 安装Redis sudo apt update sudo apt install redis-server sudo systemctl start redis-server
CentOS/RHEL用户:
# 安装Node.js curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash - sudo yum install -y nodejs # 安装Redis sudo yum install redis sudo systemctl start redis
# 下载项目 git clone https://github.com/Wei-Shaw//claude-relay-service.git cd claude-relay-service # 安装依赖 npm install # 复制配置文件(重要!) cp config/config.example.js config/config.js cp .env.example .env
编辑
文件:.env
# 这两个密钥随便生成,但要记住 JWT_SECRET=你的超级秘密密钥 ENCRYPTION_KEY=32位的加密密钥随便写 # Redis配置 REDIS_HOST=localhost REDIS_PORT=6379 REDIS_PASSWORD=
编辑
文件:config/config.js
module.exports = { server: { port: 3000, // 服务端口,可以改 host: '0.0.0.0' // 不用改 }, redis: { host: '127.0.0.1', // Redis地址 port: 6379 // Redis端口 } // 其他配置保持默认就行 }
# 安装前端依赖 npm run install:web # 构建前端(生成 dist 目录) npm run build:web
# 初始化 npm run setup # 会随机生成后台账号密码信息,存储在 data/init.json # 或者通过环境变量预设管理员凭据: # export ADMIN_USERNAME=cr_admin_custom # export ADMIN_PASSWORD=your-secure-password # 启动服务 npm run service:start:daemon # 后台运行 # 查看状态 npm run service:status
curl -fsSL https://pincc.ai/crs-compose.sh -o crs-compose.sh && chmod +x crs-compose.sh && ./crs-compose.sh
docker-compose up -d
docker-compose.yml 已包含:
JWT_SECRET: JWT密钥,至少32个字符ENCRYPTION_KEY: 加密密钥,必须是32个字符ADMIN_USERNAME: 管理员用户名(不设置则自动生成)ADMIN_PASSWORD: 管理员密码(不设置则自动生成)LOG_LEVEL: 日志级别(默认:info).env.example 文件查看容器日志
docker logs claude-relay-service
查看挂载的文件
cat ./data/init.json
使用环境变量预设
# 在 .env 文件中设置 ADMIN_USERNAME=cr_admin_custom ADMIN_PASSWORD=your-secure-password
浏览器访问:
http://你的服务器IP:3000/web
管理员账号:
docker logs claude-relay-service这一步比较关键,需要OAuth授权:
注意: 如果你在国内,这一步可能需要科学上网。
给每个使用者分配一个Key:
现在你可以用自己的服务替换官方API了:
Claude Code 设置环境变量:
默认使用标准 Claude 账号池:
export ANTHROPIC_BASE_URL="http://127.0.0.1:3000/api/" # 根据实际填写你服务器的ip地址或者域名 export ANTHROPIC_AUTH_TOKEN="后台创建的API密钥"
VSCode Claude 插件配置:
如果使用 VSCode 的 Claude 插件,需要在
~/.claude/config.json 文件中配置:
{ "primaryApiKey": "crs" }
如果该文件不存在,请手动创建。Windows 用户路径为
C:\Users\你的用户名\.claude\config.json。
Gemini CLI 设置环境变量:
方式一(推荐):通过 Gemini Assist API 方式访问
CODE_ASSIST_ENDPOINT="http://127.0.0.1:3000/gemini" # 根据实际填写你服务器的ip地址或者域名 GOOGLE_CLOUD_ACCESS_TOKEN="后台创建的API密钥" GOOGLE_GENAI_USE_GCA="true" GEMINI_MODEL="gemini-2.5-pro" # 如果你有gemini3权限可以填: gemini-3-pro-preview
认证:只能选
进行认证,如果跳 Google请删除Login with Google后再尝试启动~/.gemini/settings.json。gemini
注意:gemini-cli 控制台会提示,但使用不受任何影响。Failed to fetch user info: 401 Unauthorized
方式二:通过 Gemini API 方式访问
GOOGLE_GEMINI_BASE_URL="http://127.0.0.1:3000/gemini" # 根据实际填写你服务器的ip地址或者域名 GEMINI_API_KEY="后台创建的API密钥" GEMINI_MODEL="gemini-2.5-pro" # 如果你有gemini3权限可以填: gemini-3-pro-preview
认证:只能选
进行认证,如果提示Use Gemini API Key请直接留空按回车。如果一打开就跳 Google请删除Enter Gemini API Key后再尝试启动~/.gemini/settings.json。gemini
💡 进阶用法:想在 Claude Code 中直接使用 Gemini 3 模型?请参考 Claude Code 调用 Gemini 3 模型指南
使用 Claude Code:
claude
使用 Gemini CLI:
gemini # 或其他 Gemini CLI 命令
Codex 配置:
在
~/.codex/config.toml 文件开头添加以下配置:
model_provider = "crs" model = "gpt-5.1-codex-max" model_reasoning_effort = "high" disable_response_storage = true preferred_auth_method = "apikey" [model_providers.crs] name = "crs" base_url = "http://127.0.0.1:3000/openai" # 根据实际填写你服务器的ip地址或者域名 wire_api = "responses" requires_openai_auth = true env_key = "CRS_OAI_KEY"
在
~/.codex/auth.json 文件中配置API密钥为 null:
{ "OPENAI_API_KEY": null }
环境变量设置:
export CRS_OAI_KEY="后台创建的API密钥"
⚠️ 在通过 Nginx 反向代理 CRS 服务并使用 Codex CLI 时,需要在 http 块中添加 underscores_in_headers on;。因为 Nginx 默认会移除带下划线的请求头(如 session_id),一旦该头被丢弃,多账号环境下的粘性会话功能将失效。
Droid CLI 配置:
Droid CLI 读取
~/.factory/config.json。可以在该文件中添加自定义模型以指向本服务的新端点:
{ "custom_models": [ { "model_display_name": "Opus 4.5 [crs]", "model": "claude-opus-4-5-20251101", "base_url": "http://127.0.0.1:3000/droid/claude", "api_key": "后台创建的API密钥", "provider": "anthropic", "max_tokens": 64000 }, { "model_display_name": "GPT5-Codex [crs]", "model": "gpt-5-codex", "base_url": "http://127.0.0.1:3000/droid/openai", "api_key": "后台创建的API密钥", "provider": "openai", "max_tokens": 16384 }, { "model_display_name": "Gemini-3-Pro [crs]", "model": "gemini-3-pro-preview", "base_url": "http://127.0.0.1:3000/droid/comm/v1/", "api_key": "后台创建的API密钥", "provider": "generic-chat-completion-api", "max_tokens": 65535 }, { "model_display_name": "GLM-4.6 [crs]", "model": "glm-4.6", "base_url": "http://127.0.0.1:3000/droid/comm/v1/", "api_key": "后台创建的API密钥", "provider": "generic-chat-completion-api", "max_tokens": 202800 } ] }
💡 将示例中的
替换为你的服务域名或公网地址,并写入后台生成的 API 密钥(cr_ 开头)。http://127.0.0.1:3000
本服务支持多种API端点格式,方便接入不同的第三方工具(如Cherry Studio等)。
Cherry Studio支持多种AI服务的接入,下面是不同账号类型的详细配置:
1. Claude账号接入:
# API地址 http://你的服务器:3000/claude # 模型ID示例 claude-sonnet-4-5-20250929 # Claude Sonnet 4.5 claude-opus-4-20250514 # Claude Opus 4
配置步骤:
http://你的服务器:3000/claude2. Gemini账号接入:
# API地址 http://你的服务器:3000/gemini # 模型ID示例 gemini-2.5-pro # Gemini 2.5 Pro
配置步骤:
http://你的服务器:3000/gemini3. Codex接入:
# API地址 http://你的服务器:3000/openai # 模型ID(固定) gpt-5 # Codex使用固定模型ID
配置步骤:
http://你的服务器:3000/openaiCherry Studio 地址格式重要说明:
http://你的服务器:3000/claude(不加结尾 /,让 Cherry Studio 自动加上 v1)http://你的服务器:3000/claude/v1/(手动指定 v1 并加结尾 /)http://你的服务器:3000/claude/(单独的 / 结尾会被 Cherry Studio 忽略 v1 版本)接入要点:
/claude/ - 使用Claude账号池/droid/claude/ - 使用Droid类型Claude账号池(只建议api调用或Droid Cli中使用)/gemini/ - 使用Gemini账号池/openai/ - 使用Codex账号(只支持Openai-Response格式)/droid/openai/ - 使用Droid类型OpenAI兼容账号池(只建议api调用或Droid Cli中使用)重要说明:
# 查看服务状态 npm run service:status # 查看日志 npm run service:logs # 重启服务 npm run service:restart:daemon # 停止服务 npm run service:stop
http://你的域名:3000/web - 查看使用统计http://你的域名:3000/health - 确认服务正常logs/ 目录下的各种日志文件当有新版本发布时,按照以下步骤升级服务:
# 1. 进入项目目录 cd claude-relay-service # 2. 拉取最新代码 git pull origin main # 如果遇到 package-lock.json 冲突,使用远程版本 git checkout --theirs package-lock.json git add package-lock.json # 3. 安装新的依赖(如果有) npm install # 4. 安装并构建前端 npm run install:web npm run build:web # 5. 重启服务 npm run service:restart:daemon # 6. 检查服务状态 npm run service:status
注意事项:
客户端限制功能允许你控制每个API Key可以被哪些客户端使用,通过User-Agent识别客户端,提高API的安全性。
在创建或编辑API Key时启用客户端限制:
预定义客户端:
claude-cli/x.x.x (external, cli) 格式)GeminiCLI/vx.x.x (platform; arch) 格式)调试和诊断:
认证成功时的日志:
🔓 Authenticated request from key: 测试Key (key-id) in 5ms User-Agent: "claude-cli/1.0.58 (external, cli)"
客户端限制检查日志:
🔍 Checking client restriction for key: key-id (测试Key) User-Agent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" Allowed clients: claude_code, gemini_cli 🚫 Client restriction failed for key: key-id (测试Key) from 127.0.0.1, User-Agent: Mozilla/5.0...
Redis连不上?
# 检查Redis是否启动 redis-cli ping # 应该返回 PONG
OAuth授权失败?
API请求失败?
在生产环境中,建议通过反向代理进行连接,以便使用自动 HTTPS、安全头部和性能优化。下面提供两种常用方案: Caddy 和 Nginx Proxy Manager (NPM)。
Caddy 是一款自动管理 HTTPS 证书的 Web 服务器,配置简单、性能优秀,很适合不需要 Docker 环境的部署方案。
1. 安装 Caddy
# Ubuntu/Debian sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list sudo apt update sudo apt install caddy # CentOS/RHEL/Fedora sudo yum install yum-plugin-copr sudo yum copr enable @caddy/caddy sudo yum install caddy
2. Caddy 配置
编辑
/etc/caddy/Caddyfile :
your-domain.com { # 反向代理到本地服务 reverse_proxy 127.0.0.1:3000 { # 支持流式响应或 SSE flush_interval -1 # 传递真实 IP header_up X-Real-IP {remote_host} header_up X-Forwarded-For {remote_host} header_up X-Forwarded-Proto {scheme} # 长读/写超时配置 transport http { read_timeout 300s write_timeout 300s dial_timeout 30s } } # 安全头部 header { Strict-Transport-Security "max-age=31536000; includeSubDomains" X-Frame-Options "DENY" X-Content-Type-Options "nosniff" -Server } }
3. 启动 Caddy
sudo caddy validate --config /etc/caddy/Caddyfile sudo systemctl start caddy sudo systemctl enable caddy sudo systemctl status caddy
4. 服务配置
Caddy 会自动管理 HTTPS,因此可以将服务限制在本地进行监听:
// config/config.js module.exports = { server: { port: 3000, host: '127.0.0.1' // 只监听本地 } }
Caddy 特点
Nginx Proxy Manager 通过图形化界面管理反向代理和 HTTPS 证书,並以 Docker 容器部署。
1. 在 NPM 创建新的 Proxy Host
Details 配置如下:
| 项目 | 设置 |
|---|---|
| Domain Names | relay.example.com |
| Scheme | http |
| Forward Hostname / IP | 192.168.0.1 (docker 机器 IP) |
| Forward Port | 3000 |
| Block Common Exploits | ☑️ |
| Websockets Support | ❌ 关闭 |
| Cache Assets | ❌ 关闭 |
| Access List | Publicly Accessible |
注意:
- 请确保 Claude Relay Service 监听 host 为
、容器 IP 或本机 IP,以便 NPM 实现内网连接。0.0.0.0- Websockets Support 和 Cache Assets 必须关闭,否则会导致 SSE / 流式响应失败。
2. Custom locations
無需添加任何内容,保持为空。
3. SSL 设置
4. Advanced 配置
Custom Nginx Configuration 中添加以下内容:
# 传递真实用户 IP proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # 支持 WebSocket / SSE 等流式通信 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_buffering off; # 长连接 / 超时设置(适合 AI 聊天流式传输) proxy_read_timeout 300s; proxy_send_timeout 300s; proxy_connect_timeout 30s; # ---- 安全性设置 ---- # 严格 HTTPS 策略 (HSTS) add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; # 阻挡点击劫持与内容嗅探 add_header X-Frame-Options "DENY" always; add_header X-Content-Type-Options "nosniff" always; # Referrer / Permissions 限制策略 add_header Referrer-Policy "no-referrer-when-downgrade" always; add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always; # 隐藏服务器信息(等效于 Caddy 的 `-Server`) proxy_hide_header Server; # ---- 性能微调 ---- # 关闭代理端缓存,确保即时响应(SSE / Streaming) proxy_cache_bypass $http_upgrade; proxy_no_cache $http_upgrade; proxy_request_buffering off;
4. 启动和验证
https://relay.example.com,如果显示绿色锁图标即表示 HTTPS 正常。NPM 特点
上述两种方案均可用于生产部署。
logs/ 目录下的日志文件如果您觉得这个项目对您有帮助,请考虑赞助支持项目的持续开发。您的支持是我们最大的动力!
本项目采用 MIT许可证。
⭐ 觉得有用的话给个Star呗,这是对作者最大的鼓励!
🤝 有问题欢迎提Issue,有改进建议欢迎PR