Skip to content

Repository files navigation

omp-live-chrome

omp-live-chrome 是一个 Docker Compose 编排的浏览器自动化环境:以 OMP 编码智能体为核心,搭配 omp-web 作为主要交互界面,并通过 CDP 驱动一套实时 Chrome。OMP 内置的 browser 工具连接的就是嵌入式桌面中用户正在观看的同一个 Chrome 实例。

浏览器标签页 → https://<host>:30141   omp-web + 内嵌实时 Chrome 桌面

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 命令

命令 说明
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 方式安装。所有版本均在构建镜像时固定——升级方式见更新软件包

TLS 证书

omp 需要 data/proxy/cert.pemdata/proxy/key.pem。若启动时缺失,会自动为 localhost 生成自签名证书并复用:

docker compose up -d

如需为局域网 IP 或 DNS 名称生成证书,请在 Compose 文件的 omp.environment 段取消 PUBLIC_HOST 条目的注释,填入目标主机名,然后删除已生成的证书文件并重建 omp

environment:
  - PUBLIC_HOST=172.20.10.5
rm -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 omp

data/ 已加入 .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 仅用于加密传输,不提供身份认证。

许可证

MIT

About

oh my pi + omp-web UI 的一键 Docker 部署;agent 通过 CDP 驱动一套用户可见的实时 Chrome,适合 browser-use 类自动化。

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages