A containerized environment for running Vision antidetect browser with VNC remote desktop access. This setup provides a complete Debian desktop environment (XFCE4) accessible through your web browser via noVNC.
This project packages Vision in a Docker container with:
- Debian 13 (trixie) slim base image
- XFCE4 desktop environment
- VNC server (TigerVNC) for remote desktop access
- noVNC web interface for browser-based VNC access
- Chromium browser pre-installed (from Debian repos) to ensure that required browser packages are installed
- Vision automation tool
Note: Vision ships x86-64 (
amd64) packages only, so the image is built forlinux/amd64. On ARM hosts (e.g. Apple Silicon) it runs under emulation (Rosetta/QEMU), which works but is slower than native.
- π₯οΈ Browser-based access: Connect to the desktop environment directly from your web browser
- π Sandboxed environment: Runs as non-root user (
sandbox) for security - π Easy deployment: Simple Docker Compose setup
- π Auto-restart: Container automatically restarts unless explicitly stopped
- π¦ Pre-configured: All dependencies and tools ready to use
- βοΈ Runtime configuration: VNC password and resolution configurable via environment variables
- πΎ Persistent data: Vision login session and profile data survive container recreation via named volumes
- Docker (version 20.10 or higher)
- Docker Compose (version 1.29 or higher)
- At least 4GB of available RAM
- Modern web browser (Chrome, Firefox, Safari, or Edge)
git clone <repository-url>
cd vision-dockerdocker-compose up -dThis will:
- Build the Docker image (first time only, may take 5-10 minutes)
- Start the container in detached mode
- Expose ports 6080 (noVNC) and 3030 (Vision HTTP server)
Open your web browser and navigate to:
http://localhost:6080/vnc.html
VNC Password: password
Vision API server is available at:
http://localhost:3030
docker-compose up -ddocker-compose downdocker-compose logs -fIf you make changes to the Dockerfile:
docker-compose up -d --buildThe Dockerfile checks the upstream version endpoint
(https://v1.empr.cloud/get/version) on every build, so:
docker-compose up -d --buildis an idempotent update command β if no new Vision version is out, the build fully hits the cache and the running container is left untouched; if a new version is out, only the Vision layer is rebuilt and the container is recreated. Login session and profile data survive the update thanks to the named volumes.
To update automatically, schedule that command on the host, e.g. cron:
0 4 * * * cd /path/to/vision-docker && docker compose up -d --buildThe installed version is printed on startup (docker-compose logs | grep "Vision version").
docker-compose exec vision bashThe Dockerfile creates a multi-layered Debian environment:
- Base System: Debian 13 (trixie) slim with locale and core utilities
- Desktop Environment: XFCE4 (TigerVNC's built-in X server is used, so no separate X.org stack is needed)
- VNC Stack: TigerVNC server + noVNC + websockify
- Browser: Chromium from the official Debian repositories
- Vision: Latest version from official source
- User Setup: Non-root
sandboxuser with passwordless sudo
The entrypoint.sh script handles container initialization:
- Sets up environment variables
- Starts the system D-Bus daemon
- Sets the VNC password and starts TigerVNC's X server (
Xtigervnc) on display:1 - Starts a D-Bus session with the XFCE4 desktop
- Launches noVNC web interface
- Starts Vision
- Maintains container with log tailing
The docker-compose.yml provides:
- Platform:
linux/amd64(Vision only ships x86-64 packages) - Shared memory: 4GB allocated for browser operations
- Host networking: all ports are exposed via
network_mode: host - Named volumes: Vision data persists across container recreation
- Restart policy: Automatic restart unless stopped
Vision state is stored in two named volumes:
| Volume | Mount point | Contents |
|---|---|---|
vision-app |
~/.local/share/com.vision.antidetect |
App WebKit storage: your Vision login session, local storage, caches |
vision-data |
~/.local/share/Vision |
Profile data and browser engines |
The volumes survive docker-compose down, rebuilds, and image upgrades. To
wipe all Vision data and start fresh:
docker-compose down -v| Port | Service | Description |
|---|---|---|
| 6080 | noVNC | Web-based VNC client interface |
| 3030 | Vision | Vision API server |
| 5901 | VNC | VNC server (bound to localhost inside the container only) |
The entrypoint reads the following environment variables (set them in
docker-compose.yml under environment:):
| Variable | Default | Description |
|---|---|---|
VNC_PASSWORD |
password |
VNC/noVNC password |
VNC_GEOMETRY |
1280x800 |
Desktop resolution |
VNC_DEPTH |
24 |
Color depth |
VISION_HTTP_SERVER |
0.0.0.0:3030 |
Address the Vision API server listens on |
Example:
environment:
VNC_PASSWORD: "my-secret"
VNC_GEOMETRY: "1920x1080"
VISION_HTTP_SERVER: "0.0.0.0:3030"Edit the useradd line in the Dockerfile:
echo "sandbox:your-new-password" | chpasswd && \Check logs:
docker-compose logs- Verify container is running:
docker-compose ps - Check port isn't already in use:
lsof -i :6080 - Try accessing via container IP directly
- Check VNC logs:
docker-compose exec vision cat ~/.vnc/Xtigervnc.log ~/.vnc/xfce.log - Restart the container:
docker-compose restart
- Check if Vision process is running:
docker-compose exec vision ps aux | grep Vision - Verify Vision installation:
docker-compose exec vision which Vision - Check Vision logs in container output
- Increase shared memory in
docker-compose.yml(currently 4GB) - Allocate more CPU/RAM to Docker
- Reduce VNC screen resolution
- On ARM hosts, remember the container runs under x86-64 emulation; prefer an x86-64 host for production
- Default passwords: Change the default VNC password (
password) and user password before deploying in production - Network exposure: By default, ports are exposed on all interfaces (
0.0.0.0). Consider restricting to localhost or using a reverse proxy - Sudo access: The
sandboxuser has passwordless sudo. Remove if not needed - No authentication: noVNC has no additional authentication beyond VNC password
- Production use: This setup is designed for development/testing. For production, add:
- SSL/TLS encryption
- Proper authentication
- Network isolation
- Regular security updates
- CPU: 2+ cores recommended (x86-64 native preferred)
- RAM: 4GB minimum, 8GB recommended
- Disk: 5GB for image + additional space for usage
- Network: Internet connection for building image
This project configuration is provided as-is. Please refer to individual component licenses:
Feel free to submit issues and enhancement requests!
- Vision team for the automation tool
- noVNC project for browser-based VNC access
- XFCE team for the lightweight desktop environment