# noVNC **Repository Path**: db123/no-vnc ## Basic Information - **Project Name**: noVNC - **Description**: VNC的Web端部署 - **Primary Language**: JavaScript - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-12-11 - **Last Updated**: 2025-12-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 用途 借用开源的noVNC,通过web浏览器远程连接到主机,支持Windows ,Mac,Linux平台。 VNC - RFB协议 Windows - RDP协议 ## 原理 VNC (Virtual Network Console)是虚拟网络控制台的缩写,分为server端和client端两部分,分别部署完成后在server端简单的配置即可使用,基于TCP的通信。noVNC项目是通过取消VNC client的安装,直接通过浏览器访问noVNC,然后由noVNC间接访问VNC server来达到client web化。从上面部署方式看到,VNC server仍然保留且没有任何修改,处理的始终是TCP流量,但是浏览器和noVNC之间是在http基础上使用WebSocket交互,由于VNC server 无法处理websocket流量,因此引入了 websockify ,noVNC的姐妹项目,负责把WebSocket流量转换为普通的TCP流,使VNC server正常工作。noVNC其实是一个HTML形式的APP,websockify并充当了一个mini web server的角色,当浏览器访问时,会通过网络加载运行noVNC。 ## 软件说明 | 软件 | 版本 | 说明 | | ---- | ---- | ---- | | python | 3.8.x | 该版本和以下版本组件组合 | | websockify | 0.10.0 | 该项目有python版本和nodejs版本 | | noVNC | 1.3.0 | HTML形式的app | | UltraVNC | 1.3.42 | 可替换为其他VNC服务,如RustDesk | 以上软件都安装在服务端主机 ### 部署 #### 方式一 ```bash # Python # 安装python3.8.x和UltraVNC # 解压noVNC和websockify # CMD进入websockify根目录执行下面命令 python setup.py install pip install numpy websockify --help # 启动服务 websockify 80 127.0.0.1:5900 --web /your/noVNC/path # 80是websockify监听端口,5900是UltraVNC监听端口 ``` #### 方式二 ```bash # nodejs # 安装依赖 # 创建vnc目录,并进入该目录执行下面命令 npm install ws npm install optimist npm install mime-types # 将websockify和noVNC都解压到vnc/node_modules目录下 # 启动服务 node /your/path/vnc/node_modules/websockify-js/websockify/websockify.js --web /your/path/vnc/node_modules/noVNC 80 127.0.0.1:5900 # 80是websockify监听端口,5900是UltraVNC监听端口 ``` 启动成功后,控制台提示如下信息则成功运行,浏览器访问http://ip/vnc.html ```bash WARNING: no 'resource' module, daemonizing is disabled WebSocket server settings: - Listen on :80 - Web server. Web root: /your/path/vnc/node_modules/noVNC - No SSL/TLS support (no cert file) - proxying from :80 to 127.0.0.1:5900 ``` 效果图 ![demo.png](demo.png)