使用 Docker 部署 ClaudeCodeUI+Claude-Code-Router 中文教程

使用 Docker 部署 ClaudeCodeUI+Claude-Code-Router 中文教程

惊呼这才是生产力工具!国内也能用的 AI 编程神器!

项目介绍

ClaudeCodeUI + Claude-Code-Router 是一套强大的 AI
编程助手解决方案。由于国内无法直接访问 Claude,本方案使用了七牛云 AI
推理、蓝耘科技、智谱 AI、魔塔社区、硅基流动等国内可用的 API
提供商,实现真正可用的 AI 编程!

架构说明

  • Claude-Code-Router: 路由服务,将请求转发到国内 AI 提供商
  • ClaudeCodeUI: 现代化的 Web 界面,支持桌面和移动设备
  • 多种 AI 提供商: 支持 Kimi、智谱 GLM-4.5 等模型

申请 kimi 的 apikey 网址:

Moonshot AI 开放平台 - Kimi 大模型 API 服务

https://​platform.moonshot.cn/console/api-keys

申请智谱 apikey 网址: 智谱 AI 开放平台

https://​bigmodel.cn/usercenter/proj-mgmt/apikeys

https://gitee.com/masx200/claude-code-router

https://gitee.com/masx200/ClaudeWebUI-Docker

原始项目地址

https://github.com/musistudio/claude-code-router/

https://github.com/sruckh/ClaudeWebUI-Docker

https://github.com/siteboon/claudecodeui

部署步骤

1. 创建网络

docker network create shared_net-network

2. 配置 API 密钥

编辑配置文件,替换为你自己的 API 密钥:

config.json - 路由器配置:

{
  "APIKEY": "你的API密钥",
  "Providers": [
    {
      "name": "七牛云AI推理",
      "api_base_url": "https://api.qnaigc.com/v1/chat/completions",
      "api_key": "你的七牛云API密钥",
      "models": ["kimi-k2"]
    },
    {
      "name": "蓝耘科技",
      "api_base_url": "https://maas-api.lanyun.net/v1/chat/completions",
      "api_key": "你的蓝耘API密钥",
      "models": ["/maas/kimi/Kimi-K2-Instruct"]
    },
    {
      "name": "智谱AI",
      "api_base_url": "https://open.bigmodel.cn/api/paas/v4/chat/completions",
      "api_key": "你的智谱API密钥",
      "models": ["glm-4.5"]
    }
  ]
}

claudecodeui.yml - UI 服务配置:

environment:
  - "ANTHROPIC_API_KEY=你的API密钥"
  - "ANTHROPIC_BASE_URL=http://路由器IP:13456"
  - "ANTHROPIC_AUTH_TOKEN=你的认证令牌"

3. 启动服务

启动 Claude-Code-Router 路由器

# 使用现有的YAML配置
docker-compose -f claude-code-router.yml up -d

# 或者手动运行
docker run -d \
  --name claude-code-router \
  --network shared_net-network \
  -p 13456:13456 \
  -v "f:/docker/claude-code-router/root/.claude-code-router:/root/.claude-code-router" \
  docker.cnb.cool/masx200/docker_mirror/claude-code-router:1.0.33

启动 ClaudeCodeUI 界面

先创建一个空的数据库文件"F:/ClaudeWebUI-Docker-main/database/auth.db",

# 使用现有的YAML配置
docker-compose -f claudecodeui.yml up -d

# 或者手动运行
docker run -d \
  --name claudecodeui \
  --network shared_net-network \
  -p 3008:3008 \
  -e ANTHROPIC_API_KEY=你的API密钥 \
  -e ANTHROPIC_BASE_URL=http://claude-code-router:13456 \
  -e ANTHROPIC_AUTH_TOKEN=你的认证令牌 \
  -v "F:/ClaudeWebUI-Docker-main/database/auth.db:/app/server/database/auth.db" \
  registry.cn-hangzhou.aliyuncs.com/masx200/claudewebui:1.5.0

API 提供商申请指南

1. 七牛云 AI 推理

  • 官网:https://www.qiniu.com/
  • 免费额度:每月 1 万 tokens
  • 申请步骤:注册账号 → 控制台 →AI 推理 → 获取 API 密钥

2. 蓝耘科技

3. 智谱 AI

4. ModelScope 魔塔

5. 硅基流动

系统特色功能

🚀 智能路由

  • 自动选择最佳 API 提供商
  • 负载均衡,避免单点故障
  • 支持故障转移

💬 中文优化

  • 完全支持中文对话
  • 中文文件名、路径无乱码
  • 符合中文开发习惯

📱 多端支持

  • 支持桌面浏览器(Chrome、Firefox、Safari)
  • 支持移动设备(iOS、Android)
  • 支持 PWA,可添加到主屏

🔧 特性功能

  • 实时文件编辑(支持语法高亮)
  • Git 集成(提交、分支、Diff)
  • 集成终端(支持 bash/zsh)
  • 项目目录树浏览
  • 会话历史管理
  • 多标签支持

