Claude 不能本地部署?企业内网接入方案和完整命令整理
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 反向代理
生产环境不建议直接暴露 3000 和 4000 端口,建议使用 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 强大的推理和文本处理能力,又能在安全、成本和合规之间取得平衡。