上一篇 下一篇 分享链接 返回 返回顶部

Claude 不能本地部署?企业内网接入方案和完整命令整理

发布人:慈云数据-客服中心 发布时间:7小时前 阅读量:3

Claude 私有化部署方案|附完整命令

说明:严格意义上,Claude 目前并不支持“模型权重私有化部署”。Claude 是 Anthropic 提供的闭源大模型服务,官方并未开放 Claude 3/3.5/3.7/4 等模型权重,因此无法像部署 Llama、Qwen、DeepSeek、Mistral 那样把 Claude 模型文件下载到本地服务器运行。

但在企业实际落地中,很多人所说的“Claude 私有化部署”,通常指的是:

  • 在企业内网部署一套私有 AI 网关;
  • 统一接入 Claude API;
  • 控制访问权限、日志审计、限流计费;
  • 对外提供类似 OpenAI API 的统一接口;
  • 结合本地知识库、RAG、向量数据库和企业应用;
  • 必要时使用本地开源模型作为 Claude 的替代或兜底方案。

本文将围绕企业可落地的“Claude 私有化部署方案”展开,给出完整架构、部署步骤、Docker Compose 配置、反向代理配置、API 测试命令,以及可选的本地大模型替代方案。


一、Claude 能不能真正私有化部署?

先给结论:

Claude 不能真正私有化部署模型本体。

原因很简单:

Claude 是 Anthropic 的商业闭源模型,用户无法获得:

  • Claude 模型权重;
  • Claude 推理引擎;
  • Claude 训练数据;
  • Claude 本地运行镜像;
  • Claude 离线部署包。

因此,所谓“把 Claude 部署到自己的服务器上”在当前阶段并不可行。

不过,企业仍然可以通过以下方式实现“准私有化”或“企业级私有接入”:

方案 是否真正私有化模型 适用场景
直接调用 Anthropic Claude API 快速接入 Claude
通过企业内网 AI Gateway 接入 Claude 统一鉴权、审计、限流
通过 AWS Bedrock 使用 Claude 云上企业合规、区域控制
部署 Open WebUI + LiteLLM + Claude API 内部 ChatGPT/Claude 平台
部署本地开源模型替代 Claude 数据不出内网、离线环境
Claude + 本地 RAG 混合架构 部分 企业知识库问答、客服、研发助手

本文推荐采用下面这种架构:

用户 / 内部系统
      |
      v
企业统一 AI 入口
Open WebUI / 自研前端 / 企业应用
      |
      v
LiteLLM Proxy / AI Gateway
      |
      +---------------------> Anthropic Claude API
      |
      +---------------------> OpenAI / Azure OpenAI
      |
      +---------------------> 本地 Ollama / vLLM / Qwen / Llama
      |
      v
日志审计 / 权限控制 / 限流 / 成本统计

二、推荐部署架构

本文采用以下组件搭建企业内部 Claude 接入平台:

组件 作用
Ubuntu Server 部署基础环境
Docker / Docker Compose 容器化部署
LiteLLM Proxy 统一大模型 API 网关
Open WebUI 内部聊天界面
Nginx 反向代理、HTTPS 接入
PostgreSQL Open WebUI 数据存储,可选
Redis 缓存、队列,可选
Ollama 本地开源模型推理,可选
vLLM 高性能本地推理服务,可选

其中核心是 LiteLLM Proxy

LiteLLM 可以把不同模型供应商统一成 OpenAI 兼容接口,例如:

  • Claude;
  • OpenAI;
  • Azure OpenAI;
  • Gemini;
  • Bedrock;
  • Ollama;
  • vLLM;
  • Together AI;
  • Groq;
  • DeepSeek;
  • Qwen 等。

这样企业内部系统只需要对接一个地址:

http://ai-gateway.company.local/v1/chat/completions

后端到底调用 Claude、GPT、Gemini、Qwen 还是本地模型,都由网关统一管理。


三、服务器准备

建议服务器配置如下。

