Claude 不能本地跑?用 Docker 搭个专属 Claude 聊天站全流程教程
Claude Docker部署教程|附完整命令
说明:Claude 是 Anthropic 提供的云端大语言模型服务,模型本身并不能像开源模型那样下载到本地 Docker 中运行。通常所谓“Claude Docker 部署”,指的是在服务器上通过 Docker 部署一个 Web 聊天界面或 API 网关,然后使用 Anthropic 官方 API Key 调用 Claude 模型。
本文将以 Docker + Docker Compose 部署 LibreChat,并接入 Claude API 为例,完整演示如何搭建一个可在浏览器中使用 Claude 的聊天系统。
一、部署方案概览
本文部署完成后,你将得到一个类似 ChatGPT Web 的网页应用,可以在浏览器中访问,并通过 Anthropic API 调用 Claude,例如:
- Claude 3.5 Sonnet
- Claude 3 Opus
- Claude 3 Haiku
- Claude 3.5 Haiku
- 其他 Anthropic 后续支持的 Claude 模型
整体架构如下:
用户浏览器
↓
LibreChat Web 服务
↓
Anthropic API
↓
Claude 模型
本教程使用的核心组件:
| 组件 | 作用 |
|---|---|
| Docker | 容器运行环境 |
| Docker Compose | 管理多容器服务 |
| LibreChat | 开源 Web 聊天界面 |
| MongoDB | LibreChat 数据库 |
| Anthropic API Key | 调用 Claude 模型的凭证 |
二、准备工作
在开始之前,请确保你已经具备以下条件:
1. 一台服务器
推荐配置:
| 项目 | 建议 |
|---|---|
| CPU | 1 核以上 |
| 内存 | 1GB 以上,推荐 2GB |
| 磁盘 | 10GB 以上 |
| 系统 | Ubuntu 20.04 / 22.04 / 24.04 |
因为 Claude 模型不是在本地运行,所以服务器配置不需要太高。服务器主要负责运行 Web 服务、数据库和转发请求。
2. 一个域名,可选
如果只是测试,可以直接用服务器 IP 访问。
如果用于长期使用,建议准备一个域名,例如:
chat.example.com
然后将域名解析到服务器公网 IP。
3. Anthropic API Key
你需要拥有 Anthropic 的 API Key。
通常格式类似:
sk-ant-api03-xxxxxxxxxxxxxxxxxxxxxxxx
注意:API Key 属于敏感信息,不要公开到 GitHub、博客、截图或聊天记录中。
三、安装 Docker
下面以 Ubuntu 系统为例。
首先更新系统软件包:
sudo apt update
sudo apt upgrade -y
安装必要依赖:
sudo apt install -y ca-certificates curl gnupg lsb-release
创建 Docker GPG key 目录:
sudo install -m 0755 -d /etc/apt/keyrings
添加 Docker 官方 GPG key:
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
添加 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
更新软件源:
sudo apt update
安装 Docker 和 Docker Compose 插件:
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
启动 Docker:
sudo systemctl enable docker
sudo systemctl start docker
查看 Docker 版本:
docker --version
查看 Docker Compose 版本:
docker compose version
如果能正常输出版本号,说明 Docker 安装成功。
四、创建部署目录
建议将服务统一放在 /opt 目录下。
sudo mkdir -p /opt/claude-docker
cd /opt/claude-docker
如果你希望当前用户拥有该目录权限,可以执行:
sudo chown -R $USER:$USER /opt/claude-docker
五、创建 Docker Compose 文件
在部署目录中创建 docker-compose.yml:
nano docker-compose.yml
写入以下内容:
services:
api:
image: ghcr.io/danny-avila/librechat:latest
container_name: librechat
restart: unless-stopped
ports:
- "3080:3080"
depends_on:
- mongodb
env_file:
- .env
volumes:
- ./librechat.yaml:/app/librechat.yaml
- ./images:/app/client/public/images
- ./logs:/app/api/logs
mongodb:
image: mongo:6
container_name: librechat-mongodb
restart: unless-stopped
volumes:
- ./mongodb_data:/data/db
command: mongod --noauth
保存并退出:
Ctrl + O- 回车
Ctrl + X
这个 Compose 文件定义了两个容器:
api:LibreChat 主程序;mongodb:MongoDB 数据库,用于保存用户、会话等数据。
六、创建环境变量文件
继续在 /opt/claude-docker 目录下创建 .env 文件:
nano .env
写入以下内容:
HOST=0.0.0.0
PORT=3080
MONGO_URI=mongodb://mongodb:27017/LibreChat
DOMAIN_CLIENT=http://localhost:3080
DOMAIN_SERVER=http://localhost:3080
NO_INDEX=true
JWT_SECRET=please_replace_with_a_random_jwt_secret
JWT_REFRESH_SECRET=please_replace_with_a_random_refresh_secret
ANTHROPIC_API_KEY=sk-ant-api03_xxxxxxxxxxxxxxxxxxxxxxxxx
你需要修改其中几个关键配置。
1. 修改 API Key
将:
ANTHROPIC_API_KEY=sk-ant-api03_xxxxxxxxxxxxxxxxxxxxxxxxx
替换成你自己的 Anthropic API Key,例如:
ANTHROPIC_API_KEY=sk-ant-api03-你的真实APIKey
2. 修改 JWT 密钥
不要直接使用示例中的字符串。你可以用下面的命令生成随机密钥:
openssl rand -hex 32
执行两次,分别生成 JWT_SECRET 和 JWT_REFRESH_SECRET。
例如:
JWT_SECRET=1f64ef2aa842d3a9ef5b86b75e25f84ac9a7f369a3a90a71d4f51faaaa111111
JWT_REFRESH_SECRET=91d43f0bd31f8e3c3ae44c53c6a30be761b518b341c1dd9f8bbbb22222222
3. 如果你使用域名
假设域名是:
chat.example.com
则建议修改为:
DOMAIN_CLIENT=https://chat.example.com
DOMAIN_SERVER=https://chat.example.com
如果只是本地测试或 IP 访问,可以暂时保持:
DOMAIN_CLIENT=http://localhost:3080
DOMAIN_SERVER=http://localhost:3080
如果用服务器 IP 访问,例如:
http://1.2.3.4:3080
也可以写成:
DOMAIN_CLIENT=http://1.2.3.4:3080
DOMAIN_SERVER=http://1.2.3.4:3080
七、创建 LibreChat 配置文件
LibreChat 可以通过配置文件启用不同模型提供商。这里我们主要接入 Anthropic Claude。
创建 librechat.yaml:
nano librechat.yaml
写入以下内容:
version: 1.2.1
cache: true
endpoints:
anthropic:
titleConvo: true
titleModel: claude-3-haiku-20240307
models:
default:
- claude-3-5-sonnet-20240620
- claude-3-opus-20240229
- claude-3-sonnet-20240229
- claude-3-haiku-20240307
fetch: false
保存退出。
这段配置表示:
- 启用 Anthropic 端点;
- 默认显示多个 Claude 模型;
- 使用 Claude Haiku 生成会话标题;
- 不动态拉取模型列表,而是使用配置中的固定模型列表。
注意:不同时间 Anthropic 官方可用模型名称可能会变化。如果某个模型无法调用,请以 Anthropic 官方文档中最新模型 ID 为准。
八、启动服务
确保当前目录为:
cd /opt/claude-docker
启动容器:
docker compose up -d
查看容器状态:
docker compose ps
正常情况下,你应该能看到类似输出:
NAME IMAGE STATUS
librechat ghcr.io/danny-avila/librechat:latest Up
librechat-mongodb mongo:6 Up
查看日志:
docker compose logs -f
如果日志中没有明显报错,说明服务已经启动。
九、访问 Claude Web 页面
如果你在服务器上部署,并且开放了 3080 端口,可以访问:
http://服务器IP:3080
例如:
http://1.2.3.4:3080
进入页面后,你可以注册账号并登录。
登录后,在模型选择区域选择 Anthropic 或 Claude 模型,即可开始对话。
十、开放服务器防火墙端口
如果无法访问页面,可能是服务器防火墙没有开放 3080 端口。
Ubuntu UFW 开放端口
sudo ufw allow 3080/tcp
sudo ufw reload
sudo ufw status
云服务器安全组
如果你使用的是阿里云、腾讯云、华为云、AWS、Azure 等云服务器,还需要在云厂商控制台的安全组中放行:
TCP 3080
来源可以先设置为:
0.0.0.0/0
长期使用时,建议结合反向代理、HTTPS 和访问控制。
十一、使用 Nginx 反向代理,可选但推荐
如果你有域名,建议通过 Nginx 将服务代理到标准 HTTPS 端口。
假设域名为:
chat.example.com
LibreChat 服务本地运行在:
http://127.0.0.1:3080
1. 安装 Nginx
sudo apt install -y nginx
启动 Nginx:
sudo systemctl enable nginx
sudo systemctl start nginx
2. 创建 Nginx 配置
创建配置文件:
sudo nano /etc/nginx/sites-available/claude-chat.conf
写入:
server {
listen 80;
server_name chat.example.com;
location / {
proxy_pass http://127.0.0.1:3080;
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";
}
}
启用站点:
sudo ln -s /etc/nginx/sites-available/claude-chat.conf /etc/nginx/sites-enabled/claude-chat.conf
检查 Nginx 配置:
sudo nginx -t
重载 Nginx:
sudo systemctl reload nginx
3. 修改 .env 域名配置
回到部署目录:
cd /opt/claude-docker
编辑 .env:
nano .env
修改为:
DOMAIN_CLIENT=http://chat.example.com
DOMAIN_SERVER=http://chat.example.com
重启服务:
docker compose restart
此时可以通过:
http://chat.example.com
访问。
十二、配置 HTTPS 证书
强烈建议为 Web 页面开启 HTTPS。这里使用 Certbot 自动申请 Let’s Encrypt 免费证书。
安装 Certbot:
sudo apt install -y certbot python3-certbot-nginx
申请证书:
sudo certbot --nginx -d chat.example.com
根据提示选择是否强制跳转 HTTPS。一般建议选择自动重定向。
证书申请完成后,访问:
https://chat.example.com
然后修改 .env:
cd /opt/claude-docker
nano .env
将域名改为 HTTPS:
DOMAIN_CLIENT=https://chat.example.com
DOMAIN_SERVER=https://chat.example.com
重启 LibreChat:
docker compose restart
测试证书自动续期:
sudo certbot renew --dry-run
十三、完整一键部署命令示例
如果你已经准备好了服务器和 API Key,也可以参考下面的完整命令快速部署。
请先将命令中的
你的Anthropic_API_Key、chat.example.com替换成自己的内容。
sudo apt update
sudo apt upgrade -y
sudo apt install -y ca-certificates curl gnupg lsb-release openssl
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
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
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl enable docker
sudo systemctl start docker
sudo mkdir -p /opt/claude-docker
sudo chown -R $USER:$USER /opt/claude-docker
cd /opt/claude-docker
JWT_SECRET_VALUE=$(openssl rand -hex 32)
JWT_REFRESH_SECRET_VALUE=$(openssl rand -hex 32)
cat > docker-compose.yml <<'EOF'
services:
api:
image: ghcr.io/danny-avila/librechat:latest
container_name: librechat
restart: unless-stopped
ports:
- "3080:3080"
depends_on:
- mongodb
env_file:
- .env
volumes:
- ./librechat.yaml:/app/librechat.yaml
- ./images:/app/client/public/images
- ./logs:/app/api/logs
mongodb:
image: mongo:6
container_name: librechat-mongodb
restart: unless-stopped
volumes:
- ./mongodb_data:/data/db
command: mongod --noauth
EOF
cat > .env < librechat.yaml <<'EOF'
version: 1.2.1
cache: true
endpoints:
anthropic:
titleConvo: true
titleModel: claude-3-haiku-20240307
models:
default:
- claude-3-5-sonnet-20240620
- claude-3-opus-20240229
- claude-3-sonnet-20240229
- claude-3-haiku-20240307
fetch: false
EOF
docker compose up -d
docker compose ps
部署完成后访问:
http://服务器IP:3080
十四、常用运维命令
1. 启动服务
cd /opt/claude-docker
docker compose up -d
2. 停止服务
cd /opt/claude-docker
docker compose down
3. 重启服务
cd /opt/claude-docker
docker compose restart
4. 查看容器状态
cd /opt/claude-docker
docker compose ps
5. 查看实时日志
cd /opt/claude-docker
docker compose logs -f
如果只查看 LibreChat 日志:
docker logs -f librechat
如果只查看 MongoDB 日志:
docker logs -f librechat-mongodb
6. 更新 LibreChat
cd /opt/claude-docker
docker compose pull
docker compose down
docker compose up -d
7. 查看磁盘占用
docker system df
清理无用镜像:
docker image prune -f
清理无用容器、网络和镜像:
docker system prune -f
注意:不要随意删除数据卷,否则可能导致聊天记录和用户数据丢失。
十五、数据备份与恢复
LibreChat 的主要数据保存在 MongoDB 中,对应宿主机目录:
/opt/claude-docker/mongodb_data
建议定期备份整个部署目录:
sudo tar -czvf claude-docker-backup.tar.gz /opt/claude-docker
如果只想备份 MongoDB 数据目录:
sudo tar -czvf mongodb_data_backup.tar.gz /opt/claude-docker/mongodb_data
恢复时可以先停止服务:
cd /opt/claude-docker
docker compose down
然后解压备份:
sudo tar -xzvf claude-docker-backup.tar.gz -C /
最后启动服务:
cd /opt/claude-docker
docker compose up -d
十六、常见问题排查
1. 页面无法打开
先检查容器是否正常运行:
cd /opt/claude-docker
docker compose ps
查看日志:
docker compose logs -f
确认服务器端口是否监听:
ss -tunlp | grep 3080
如果没有监听,说明容器可能没有正常启动。
2. 服务器 IP 能 ping 通,但网页打不开
常见原因是防火墙或安全组没有放行端口。
Ubuntu 放行:
sudo ufw allow 3080/tcp
sudo ufw reload
云服务器控制台也要放行 3080/tcp。
3. Claude 模型调用失败
可以重点检查以下几项:
- Anthropic API Key 是否正确;
- API Key 是否有额度;
- 当前服务器是否能访问 Anthropic API;
librechat.yaml中模型名称是否有效;- LibreChat 日志中是否出现鉴权错误。
查看日志:
docker logs -f librechat
如果出现类似 API Key 无效、权限不足、模型不存在等提示,需要根据错误内容调整。
4. 修改配置后不生效
修改 .env 或 librechat.yaml 后,建议重启容器:
cd /opt/claude-docker
docker compose restart
如果仍不生效,可以重新创建容器:
docker compose down
docker compose up -d
5. 忘记管理员账号怎么办
LibreChat 默认是注册登录模式。如果你忘记账号,可以通过 MongoDB 清理用户数据,但这会影响已有用户信息。更稳妥的做法是先备份数据,再处理数据库。
备份:
cd /opt/claude-docker
sudo tar -czvf backup-before-user-reset.tar.gz mongodb_data
进入 MongoDB:
docker exec -it librechat-mongodb mongosh
切换数据库:
use LibreChat
查看用户:
db.users.find()
如需删除某个用户,需要谨慎执行:
db.users.deleteOne({ email: "your-email@example.com" })
然后退出:
exit
十七、安全建议
如果你准备长期运行这个 Claude Web 服务,建议至少做好以下安全措施。
1. 不要暴露 API Key
.env 文件中包含 Anthropic API Key,不能公开。
建议限制文件权限:
cd /opt/claude-docker
chmod 600 .env
2. 使用 HTTPS
生产环境不要只使用 HTTP,建议通过 Nginx + Certbot 配置 HTTPS。
3. 控制注册入口
如果服务仅供个人或团队使用,不建议开放给所有人注册。可以根据 LibreChat 官方文档配置注册限制、邮箱验证或管理员策略。
4. 定期备份数据
至少备份:
/opt/claude-docker/.env
/opt/claude-docker/docker-compose.yml
/opt/claude-docker/librechat.yaml
/opt/claude-docker/mongodb_data
5. 定期更新镜像
cd /opt/claude-docker
docker compose pull
docker compose up -d
十八、总结
本文介绍了如何通过 Docker 部署一个可调用 Claude 的 Web 聊天服务。需要再次强调的是,Claude 不是本地开源模型,不能直接通过 Docker 将 Claude 模型部署到本地运行。本文方案的本质是:
Docker 部署 Web 应用 + 使用 Anthropic API 调用 Claude
你已经完成了以下内容:
- 安装 Docker 和 Docker Compose;
- 创建 LibreChat 部署目录;
- 配置 MongoDB 数据库;
- 接入 Anthropic Claude API;
- 启动 Claude Web 聊天页面;
- 配置 Nginx 反向代理;
- 配置 HTTPS 证书;
- 掌握常用运维、备份和故障排查命令。
如果只是个人使用,直接通过 http://服务器IP:3080 访问即可;如果用于团队或生产环境,建议配合域名、HTTPS、注册限制和数据备份一起使用。这样就可以获得一个稳定、私有化入口的 Claude Web 聊天系统。