This guide uses Docker Compose to run noVNC with a complete VNC stack.
noVNC is just a VNC client - a complete deployment requires:
There is no official noVNC Docker image. This guide uses community images.
For Docker installation, see Docker.
mkdir novnc-stack
cd novnc-stack
Create compose.yaml with noVNC and a VNC server:
services:
novnc:
image: lscr.io/linuxserver/novnc:latest
container_name: novnc
environment:
- PUID=1000
- PGID=1000
- RESOLUTION=1920x1080
volumes:
- ./config:/config
ports:
- "6081:80"
restart: unless-stopped
vnc-server:
image: lscr.io/linuxserver/baseimage-kasmvnc:ubuntu-jammy
container_name: vnc-server
environment:
- PUID=1000
- PGID=1000
- SUBFOLDER=/
- KASMVNC_PASSWORD=vncpassword123
volumes:
- ./vnc-config:/config
ports:
- "5901:5901"
restart: unless-stopped
Note: This example uses LinuxServer.io’s noVNC image which includes websockify. The VNC server runs in a separate container.
noVNC needs to know how to connect to the VNC server. Create a configuration file or use the web UI to specify:
vnc-server (Docker service name)5901docker compose up -d
Open your browser to http://YOUR-SERVER:6081
You’ll see the noVNC interface. Enter your VNC connection details:
vnc-server (or the VNC server’s IP/hostname)5901Some community images bundle noVNC with a VNC server:
services:
novnc-full:
image: dorowu/ubuntu-desktop-lxde-vnc:latest
ports:
- "5900:5900" # VNC port
- "6080:80" # noVNC web port
environment:
- VNC_PASSWORD=vncpassword123
restart: unless-stopped
Access at http://YOUR-SERVER:6080
For production deployments:
To connect to an existing VNC server on your network:
services:
novnc:
image: lscr.io/linuxserver/novnc:latest
ports:
- "6081:80"
# Configure connection via web UI or add:
# - WEBSOCKIFY_OPTIONS=--web /usr/share/novnc --cert=/etc/ssl/cert.pem --key=/etc/ssl/key.pem
Then access the noVNC web UI and enter your external VNC server details.
Connection refused errors:
docker psdocker logs vnc-serverBlank screen:
See noVNC Configuration for detailed configuration options.