1. 最小配置

如果只是部署 Claude API 网关和 WebUI,不跑本地大模型:

项目 配置
CPU 2 核以上
内存 4GB 以上
磁盘 40GB 以上
GPU 不需要
系统 Ubuntu 22.04 LTS / Ubuntu 24.04 LTS

2. 本地模型配置

如果希望部署本地模型作为 Claude 替代方案:

模型规模 推荐显存
7B / 8B 8GB - 16GB
14B 24GB - 48GB
32B 48GB - 80GB
70B 80GB 以上或多卡

如果只是企业内部轻量使用,可以先用 Ollama 部署 Qwen2.5、Llama3.1、DeepSeek-R1-Distill 等模型。


四、安装 Docker 和 Docker Compose

以下命令以 Ubuntu 为例。

1. 更新系统

sudo apt update
sudo apt upgrade -y

2. 安装基础工具

sudo apt install -y ca-certificates curl gnupg lsb-release git vim ufw

3. 添加 Docker 官方 GPG Key

sudo install -m 0755 -d /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
  | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

sudo chmod a+r /etc/apt/keyrings/docker.gpg

4. 添加 Docker 软件源

echo \
  "deb [arch=$(dpkg --print-architecture) \
  signed-by=/etc/apt/keyrings/docker.gpg] \
  https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" \
  | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

5. 安装 Docker

sudo apt update

sudo apt install -y docker-ce docker-ce-cli containerd.io \
  docker-buildx-plugin docker-compose-plugin

6. 启动 Docker

sudo systemctl enable docker
sudo systemctl start docker

7. 验证 Docker

docker --version
docker compose version

8. 将当前用户加入 Docker 用户组

sudo usermod -aG docker $USER

执行完后重新登录服务器,或者执行:

newgrp docker

五、获取 Claude API Key

Claude API Key 需要从 Anthropic 控制台获取。

官方地址:

https://console.anthropic.com/

创建 API Key 后,建议不要直接写死在代码中,而是写入服务器环境变量或 .env 文件。

例如:

mkdir -p /opt/claude-private
cd /opt/claude-private

vim .env

写入:

ANTHROPIC_API_KEY=sk-ant-xxxxxxxxxxxxxxxxxxxxxxxx
LITELLM_MASTER_KEY=sk-company-master-key-change-me

注意:

  • ANTHROPIC_API_KEY 是 Anthropic 官方 API Key;
  • LITELLM_MASTER_KEY 是内部调用 LiteLLM Proxy 时使用的统一密钥;
  • 生产环境不要使用弱密钥;
  • 不要把 .env 提交到 Git 仓库。

六、部署 LiteLLM Proxy

1. 创建配置文件

进入部署目录:

cd /opt/claude-private

创建 LiteLLM 配置文件:

vim litellm_config.yaml

写入以下内容:

model_list:
  - model_name: claude-3-5-sonnet
    litellm_params:
      model: anthropic/claude-3-5-sonnet-20241022
      api_key: os.environ/ANTHROPIC_API_KEY

  - model_name: claude-3-5-haiku
    litellm_params:
      model: anthropic/claude-3-5-haiku-20241022
      api_key: os.environ/ANTHROPIC_API_KEY

  - model_name: claude-3-opus
    litellm_params:
      model: anthropic/claude-3-opus-20240229
      api_key: os.environ/ANTHROPIC_API_KEY

general_settings:
  master_key: os.environ/LITELLM_MASTER_KEY

litellm_settings:
  drop_params: true
  request_timeout: 600
  set_verbose: false

说明:

  • model_name 是企业内部暴露给业务系统的模型名;
  • model 是实际调用的供应商模型;
  • anthropic/ 表示通过 Anthropic API 调用;
  • master_key 是调用 LiteLLM 网关时使用的认证密钥;
  • drop_params: true 可以自动忽略部分不兼容参数,降低适配成本。

七、编写 Docker Compose 文件

创建 docker-compose.yml

