UOS Arm64 安装 noVNC 远程桌面
noVNC 是一个基于 HTML5 Canvas 的 Web VNC 客户端,通过浏览器即可远程访问 Linux 桌面,无需安装任何客户端软件。
实际环境安装了什么
本环境(Debian/Deepin ARM64)实际安装的 noVNC 相关组件:
1. noVNC 前端 (v1.6.0)
- 位置:
~/Documents/.novnc/ - 方式: 独立下载的 noVNC 发行版(非 pip 包)
- 作用: 提供 Web 端的 VNC 客户端,即浏览器中看到的 VNC 页面
- 前端文件:
vnc.html、vnc_lite.html
2. websockify (v0.13.0)
- 位置: pip 安装到系统 Python 3.12
- 路径:
/usr/local/python3.12/bin/python3.12 -m websockify - 作用: 将 WebSocket 流量转换为 TCP 流量,桥接浏览器和 VNC Server
3. x11vnc (v0.9.13)
- 位置:
~/Documents/dev/.apt/usr/bin/x11vnc - 方式: 非系统 apt,而是通过 dev 环境管理的独立二进制(ELF 64-bit ARM aarch64)
- 作用: 捕获现有 X11 桌面会话,提供标准 VNC 服务
4. VNC 相关系统库
通过系统包管理已安装的依赖库:
libvncclient1:arm64— VNC 客户端库libvncserver1:arm64— VNC 服务器库x11vnc-udcp— x11vnc UDP 增强版remmina-plugin-vnc— Remmina 的 VNC 插件
noVNC 架构原理
1 | 浏览器 (WebSocket) ──→ websockify (:6080) ──→ x11vnc (:5900) ──→ X11 桌面 (DISPLAY :1) |
- 用户在浏览器打开
http://IP:6080/vnc.html - noVNC 前端通过 WebSocket 连接 websockify
- websockify 将 WebSocket 协议转换为标准 TCP/VNC 协议
- x11vnc 捕获 X11 桌面画面并响应 VNC 交互
安装步骤
第一步:下载 noVNC 前端
1 | mkdir -p ~/Documents/.novnc |
第二步:安装 websockify
1 | pip install websockify |
验证安装:
1 | pip show websockify |
第三步:准备 x11vnc 二进制
本环境使用 dev 环境中预编译的 ARM64 版本:
1 | ~/Documents/dev/.apt/usr/bin/x11vnc --version |
第四步:生成 VNC 密码
1 | echo "1234" | ~/Documents/dev/.apt/usr/bin/x11vnc -storepasswd -quiet /tmp/.vnc_passwd |
密码文件生成在 /tmp/.vnc_passwd,密码为 1234。
第五步:启动 x11vnc
1 | DISPLAY_NUM=1 # 根据实际 DISPLAY 变量设置 |
参数说明:
| 参数 | 说明 |
|---|---|
-auth .Xauthority |
使用 X11 认证文件(免密码),不存在则 fallback 到密码文件 |
-rfbport 5900 |
VNC 监听端口 |
-forever |
不因客户端断开而退出 |
-shared |
允许多客户端同时连接 |
-noxdamage |
禁用 XDamage 扩展(避免某些场景下的画面异常) |
第六步:启动 websockify 桥接
1 | nohup /usr/local/python3.12/bin/python3.12 -m websockify \ |
参数说明:
| 参数 | 说明 |
|---|---|
--web ~/Documents/.novnc |
指定 noVNC 前端页面目录 |
--idle-timeout=86400 |
24 小时空闲超时 |
-6 |
支持 IPv6 |
6080 localhost:5900 |
WebSocket 端口转发到 VNC 端口 |
第七步:浏览器访问
1 | http://<服务器IP>:6080/vnc.html |
点击 Connect 按钮,密码为 1234。
一键安装启动脚本
本环境的 ~/Documents/start_all.sh 包含了所有服务的自动启动,其中 Step 9 负责 noVNC 远程桌面:
1 | # ========== 相关配置 ========== |
注意事项
- x11vnc 路径:本环境 x11vnc 不在系统 PATH 中,需使用完整路径
~/Documents/dev/.apt/usr/bin/x11vnc - Python 路径:websockify 通过
/usr/local/python3.12/bin/python3.12运行 - 认证优先级:
.Xauthority存在时优先使用(免密码),否则使用密码文件 - DISPLAY 设置:实际环境可能为
:1而非默认的:0,注意动态获取 - 前端页面:访问
vnc.html而非vnc_lite.html(后者无设置界面,前者有连接设置面板) - 密码为 1234:仅用于内网开发环境,生产环境请修改
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 百谷博客!
评论