Skip to main content
Glama
hirotasoshu

cubesandbox-browser-sandbox

by hirotasoshu

CubeSandbox Browser Runtime

Один продакшн-образ и контракт шаблона для browser_use на CubeSandbox, основанный на образе sandbox-browser от TencentCloud с закреплённым digest. Каждая песочница содержит обе возможности рабочих нагрузок:

  • постоянный вышестоящий Chromium/CDP на 9000 и управляемый s6 HTTP-сервис @playwright/mcp@0.0.79 на 8931, работающие под UID 1000;

  • записываемое хранилище супервизора Run без прав root в /run/browser-use/runs и два CDP-слота безголового Chromium, принадлежащих Run, на 10000-10001.

Цель runtime требует RUNTIME_MARKER=sha256:<64 lowercase hex>. Маркер записывается в /etc/browser-use/runtime-marker и должен совпадать с тем, который продвигается вместе с единственным ID шаблона в browser_use.

Сборка и проверка

source_digest="$(git archive HEAD | sha256sum | cut -d' ' -f1)"
marker="sha256:$(printf '%s:runtime' "${source_digest}" | sha256sum | cut -d' ' -f1)"

docker build --target runtime --build-arg "RUNTIME_MARKER=${marker}" \
  -t cubesandbox-browser-sandbox .
docker run -d --cap-add=SYS_ADMIN --shm-size=2g --name browser-runtime \
  cubesandbox-browser-sandbox
docker exec --user user browser-runtime browser-sandbox-smoke mcp
docker exec --user user browser-runtime browser-sandbox-smoke run
docker exec --user user browser-runtime browser-sandbox-mcp-smoke

Эта последовательность доказывает, что постоянный MCP выдерживает два параллельных процесса Chromium, принадлежащих Run, в одной песочнице. SYS_ADMIN нужен только локальному Docker, чтобы Chromium мог создавать пространства имён песочницы; CubeSandbox обеспечивает изоляцию в развёрнутой среде.

Зависимости и базовые образы неизменяемы: npm-пакеты зафиксированы по контрольным суммам, зависимости Python-верификатора зафиксированы по хэшам, обе стадии сборки используют digest образов, а публикация выпускает SBOM и SLSA-аттестации происхождения и подписывает загруженный digest в режиме keyless с помощью Cosign. Перегенерируйте Python-лок с помощью uv pip compile requirements.in -o requirements.txt --generate-hashes.

Related MCP server: sa2web-mcp

Публикация и шаблон

Рабочий процесс публикует теги latest, sha-<commit> и теги релизов в ghcr.io/hirotasoshu/cubesandbox-browser-sandbox. Продвижение должно сопоставлять тег с image@sha256:...; плавающие ссылки на образы отклоняются:

scripts/create-template.sh \
  ghcr.io/hirotasoshu/cubesandbox-browser-sandbox@sha256:<digest>

Псевдоним шаблона по умолчанию — browser-use-runtime-medium, с 2 vCPU, 4 GiB ОЗУ и 20 GiB записываемого слоя. Он предоставляет наружу envd 49983, постоянный CDP 9000, MCP 8931 и CDP-слоты Run 10000-10001. Только постоянный CDP служит стартовой пробой, потому что порты Run простаивают, пока Run не станет их владельцем.

Токены доступа к трафику Cube являются границей входящего трафика. MCP разрешает только динамические имена хостов Cube, потому что Cube проверяет токен перед пересылкой трафика. После создания шаблона настройте потолок PID провайдера и обязательный запрет исходящего трафика в частные/link-local адреса, затем выполните живой контракт:

python -m venv .venv
.venv/bin/pip install -r requirements.txt

CUBE_TEMPLATE_ID=<template-id> \
CUBE_RUNTIME_MARKER=sha256:<runtime-marker> \
E2B_API_KEY=<cube-api-key> \
E2B_API_URL=<cube-api-url> \
  .venv/bin/python scripts/verify-template.py

Живая проверка создаёт одну защищённую песочницу и одновременно проверяет обе рабочие нагрузки: API маркера и файлов, политику публичной/частной сети, аутентифицированный CDP на всех трёх браузерных эндпоинтах, отклонение токенов трафика, точные определения инструментов MCP, навигацию MCP и изоляцию опасного инструмента.

Финальным авторитетом при продвижении остаётся набор тестов соответствия провайдера browser_use. Не включайте production-режим на основании одного лишь успеха сборки образа.

Безопасность

CDP и Playwright MCP предоставляют контроль над браузером; опасный инструмент MCP эквивалентен RCE на хосте. Никогда не внедряйте секреты приложений в песочницу. Держите контроль токенов трафика включённым, используйте только неизменяемые значения образов и маркеров, обеспечивайте соблюдение лимитов PID провайдера и требуйте запрета частных/link-local адресов.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables browser automation and web scraping by exposing Playwright tools through an HTTP-based MCP server. Users can navigate pages, interact with web elements, capture screenshots, and extract structured content using a persistent Chromium instance.
    MIT
  • A
    license
    C
    quality
    D
    maintenance
    Exposes a remote browser as MCP tools via Playwright, enabling AI agents to navigate and interact with web pages through DOM snapshots, clicks, typing, and form operations.
    40
    5 npm
    14
    Apache 2.0
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents to operate an isolated local Chromium browser through MCP, with semantic snapshots, ref-based actions, search, research, crawling, and CDP access.
    Apache 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents and clients to control a real Chromium browser through MCP tool calls, including navigation, clicking, typing, JavaScript evaluation, screenshots, and DOM snapshots. Supports multiple isolated sessions over authenticated HTTP with no disk writes.
    Apache 2.0