vim docker-compose.yml

写入以下内容:

services:
  litellm:
    image: ghcr.io/berriai/litellm:main-latest
    container_name: litellm
    restart: unless-stopped
    env_file:
      - .env
    command:
      - "--config"
      - "/app/config.yaml"
      - "--port"
      - "4000"
      - "--num_workers"
      - "4"
    volumes:
      - ./litellm_config.yaml:/app/config.yaml
    ports:
      - "4000:4000"

启动服务:

docker compose up -d

查看容器状态:

docker ps

查看日志:

docker logs -f litellm

如果服务正常启动,可以访问:

http://服务器IP:4000

八、测试 Claude API 网关

LiteLLM Proxy 默认提供 OpenAI 兼容接口。

1. 查看模型列表

curl http://127.0.0.1:4000/v1/models \
  -H "Authorization: Bearer sk-company-master-key-change-me"

如果配置正常,会返回类似:

{
  "data": [
    {
      "id": "claude-3-5-sonnet",
      "object": "model"
    },
    {
      "id": "claude-3-5-haiku",
      "object": "model"
    }
  ]
}

2. 测试聊天补全接口

curl http://127.0.0.1:4000/v1/chat/completions \
  -H "Authorization: Bearer sk-company-master-key-change-me" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-3-5-sonnet",
    "messages": [
      {
        "role": "system",
        "content": "你是企业内部AI助手,请用中文回答。"
      },
      {
        "role": "user",
        "content": "请用三句话介绍一下Claude适合哪些企业场景。"
      }
    ],
    "temperature": 0.7
  }'

3. 测试流式输出

curl http://127.0.0.1:4000/v1/chat/completions \
  -H "Authorization: Bearer sk-company-master-key-change-me" \
  -H "Content-Type: application/json" \
  -N \
  -d '{
    "model": "claude-3-5-sonnet",
    "stream": true,
    "messages": [
      {
        "role": "user",
        "content": "写一份企业知识库AI助手建设方案。"
      }
    ]
  }'

九、部署 Open WebUI 作为内部聊天界面

如果企业希望提供类似 ChatGPT 的内部网页,可以部署 Open WebUI。

1. 修改 Docker Compose

编辑 docker-compose.yml

vim docker-compose.yml

更新为:

services:
  litellm:
    image: ghcr.io/berriai/litellm:main-latest
    container_name: litellm
    restart: unless-stopped
    env_file:
      - .env
    command:
      - "--config"
      - "/app/config.yaml"
      - "--port"
      - "4000"
      - "--num_workers"
      - "4"
    volumes:
      - ./litellm_config.yaml:/app/config.yaml
    ports:
      - "4000:4000"

  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    restart: unless-stopped
    environment:
      - OPENAI_API_BASE_URL=http://litellm:4000/v1
      - OPENAI_API_KEY=sk-company-master-key-change-me
      - WEBUI_AUTH=true
    volumes:
      - ./open-webui-data:/app/backend/data
    ports:
      - "3000:8080"
    depends_on:
      - litellm

重启服务:

docker compose down
docker compose up -d

查看状态:

docker ps

访问:

http://服务器IP:3000

首次访问需要注册管理员账号。


十、配置 Nginx 反向代理

生产环境不建议直接暴露 30004000 端口,建议使用 Nginx 做统一入口。

1. 安装 Nginx

sudo apt install -y nginx

2. 创建站点配置

sudo vim /etc/nginx/sites-available/ai.conf

写入:

server {
    listen 80;
    server_name ai.example.com;

    client_max_body_size 100m;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;

        proxy_set_header Host $host;
        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;

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_read_timeout 600s;
        proxy_send_timeout 600s;
    }

    location /v1/ {
        proxy_pass http://127.0.0.1:4000/v1/;
        proxy_http_version 1.1;

        proxy_set_header Host $host;
        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;

        proxy_read_timeout 600s;
        proxy_send_timeout 600s;
    }
}

