参考手册

适用对象:实施工程师、开发人员 · 技术参考与速查
这页是什么 这页是技术速查表,不是操作指南。当你需要知道"哪个端口干什么""配置文件在哪""版本变了什么"时,直接来这里查。

端口与数据流

端口清单

端口协议方向用途
8006HTTPS管理端 → PVEPVE Web 管理界面与 API
8790TCP终端 → 教师端终端注册、心跳、WebSocket 通信
SPICETCP终端 → PVE VM桌面画面传输。集中上课:61200 + 终端编号;自由选课:61000 + VMID
ff02::1UDP 多播教师端 → 局域网IPv6 链路本地宣告(每 30 秒)

核心数据流

1. 终端发现与注册

教师端启动
  └─ communication_module 每 30s 向 ff02::1 发空 UDP

终端上电
  └─ discover_teacher() 后台线程启动
      ├─ 读缓存 .terminal_config(如有)
      ├─ IPv6 多播 ping ff02::1(Win10 不回包,正常)
      ├─ 查邻居表 ip -6 neigh
      ├─ TCP 探测教师端 8790 端口
      └─ 连接成功 → 发注册请求(含 MAC)
          └─ 教师端分配 terminal_id + 计算 IP
          └─ 终端写入 .terminal_config(flush+fsync)
          └─ 注册完成,进入心跳循环

2. 上课流程

教师端点「开始上课」
  └─ 选择模板 VM
  └─ 批量链式克隆(PVE API)
      └─ 每台 VM 绑定对应终端 MAC
      └─ 批量 start VM
  └─ 终端收到桌面就绪信号
      └─ SPICE 连接 PVE VM
      └─ 终端屏幕显示 Windows 启动过程
  └─ VM 内 Guest 程序启动
      └─ guest-service 向教师端发 Guest 心跳

3. 下课流程

教师端点「结束下课」
  └─ 批量 stop VM(PVE API)
  └─ 终端 SPICE 断开,屏幕关闭
  └─ VM 差异盘回收
  └── 课堂环境清除,下节课重新克隆

4. 心跳与状态

终端心跳(终端 → 教师端)
  ├─ 协议:TCP 8790
  ├─ 内容:MAC + terminal_id + 终端状态
  └─ 超时:教师端 60s 未收到 → 标记离线

Guest 心跳(VM 内部 → 教师端)
  ├─ 协议:通过 SPICE 通道或独立 TCP
  ├─ 内容:VM 内部状态
  └─ 超时:60s 未收到 → Guest 状态过期

SPICE 连接状态(PVE API)
  └─ 教师端轮询 PVE ss 输出判断桌面是否接入
五维度独立原则:终端在线 ≠ VM 运行 ≠ SPICE 接入 ≠ Guest 活跃 ≠ VM 存在。详见 终端详情页。

配置文件位置与字段

终端侧

文件位置关键字段
.terminal_config /home/vdi/.terminal_config [system] version、auto_start、config_version、follow_shutdown
[terminal] terminal_id
[teacher_ip] teacher_ip(IPv4)、teacher_ip6(链路本地)
[network] ip、mask、gateway、dns
[pve] pve_ip、pve_user、pve_password、pve_node、vmid_base
[Parameters] 旧版兼容段
[display] resolution
终端程序目录 /home/vdi/ terminal_student.py / .elf:主程序
discover_teacher.py:发现模块
terminal_heartbeat.py:心跳模块
terminal_ws_manager.py:WebSocket 管理
terminal_launcher_v1_5_006.py:启动器

教师端侧

文件位置说明
教师端源码 C:\teacher\ Python 源码目录
教师端产物 C:\teacher\dist\ 打包后的 exe 目录
系统 DB 教师端数据目录 SQLite,存储终端映射、课堂状态、历史记录

PVE 侧

文件位置说明
网络配置 /etc/network/interfaces vmbr0 网桥配置
VM 配置 /etc/pve/qemu-server/<VMID>.conf 每台 VM 的 CPU/内存/网络/磁盘配置
PVE 鉴权 PVE Web 界面 → Datacenter → Users 教师端填 root 即可,系统自动补全 @pam 后缀
教师端 GUI 不能 kill communication_module.py(后端)可以 kill + spawn 保活。但 teacher_lite(教师端 GUI)不能 kill——它是用户正在查看的桌面窗口,没有自动拉起机制。推送后只做 py_compile,由用户手动重启。

