FEATURED · 精选文章

CloudCLI 沙箱化部署指南:用 Docker Sandbox 在任意浏览器与移动端运行 Claude Code 与 Codex

发布时间 / 2026/9/14 22:02:46
来源 / 创域科博编辑部
栏目 / 资讯中心
CloudCLI 沙箱化部署指南:用 Docker Sandbox 在任意浏览器与移动端运行 Claude Code 与 Codex CloudCLI 沙箱化部署指南用 Docker Sandbox 在任意浏览器与移动端运行 Claude Code 与 Codex【免费下载链接】claudecodeuiUse Claude Code, OpenCode, Cursor CLI, and Codex on mobile and web with CloudCLI (aka Claude Code UI). CloudCLI is a free open source webui/GUI that helps you manage your Claude Code session and projects remotely.项目地址: https://gitcode.com/GitHub_Trending/cl/claudecodeuiCloudCLI即 Claude Code UI的 Docker Sandbox 模板让 Claude Code、OpenAI Codex 等 AI 编码 Agent 运行在隔离的轻量级 microVM 中并通过一个 Web/Mobile IDE 从任意浏览器、任意设备访问。本文基于仓库中的 docker/README.md 展开结合 docker/claude-code/Dockerfile、docker/codex/Dockerfile、server/modules/cli/sandbox.service.ts 等源码完整讲解环境安装、凭据管理、沙箱创建与生命周期管理、环境变量配置、网络策略以及高级用法读完即可从零拉起一个带完整 IDE 的沙箱化编码环境。为什么需要沙箱化的 Web/Mobile IDE本地运行 Claude Code 时CLI 进程直接暴露在你的主机上依赖本机 Node 环境、全局包状态与 API 凭据。而 Docker Sandbox 的思路是把 Agent 运行在 Docker 管理的隔离 microVM 中主机只保留一个轻量的sbx命令行工具API Key 由sbx统一保管凭据本身不进入沙箱。这种模式的直接收益隔离Agent 产生的文件操作、进程、网络请求都被限制在沙箱内~/my-project之外的主机目录不受影响跨设备访问沙箱内自动启动 CloudCLI 服务端浏览器、平板、手机均可访问同一个编码环境环境一致镜像内预装 Node.js、构建工具与 CloudCLI团队共享同一套模板镜像docker.io/cloudcliai/sandbox:claude-code/:codex避免在我机器上能跑的问题。仓库中的模板正是为此而设计两个 Dockerfile 分别基于docker/sandbox-templates:claude-code与docker/sandbox-templates:codex基础镜像叠加 CloudCLI 与自动启动逻辑。第一步安装 sbx CLIDocker Sandboxes 将 Agent 运行在隔离的 microVM 中sbx是唯一需要在宿主机安装的组件。官方提供的三种安装方式完整步骤见 Docker 官方 Sandboxes 文档macOSbrew install docker/tap/sbxWindowswinget install -h Docker.sbxLinuxsudo apt-get install docker-sbx注意sbx是宿主机工具沙箱内并不需要安装它沙箱内部只有 CloudCLI 与对应 AgentClaude Code / Codex。第二步存储 API Keysandbox.service.ts中的映射关系表明每个 Agent 对应一个sbx全局密钥名Agent密钥名Claude CodeanthropicOpenAI Codexopenai先登录并存储一次sbx login sbx secret set -g anthropicsbx负责安全地管理凭据API Key 不会进入沙箱Agent 在沙箱内部通过sbx注入的凭据运行。从 sandbox.service.ts 可以看到cloudcli sandbox在创建前会先执行sbx secret ls检查对应密钥是否存在SANDBOX_SECRETS { claude: anthropic, codex: openai }缺失时会明确提示先执行sbx secret set -g secret。第三步一条命令启动 Claude Codenpx cloudcli-ai/cloudclilatest sandbox ~/my-project这条命令做的事情对应 sandbox.service.ts 的create分支校验工作区路径~/my-project真实存在派生沙箱名默认取工作区目录名如my-project并校验其只包含字母、数字、连字符与下划线正则/^[\w-]$/检查sbxCLI 是否已安装、对应 API 密钥是否已存储以后台方式执行sbx run --template docker.io/cloudcliai/sandbox:claude-code --name my-project claude ~/my-project等待约 5 秒后在沙箱内启动 CloudCLI 服务端nohup cloudcli start --port 3001 /tmp/cloudcli-ui.log 21 disown执行sbx ports my-project --publish 3001:3001把沙箱内 3001 端口转发到宿主机若端口被占用会自动尝试 3002。完成后用浏览器打开http://localhost:3001。首次访问会要求设置密码之后即可开始使用。提示npx方式会临时拉取包如果希望后续直接使用cloudcli sandbox ...系列子命令可全局安装npm install -g cloudcli-ai/cloudcli。使用不同的 AgentOpenAI Codex切换到 Codex 只需存储对应密钥并传入--agentsbx secret set -g openai npx cloudcli-ai/cloudclilatest sandbox ~/my-project --agent codexcloudcli sandbox支持的 Agent 参数源码默认值为claude默认与codex并据此自动选择模板镜像与密钥名。--agent可简写为-a例如cloudcli sandbox ~/my-project -a codex --port 8080。官方模板与镜像构成仓库docker/目录下维护两个模板目录对应sbx可直接使用的两个镜像标签AgentTemplateClaude Code默认docker.io/cloudcliai/sandbox:claude-codeOpenAI Codexdocker.io/cloudcliai/sandbox:codex使用--template参数可以在sbx run时直接指定见下文高级用法。这两个标签在 sandbox.service.ts 中与 Agent 一一对应。从镜像构建源码看模板的实际构成claude-code Dockerfile 与 codex Dockerfile 完全同构FROM docker/sandbox-templates:claude-code # 或 docker/sandbox-templates:codex USER root COPY shared/install-cloudcli.sh /tmp/install-cloudcli.sh RUN chmod x /tmp/install-cloudcli.sh /tmp/install-cloudcli.sh USER agent RUN --mounttypecache,target/tmp/npm-cache,sharinglocked,mode0777 \ npm install -g cloudcli-ai/cloudcli \ --cache/tmp/npm-cache \ --fetch-retries5 \ --fetch-retry-mintimeout20000 \ --fetch-retry-maxtimeout120000 \ --fetch-timeout600000 \ --no-audit --no-fund \ cloudcli --version COPY --chownagent:agent shared/start-cloudcli.sh /home/agent/.cloudcli-start.sh RUN echo . ~/.cloudcli-start.sh /home/agent/.bashrc镜像构建的几个关键设计基础镜像分别继承docker/sandbox-templates:claude-code与docker/sandbox-templates:codexNode.js 由基础镜像提供原生模块编译依赖install-cloudcli.sh 以 root 身份安装build-essential python3 python3-setuptools jq ripgrep sqlite3 zip unzip tree vim-tiny注释明确说明这是为node-pty、better-sqlite3、bcrypt等原生模块准备的与 package.json 中的依赖一致全局安装以agent用户执行npm install -g cloudcli-ai/cloudcli并通过 BuildKit 挂载缓存目录与重试参数加快构建、提高网络不稳时的成功率安装后立即cloudcli --version验证自动启动start-cloudcli.sh被复制为/home/agent/.cloudcli-start.sh并写入.bashrc——这正是 README 所说CloudCLI 通过.bashrc自动启动的实现所在。start-cloudcli.sh的启动逻辑docker/shared/start-cloudcli.shif ! pgrep -f server/index.js /dev/null 21; then nohup cloudcli start --port 3001 /tmp/cloudcli-ui.log 21 disown echo CloudCLI is starting on port 3001... echo Forward the port from another terminal: echo sbx ports sandbox-name --publish 3001:3001 echo Then open: http://localhost:3001 fi它会检测server/index.jsCloudCLI 服务端进程标识是否已在运行未运行则后台拉起并提示端口转发方式。日志统一写入/tmp/cloudcli-ui.log这也是cloudcli sandbox logs读取日志的来源。管理沙箱生命周期命令使用原生 sbx 命令sbx ls # 列出所有沙箱 sbx stop my-project # 停止保留状态 sbx start my-project # 重启已停止的沙箱 sbx rm my-project # 彻底移除含数据 sbx exec my-project bash # 在沙箱内打开 shell其中sbx stop只是暂停沙箱状态保留sbx rm才会删除全部内容两者语义不同删除前请确认。使用 cloudcli 子命令如果已全局安装 CloudCLInpm install -g cloudcli-ai/cloudcli还可以用更贴近业务语义的子命令cloudcli sandbox ls # 列出沙箱 cloudcli sandbox start my-project # 重启沙箱并重新拉起 Web UI cloudcli sandbox logs my-project # 查看服务端日志读取 /tmp/cloudcli-ui.log这些子命令由 cli.service.ts 分发到 sandbox 服务支持的子命令完整集合为ls / start / stop / rm / logs / helpcloudcli sandbox 路径无子命令时默认执行创建并启动。cloudcli sandbox start的实现流程是sbx run my-project恢复沙箱 → 等待 5 秒 → 在沙箱内后台执行cloudcli start --port 3001→ 端口转发并输出访问地址。名字参数只接受\w-字符集其余会被拒绝。开箱即用的功能沙箱内的 CloudCLI 是一个完整的 Web/Mobile IDEREADME 列出的能力与 src/ 前端模块一一对应Chat— Markdown 渲染、代码块、消息历史对应 src/modules/chatFiles— 文件树与语法高亮编辑器对应 src/modules/file-tree 与 src/modules/code-editorGit— Diff 查看器、暂存、分支切换、提交对应 src/modules/git-panelShell— 内置终端模拟器对应 src/modules/shell基于node-pty xtermMCP— 可视化配置 Model Context Protocol 服务器对应 src/modules/mcpMobile— 平板与手机浏览器均可使用响应式布局项目目录采用双向挂载沙箱内外的文件编辑会实时互相同步README 原文Your project directory is mounted bidirectionally — edits propagate in real time, both ways.。因此你可以在本机 IDE 与沙箱 Web IDE 之间无缝切换编辑。配置环境变量与持久化CloudCLI 服务端支持三个核心环境变量README 参数表如下变量默认值说明SERVER_PORT3001Web UI 端口HOST0.0.0.0绑定地址必须为0.0.0.0才能配合sbx ports转发DATABASE_PATH~/.cloudcli/auth.dbSQLite 数据库位置这些默认值在源码中都能找到印证server/index.ts 读取SERVER_PORT缺省 3001与HOST缺省0.0.0.0server/load-env.ts 在未显式设置DATABASE_PATH时将其固定为~/.cloudcli/auth.db确保重新构建 dist-server 不会改变数据库存放位置。此外 cli.service.ts 还列出PORT遗留别名、CLAUDE_CLI_PATH自定义 Claude CLI 路径、CONTEXT_WINDOW上下文窗口大小默认 160000等环境变量。创建时注入使用--env可简写-e且可重复在创建沙箱时设置npx cloudcli-ai/cloudclilatest sandbox ~/my-project --env SERVER_PORT8080从 sandbox.service.ts 看--env参数会先经/^\w.$/正则校验不合法的一律跳过并警告合法的变量被拼成export KEYVALUE追加写入沙箱内的/etc/sandbox-persistent.sh——这是 Docker Sandbox 的持久化环境文件沙箱重启后依然生效。运行时追加对已在运行的沙箱用sbx exec直接写入持久化文件sbx exec my-project bash -c echo export SERVER_PORT8080 /etc/sandbox-persistent.sh重启 CloudCLI 使配置生效环境变量需要重启 CloudCLI 服务进程才能生效sbx exec my-project bash -c pkill -f server/index.js sbx exec -d my-project cloudcli start --port 3001pkill -f server/index.js与自动启动脚本的进程检测逻辑pgrep -f server/index.js保持一致确保杀掉的是服务端进程而非其他进程。高级用法分支模式、多工作区、直传提示词cloudcli sandbox面向最常见的一键启动 Web UI场景若需要终端 Agent 体验、分支模式、多工作区、内存限制等能力应直接使用sbx run 模板镜像# 终端 Agent Web UI sbx run --template docker.io/cloudcliai/sandbox:claude-code claude ~/my-project --name my-project sbx ports my-project --publish 3001:3001 # 分支模式Git worktree 隔离 sbx run --template docker.io/cloudcliai/sandbox:claude-code claude ~/my-project --branch my-feature # 多个工作区:ro 表示只读挂载 sbx run --template docker.io/cloudcliai/sandbox:claude-code claude ~/project ~/shared-libs:ro # 直接传递提示词 sbx run --template docker.io/cloudcliai/sandbox:claude-code claude ~/my-project -- Fix the auth bug几个要点使用sbx run时CloudCLI 会通过.bashrc里的start-cloudcli.sh自动启动见上文镜像剖析因此不需要额外命令即可获得 Web UI--branch利用 Git worktree 实现分支级隔离同一项目可在互不干扰的多个沙箱中并行开发~/shared-libs:ro语法支持多个工作区挂载:ro后缀表示只读最后一个位置参数Fix the auth bug会直接作为提示词传给 Agent适合 CI 或脚本化调用内存限制等其余选项见 Docker Sandboxes usage 文档。网络策略访问宿主机服务沙箱默认限制出站访问。如果沙箱内的 Agent 需要访问宿主机上的服务如本地运行的 Ollama 11434 端口需显式放行sbx policy allow network localhost:11434 # 沙箱内部访问方式curl http://host.docker.internal:11434Web UI 本身不需要网络策略——通过sbx ports转发即可访问无需放行规则。源码视角cloudcli sandbox 的关键实现细节如果想要更深入了解这套机制server/modules/cli/sandbox.service.ts 是核心实现文件值得注意的细节模板与密钥映射SANDBOX_TEMPLATES与SANDBOX_SECRETS两张表是--agent→ 镜像 / 密钥名映射的唯一事实来源claude →claude-code模板 anthropic密钥codex →codex模板 openai密钥默认端口与自动端口回退parseSandboxArguments中默认宿主端口 3001publishSandboxPort执行sbx ports name --publish port:3001若报address already in use会自动尝试port1两个端口都被占用才报错提示用--port指定启动时序创建/启动沙箱后统一等待 5 秒再注入环境变量、拉起服务端并转发端口避免竞态内部使用cloudcli start --port 3001无论宿主端口如何沙箱内部始终监听 3001宿主端口仅由sbx ports转发决定对应单元测试见 server/modules/cli/tests/sandbox.service.test.tsCLI 整体的参数解析与命令分发见 server/modules/cli/tests/cli.service.test.ts。许可本仓库含 docker 模板采用AGPL-3.0-or-later许可使用时请注意其传染性条款与商业使用边界。小结本文完整梳理了 CloudCLI Docker Sandbox 模板的部署路径安装sbx→ 存储 API Key →npx cloudcli-ai/cloudcli sandbox 目录一键启动再到沙箱生命周期管理、环境变量注入与网络策略配置。通过 docker/claude-code/Dockerfile 与 docker/codex/Dockerfile 可以看到模板镜像的完整构成构建工具、CloudCLI 全局安装、.bashrc自动启动通过 server/modules/cli/sandbox.service.ts 可以理解cloudcli sandbox每个子命令背后的精确执行序列。无论是想在浏览器里远程编码、在手机上查看会话还是用分支模式并行开发这套模板都提供了开箱即用的隔离环境。【免费下载链接】claudecodeuiUse Claude Code, OpenCode, Cursor CLI, and Codex on mobile and web with CloudCLI (aka Claude Code UI). CloudCLI is a free open source webui/GUI that helps you manage your Claude Code session and projects remotely.项目地址: https://gitcode.com/GitHub_Trending/cl/claudecodeui创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