Statistics
| Branch: | Tag: | Revision:

one / src / sunstone / public / vendor / noVNC / README.md @ 5fcb9de8

History | View | Annotate | Download (4.04 KB)

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
  [Video demo](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). [Video
41
    demo](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
### Browser Requirements
48

    
49
* HTML5 Canvas: Except for Internet Explorer, most
50
  browsers have had Canvas support for quite some time. Internet
51
  Explorer 9 will have Canvas support (finally).
52

    
53
* HTML5 WebSockets: For browsers that do not have builtin
54
  WebSockets support, the project includes
55
  <a href="http://github.com/gimite/web-socket-js">web-socket-js</a>,
56
  a WebSockets emulator using Adobe Flash.
57

    
58
* Fast Javascript Engine: noVNC avoids using new Javascript
59
  functionality so it will run on older browsers, but decode and
60
  rendering happen in Javascript, so a slow Javascript engine will
61
  mean noVNC is painfully slow.
62

    
63
* I maintain a more detailed list of browser compatibility <a
64
  href="wiki/Browser-support">here</a>.
65

    
66

    
67
### Server Requirements
68

    
69
Unless you are using a VNC server with support for WebSockets
70
connections (only my [fork of libvncserver](http://github.com/kanaka/libvncserver)
71
currently), you need to use a WebSockets to TCP socket proxy. There is
72
a python proxy included ('websockify'). One advantage of using the
73
proxy is that it has builtin support for SSL/TLS encryption (i.e.
74
"wss://").
75

    
76
There a few reasons why a proxy is required:
77

    
78
  1. WebSockets is not a pure socket protocol. There is an initial HTTP
79
     like handshake to allow easy hand-off by web servers and allow
80
     some origin policy exchange. Also, each WebSockets frame begins
81
     with 0 ('\x00') and ends with 255 ('\xff').
82

    
83
  2. Javascript itself does not have the ability to handle pure byte
84
     arrays. The python proxy encodes the data as base64 so that the
85
     Javascript client can decode the data as an integer array.
86

    
87

    
88
### Quick Start
89

    
90
* Use the launch script to start a mini-webserver and the WebSockets
91
  proxy (websockify). The `--vnc` option is used to specify the location of
92
  a running VNC server:
93

    
94
    `./utils/launch.sh --vnc localhost:5901`
95

    
96
* Point your browser to the cut-and-paste URL that is output by the
97
  launch script. Enter a password if the VNC server has one
98
  configured. Hit the Connect button and enjoy!
99

    
100

    
101
### Other Pages
102

    
103
* [Advanced Usage](wiki/Advanced-usage). Generating an SSL
104
  certificate, starting a VNC server, advanced websockify usage, etc.
105

    
106
* [Integrating noVNC](wiki/Integration) into existing projects.
107

    
108
* [Troubleshooting noVNC](wiki/Troubleshooting) problems.
109

    
110