把 Claude Code GUI 自托管到共享开发机:一台机器,全队一起飞
OpenCockpit 是 Web client-server 架构:在共享开发机上装一次,每个队友打开浏览器就有一个席位 —— 各自在自己的项目 / worktree 上 AI coding。部署只要 5 分钟。
大多数 Claude Code GUI 是桌面应用:一台笔记本装一份、一个人配一套、一台机器一个座位。OpenCockpit 是 Web client-server 架构 —— 这解锁了桌面应用做不到的部署方式:
在代码所在的机器上装一次。每个队友打开浏览器,就有一个席位。
不用每台笔记本都装,没有"在我机器上是好的"。一台机器,全队一起飞。
为什么是共享开发机?
- 代码本来就在那。很多团队有一台配置好的开发机(或云上 VM):仓库克隆好了、数据库跑着、服务连着。Cockpit 装在代码旁边,而不是把代码拖到每台笔记本上。
- 一套环境,零漂移。Node 版本、
claudeCLI 登录、Ollama 模型、数据库凭据 —— 配一次,全队共享。 - 算力共享。一台 GPU 机器承载所有人的 Ollama tab,笔记本保持凉快。
- 任何设备都是一个席位。客户端只需要浏览器 —— 包括同一 VPN 里的手机。
部署(5 分钟)
在开发机上:
# 1. 安装(Node ≥ 20)
npm install -g @surething/cockpit
# 2. 暴露到网络 + 远程客户端要求令牌
COCKPIT_HOST=0.0.0.0 cockpit --token your-shared-secret
就这样。两个开关值得了解:
| 开关 | 含义 |
|---|---|
COCKPIT_HOST | 默认 127.0.0.1(仅本机)。设为 0.0.0.0 接受局域网 / VPN 客户端。 |
--token(或 COCKPIT_TOKEN) | 远程客户端必须出示令牌;loopback 豁免,本机 CLI 使用完全不受影响。详见访问令牌一文。 |
想常驻运行,交给你惯用的进程管理器 —— 最小 systemd unit:
[Unit]
Description=OpenCockpit
After=network.target
[Service]
User=dev
Environment=COCKPIT_HOST=0.0.0.0
Environment=COCKPIT_TOKEN=your-shared-secret
ExecStart=/usr/local/bin/cockpit
Restart=on-failure
[Install]
WantedBy=multi-user.target
给每个队友一个席位
每人打开:
http://<dev-box>:3457/?token=your-shared-secret
Cockpit 会写入 cookie 并清理 URL —— 令牌不会留在地址栏里。接下来,每个人:
- 把自己的项目开成一个 tab(多项目 tab 是相互独立的会话);
- 两个人改同一个仓库时,各占一个 git worktree —— Cockpit 在 Explorer 里直接管理 worktree,并行的 Agent 不会互踩检出;
- 每个 tab 自选引擎:默认 Claude,也可以带自己的 Key 用 Codex / DeepSeek / Kimi / Ollama。
每个席位都是完整驾驶舱:Agent 对话、xterm.js 终端、Chrome 控制、PostgreSQL / MySQL / Redis 气泡、代码评审页、定时任务。
实话实说:它是什么,不是什么
OpenCockpit 的多席位模型是基于信任的,就像共享机器的 SSH 权限:
- 令牌管的是进门,不是按用户隔离的账号体系。持有令牌的人看到同样的项目和会话。
- 把它当 shell 权限对待:适合本来就共用开发机的团队,不适合陌生人。
- 保持在局域网或 VPN 内(Tailscale / WireGuard 都很合适)。不要把端口裸暴露在公网。
如果你的团队本来就 SSH 到同一台机器,Cockpit 只是给这台机器加了席位 —— 不改变你的安全模型。
FAQ
两个人能同时用吗? 能 —— 这正是设计目标。每个浏览器是独立客户端,会话在服务端并行运行。
同一个仓库、两个 Agent? 用 git worktree(Explorer 里可视化管理)。每个 Agent 有自己的检出,分支按正常 git 流程合并。
过 Tailscale / WireGuard 能用吗?
能。就是单端口的 HTTP + WebSocket(默认 3457,--port 可改)。
手机能用吗? 能 —— 三面板滑动布局就是为此设计的。同一个 URL、同一个令牌。
Ollama 全离线? 在开发机上装 Ollama,每个席位都能选任意已拉取的模型。无 Key、无云端,想断网就断网。
一台机器上一句 npm i -g,全队一起飞。试过之后告诉我们体验如何;如果文中步骤过时了,欢迎 PR 指正。