版本历史与变更

终端程序版本

版本关键变更
v1.5.043(当前)Bug-48 SPICE 断开恢复 + Ctrl+Shift+F12 热键、Bug-51 PVE 连接池修复、Bug-47 重连倒计时
v1.5.042Bug-25 广播风暴修复(组播门控)、Bug-26 课程刷新改 WS 推送
v1.5.040课程卡片 UI 改造(Smart Carousel + 高清图标)、Bug-14/15/18 图标路径/升级/密码修复
v1.5.039心跳分流五维度独立、IP/MAC/status 分离、场景三 flush+fsync 修复
v1.5.038场景二/场景三流程完善、Guest 三阶段模型确立
v1.5.006terminal_launcher 启动器版本(仍在用)

教师端版本

版本关键变更
v1.5.043(当前)Bug-48 v2 热键恢复(AutoRecoveryStatus/SpiceDisconnected/RejoinRequest)、Bug-51 PVE 连接池 http:// + pool 60 + 断开阈值 3→1、Bug-47 重连补推 class_start
v1.5.042Bug-25 广播风暴(组播门控 + 冷却 300s + 3次/小时上限)、Bug-26 WS 推送替代轮询、Bug-31 心跳分流(Guest 不覆盖终端状态)
v1.5.040自由选课课程卡片、Bug-21 MAC 表联机获取、Bug-22 配置版本同步
d40 后心跳分流改造、五维度状态独立、场景三 renumber_execute 两阶段确认制
v038场景二 confirm_replace 流程

关键设计决策记录

决策时间原因
SPICE 热键恢复Bug-48 (v1.5.043)Ctrl+Shift+F12 双按钮:重新连接(本地快速重连)/ 重新上课(通知教师端重克隆)。热键走 Openbox XGrabKey WM 级快捷键,全屏桌面挡不住
Guest 三阶段模型2026-06-1960 台 VM 同时启动时,每台用模板机预落的本地 mac_table 自查绑定,不依赖教师端实时下发,避免上课瞬间 60 路请求冲击
两阶段确认制场景三 PRD重新排号分两阶段:终端暂存 intent → 教师端 execute 确认后才执行。取消可丢弃暂存,断电重启自动继续
五维度状态独立Bug-31终端在线 ≠ VM 运行 ≠ SPICE 接入 ≠ Guest 活跃 ≠ VM 存在。每个维度独立数据源、独立过期时间
广播风暴免疫Bug-25 (v1.5.042)组播门控:冷启动例外 120s 间隔 + 300s 冷却 + 3次/小时上限。60 台 0 广播风暴
教师端主导架构PRD §4.0克隆 VM、写 MAC、写 SPICE 端口、启动 VM 全部由教师端统一完成,终端只负责连接
终端 IP 静态分配架构设计非 DHCP,教师端注册时计算 terminal_start_ip + (tid - start_number)

云课堂基于 Proxmox VE 构建。以下 PVE 官方文档在部署和运维中会频繁引用:

主题链接什么时候看
安装指南 PVE Installation & Administration 首次安装 PVE
存储管理 Storage Model 规划 LVM / ZFS / thin pool
备份恢复 Backup & Restore 模板备份、灾难恢复
网络配置 Network Configuration vmbr0 网桥、VLAN、多网卡
QM 命令 qm man page VM 克隆、启动、停止脚本
SPICE SPICE Support 桌面协议配置
用户管理 User Management PVE 鉴权、@pam 用户
性能优化 Performance Tweaks 大并发场景调优
清华镜像 TUNA Proxmox Mirror 下载 ISO 和包加速
引用原则 本文档站引用 PVE 官方文档时只给链接和"什么时候看",不搬运内容。PVE 文档权威性以官方为准。

机器角色速查

机器角色说明
教师机教师端运行普通 Windows 电脑,运行 teacher_lite + communication_module
PVE 服务器虚拟化底座Proxmox VE,运行所有 VM,提供 SPICE 桌面
学生终端瘦客户机Debian Linux,运行终端 ELF 程序,连接 SPICE 桌面
模板机母盘制作制作 Windows 模板的参考 VM,含 Guest 程序
预约演示
🤖
智能客服
服务极客 · 随时响应
您好!我是服务极客的智能客服 👋 有什么关于云桌面系统的问题,欢迎随时咨询——上课使用、部署安装、故障排查,都可以问我。
刚刚
您也可以通过以下方式联系我们: