noVNC README

The project's README from github.com/novnc/noVNC. As one markdown file: README.md.

noVNC: HTML VNC client library and application

Test Status Lint Status

Description

noVNC is both a HTML VNC client JavaScript library and an application built on top of that library. noVNC runs well in any modern browser including mobile browsers (iOS and Android).

Many companies, projects and products have integrated noVNC including OpenStack, OpenNebula, LibVNCServer, and ThinLinc. See the Projects and companies wiki page for a more complete list with additional info and links.

Table of contents

News/help/contact

The project website is found at novnc.com.

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 have questions about using noVNC then please first use the discussion group. We also have a wiki with lots of helpful information.

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". Please check our contribution guide though.

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.

Features

Screenshots

Running in Firefox before and after connecting:

 

See more screenshots here.

Browser requirements

noVNC uses many modern web technologies so a formal requirement list is not available. However these are the minimum versions we are currently aware of:

Server requirements

noVNC follows the standard VNC protocol, but unlike other VNC clients it does require WebSockets support. Many servers include support (e.g. x11vnc/libvncserver, QEMU, and MobileVNC), but for the others you need to use a WebSockets to TCP socket proxy. noVNC has a sister project websockify that provides a simple such proxy.

Quick start

Installation from snap package

Running the command below will install the latest release of noVNC from snap:

sudo snap install novnc

Running noVNC from snap directly

You can run the snap package installed novnc directly with, for example:

novnc --listen 6081 --vnc localhost:5901 # /snap/bin/novnc if /snap/bin is not in your PATH

If you want to use certificate files, due to standard snap confinement restrictions you need to have them in the /home/<user>/snap/novnc/current/ directory. If your username is jsmith an example command would be:

novnc --listen 8443 --cert ~jsmith/snap/novnc/current/self.crt --key ~jsmith/snap/novnc/current/self.key --vnc ubuntu.example.com:5901

Running noVNC from snap as a service (daemon)

The snap package also has the capability to run a 'novnc' service which can be configured to listen on multiple ports connecting to multiple VNC servers (effectively a service running multiple instances of novnc). Instructions (with example values):

List current services (out-of-box this will be blank):

sudo snap get novnc services
Key             Value
services.n6080  {...}
services.n6081  {...}

Create a new service that listens on port 6082 and connects to the VNC server running on port 5902 on localhost:

sudo snap set novnc services.n6082.listen=6082 services.n6082.vnc=localhost:5902

(Any services you define with 'snap set' will be automatically started) Note that the name of the service, 'n6082' in this example, can be anything as long as it doesn't start with a number or contain spaces/special characters.

View the configuration of the service just created:

sudo snap get novnc services.n6082
Key                    Value
services.n6082.listen  6082
services.n6082.vnc     localhost:5902

Disable a service (note that because of a limitation in snap it's currently not possible to unset config variables, setting them to blank values is the way to disable a service):

sudo snap set novnc services.n6082.listen='' services.n6082.vnc=''

(Any services you set to blank with 'snap set' like this will be automatically stopped)

Verify that the service is disabled (blank values):

sudo snap get novnc services.n6082
Key                    Value
services.n6082.listen  
services.n6082.vnc

Integration and deployment

Please see our other documents for how to integrate noVNC in your own software, or deploying the noVNC application in production environments:

Authors/Contributors

See AUTHORS for a (full-ish) list of authors. If you're not on that list and you think you should be, feel free to send a PR to fix that.

Do you want to be on this list? Check out our contribution guide and start hacking!

noVNC (novnc/noVNC)

Searching Database…

14.1K ·GitHub
这是什么?noVNC 是一个基于 HTML5 的 VNC 客户端,无需任何插件,就能直接在网页浏览器中连接并控制远程桌面。OpenStack、OpenNebula 和 ThinLinc 等项目都用它提供基于浏览器的远程访问功能。
noVNC 只是一个 JavaScript 库,还是可以直接运行的程序?两者都是:它既是一个可复用的 JavaScript/HTML5 VNC 客户端库,可以嵌入你自己的应用中,也是基于同一个库构建的、开箱即用的网页应用。
我该怎么把它跑起来?运行自带的 novncproxy 脚本并指向你的 VNC 服务器,例如 './utils/novncproxy --vnc localhost:5901',然后在浏览器中打开它输出的网址,点击 Connect 即可。也可以通过 'sudo snap install novnc' 以 snap 包的形式安装。
连接时服务器端需要具备什么条件?VNC 服务器必须支持 WebSockets,而不能只支持原始 TCP,因为 noVNC 确实需要 WebSockets 支持。x11vnc/libvncserver、QEMU 和 MobileVNC 等服务器可以直接支持;对于其他服务器,可以在普通 VNC 服务器前面运行 noVNC 的配套项目 websockify,把 WebSockets 转换为 TCP 的代理。
它能在任何浏览器里运行吗?它需要相对较新的浏览器,因为它依赖当前的网页技术。项目列出的最低版本为:Chrome 89、Firefox 89、Safari 15、Opera 75 和 Edge 89。
noVNC 支持哪些 VNC 认证方式?支持以下认证方式:none(无认证)、经典 VNC 认证、RealVNC 的 RSA-AES、Tight、VeNCrypt Plain、XVP、Apple 的 Diffie-Hellman,以及 UltraVNC 的 MSLogonII。
noVNC 能解码哪些 VNC 编码格式?它可以处理 raw、copyrect、rre、hextile、tight、tightPNG、ZRLE、JPEG、Zlib 和 H.264 编码。
在手机和平板上用起来效果好吗?好用。它可以在 iOS 和 Android 的移动浏览器中运行,并包含触摸手势,能模拟常见的鼠标操作,例如点击和拖动。
我能把 noVNC 作为后台服务,同时连接多个 VNC 服务器吗?snap 包可以运行一个常驻的 'novnc' 服务,配置为监听多个端口,并把每个端口分别连接到不同的 VNC 服务器,实际效果相当于同时运行多个 noVNC 实例。
Creator
novnc
Size
10.6 MB
Stars
14.1K
Age
16y
Commits · 90 Days