omp-live-chrome 是一个 Docker Compose 编排的浏览器自动化环境:以 OMP 编码智能体为核心,搭配 omp-web 作为主要交互界面,并通过 CDP 驱动一套实时 Chrome。OMP 内置的 browser 工具连接的就是嵌入式桌面中用户正在观看的同一个 Chrome 实例。
浏览器标签页 → https://<host>:30141 omp-web + 内嵌实时 Chrome 桌面
mkdir omp-live-chrome && cd omp-live-chrome
curl -fsSL -O https://raw.githubusercontent.com/ZhxChen/omp-live-chrome/main/docker-compose.yml
docker compose up -d首次启动时,omp 会在 ./data/proxy 下为 PUBLIC_HOST(默认 localhost)自动生成自签名证书。打开 https://<host>:30141,信任一次该证书,然后在 omp-web 页面中配置你的 LLM 提供方。
omp-web 界面右下角有一个悬浮按钮,点击后展开一个可拖动的面板,面板内嵌实时 Chrome 桌面。主界面与面板共用同一 HTTPS 源,因此只需信任一次证书,iframe 不会再次弹出证书提示。
| URL | 说明 |
|---|---|
https://<host>:30141 |
omp-web 主界面及实时 Chrome 桌面 |
https://<host>:30141/__pcb/vnc/ |
独立标签页中的实时 Chrome 桌面 |
环境要求: Docker 与 Compose v2。镜像:ghcr.io/zhxchen/omp-live-chrome:latest。
docker compose pull && docker compose up -d宿主机
├─ :30141 ─► chrome 网络命名空间 :8443(TLS,nginx 运行于 omp 容器内)
│ ├─ / → 127.0.0.1:30141(omp-web + widget)
│ └─ /__pcb/vnc/ → 127.0.0.1:3000(Selkies)
└─ 仅内部可达
├─ Chrome DevTools :9222(loopback)
└─ OMP `browser` 工具 ──► http://127.0.0.1:9222(直连)
omp 服务通过 network_mode: service:chrome 与 Chrome 共享网络命名空间。其内的 nginx 负责终止 TLS,是唯一的对外入口。OMP 内置的 browser 工具直连 Chrome 的 DevTools loopback 地址 http://127.0.0.1:9222——由于两者处于同一网络命名空间,无需任何代理改写。因为 omp 共享 Chrome 的网络命名空间,Docker 要求将宿主机端口映射声明在 chrome 服务上,但所有发布端口实际指向的都是 omp 容器内 nginx 的监听器。
omp-web 以预构建的 Next.js 包(.next 产物)形式提供,nginx 通过 sub_filter 改写其 HTML,在不改动包的前提下注入悬浮按钮与面板。面板从同一源加载 /__pcb/vnc/,nginx 剥离该前缀后经容器内 HTTP 反向代理至 Selkies。
关闭 omp-web 浏览器标签页不会终止 agent —— 会话保存在 omp-web 的服务器进程中。重新打开 :30141 即可继续。
make build
make up
open https://localhost:30141完成认证后,即可让 agent 通过 OMP 内置的 browser 工具操作嵌入式桌面中的 Chrome。本部署已将 browser.cdpUrl 设置为 http://127.0.0.1:9222,该工具会自动连接这套共享的可见 Chrome。除非用户明确要求,否则不要在 omp 容器内另启浏览器、清空共享 profile 或关闭它。
| 命令 | 说明 |
|---|---|
make build |
构建 omp 镜像 |
make up |
启动全部服务 |
make down |
停止全部服务 |
make logs |
跟踪日志输出 |
make ps |
查看运行中的容器 |
make shell |
进入 omp 容器 shell |
make smoke |
冒烟测试,结果写入 tmp/smoke.log |
make clean |
down -v 并删除本地镜像 |
| 配置项 | 默认值 | 位置 |
|---|---|---|
| Node | 24.19.0 |
build.args.NODE_VERSION |
| Bun | 1.3.14 |
build.args.BUN_VERSION |
OMP(@oh-my-pi/pi-coding-agent) |
17.2.12 |
build.args.OMP_VERSION |
| omp-web | 0.8.6 |
build.args.OMP_WEB_VERSION |
| omp-web 源码 SHA256 | f6ede6e8…7257073 |
build.args.OMP_WEB_SHA256 |
| Chrome 镜像 | version-151.0.7922.108-1 |
chrome.image(两个 compose 文件保持一致) |
| omp-web 对外端口 | 30141(HTTPS) |
代理端口映射 |
OMP 通过 Bun 全局安装(bun install -g @oh-my-pi/pi-coding-agent);omp-web 从固定的 GitHub Release 源码构建(npm ci && npm run build && npm pack)后以 tarball 方式安装。所有版本均在构建镜像时固定——升级方式见更新软件包。
omp 需要 data/proxy/cert.pem 与 data/proxy/key.pem。若启动时缺失,会自动为 localhost 生成自签名证书并复用:
docker compose up -d如需为局域网 IP 或 DNS 名称生成证书,请在 Compose 文件的 omp.environment 段取消 PUBLIC_HOST 条目的注释,填入目标主机名,然后删除已生成的证书文件并重建 omp:
environment:
- PUBLIC_HOST=172.20.10.5rm -f data/proxy/cert.pem data/proxy/key.pem
docker compose up -d --force-recreate omp已有证书文件不会被自动覆盖(因此浏览器只需信任一次证书)。
如需使用公有或私有 CA 签发的证书,将 PEM 文件放入挂载的 data/proxy 目录。证书必须覆盖浏览器访问所用的主机名;cert.pem 使用完整证书链,key.pem 使用未加密的 PEM 私钥:
mkdir -p data/proxy
install -m 644 /path/to/fullchain.pem data/proxy/cert.pem
install -m 600 /path/to/privkey.pem data/proxy/key.pem
docker compose up -d --force-recreate omp证书到期续期时,替换这两个文件并重启 omp:
install -m 644 /path/to/new-fullchain.pem data/proxy/cert.pem
install -m 600 /path/to/new-privkey.pem data/proxy/key.pem
docker compose restart ompdata/ 已加入 .gitignore;请勿将私钥纳入版本控制,并限制宿主机对它的访问权限。使用自定义证书时无需设置 PUBLIC_HOST,因为 nginx 会原样提供这些文件。
所有软件版本均固定于镜像之中,不提供容器内更新,也没有挂载 CLI 目录。升级时修改固定版本号并重新构建:
make build
docker compose -f docker-compose.dev.yml up -d --force-recreate omp使用预构建镜像的生产部署,请等待新版本发布后执行:
docker compose pull && docker compose up -d| 挂载 | 容器路径 | 内容 |
|---|---|---|
./data/omp |
/state/omp |
OMP agent 目录:config.yml、认证数据库、模型配置、会话、技能、规则 |
./data/workspace |
/workspace |
用户项目、生成文件、默认工作目录 |
./data/chrome |
/config |
Chrome 用户数据(/config/omp-profile) |
./data/proxy |
/etc/nginx/certs |
TLS 证书与私钥 |
以下内容不持久化,容器重建后恢复为镜像内置状态:Node、Bun、OMP、omp-web 安装目录,node_modules,各类缓存(/tmp、XDG、npm),nginx 日志,以及整个 /root。
- 端口默认绑定所有 IPv4 接口。若仅本机使用,可将 Compose 端口映射改为
127.0.0.1:30141:8443;否则请置于 VPN 或带强认证的反向代理之后。 - 请勿将
:9222(Chrome DevTools)、:3000或 Chrome 原生的:3001映射到宿主机。 - 该 HTTPS 入口暴露了 agent 与桌面控制能力,请勿在无强访问控制的不可信网络下开放。自签名 TLS 仅用于加密传输,不提供身份认证。
