mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2026-01-28 16:41:52 +08:00
- 重构ICE配置:将TURN配置改为统一的ICE配置,支持STUN和多TURN URL - 添加公共ICE服务器:类似RustDesk,用户留空时使用编译时配置的公共服务器 - 优化DataChannel HID消息:使用tokio::spawn立即处理,避免依赖webrtc-rs轮询 - 添加WebRTCReady事件:客户端等待此事件后再建立连接 - 初始化时启动音频流,确保WebRTC可订阅 - 移除多余的trace/debug日志减少开销 - 更新前端配置界面支持公共ICE服务器显示
One-KVM 技术文档
本目录包含 One-KVM 项目的完整技术文档。
文档结构
docs/
├── README.md # 本文件 - 文档索引
├── system-architecture.md # 系统架构文档
├── tech-stack.md # 技术栈文档
└── modules/ # 模块文档
├── video.md # 视频模块
├── hid.md # HID 模块
├── otg.md # OTG 模块
├── msd.md # MSD 模块
├── atx.md # ATX 模块
├── audio.md # 音频模块
├── webrtc.md # WebRTC 模块
├── rustdesk.md # RustDesk 模块
├── auth.md # 认证模块
├── config.md # 配置模块
├── events.md # 事件模块
└── web.md # Web 模块
快速导航
核心文档
| 文档 | 描述 |
|---|---|
| 系统架构 | 整体架构设计、数据流、模块依赖 |
| 技术栈 | 使用的技术、库和开发规范 |
功能模块
| 模块 | 描述 | 关键文件 |
|---|---|---|
| Video | 视频采集和编码 | src/video/ |
| HID | 键盘鼠标控制 | src/hid/ |
| OTG | USB Gadget 管理 | src/otg/ |
| MSD | 虚拟存储设备 | src/msd/ |
| ATX | 电源控制 | src/atx/ |
| Audio | 音频采集编码 | src/audio/ |
| WebRTC | WebRTC 流媒体 | src/webrtc/ |
| RustDesk | RustDesk 协议集成 | src/rustdesk/ |
基础设施
| 模块 | 描述 | 关键文件 |
|---|---|---|
| Auth | 认证和会话 | src/auth/ |
| Config | 配置管理 | src/config/ |
| Events | 事件系统 | src/events/ |
| Web | HTTP API | src/web/ |
架构概览
┌─────────────────────────────────────────────────────────────────┐
│ One-KVM System │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Web Frontend (Vue3) │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Axum Web Server │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ AppState │ │
│ │ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ │ │
│ │ │ Video │ │ HID │ │ MSD │ │ ATX │ │ │
│ │ │ Module │ │ Module │ │ Module │ │ Module │ │ │
│ │ └────────┘ └────────┘ └────────┘ └────────┘ │ │
│ │ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ │ │
│ │ │ Audio │ │ WebRTC │ │RustDesk│ │ Events │ │ │
│ │ │ Module │ │ Module │ │ Module │ │ Bus │ │ │
│ │ └────────┘ └────────┘ └────────┘ └────────┘ │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Hardware Layer │ │
│ │ V4L2 │ USB OTG │ GPIO │ ALSA │ Network │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
关键特性
- 单一二进制: Web UI + 后端一体化部署
- 双流模式: WebRTC (H264/H265/VP8/VP9) + MJPEG
- USB OTG: 虚拟键鼠、虚拟存储
- 硬件加速: VAAPI/RKMPP/V4L2 M2M
- RustDesk: 跨平台远程访问
- 无配置文件: SQLite 配置存储
目标平台
| 平台 | 架构 | 用途 |
|---|---|---|
| aarch64-unknown-linux-gnu | ARM64 | 主要目标 |
| armv7-unknown-linux-gnueabihf | ARMv7 | 备选 |
| x86_64-unknown-linux-gnu | x86-64 | 开发/测试 |
快速开始
# 构建前端
cd web && npm install && npm run build && cd ..
# 构建后端
cargo build --release
# 运行
./target/release/one-kvm --enable-https