N NaSpace

使用 Docker 部署一款开源WEB版claude code教程

作者:admin · 更新于 2026-08-31 10:37:44

ClaudeCN 是一个面向中文用户的 Claude Web 工作台。通过 Docker 部署后,可以直接在浏览器中访问 Web 界面,不需要在宿主机单独安装 Node.js 或 Bun。

本文记录 ClaudeCN 的 Docker 安装过程,方便后续重新部署或迁移环境。

项目地址:cxzjoy/claude-cn
本文安装命令根据实际使用环境整理,使用的镜像为 cxzjoy/claude-cn:latest如果是不支持avx2的老款cpu请使用oldbun镜像标签。

一、安装前准备

开始安装前,需要准备以下环境:

  • 一台已经安装 Docker 的服务器或 NAS;
  • Docker 服务正常运行;
  • 一个可用的 CLAUDE_H5_TOKEN
  • 如果需要使用 WebDAV,还需要准备 WebDAV 用户名和密码;
  • 确保主机的 3456 端口没有被其他服务占用。

可以先执行下面的命令,确认 Docker 是否正常:

docker --version
docker ps

如果能够正常显示 Docker 版本和容器列表,说明 Docker 环境已经准备完成。

二、使用 Docker 启动 ClaudeCN

执行下面的命令创建并启动 ClaudeCN 容器:

docker run -d   --name claude-cn   -p 3456:3456   -v claude-data:/data   -v /var/run/docker.sock:/var/run/docker.sock   -v /:/host   --pid=host   -e CLAUDE_H5_TOKEN=***   -e WEBDAV_USER=***   -e WEBDAV_PASSWORD=*** cxzjoy/claude-cn:latest

执行成功后,Docker 会在后台启动名为 claude-cn 的容器。

如果本地还没有对应镜像,Docker 通常会自动拉取镜像。也可以提前手动拉取:

docker pull cxzjoy/claude-cn:latest

三、安装命令参数说明

1. 后台运行容器

-d

让容器以后台模式运行。命令执行后会立即返回,不会一直占用当前终端。

2. 指定容器名称

--name claude-cn

将容器名称设置为 claude-cn,后续查看日志、重启或停止容器时,可以直接使用这个名称。

例如:

docker logs claude-cn
docker restart claude-cn
docker stop claude-cn

3. 映射 Web 访问端口

-p 3456:3456

端口格式为:

主机端口:容器端口

这里表示将主机的 3456 端口映射到容器的 3456 端口。容器启动后,可以通过以下地址访问:

http://服务器IP:3456

如果 ClaudeCN 部署在本机,也可以访问:

http://localhost:3456

4. 持久化数据

-v claude-data:/data

创建并挂载名为 claude-data 的 Docker 数据卷,将容器中的 /data 目录保存到独立卷中。

这样即使删除并重新创建容器,保存在 /data 中的数据仍然可以保留。可以使用下面的命令查看数据卷:

docker volume ls

查看 claude-data 的详细信息:

docker volume inspect claude-data

5. 挂载 Docker Socket

-v /var/run/docker.sock:/var/run/docker.sock

将宿主机的 Docker Socket 挂载到容器中,使 ClaudeCN 能够调用宿主机的 Docker 服务。

这类配置通常用于容器内管理 Docker 容器、创建开发环境或执行相关容器操作。

不过需要特别注意:Docker Socket 权限很高。获得该 Socket 访问权限的容器,通常可以操作宿主机上的其他容器,甚至间接获得宿主机的高权限。因此,不建议将该服务直接暴露到公网。

6. 挂载宿主机根目录

-v /:/host

将宿主机的根目录 / 挂载到容器的 /host 目录。

挂载后,容器内可以通过 /host 访问宿主机文件,例如:

/host/etc
/host/var
/host/home
/host/opt

该配置方便在容器中操作宿主机文件和项目目录,但权限范围非常大。如果容器或 Web 服务存在安全漏洞,可能导致宿主机文件被读取或修改。

7. 共享宿主机进程空间

--pid=host

让容器与宿主机共享进程命名空间。启用后,容器可以看到宿主机上的进程。

这对于某些需要监控或管理宿主机进程的功能比较方便,但会降低容器与宿主机之间的隔离程度。

8. 配置 H5 登录令牌

-e CLAUDE_H5_TOKEN=***

通过环境变量设置 ClaudeCN 的 H5 登录令牌。访问 Web 界面时,需要使用对应令牌进行登录。

实际使用时,应将 *** 替换成自己的令牌,例如:

-e CLAUDE_H5_TOKEN=your-secret-token

令牌应避免使用过于简单的内容,也不要发布到博客、截图、GitHub 仓库或公开聊天中。

9. 配置 WebDAV 用户名

-e WEBDAV_USER=***