启用站点:

sudo ln -s /etc/nginx/sites-available/ai.conf /etc/nginx/sites-enabled/ai.conf

测试配置:

sudo nginx -t

重载 Nginx:

sudo systemctl reload nginx

现在可以通过:

http://ai.example.com

访问 Open WebUI。

API 调用地址为:

http://ai.example.com/v1/chat/completions

十一、配置 HTTPS 证书

如果使用公网域名,建议使用 Let's Encrypt 免费证书。

1. 安装 Certbot

sudo apt install -y certbot python3-certbot-nginx

2. 申请证书

sudo certbot --nginx -d ai.example.com

根据提示输入邮箱、同意协议即可。

3. 测试自动续期

sudo certbot renew --dry-run

完成后访问:

https://ai.example.com

十二、防火墙配置

如果使用 UFW,可以这样配置:

sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable

查看状态:

sudo ufw status

如果不希望外部直接访问 LiteLLM 和 Open WebUI 的容器端口,可以只开放 80 和 443。

同时建议修改 docker-compose.yml 中端口绑定方式,只监听本机:

ports:
  - "127.0.0.1:4000:4000"

Open WebUI 也可以改成:

ports:
  - "127.0.0.1:3000:8080"

完整示例:

services:
  litellm:
    image: ghcr.io/berriai/litellm:main-latest
    container_name: litellm
    restart: unless-stopped
    env_file:
      - .env
    command:
      - "--config"
      - "/app/config.yaml"
      - "--port"
      - "4000"
      - "--num_workers"
      - "4"
    volumes:
      - ./litellm_config.yaml:/app/config.yaml
    ports:
      - "127.0.0.1:4000:4000"

  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    restart: unless-stopped
    environment:
      - OPENAI_API_BASE_URL=http://litellm:4000/v1
      - OPENAI_API_KEY=sk-company-master-key-change-me
      - WEBUI_AUTH=true
    volumes:
      - ./open-webui-data:/app/backend/data
    ports:
      - "127.0.0.1:3000:8080"
    depends_on:
      - litellm

重启:

docker compose down
docker compose up -d

十三、接入企业内部系统

企业内部业务系统只需要按照 OpenAI API 格式调用即可。

1. Python 示例

安装依赖:

pip install openai

示例代码:

from openai import OpenAI

client = OpenAI(
    api_key="sk-company-master-key-change-me",
    base_url="https://ai.example.com/v1"
)

response = client.chat.completions.create(
    model="claude-3-5-sonnet",
    messages=[
        {"role": "system", "content": "你是企业内部AI助手。"},
        {"role": "user", "content": "请总结一下合同审查中常见的风险点。"}
    ],
    temperature=0.3
)

print(response.choices[0].message.content)

2. Node.js 示例

安装依赖:

npm install openai

示例代码:

import OpenAI from "openai";

const client = new OpenAI({
  apiKey: "sk-company-master-key-change-me",
  baseURL: "https://ai.example.com/v1"
});

const response = await client.chat.completions.create({
  model: "claude-3-5-sonnet",
  messages: [
    {
      role: "system",
      content: "你是企业内部AI助手。"
    },
    {
      role: "user",
      content: "请生成一份项目周报模板。"
    }
  ],
  temperature: 0.5
});

console.log(response.choices[0].message.content);

十四、增加本地模型作为 Claude 替代或兜底

由于 Claude 无法离线部署,如果企业对数据出境、网络可用性、成本控制有严格要求,建议增加本地模型。

这里以 Ollama 为例。

1. 安装 Ollama

curl -fsSL https://ollama.com/install.sh | sh

启动服务:

sudo systemctl enable ollama
sudo systemctl start ollama

查看状态:

systemctl status ollama

2. 下载模型

例如下载 Qwen2.5 7B:

ollama pull qwen2.5:7b

下载 Llama 3.1 8B:

ollama pull llama3.1:8b

下载 DeepSeek R1 蒸馏模型:

