noVNC: HTML5 VNC Client
noVNC is a HTML5 VNC client that runs well in any modern browser including mobile browsers (iPhone/iPad and Android).
Many companies/projects have integrated noVNC including Ganeti Web Manager, OpenStack, OpenNebula, and LibVNCServer. See the Projects and Companies wiki page for a more complete list with additional info and links.
Notable commits, announcements and news are posted to @noVNC
If you are a noVNC developer/integrator/user (or want to be) please join the noVNC discussion group
Bugs and feature requests can be submitted via github issues. If you are looking for a place to start contributing to noVNC, a good place to start would be the issues that are marked as "patchwelcome".
If you want to show appreciation for noVNC you could donate to a great non-profits such as: Compassion International, SIL, Habitat for Humanity, Electronic Frontier Foundation, Against Malaria Foundation, Nothing But Nets, etc. Please tweet @noVNC if you do.
- Supports all modern browsers including mobile (iOS, Android)
- Supported VNC encodings: raw, copyrect, rre, hextile, tight, 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 MPL 2.0
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.
See the more detailed browser compatibility wiki page.
Unless you are using a VNC server with support for WebSockets connections (such as x11vnc/libvncserver, QEMU, or PocketVNC), 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!
Encrypted Connections. How to setup websockify so that you can use encrypted connections from noVNC.
Advanced Usage. Starting a VNC server, advanced websockify usage, etc.
Integrating noVNC into existing projects.
Troubleshooting noVNC problems.
- UI and Icons : Chris Gordon
- Original Logo : Michael Sersen
- tight encoding : Michael Tinglof (Mercuri.ca)
- web-socket-js : Hiroshi Ichikawa (github.com/gimite/web-socket-js)
- as3crypto : Henri Torgemane (code.google.com/p/as3crypto)
- base64 : Martijn Pieters (Digital Creations 2), Samuel Sieb (sieb.net)
- jsunzip : Erik Moller (github.com/operasoftware/jsunzip),
- tinflate : Joergen Ibsen (ibsensoftware.com)
- DES : Dave Zimmerman (Widget Workshop), Jef Poskanzer (ACME Labs)