设置 WebDAV 服务的登录用户名。

例如:

-e WEBDAV_USER=admin

10. 配置 WebDAV 密码

-e WEBDAV_PASSWORD=***

设置 WebDAV 服务的登录密码。

例如:

-e WEBDAV_PASSWORD=change-this-password

WebDAV 用户名和密码同样属于敏感信息,建议使用独立且复杂的密码。

四、访问 ClaudeCN

容器启动后,先检查运行状态:

docker ps

如果看到类似下面的内容,说明容器正在运行:

claude-cn   cxzjoy/claude-cn:latest   ...   Up ...

然后在浏览器中打开:

http://服务器IP:3456

例如服务器局域网 IP 为 192.168.1.100,则访问:

http://192.168.1.100:3456

进入页面后,使用启动命令中配置的 CLAUDE_H5_TOKEN 登录。

如果页面无法打开,可以依次检查:

docker ps -a
docker logs claude-cn

查看容器是否已经退出,以及启动日志中是否存在端口、权限或配置错误。

五、常用管理命令

查看容器状态

docker ps

查看包括已停止容器在内的完整列表:

docker ps -a

查看运行日志

docker logs claude-cn

持续查看实时日志:

docker logs -f claude-cn

Ctrl+C 可以退出日志查看,不会停止容器。

重启容器

docker restart claude-cn

停止容器

docker stop claude-cn

启动已停止的容器

docker start claude-cn

查看容器详细配置

docker inspect claude-cn

六、如何更新镜像

更新前先拉取最新镜像:

docker pull cxzjoy/claude-cn:latest

如果只是重新启动原来的容器,容器仍然使用原先创建时绑定的镜像版本。要使用新拉取的镜像,通常需要删除旧容器后重新创建。

删除容器前,先停止容器:

docker stop claude-cn
docker rm claude-cn

然后重新执行本文第二节中的启动命令:

docker run -d   --name claude-cn   -p 3456:3456   -v claude-data:/data   -v /var/run/docker.sock:/var/run/docker.sock   -v /:/host   --pid=host   -e CLAUDE_H5_TOKEN=***   -e WEBDAV_USER=***   -e WEBDAV_PASSWORD=*** cxzjoy/claude-cn:latest

由于数据保存在 claude-data 卷中,重新创建容器时继续挂载同一个卷即可。

七、网络模式选择

本文使用的是端口映射方式:

-p 3456:3456

也就是 Docker 默认的 bridge 网络模式。

相比 --network=host,端口映射方式具有以下特点:

  • 网络隔离更清晰;
  • 只暴露明确指定的端口;
  • 端口管理更加直观;
  • 不容易与宿主机上的其他服务产生端口冲突。

对于 ClaudeCN 这类通过 Web 端口访问的服务,使用端口映射通常已经足够,没有必要额外使用 host 网络模式。

八、安全注意事项

本文提供的启动命令包含以下高权限配置:

-v /var/run/docker.sock:/var/run/docker.sock
-v /:/host
--pid=host

它们会显著降低容器隔离性。特别是 Docker Socket 和宿主机根目录挂载,意味着 ClaudeCN 容器具备较强的宿主机访问和管理能力。

因此建议:

  1. 不要将 3456 端口直接暴露到公网;
  2. 如果需要远程访问,优先通过 VPN、内网穿透或带认证的反向代理;
  3. 定期备份 claude-data 数据卷;
  4. CLAUDE_H5_TOKENWEBDAV_USERWEBDAV_PASSWORD 不要写入公开仓库;
  5. 不要在博客文章中使用真实令牌和密码;
  6. 定期关注镜像更新和项目安全公告;
  7. 仅在信任镜像来源的前提下使用这些高权限挂载。

发布文章时,建议将命令中的敏感值继续保留为占位符:

-e CLAUDE_H5_TOKEN=***
-e WEBDAV_USER=***
-e WEBDAV_PASSWORD=***

部署时再替换成自己的实际配置。

九、总结

通过 Docker 部署 ClaudeCN 的核心步骤比较简单:

准备 Docker 环境
    ↓
准备 H5 Token 和 WebDAV 配置
    ↓
执行 docker run 命令
    ↓
访问 http://服务器IP:3456
    ↓
使用 CLAUDE_H5_TOKEN 登录

本文使用的 Docker 镜像是:

cxzjoy/claude-cn:latest

数据通过 claude-data Docker 卷持久化,后续更新镜像后重新创建容器即可继续使用原有数据。

需要注意的是,这套启动参数拥有较高的宿主机访问权限,更适合部署在个人 NAS、内网服务器或受控环境中。上公网前,应额外配置访问认证、HTTPS 和网络访问限制。

Comments

评论

暂无评论,欢迎留下第一条想法。