ollama pull deepseek-r1:8b

测试:

ollama run qwen2.5:7b

3. 修改 LiteLLM 配置接入 Ollama

编辑:

vim litellm_config.yaml

增加:

model_list:
  - model_name: claude-3-5-sonnet
    litellm_params:
      model: anthropic/claude-3-5-sonnet-20241022
      api_key: os.environ/ANTHROPIC_API_KEY

  - model_name: local-qwen2.5-7b
    litellm_params:
      model: ollama/qwen2.5:7b
      api_base: http://host.docker.internal:11434

  - model_name: local-llama3.1-8b
    litellm_params:
      model: ollama/llama3.1:8b
      api_base: http://host.docker.internal:11434

general_settings:
  master_key: os.environ/LITELLM_MASTER_KEY

litellm_settings:
  drop_params: true
  request_timeout: 600

如果在 Linux Docker 中无法访问 host.docker.internal,可以在 docker-compose.yml 中给 LiteLLM 增加:

extra_hosts:
  - "host.docker.internal:host-gateway"

完整 LiteLLM 部分示例:

services:
  litellm:
    image: ghcr.io/berriai/litellm:main-latest
    container_name: litellm
    restart: unless-stopped
    env_file:
      - .env
    command:
      - "--config"
      - "/app/config.yaml"
      - "--port"
      - "4000"
      - "--num_workers"
      - "4"
    volumes:
      - ./litellm_config.yaml:/app/config.yaml
    ports:
      - "127.0.0.1:4000:4000"
    extra_hosts:
      - "host.docker.internal:host-gateway"

重启:

docker compose down
docker compose up -d

测试本地模型:

curl http://127.0.0.1:4000/v1/chat/completions \
  -H "Authorization: Bearer sk-company-master-key-change-me" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "local-qwen2.5-7b",
    "messages": [
      {
        "role": "user",
        "content": "请用中文解释什么是RAG。"
      }
    ]
  }'

十五、企业级安全建议

如果是生产环境,不建议只做简单 API 转发。至少需要考虑以下能力。

1. API Key 分级管理

不要所有业务系统共用一个 Key。建议按照部门或系统拆分:

  • 研发助手 Key;
  • 客服系统 Key;
  • 知识库系统 Key;
  • BI 分析 Key;
  • 测试环境 Key;
  • 生产环境 Key。

这样可以做到成本统计、权限隔离和异常追踪。

2. 日志脱敏

AI 请求中可能包含:

  • 客户信息;
  • 合同内容;
  • 代码片段;
  • 财务数据;
  • 个人隐私;
  • 内部制度。

建议在网关层增加脱敏逻辑,例如:

  • 手机号脱敏;
  • 身份证号脱敏;
  • 邮箱脱敏;
  • 银行卡脱敏;
  • 密钥和 Token 检测;
  • 敏感词拦截。

3. 网络隔离

推荐架构:

公网
 |
Nginx / WAF
 |
DMZ 区
 |
AI Gateway
 |
业务内网 / 知识库 / 数据库

如果只供内部使用,建议通过:

  • VPN;
  • 零信任网关;
  • 企业 SSO;
  • 内网 DNS;
  • 防火墙白名单。

4. 数据合规

Claude API 仍然是外部 SaaS 服务。企业在使用前应评估:

  • 数据是否允许发送到第三方服务;
  • 是否涉及个人信息;
  • 是否涉及商业秘密;
  • 是否涉及跨境传输;
  • 是否满足行业监管要求。

如果数据不能出内网,则应优先使用本地开源模型,而不是 Claude API。


十六、常见问题

1. Claude 可以像 Llama 一样下载模型吗?

不可以。Claude 没有开放模型权重,也没有官方离线部署包。

2. 这套方案是不是“真正私有化”?

不是模型本体私有化,而是企业内部私有接入层部署。它能实现统一入口、权限控制、日志审计、限流、成本管理和多模型路由。

3. 数据会不会发给 Anthropic?