使用场景

  1. 代码生成:根据需求生成完整的代码文件
  2. 代码解释:看懂复杂的开源项目代码
  3. 代码重构:安全地重构现有代码库
  4. Bug 修复:快速定位并修复代码问题
  5. 文档生成:自动生成项目文档和 API 文档

测试验证

部署完成后,访问:

性能优化建议

1. 缓存策略

  • 启用 Redis 缓存经常使用的对话
  • 设置合理的缓存过期时间

2. 负载均衡

  • 在生产环境中使用 Nginx 作为反向代理
  • 配置多个路由器实例做负载均衡

3. 监控告警

  • 使用 Prometheus 监控 API 调用成功率
  • 设置 SLA 告警,保证服务质量

常见问题解答

Q: 为什么国内无法直接访问 Claude? A: Anthropic
在中国地区暂未开放服务,但可以通过我们的路由器方案使用国内的 AI 提供商。

Q: 如何选择最合适的 AI 模型? A:
本项目已经配置了智能路由,会根据任务类型自动选择最适合的模型。

Q: 支持的编程语言有哪些? A:
支持所有主流编程语言:JavaScript/TypeScript、Python、Java、Go、Rust、C++等。

Q: 是否需要付费? A: 路由器和 UI 完全开源免费,只需支付各 AI 提供商的 API
调用费用,大部分都有免费额度。

总结

这套解决方案才是真正适合国内开发者的 AI 编程神器!无需FQ,使用国内稳定、快速的
AI 服务,配合现代化的 Web 界面,让 AI 编程变得前所未有的简单。仅需将 API
密钥替换为你自己的即可使用,真正做到了即开即用!

部署完成后,你会惊呼:这才是真正的生产力工具!

可以在网页中进行配置 claude-code-router,访问

http://127.0.0.1:3008/

claude-code-ui 图形化界面如图所示

086f93ce7c6747e1ad6c4aa633532947~tplv-73owjymdk6-jj-mark-v1_0_0_0_0_5o6Y6YeR5oqA5pyv56S-5Yy6IEAgbWFzeDIwMA==_q75

http://localhost:13456/ui/

claude-code-router 图形化界面如图所示

bf88d95bd37f4adc86e3b0495b7270b6~tplv-73owjymdk6-jj-mark-v1_0_0_0_0_5o6Y6YeR5oqA5pyv56S-5Yy6IEAgbWFzeDIwMA==_q75

最后贴上我的配置文件为例:

"F:\docker\claude-code-router\root.claude-code-router\config.json"

{
  "LOG": true,
  "CLAUDE_PATH": "C:\\Users\\msx\\AppData\\Local\\Yarn\\Data\\global\\node_modules\\.bin\\claude.cmd",
  "HOST": "0.0.0.0",
  "PORT": 13456,
  "APIKEY": "<api-key>",
  "API_TIMEOUT_MS": "600000",
  "PROXY_URL": "",
  "transformers": [],
  "Providers": [
    {
      "name": "七牛云AI推理",
      "api_base_url": "https://api.qnaigc.com/v1/chat/completions",
      "api_key": "<api-key>",
      "models": ["kimi-k2"]
    },
    {
      "name": "蓝耘科技",
      "api_base_url": "https://maas-api.lanyun.net/v1/chat/completions",
      "api_key": "<api-key>",
      "models": ["/maas/kimi/Kimi-K2-Instruct"]
    },
    {
      "name": "智谱AI",
      "api_base_url": "https://open.bigmodel.cn/api/paas/v4/chat/completions",
      "api_key": "<api-key>",
      "models": ["glm-4.5"]
    },
    {
      "name": "modelscope魔塔",
      "api_base_url": "https://api-inference.modelscope.cn/v1/chat/completions",
      "api_key": "<api-key>",
      "models": ["moonshotai/Kimi-K2-Instruct"]
    },
    {
      "name": "硅基流动",
      "api_base_url": "https://api.siliconflow.cn/v1/chat/completions",
      "api_key": "<api-key>",
      "models": ["moonshotai/Kimi-K2-Instruct"]
    }
  ],
  "Router": {
    "default": "modelscope魔塔,moonshotai/Kimi-K2-Instruct",
    "background": "蓝耘科技,/maas/kimi/Kimi-K2-Instruct",
    "think": "智谱AI,glm-4.5",
    "longContext": "蓝耘科技,/maas/kimi/Kimi-K2-Instruct",
    "longContextThreshold": 60000,
    "webSearch": "七牛云AI推理,kimi-k2"
  }
}

claude-code-router.yml

networks:
  shared_net-network:
    external: true
    name: "shared_net-network"
    driver: bridge
    enable_ipv6: true
    ipam:
      config:
        - subnet: "172.25.25.0/24"
        - subnet: "fc99:db8:21::/64"

