noVNC 既是一个 HTML VNC 客户端 JavaScript 库,也是一个基于该库构建的应用程序。noVNC 可以在任何现代浏览器(包括移动浏览器(iOS 和 Android))中流畅运行。
许多公司、项目和产品都集成了 noVNC,包括OpenStack、OpenNebula、
LibVNCServer 和ThinLinc。项目和公司 wiki 页面 获取更完整的列表,其中包含更多信息和链接。
Firefox 连接前后的运行情况:


noVNC 使用了许多现代 Web 技术,因此目前尚无正式的要求列表。
不过,以下是我们目前所知的最低版本:
noVNC 遵循标准 VNC 协议,但与其他 VNC 客户端不同,它需要 WebSocket 支持。许多服务器都支持 WebSocket(例如x11vnc/libvncserver、QEMU 和MobileVNC),但对于其他服务器,您需要使用 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 包安装最新版本的 noVNC:
sudo snap install 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”服务,该服务可以配置为监听连接到多个 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 应用程序:
MPL-2.0