零出站网络的安全部署:claude-devtools Docker 独立模式与网络隔离完全指南
【免费下载链接】claude-devtoolsThe missing DevTools for Claude Code — inspect session logs, tool calls, token usage, subagents, and context window in a visual UI. Free, open source.项目地址: https://gitcode.com/gh_mirrors/cl/claude-devtools
claude-devtools是 Claude Code 的开源可视化调试工具,能查看会话日志、工具调用、Token 用量、子代理和上下文窗口。它的 Docker 独立模式(Standalone)完全脱离 Electron 运行,零出站网络调用——无遥测、无分析、无自动更新,甚至可以以--network none彻底断网部署。本文是面向新手的完整部署指南,帮你把 Claude Code 的"黑箱行为"安全地放进浏览器里检查。
为什么选择独立模式?🔒
claude-devtools 有两种运行形态:
| 形态 | 运行方式 | 网络行为 | 适用场景 |
|---|---|---|---|
| Electron 桌面版 | 桌面应用 | 启动时检查 GitHub Releases 自动更新;可选 SSH 远程连接 | 个人日常使用 |
| Docker 独立模式 | Node.js HTTP 服务 | 零出站调用,仅监听入站连接 | 服务器部署、隔离审计、CI 环境 |
在独立模式下,自动更新器与 SSH 功能被完全禁用(见 standalone.ts 中的两个 No-op 存根),容器内唯一的网络活动就是 HTTP 服务器监听入站请求。这意味着你可以放心地把它部署在任何对网络敏感的环境中。
📖 完整的网络安全承诺见官方安全文档:SECURITY.md
一键启动:Docker Compose 最快部署方法
1. 获取源码
git clone https://gitcode.com/gh_mirrors/cl/claude-devtools cd claude-devtools2. 构建并启动
docker compose up然后打开http://localhost:3456即可看到完整的 Web 界面。
pre-commit.ci 与 Dockerfile。
3. 手动 Docker 命令方式(等效)
docker build -t claude-devtools . docker run -p 3456:3456 -v ~/.claude:/data/.claude:ro claude-devtools⚠️ 注意:ro只读挂载——claude-devtools 只读取日志、从不写回,只读挂载从源头上杜绝了意外修改。
环境变量配置清单 🛠️
独立模式的入口逻辑在 src/main/standalone.ts,通过环境变量即可调整行为:
| 变量 | 默认值 | 作用 |
|---|---|---|
CLAUDE_ROOT | ~/.claude | .claude数据目录路径(容器内为/data/.claude) |
HOST | 0.0.0.0 | 监听地址 |
PORT | 3456 | 监听端口 |
CORS_ORIGIN | * | CORS 来源策略(Docker 隔离替代了 CORS 限制) |
例如远程机器上数据目录不在默认位置时:
docker run -p 3456:3456 -e CLAUDE_ROOT=/data/.claude \ -v /remote/claude-data:/data/.claude:ro claude-devtools配置会保存在CLAUDE_ROOT下的claude-devtools-config.json,首次启动自动创建,无需任何 API Key。
终极网络隔离:--network none 完全断网 🔥
这是本文的杀手锏。由于独立模式零出站调用,你可以直接让 Docker 不给容器分配任何网络栈:
docker run --network none -p 3456:3456 \ -v ~/.claude:/data/.claude:ro claude-devtools或使用 Compose:取消注释 docker-compose.yml 末行network_mode: "none"。
官方安全文档中给出了同样的建议(SECURITY.md)。这样一来,即使代码中未来出现任何可疑的网络行为,也在操作系统层面无法发出——容器根本没有网络出口,这是比"承诺不联网"更强的信任保证。
启动后你会看到什么?👀
浏览器打开后是一个功能完整的 Web 界面,与桌面版体验一致:
- 会话列表:按日期分组,支持跨会话搜索(Cmd+K 命令面板)
- 工具调用检查器:每次 Read/Edit/Bash 调用的完整输入输出、内联 Diff
- 上下文窗口分析:7 个类别的逐轮 Token 归属(CLAUDE.md、技能、@提及文件、工具 I/O、思考、团队协作、用户文本)
- 项目记忆面板:
MEMORY.md分层渲染,支持 wikilinks 导航
所有数据都来自容器内只读的~/.claude目录,会话数据永不离开你的机器。
安全设计细节 🧐
部署前值得了解的几道防线:
- 路径穿越防护:所有 IPC/HTTP 处理器做严格的路径包含检查,文件读取被限制在项目根和
~/.claude内,敏感凭据路径直接拒绝(SECURITY.md) - 只读数据流:应用不写回会话文件,挂载建议始终用
:ro - 构建瘦身:独立构建产物只有单个 CJS 文件(vite.standalone.config.ts),镜像为
node:20-slim多阶段构建,攻击面最小化
| 检查项 | 结果 |
|---|---|
| 出站连接 | 0(可用--network none强制验证) |
| 遥测 / 分析 | 无 |
对~/.claude的写入 | 无(只读挂载) |
| 功能缺失 | 自动更新、SSH 远程(均依赖 Electron,属预期行为) |
源码导航 📂
想深入阅读,可以从这些文件入手:
- 独立模式入口:src/main/standalone.ts
- HTTP 服务与路由:src/main/http/index.ts
- 构建配置:vite.standalone.config.ts
- 安全说明:SECURITY.md
- 部署模板:docker-compose.yml、Dockerfile
常见问题 ❓
Q: 独立模式不支持 SSH 远程会话?A: 对。SSH 管理依赖 Electron 桌面环境,独立模式内置了占位实现(见 standalone.ts)。如需远程会话,请在本机用桌面版。
Q: 能部署到内网服务器供团队共享吗?A: 可以,这正是独立模式的目标场景。把目标机器的.claude目录只读挂载进容器,团队通过浏览器访问即可——同时配合--network none实现双向隔离。
Q: 端口冲突怎么办?A: 用环境变量PORT修改监听端口,并同步修改-p映射即可。
总结:claude-devtools 的 Docker 独立模式只需一条docker compose up命令,就能获得零出站网络、只读数据、可彻底断网(--network none)的 Claude Code 会话审计能力。对于需要合规与数据主权的环境,这是目前最省心的部署方式。
【免费下载链接】claude-devtoolsThe missing DevTools for Claude Code — inspect session logs, tool calls, token usage, subagents, and context window in a visual UI. Free, open source.项目地址: https://gitcode.com/gh_mirrors/cl/claude-devtools
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考