noVNC: HTML5 VNC Client
noVNC is a HTML5 VNC client that runs well in any modern browser including mobile browsers (iPhone/iPad and Android).
Notable commits, announcements and news are posted to @noVNC
There are many companies/projects that have integrated noVNC into their products including: Ganeti Web Manager, Archipel, openQRM, OpenNode, OpenStack, Broadway (HTML5 GDK/GTK+ backend), OpenNebula, CloudSigma, Zentyal (formerly eBox), SlapOS, Intel MeshCentral, Amahi, Brightbox, and LibVNCServer. See this wiki page for more info and links.
- Supports all modern browsers including mobile (iOS, Android)
- Supported VNC encodings: raw, copyrect, rre, hextile, tightPNG
- WebSocket SSL/TLS encryption (i.e. "wss://") support
- 24-bit true color and 8 bit colour mapped
- Supports desktop resize notification/pseudo-encoding
- Local or remote cursor
- Clipboard copy/paste
- Clipping or scolling modes for large remote screens
- Easy site integration and theming (3 example themes included)
- Licensed under the LGPLv3
Running in Chrome before and after connecting:
See more screenshots here.
HTML5 Canvas (with createImageData): Chrome, Firefox 3.6+, iOS Safari, Opera 11+, Internet Explorer 9+, etc.
HTML5 WebSockets: For browsers that do not have builtin WebSockets support, the project includes web-socket-js, a WebSockets emulator using Adobe Flash. iOS 4.2+ has built-in WebSocket support.
I maintain a more detailed browser compatibility list here.
Unless you are using a VNC server with support for WebSockets connections (such as x11vnc/libvncserver), you need to use a WebSockets to TCP socket proxy. There is a python proxy included ('websockify').
Use the launch script to start a mini-webserver and the WebSockets proxy (websockify). The
--vncoption is used to specify the location of a running VNC server:
./utils/launch.sh --vnc localhost:5901
Point your browser to the cut-and-paste URL that is output by the launch script. Enter a password if the VNC server has one configured. Hit the Connect button and enjoy!