Built a browser-accessible Kali Linux penetration testing environment using Apache Guacamole over Docker, secured behind Cloudflare Zero Trust and publicly reachable at a custom domain. Full desktop access from any device with no VPN required.
Kali GNU/Linux 2026.1 desktop rendered in Chrome at remote.evanakerly.com/guacamole — zero VPN required
Guacamole runs as a Docker Compose stack with three containers: guacamole, guacd (the native daemon), and PostgreSQL for session storage. A Cloudflare tunnel proxies the Guacamole web interface externally, with Zero Trust Access requiring authentication before any connection is established. The Kali VM connects to Guacamole via VNC on the internal VirtualBox network.
The Guacamole stack is defined as a three-service Docker Compose configuration:
# Guacamole stack - docker-compose.yml services: guacd: image: guacamole/guacd restart: always guacamole: image: guacamole/guacamole restart: always ports: - "8080:8080" environment: GUACD_HOSTNAME: guacd POSTGRESQL_HOSTNAME: guacdb POSTGRESQL_DATABASE: guacamole_db guacdb: image: postgres:15 restart: always