实现claude code自由!一键部署的Docker化claude-code-proxy解决方案

原理 你可以提供你的OpenAI 兼容的 API 来跑 claude code。提供一大一小模型。我的实践中是用佬友公益站提供的 gpt-4.1-mini 和 2.5pro。
基于 fuergaosi233/claude-code-proxy 项目(Anthropic Claude的API代理工具)以及 宙斯佬的初始化脚本实现

镜像名称lie5860/claude-code-proxy

如果有 python 环境可以直接使用原项目本地部署。.env 文件配置如下图左侧。如果是 docker 部署环境变量配置如下图右侧即可。

部署成功之后可以用浏览器直接访问测试是否成功,本地跑的话默认在 http://127.0.0.1:8082 上。

然后使用下面的脚本初始化 将 http://xxxxxxxxxxxxxx 替换为你起的服务地址(例如 http://127.0.0.1:8082 )就好了。apikey 是随便写的一个值不重要。
ps:windows 系统的话就参考宙斯佬的windows脚本吧ANTHROPIC_BASE_URL相关的地址都改成你的服务器地址就好了。没有设备还无法测试。

macos 初始化脚本
#!/bin/bash

echo "Checking for Claude Code installation..."

# Check if claudecode command exists
if command -v claudecode &> /dev/null; then
    echo "Claude Code is already installed."
else
    echo "Claude Code not found. Installing..."
    
    # Check if npm is available
    if ! command -v npm &> /dev/null; then
        echo "Error: npm is not installed. Please install Node.js first."
        exit 1
    fi
    
    # Install Claude Code
    echo "Installing Claude Code via npm..."
    if ! npm install -g @anthropic-ai/claude-code; then
        echo "Error: Failed to install Claude Code."
        exit 1
    fi
    
    echo "Claude Code installed successfully."
fi

echo "Setting up Claude Code configuration..."

# Create .claude directory if it doesn't exist
CLAUDE_DIR="$HOME/.claude"
if [ ! -d "$CLAUDE_DIR" ]; then
    mkdir -p "$CLAUDE_DIR"
fi

SETTINGS_FILE="$CLAUDE_DIR/settings.json"

# Check if settings.json already exists
if [ -f "$SETTINGS_FILE" ]; then
    echo "Settings file exists. Updating API configuration..."
    
    # Create backup
    cp "$SETTINGS_FILE" "$SETTINGS_FILE.backup"
    
    # Check if jq is available for JSON manipulation
    if command -v jq &> /dev/null; then
        # Use jq to modify the JSON
        jq '.env.ANTHROPIC_API_KEY_OLD = .env.ANTHROPIC_API_KEY | .env.ANTHROPIC_BASE_URL_OLD = .env.ANTHROPIC_BASE_URL | .env.ANTHROPIC_API_KEY = "sk-jn0fhoMxvA8bk2SWPLgeolqAXriBPIc8" | .env.ANTHROPIC_BASE_URL = "http://xxxxxxxxxxxxxx" | .apiKeyHelper = "echo '\''sk-jn0fhoMxvA8bk2SWPLgeolqAXriBPIc8'\''"' "$SETTINGS_FILE" > "$SETTINGS_FILE.tmp" && mv "$SETTINGS_FILE.tmp" "$SETTINGS_FILE"
    else
        # Fallback: use sed to comment out and add new values
        echo "jq not found, using sed for modification..."
        
        # Use Python if available for better JSON handling
        if command -v python3 &> /dev/null; then
            python3 -c "
import json
import sys

with open('$SETTINGS_FILE', 'r') as f:
    data = json.load(f)

# Backup old values
if 'ANTHROPIC_API_KEY' in data['env']:
    data['env']['ANTHROPIC_API_KEY_OLD'] = data['env']['ANTHROPIC_API_KEY']
if 'ANTHROPIC_BASE_URL' in data['env']:
    data['env']['ANTHROPIC_BASE_URL_OLD'] = data['env']['ANTHROPIC_BASE_URL']

# Set new values
data['env']['ANTHROPIC_API_KEY'] = 'sk-jn0fhoMxvA8bk2SWPLgeolqAXriBPIc8'
data['env']['ANTHROPIC_BASE_URL'] = 'http://xxxxxxxxxxxxxx'
data['apiKeyHelper'] = 'echo \\'sk-jn0fhoMxvA8bk2SWPLgeolqAXriBPIc8\\''

