Files
Pradeep ElankumaranandLeone Parise 0ac2490f29 feat: VNC plugin for interactive browser login + storage_state export
VNC plugin (plugins/vnc/) exposes Camoufox's virtual display via noVNC,
enabling interactive login for sites with fingerprint-based session
validation, CAPTCHAs, or MFA prompts.

- Plugin subclasses VirtualDisplay to override Xvfb resolution (default
  1920x1080, configurable via plugins.vnc.resolution or VNC_RESOLUTION)
- vnc-watcher.sh detects Camoufox's dynamically-assigned Xvfb display,
  attaches x11vnc, and proxies via noVNC on port 6080
- Registers GET /sessions/:userId/storage_state to export Playwright
  storageState (cookies + localStorage) after interactive login
- Emits session:storage:export event for persistence plugin integration
- System deps declared in apt.txt, installed via install-plugin-deps.sh

Plugin system changes:
- ctx passed by reference (not spread) so plugins can mutate factories
  like ctx.createVirtualDisplay
- pluginConfig moved to 3rd arg of register(app, ctx, pluginConfig)
- server.js exposes createVirtualDisplay factory + VirtualDisplay class
  on pluginCtx

Dockerfile: fix build for local Makefile (bind mounts from dist/),
name first stage for multi-stage support.

Co-authored-by: Leone Parise <leone.parise@gmail.com>
2026-04-18 17:21:50 -07:00

8 lines
171 B
Plaintext

# VNC stack: x11vnc attaches to Camoufox's Xvfb, noVNC + websockify expose it over HTTP
x11vnc
novnc
python3-websockify
# Utilities for display detection
net-tools
procps