- CLAUDE.md: Server instructions and service reference - docs/: Persistent documentation (architecture, guides) - .artifacts/: Session-generated notes - playwriter-browser/: Remote browser container config Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
49 lines
1.5 KiB
YAML
49 lines
1.5 KiB
YAML
version: '3.8'
|
|
|
|
services:
|
|
playwriter-browser:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
container_name: playwriter-browser
|
|
hostname: playwriter-browser
|
|
ports:
|
|
- "5901:5900" # VNC (use 5901 to avoid conflicts)
|
|
- "6081:6080" # noVNC web interface
|
|
- "19988:19988" # Playwriter WebSocket relay
|
|
- "9222:9222" # Chrome DevTools Protocol
|
|
volumes:
|
|
# Persist full Chrome profile (login sessions, cookies, localStorage, bookmarks, passwords)
|
|
- chrome-profile:/root/.config/google-chrome
|
|
# Persist keyrings for encrypted credentials (gnome-keyring)
|
|
- browser-keyring:/root/.local/share/keyrings
|
|
# Persist session data for quick restore
|
|
- browser-sessions:/root/.config/google-chrome/Default/Sessions
|
|
environment:
|
|
- DISPLAY=:99
|
|
- PLAYWRITER_TOKEN=${PLAYWRITER_TOKEN:-nuc-browser-token}
|
|
# Enable password saving in Chrome
|
|
- CHROME_ENABLE_PASSWORDS=true
|
|
# Chrome requires shared memory for stability
|
|
shm_size: 2gb
|
|
# Chrome capabilities
|
|
cap_add:
|
|
- SYS_ADMIN
|
|
security_opt:
|
|
- seccomp:unconfined
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pgrep -x chrome > /dev/null || exit 1"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
start_period: 60s
|
|
retries: 3
|
|
|
|
volumes:
|
|
chrome-profile:
|
|
name: playwriter-chrome-profile
|
|
browser-keyring:
|
|
name: playwriter-browser-keyring
|
|
browser-sessions:
|
|
name: playwriter-browser-sessions
|