services:
  claude-code-router:
    cap_drop:
      - "AUDIT_CONTROL"
      - "BLOCK_SUSPEND"
      - "DAC_READ_SEARCH"
      - "IPC_LOCK"
      - "IPC_OWNER"
      - "LEASE"
      - "LINUX_IMMUTABLE"
      - "MAC_ADMIN"
      - "MAC_OVERRIDE"
      - "NET_ADMIN"
      - "NET_BROADCAST"
      - "SYSLOG"
      - "SYS_ADMIN"
      - "SYS_BOOT"
      - "SYS_MODULE"
      - "SYS_NICE"
      - "SYS_PACCT"
      - "SYS_PTRACE"
      - "SYS_RAWIO"
      - "SYS_RESOURCE"
      - "SYS_TIME"
      - "SYS_TTY_CONFIG"
      - "WAKE_ALARM"

    command:
      - "sh"
      - "-c"
      - "rm -frv /root/.claude-code-router/.claude-code-router.pid  && 'node' 'dist/cli.js' 'start'"

    container_name: "claude-code-router"

    entrypoint:
      - "docker-entrypoint.sh"

    environment:
      - "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
      - "NODE_VERSION=24.5.0"
      - "YARN_VERSION=1.22.22"

    hostname: "aa53006c8dc1"

    image: "docker.cnb.cool/masx200/docker_mirror/claude-code-router:1.0.33"

    ipc: "private"

    logging:
      driver: "json-file"
      options: {}

    networks:
      - "shared_net-network"

    ports:
      - "13456:13456/tcp"

    restart: "always"

    stdin_open: true

    tty: true

    volumes:
      - "f:/docker/claude-code-router/root/.claude-code-router:/root/.claude-code-router"

    working_dir: "/app"

version: "3.6"

claudecodeui.yml

services:
  claudecodeui:
    cap_drop:
      - "AUDIT_CONTROL"
      - "BLOCK_SUSPEND"
      - "DAC_READ_SEARCH"
      - "IPC_LOCK"
      - "IPC_OWNER"
      - "LEASE"
      - "LINUX_IMMUTABLE"
      - "MAC_ADMIN"
      - "MAC_OVERRIDE"
      - "NET_ADMIN"
      - "NET_BROADCAST"
      - "SYSLOG"
      - "SYS_ADMIN"
      - "SYS_BOOT"
      - "SYS_MODULE"
      - "SYS_NICE"
      - "SYS_PACCT"
      - "SYS_RAWIO"
      - "SYS_RESOURCE"
      - "SYS_TIME"
      - "SYS_TTY_CONFIG"
      - "WAKE_ALARM"

    command:
      - "npm"
      - "run"
      - "server"

    container_name: "claudecodeui"

    entrypoint:
      - "docker-entrypoint.sh"

    environment:
      - "ANTHROPIC_API_KEY=<api-key>"
      - "OPENAI_API_KEY=<api-key>"
      - "HOME=/opt/docker"
      - "ANTHROPIC_BASE_URL=http://<docker宿主机ip>:13456"
      - "TZ=Asia/Shanghai"
      - "ANTHROPIC_AUTH_TOKEN=<api-key>"
      - "JWT_SECRET=<随机字符串>"
      - "VITE_PORT=3009"
      - "DB_PATH=/app/data/auth.db"
      - "PORT=3008"
      - "NODE_ENV=production"
      - "API_KEY="
      - "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
      - "NODE_VERSION=20.19.3"
      - "YARN_VERSION=1.22.22"

    hostname: "cb666984ce22"

    image: "registry.cn-hangzhou.aliyuncs.com/masx200/claudewebui:1.5.0"

    ipc: "private"

    labels:
      com.docker.compose.config-hash: "c073333da1e6c64f2fd1eea3aba867442a40bd746930154aea382912a2827436"
      com.docker.compose.container-number: "1"
      com.docker.compose.depends_on: ""
      com.docker.compose.image: "sha256:f84e56b73a32b520111f0661463952401e91acae09e76ea90a54282aaf8f1ac9"
      com.docker.compose.oneoff: "False"
      com.docker.compose.project: "claudecodeui"
      com.docker.compose.project.config_files: ""
      com.docker.compose.project.working_dir: "f:\\portainer\\data\\compose\\84"
      com.docker.compose.service: "claudecodeui"
      com.docker.compose.version: ""

    logging:
      driver: "json-file"
      options: {}

    networks:
      - "shared_net-network"

    ports:
      - "3008:3008/tcp"

    privileged: true

    restart: "always"

    security_opt:
      - "label=disable"

    stdin_open: true

    tty: true

    user: "0:0"

    volumes:
      - "F:/ClaudeWebUI-Docker-main/claudecodeui_data:/app/data"
      - "F:/ClaudeWebUI-Docker-main/database/auth.db:/app/server/database/auth.db"
      - "F:/ClaudeWebUI-Docker-main/opt/docker/.gitconfig:/home/nodejs/.gitconfig:ro"
      - "F:/ClaudeWebUI-Docker-main/opt/docker:/opt/docker"

    working_dir: "/app"

version: "3.6"

networks:
  shared_net-network:
    external: false
    name: "shared_net-network"
    driver: bridge
    enable_ipv6: true
    ipam:
      config:
        - subnet: "172.25.25.0/24"
        - subnet: "fc99:db8:21::/64"
posted @ 2025-08-07 19:27  masx200  阅读(991)  评论(0)    收藏  举报