bauta문서

Docker에서 실행

게이트웨이, bauta 브라우저, 폰트 환경, 가상 디스플레이를 컨테이너 하나에서 실행합니다.

이미지는 bauta serve를 실행합니다. 게이트웨이, bauta 브라우저, 페르소나 폰트 환경, 그리고 브라우저 창을 위한 가상 디스플레이가 들어 있습니다. 페르소나마다 포트 9222에 엔드포인트가 생깁니다.

이미지 받기

docker pull ghcr.io/bautabrowser/bauta

실행

docker run -d --name bauta --init --cap-add=SYS_ADMIN -p 127.0.0.1:9222:9222 -v bauta:/data \
  -e BAUTA_PERSONAS="shop=win-intel" ghcr.io/bautabrowser/bauta

그다음 다른 머신에서와 같이 페르소나에 연결합니다.

browser = playwright.chromium.connect_over_cdp("http://127.0.0.1:9222/persona/shop")
플래그이유
--init브라우저의 종료된 프로세스를 거둡니다.
--cap-add=SYS_ADMIN브라우저의 SUID 샌드박스 헬퍼가 샌드박스에 필요한 네임스페이스를 만드는 데 이 권한이 필요합니다.
-p 127.0.0.1:9222:9222포트 9222를 호스트의 루프백에만 공개합니다.
-v bauta:/data라이선스, 프로필을 포함한 페르소나, IP 데이터베이스를 보관합니다.
-e BAUTA_PERSONAS=...시작할 때 없는 페르소나를 만듭니다.

포트 9222에는 비밀번호가 없습니다. 위처럼 호스트의 루프백(127.0.0.1:9222:9222)에 공개하거나, 직접 구성한 접근 제어 뒤에 두세요.

라이선스 키 추가

-e BAUTA_LICENSE_KEY=<key>는 선택입니다. 없으면 컨테이너는 무료 플랜(세션 1개)으로 실행됩니다.

docker run -d --name bauta --init --cap-add=SYS_ADMIN -p 127.0.0.1:9222:9222 -v bauta:/data \
  -e BAUTA_LICENSE_KEY=<key> -e BAUTA_PERSONAS="shop=win-intel" ghcr.io/bautabrowser/bauta

CI에서나 컨테이너가 많을 때는 키를 설정하거나, /data를 볼륨에 두어 컨테이너가 설치 ID를 유지하게 하세요. 서버는 IP마다 새 무료 활성화를 제한합니다. 키 대신 라이선스 파일을 쓰려면 /data/license에 둡니다.

계정이 있다면 라이선스 키는 대시보드에 있습니다. 라이선스 키와 플랜도 참고하세요.

페르소나 만들기

BAUTA_PERSONAS는 시작할 때 없는 페르소나를 만들며, 각 항목은 name=<built-in or file> 형식입니다. 다른 페르소나는 docker exec로 만듭니다.

docker exec bauta bauta persona new crawl --from win-intel

페르소나 파일의 설정(proxy, timezone, locale, humanize, ephemeral, requests)은 Docker 밖과 같습니다.

패키지에서는 gateway(또는 BAUTA_GATEWAY)로 컨테이너의 게이트웨이를 쓰며, 페르소나는 컨테이너 쪽에서 만듭니다.

from bautabrowser import launch

browser = launch(gateway="http://127.0.0.1:9222", name="shop")
const { launch } = require("bautabrowser");

const browser = await launch({ gateway: "http://127.0.0.1:9222", name: "shop" });

WebGL과 GPU

컨테이너에 GPU가 없으면 브라우저는 WebGL을 소프트웨어(Chrome의 SwiftShader)로 렌더링하고, 페이지에는 페르소나의 GPU가 보입니다. 대신 호스트의 GPU로 렌더링하려면 --device /dev/dri로 GPU를 넘깁니다.

docker run -d --name bauta --init --cap-add=SYS_ADMIN --device /dev/dri -p 127.0.0.1:9222:9222 -v bauta:/data \
  -e BAUTA_PERSONAS="shop=win-intel" ghcr.io/bautabrowser/bauta

샌드박스는 켜진 채로 유지됩니다

브라우저는 --no-sandbox로 실행하지 않습니다. SUID 샌드박스 헬퍼가 샌드박스에 필요한 네임스페이스를 만들며, 여기에 --cap-add=SYS_ADMIN이 필요합니다. 헬퍼가 없는 이미지는 Chrome의 사용자 네임스페이스 샌드박스로 대신하는데, 이때는 --security-opt seccomp=unconfined와, 권한 없는 프로세스가 사용자 네임스페이스를 만들 수 있는 호스트가 필요합니다. Ubuntu 23.10 이상은 기본적으로 이를 허용하지 않으며, AppArmor가 없는 컨테이너에도 마찬가지입니다.

직접 빌드

bauta-browser 리포지토리를 체크아웃한 곳에서 docker/dist/<arch>/를 바이너리로 채운 뒤, 리포지토리 루트에서 빌드합니다. 최신 릴리스에서 받는 경우 모든 다운로드를 릴리스의 서명된 SHA256SUMS와 대조합니다.

docker/get.sh                 # 또는 docker/get.sh vX.Y.Z; amd64와 arm64를 모두 채웁니다
docker build -f docker/Dockerfile -t bauta .

이미 있는 브라우저 아카이브와 bauta 바이너리로 만들 수도 있습니다.

docker/stage.sh bauta-browser-linux-x64.tar.gz /path/to/bauta amd64
docker build -f docker/Dockerfile -t bauta .

다음

이 페이지 내용