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

Claude 不能本地跑?用 Docker 搭个专属 Claude 聊天站全流程教程

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

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 文件定义了两个容器:

  1. api:LibreChat 主程序;
  2. 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_SECRETJWT_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_Keychat.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 模型调用失败

可以重点检查以下几项:

  1. Anthropic API Key 是否正确;
  2. API Key 是否有额度;
  3. 当前服务器是否能访问 Anthropic API;
  4. librechat.yaml 中模型名称是否有效;
  5. LibreChat 日志中是否出现鉴权错误。

查看日志:

docker logs -f librechat

如果出现类似 API Key 无效、权限不足、模型不存在等提示,需要根据错误内容调整。


4. 修改配置后不生效

修改 .envlibrechat.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 聊天系统。

目录结构
全文