]> git.proxmox.com Git - mirror_novnc.git/blob - README.md
Merge branch 'master' of git@github.com:kanaka/noVNC
[mirror_novnc.git] / README.md
1 ## noVNC: HTML5 VNC Client
2
3
4 ### Description
5
6 noVNC is a VNC client implemented using HTML5 technologies,
7 specifically Canvas and WebSockets (supports 'wss://' encryption).
8 noVNC is licensed under the
9 [LGPLv3](http://www.gnu.org/licenses/lgpl.html).
10
11 Special thanks to [Sentry Data Systems](http://www.sentryds.com) for
12 sponsoring ongoing development of this project (and for employing me).
13
14 Notable commits, announcements and news are posted to
15 @<a href="http://www.twitter.com/noVNC">noVNC</a>
16
17
18 ### Screenshots
19
20 Running in Chrome before and after connecting:
21
22 <img src="http://kanaka.github.com/noVNC/img/noVNC-1.jpg" width=400>&nbsp;<img src="http://kanaka.github.com/noVNC/img/noVNC-2.jpg" width=400>
23
24 See more screenshots <a href="http://kanaka.github.com/noVNC/screenshots.html">here</a>.
25
26
27 ### Projects/Companies using noVNC
28
29 * [Sentry Data Systems](http://www.sentryds.com): uses noVNC in the
30 [Datanex Cloud Computing Platform](http://www.sentryds.com/products/datanex/).
31
32 * [Ganeti Web Manager](http://code.osuosl.org/projects/ganeti-webmgr):
33 Feature [#1935](http://code.osuosl.org/issues/1935).
34
35 * [Archipel](http://archipelproject.org):
36 Demo [video](http://antoinemercadal.fr/archipelblog/wp-content/themes/ArchipelWPTemplate/video_youtube.php?title=VNC%20Demonstration&id=te_bzW574Zo)
37
38 * [openQRM](http://www.openqrm.com/): VNC plugin available
39 by request. Probably included in [version
40 4.8](http://www.openqrm.com/?q=node/15). Demo
41 [video](http://www.openqrm-enterprise.com/news/details/article/remote-vm-console-plugin-available.html).
42
43 * [OpenNode](http://www.opennodecloud.com/): uses noVNC in
44 [OpenNode Management Console](http://opennode.activesys.org/about/software-included-in-opennode/).
45 OMC [Screencast](http://opennode.activesys.org/about/opennode-management-console-screencast/).
46
47 * [OpenStack](http://www.openstack.org): uses noVNC in Cactus release
48 of [OpenStack Compute (Nova)](http://nova.openstack.org/runnova/vncconsole.html).
49 OpenStack [Screencast](http://player.vimeo.com/video/20787736?autoplay=1) with noVNC shown at about 2:17.
50
51 * [Broadway (HTML5 GDK/GTK+ backend)](http://blogs.gnome.org/alexl/2011/03/15/gtk-html-backend-update/):
52 incorporates noVNC keyboard/input handling code.
53 [Code commit](http://mail.gnome.org/archives/commits-list/2011-April/msg06623.html). Broadway [broadway.js](http://git.gnome.org/browse/gtk+/tree/gdk/broadway/broadway.js) source file.
54
55 ### Browser Requirements
56
57 * HTML5 Canvas: Except for Internet Explorer, most
58 browsers have had Canvas support for quite some time. Internet
59 Explorer 9 will have Canvas support (finally).
60
61 * HTML5 WebSockets: For browsers that do not have builtin
62 WebSockets support, the project includes
63 <a href="http://github.com/gimite/web-socket-js">web-socket-js</a>,
64 a WebSockets emulator using Adobe Flash.
65
66 * Fast Javascript Engine: noVNC avoids using new Javascript
67 functionality so it will run on older browsers, but decode and
68 rendering happen in Javascript, so a slow Javascript engine will
69 mean noVNC is painfully slow.
70
71 * I maintain a more detailed list of browser compatibility <a
72 href="https://github.com/kanaka/noVNC/wiki/Browser-support">here</a>.
73
74
75 ### Server Requirements
76
77 Unless you are using a VNC server with support for WebSockets
78 connections (only my [fork of libvncserver](http://github.com/kanaka/libvncserver)
79 currently), you need to use a WebSockets to TCP socket proxy. There is
80 a python proxy included ('websockify'). One advantage of using the
81 proxy is that it has builtin support for SSL/TLS encryption (i.e.
82 "wss://").
83
84 There a few reasons why a proxy is required:
85
86 1. WebSockets is not a pure socket protocol. There is an initial HTTP
87 like handshake to allow easy hand-off by web servers and allow
88 some origin policy exchange. Also, each WebSockets frame begins
89 with 0 ('\x00') and ends with 255 ('\xff').
90
91 2. Javascript itself does not have the ability to handle pure byte
92 arrays. The python proxy encodes the data as base64 so that the
93 Javascript client can decode the data as an integer array.
94
95
96 ### Quick Start
97
98 * Use the launch script to start a mini-webserver and the WebSockets
99 proxy (websockify). The `--vnc` option is used to specify the location of
100 a running VNC server:
101
102 `./utils/launch.sh --vnc localhost:5901`
103
104 * Point your browser to the cut-and-paste URL that is output by the
105 launch script. Enter a password if the VNC server has one
106 configured. Hit the Connect button and enjoy!
107
108
109 ### Other Pages
110
111 * [Advanced Usage](https://github.com/kanaka/noVNC/wiki/Advanced-usage). Generating an SSL
112 certificate, starting a VNC server, advanced websockify usage, etc.
113
114 * [Integrating noVNC](https://github.com/kanaka/noVNC/wiki/Integration) into existing projects.
115
116 * [Troubleshooting noVNC](https://github.com/kanaka/noVNC/wiki/Troubleshooting) problems.
117
118