This project runs a full Kali Linux XFCE desktop through Docker with both VNC and noVNC (browser) access.
docker compose up -dThen browse to http://localhost:6080/vnc.html (noVNC) or use a VNC client on localhost:5901.
The virtual display defaults to 1920x1200. Adjust it before launching if you prefer a different size, e.g.:
DISPLAY_WIDTH=1920 DISPLAY_HEIGHT=1080 docker compose up -dYou can also tweak DISPLAY_DEPTH (default 24). Existing containers need a restart for resolution changes.
- Desktop login: The XFCE session auto-starts as the
kaliuser. The default password iskali. Override it by exportingKALI_PASSWORDbeforedocker compose up. - VNC access: By default the VNC password is
kali. Set your own withVNC_PASSWORD=my-secret docker compose up -d. To allow passwordless VNC access, set the variable to an empty string, e.g.:export VNC_PASSWORD= docker compose up -d
- Burp Suite Community Edition is pre-installed. Launch it from the XFCE menu under
Applications → Web Application Analysis → Burp Suiteor runburpsuitein a terminal. - Ghidra is available under
Applications → Reverse Engineering → Ghidraor via theghidralauncher.
If apt attempts to use a blocked Kali mirror, rebuild with a different mirror:
docker compose build --build-arg KALI_MIRROR=http://archive-4.kali.org/kaliAny public Kali mirror URL should work.
- To avoid seeing both the remote and local mouse pointer, start the container with
X11VNC_EXTRA_ARGS="-nocursorshape". - Use the Screen Sharing
Viewmenu to toggle betweenActual Size,Fit to Window, andEnter Full Screenso the remote desktop fills your display cleanly.
Clipboard sharing is enabled by default (via autocutsel). If you still cannot paste into Kali from your host, restart the stack (or rebuild) so the background sync process starts, then reconnect in RealVNC. Some viewers expect the x11vnc -clipboard option; that flag is available for override via X11VNC_EXTRA_ARGS, but note that recent x11vnc builds may not ship with that legacy option.
If you see no space left on device while building the image, prune unused Docker data:
docker system prune -aRe-run the build afterward.
The passwords can also be managed via an .env file in this directory.