如果调用 Claude API,请求内容会发送到 Anthropic 服务端。
如果使用本地模型,例如 Ollama 或 vLLM,则数据可以留在本地。

4. Open WebUI 是否必须部署?

不是必须。它只是一个内部聊天界面。如果企业已有自己的系统,可以只部署 LiteLLM Proxy。

5. 能不能同时接入 Claude 和本地模型?

可以。LiteLLM 支持多模型配置,可以同时接入 Claude、本地 Ollama、本地 vLLM、OpenAI、Azure OpenAI、Gemini 等。


十七、完整一键部署示例

下面给出一个最小可用版本。

1. 创建目录

sudo mkdir -p /opt/claude-private
sudo chown -R $USER:$USER /opt/claude-private
cd /opt/claude-private

2. 创建环境变量文件

cat > .env << 'EOF'
ANTHROPIC_API_KEY=sk-ant-替换成你的ClaudeAPIKey
LITELLM_MASTER_KEY=sk-company-master-key-change-me
EOF

3. 创建 LiteLLM 配置

cat > litellm_config.yaml << 'EOF'
model_list:
  - model_name: claude-3-5-sonnet
    litellm_params:
      model: anthropic/claude-3-5-sonnet-20241022
      api_key: os.environ/ANTHROPIC_API_KEY

  - model_name: claude-3-5-haiku
    litellm_params:
      model: anthropic/claude-3-5-haiku-20241022
      api_key: os.environ/ANTHROPIC_API_KEY

general_settings:
  master_key: os.environ/LITELLM_MASTER_KEY

litellm_settings:
  drop_params: true
  request_timeout: 600
EOF

4. 创建 Docker Compose

cat > docker-compose.yml << 'EOF'
services:
  litellm:
    image: ghcr.io/berriai/litellm:main-latest
    container_name: litellm
    restart: unless-stopped
    env_file:
      - .env
    command:
      - "--config"
      - "/app/config.yaml"
      - "--port"
      - "4000"
      - "--num_workers"
      - "4"
    volumes:
      - ./litellm_config.yaml:/app/config.yaml
    ports:
      - "127.0.0.1:4000:4000"

  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    restart: unless-stopped
    environment:
      - OPENAI_API_BASE_URL=http://litellm:4000/v1
      - OPENAI_API_KEY=sk-company-master-key-change-me
      - WEBUI_AUTH=true
    volumes:
      - ./open-webui-data:/app/backend/data
    ports:
      - "127.0.0.1:3000:8080"
    depends_on:
      - litellm
EOF

5. 启动

docker compose up -d

6. 查看日志

docker logs -f litellm
docker logs -f open-webui

7. 测试 API

curl http://127.0.0.1:4000/v1/chat/completions \
  -H "Authorization: Bearer sk-company-master-key-change-me" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-3-5-sonnet",
    "messages": [
      {
        "role": "user",
        "content": "你好,请介绍一下你自己。"
      }
    ]
  }'

十八、总结

Claude 目前无法像开源模型一样进行真正的本地私有化部署,因为 Anthropic 没有开放 Claude 的模型权重和离线推理服务。但企业仍然可以通过 LiteLLM Proxy + Open WebUI + Nginx + Claude API 搭建一套内部 AI 平台,实现统一接入、权限控制、审计管理、模型路由和应用集成。

如果企业对数据安全要求极高,建议采用混合方案:

普通任务:Claude API
敏感任务:本地 Qwen / Llama / DeepSeek
知识库问答:本地 RAG + Claude 或本地模型
统一入口:LiteLLM Proxy
统一界面:Open WebUI
统一权限:企业 SSO / API Key

最终,所谓“Claude 私有化部署”的最佳实践并不是强行寻找不存在的 Claude 离线包,而是建设一个可控、可审计、可扩展的企业级 AI 网关。这样既能享受 Claude 强大的推理和文本处理能力,又能在安全、成本和合规之间取得平衡。

目录结构
全文