noVNC是一个开源VNC浏览器客户端JavaScript库

noVNC:HTML VNC 客户端库和应用程序


描述

noVNC 既是一个 HTML VNC 客户端 JavaScript 库,也是一个基于该库构建的应用程序。noVNC 可以在任何现代浏览器(包括移动浏览器(iOS 和 Android))中流畅运行。

许多公司、项目和产品都集成了 noVNC,包括OpenStackOpenNebula
LibVNCServerThinLinc项目和公司 wiki 页面 获取更完整的列表,其中包含更多信息和链接。

功能

  • 支持所有现代浏览器,包括移动端 (iOS、Android)
  • 支持的身份验证方式:无、经典 VNC、RealVNC
    RSA-AES、Tight、VeNCrypt Plain、XVP、Apple 的 Diffie-Hellman
    UltraVNC 的 MSLogonII
  • 支持的 VNC 编码:raw、copyrect、rre、hextile、tight、tightPNG
    ZRLE、JPEG、Zlib、H.264
  • 支持缩放、剪辑和调整桌面大小
  • 支持鼠标前进和后退按钮
  • 本地光标渲染
  • 剪贴板复制/粘贴,完全支持 Unicode
  • 翻译
  • 用于模拟常见鼠标操作的触摸手势
  • 主要基于 MPL 2.0 许可,详情请参阅 许可证文档

截图

Firefox 连接前后的运行情况:

noVNC截图1
noVNC截图2

浏览器要求

noVNC 使用了许多现代 Web 技术,因此目前尚无正式的要求列表。
不过,以下是我们目前所知的最低版本:

  • Chrome 89、Firefox 89、Safari 15、Opera 75、Edge 89

服务器要求

noVNC 遵循标准 VNC 协议,但与其他 VNC 客户端不同,它需要 WebSocket 支持。许多服务器都支持 WebSocket(例如x11vnc/libvncserverQEMUMobileVNC),但对于其他服务器,您需要使用 WebSocket 到 TCP 套接字代理。noVNC 有一个姊妹项目websockify,它提供了一个简单的 WebSocket 代理。

快速入门

  • 使用 novnc_proxy 脚本自动下载并启动 websockify,它包含一个迷你 Web 服务器和 WebSockets 代理。--vnc 选项用于指定正在运行的 VNC 服务器的位置:

    ./utils/novnc_proxy --vnc localhost:5901

  • 如果您不需要将 Web 服务器暴露到公共互联网,您可以绑定到本地主机:

    ./utils/novnc_proxy --vnc localhost:5901 --listen localhost:6081

  • 将浏览器指向 novnc_proxy 脚本输出的剪切粘贴 URL。点击“连接”按钮,如果 VNC 服务器已配置密码,请输入密码,然后尽情享受吧!

从 snap 包安装

运行以下命令将从 snap 包安装最新版本的 noVNC:

sudo snap install novnc

直接从 snap 包运行 noVNC

您可以直接运行 snap 包安装的 novnc,例如:

novnc --listen 6081 --vnc localhost:5901 # 如果 /snap/bin 不在您的 PATH 中,则运行 /snap/bin/novnc

如果您想使用证书文件,由于标准 snap 限制,您需要将它们放在 /home/<user>/snap/novnc/current/ 目录中。如果您的用户名是 jsmith,示例命令如下:

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

从 snap 中以服务(守护进程)的形式运行 noVNC

snap 软件包还可以运行“novnc”服务,该服务可以配置为监听连接到多个 VNC 服务器的多个端口(实际上是运行多个 novnc 实例的服务)。说明(包含示例值):

列出当前服务(出厂设置下,此处为空):

复制代码
sudo snap get novnc services
Key             Value
services.n6080  {...}
services.n6081  {...}

创建一个新的服务,监听 6082 端口,并连接到在 localhost 的 5902 端口上运行的 VNC 服务器:

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

(使用“snap set”定义的任何服务都将自动启动)请注意,服务名称(本例中为“n6082”)可以是任何名称,只要它不以数字开头或包含空格/特殊字符即可。

查看刚刚创建的服务的配置:

复制代码
sudo snap get novnc services.n6082
Key                    Value
services.n6082.listen  6082
services.n6082.vnc     localhost:5902

禁用服务(请注意,由于 snap 的限制,目前无法取消设置配置变量,禁用服务的方法如下):

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

(任何使用类似“snap set”命令设置为空白的服务都将自动停止)验证服务是否已禁用(空白值):

复制代码
sudo snap get novnc services.n6082
Key                    Value
services.n6082.listen  
services.n6082.vnc

集成和部署

请参阅我们的其他文档,了解如何将 noVNC 集成到您自己的软件中,
或在生产环境中部署 noVNC 应用程序:

  • 嵌入 - 适用于 noVNC 应用程序
  • - 适用于 noVNC JavaScript 库

许可证

MPL-2.0

关于项目

noVNC,开源 VNC 浏览器客户端 - noVNC 是一个 VNC 客户端 JavaScript 库,也是一个基于该库构建的应用程序。noVNC 可以在任何现代浏览器中良好运行,包括移动浏览器(iOS 和 Android)。
MPL-2.0
Javascript
13,151
2529
315
2010-04-07
2025-11-04

增长趋势 - stars