with open('$SETTINGS_FILE', 'w') as f:
    json.dump(data, f, indent=2)
"
        else
            echo "Warning: Neither jq nor python3 found. Overwriting settings file."
            cat > "$SETTINGS_FILE" << 'EOF'
{
  "env": {
    "ANTHROPIC_API_KEY": "sk-jn0fhoMxvA8bk2SWPLgeolqAXriBPIc8",
    "ANTHROPIC_BASE_URL": "http://xxxxxxxxxxxxxx"
  },
  "permissions": {
    "allow": [],
    "deny": []
  },
  "apiKeyHelper": "echo 'sk-jn0fhoMxvA8bk2SWPLgeolqAXriBPIc8'"
}
EOF
        fi
    fi
    
    echo "Updated existing settings file with new API configuration."
    echo "Original values backed up with _OLD suffix."
else
    # Create new settings.json
    echo "Creating new settings.json..."
    cat > "$SETTINGS_FILE" << 'EOF'
{
  "env": {
    "ANTHROPIC_API_KEY": "sk-jn0fhoMxvA8bk2SWPLgeolqAXriBPIc8",
    "ANTHROPIC_BASE_URL": "http://xxxxxxxxxxxxxx"
  },
  "permissions": {
    "allow": [],
    "deny": []
  },
  "apiKeyHelper": "echo 'sk-jn0fhoMxvA8bk2SWPLgeolqAXriBPIc8'"
}
EOF
    echo "Created new settings file."
fi

echo "Configuration complete!"
echo "Settings saved to: $CLAUDE_DIR/settings.json"

或者是使用claude code 的客户端。分享编译后的macos的Claudia 安装包。

然后就可以快乐 claude 起来啦~

效果图如下,还是很不错的呢。(楼主 docker 也不会,一次就打包出可以用的很开心诶,如果有佬不支持的设备可以回复一下。第一次写不知道~现在支持amd64,arm64)


(终于可以把 T 佬的 2.5pro 用起来了吗!快乐!

116 Likes

感谢分享~

1 Like

感谢佬友!

1 Like

大佬牛逼 promax

1 Like

claude code 是在交互还是在prompt 上做得比较好吗,这个方案跟在cursor中用t佬的 2.5pro比有什么优势呢

我 roocode 有点用不惯。我自己主要是用 cursor pro edu。目前还在体验中。

2 Likes

大佬出手了,T佬给的token不是只有deepseek和openai小模型么,问下你们的claude 模型怎么可以获取,谢谢

1 Like

用 gemini-2.5-pro 呀。这个大哦

1 Like

哦哦,好的谢谢大佬

1 Like

感谢 等会试试

谢谢佬友 有空试看看

1 Like

感谢大佬教程

1 Like

感谢大佬!

2 Likes

:grinning_face: 我也试了下,不过用 t佬的token一下子就超rpm了

不不不 佬我给你提供一个思路。你想想。为什么一下子 rpm 超了。因为他是大小混用。小的频繁用。那么我们可以把小的这个 gpt-4o-mini 使用 T 佬的公开 1000rpm 的 openai key。或者自费买个 deepseek-v3 (便宜的很呢)。或者自己的 openai 免费的 gpt-4o-mini (数据共享计划)

1 Like

感谢佬友分享

哦对不起~我仔细看了一下 不是 1000rpm 是无上限呢!

  • RPM极高,DeepSeek:1000(所有用户共享),OpenAI:无限制(由上游限制)。
  • 点击领取OpenAI Key ,可用 gpt-4.1-mini, gpt-4.1-nano, gpt-4o-mini 模型。
1 Like

感谢佬,另外,这个proxy项目支持大小模型分开url吗,没看到相关的配置 :joy:
如果可以的话倒是可以解决问题

:rofl:我刚才也想到了佬可能有这个问题。。我自己是 docker 搭了一个 N 佬开发的veloera所以没这个问题。。可以在 claude-code-proxy 上给大佬提个需求`。 其实我觉得拥有一个自己的new-api 还是挺好的。这样更换公益站的资源是很方便的。公益站的资源变动相对较大一些。总不能他们一变我们项目的全部配置都要改一遍吧~太麻烦啦。~

2 Likes

佬友怎么解决哇!