【One-KVM】开源轻量级 IP-KVM 解决方案,无网远控免费平替 — BIOS 级远程控制

发布时间:2026/5/16 1:25:06

【One-KVM】开源轻量级 IP-KVM 解决方案,无网远控免费平替 — BIOS 级远程控制 一个 Rust 编写的轻量级 IP-KVM 解决方案可通过网络远程管理服务器和工作站实现 BIOS 级远程控制。一、引言痛点与场景服务器和工作站的远程管理一直是运维工程师的老生常谈的需求尤其是对内网环境下如何安全远程管理。作为运维工程师应该遇到过这种情况你管理的服务器或者工作站突然崩溃卡死需要手动重启却因内网环境无法远程只能干着急。或者需要为机器新装操作系统传统方式你需要插U盘、找显示器、找键盘、蹲在服务器面前才能完成。以上这类需求可以通过IP-KVMIP Keyboard Video Mouse解决简单来说IP-KVM 让你通过网络远程控制服务器的键盘、显示器和鼠标包括进入 BIOS 设置界面就像你就坐在那台机器前。类似向日葵Q1这类的无网远控产品也可以理解本项目是这类产品的免费平替版本但是功能并不比这些商用产品差。One-KVM的出现正是为了解决上面提到的这些问题它能够提供一个开放、轻量、易用的开源 IP-KVM 方案并且不需要绑定特定硬件部署简单完全可通过Web页面完成。二、项目简介One-KVM 是一个用Rust语言编写的轻量级 IP-KVM 解决方案可通过网络远程管理服务器和工作站实现 BIOS 级别的远程控制。项目最早采用 Python 开发现在采用Rust 完全重写 能够提供更小的二进制体积和更高的运行效率。项目定位为开放、轻量、易用核心目标是开放不绑定特定硬件配置可在各类 x86 / ARM 设备上运行轻量以单一二进制文件分发无需复杂的依赖环境易用无需手动编辑配置文件所有参数通过 Web 界面完成配置。这个项目配套详细的中文文档站社区活跃度较高对国内用户比较友好。指标数值GitHub Stars2.3k语言Rust主 TypeScript前端LicenseGPL-2.0源码行数约 183 个 .rs 文件部署方式deb / Docker / 飞牛 NAS等核心功能覆盖视频采集、键鼠控制、虚拟媒体、ATX 电源控制、音频传输、Web UI 等并内置了 Web 终端ttyd、内网穿透gostc、P2P 组网EasyTier、RustDesk 协议等扩展能力。其中EasyTier和RustDesk在之前的文章提到过感兴趣的同学可以翻阅下。三、系统架构One-KVM 采用经典的分层架构从硬件抽象到用户交互各层职责清晰。以下为整体系统架构图▲ 图1One-KVM 系统架构图从架构图中可以看出整个系统分为五层客户端层——支持浏览器 WebMJPEG / WebRTC、RustDesk 客户端跨平台远程桌面和标准 RTSP 观众端覆盖了从浏览器到专业客户端的多种访问方式。Web 服务层——基于 Axum 框架构建提供 REST API 和 WebSocket 通信能力。内置 WebRTC Streamer 支持 H.264/H.265/VP8/VP9 等多种编码ttyd 网页终端提供嵌入式命令行能力。这一层负责处理用户请求、认证、媒体流分发。核心功能层——这是系统的业务核心包含六大子模块Video Stream Manager统一管理视频采集和编码支持 MJPEG 和 WebRTC 两种流模式HID Controller处理键盘鼠标控制支持 USB OTG HID 和串口 HIDCH340/CH9329两种后端MSD Controller虚拟媒体控制器实现 USB Mass Storage 功能支持 ISO/IMG 镜像挂载和 Ventoy U盘模式Audio ControllerALSA 音频采集Opus 编码通过 HTTP/WebRTC 传输ATX Controller通过 GPIO 或 USB 继电器控制服务器电源和重启Extensions扩展管理器支持 gostc内网穿透、EasyTierP2P 组网等插件式扩展。硬件抽象层——通过 Linux 标准接口与硬件交互V4L2 采集视频、USB configfs 模拟 OTG 设备、GPIO 控制电源、ALSA 采集音频。数据/安全层——SQLite 存储配置和会话数据Argon2 算法处理用户密码哈希Rust 的内存安全特性保障系统稳定性。整体数据流如下视频由 V4L2 采集后进入 SharedVideoPipeline 编码管线编码后的视频流通过 MJPEG 或 WebRTC 分发给用户用户操作通过 WebSocket 发送到 HID Controller注入到目标服务器的 USB HID 接口虚拟媒体则通过 USB Mass Storage 函数将镜像挂载为目标服务器的U盘。以下为简化的工作流程▲ 图2One-KVM 核心工作流程四、核心特性解析4.1 视频采集多源支持硬件加速One-KVM 的视频采集基于 Linux V4L2 子系统目前支持三类视频源USB Camera即插即用兼容大多数 USB 摄像头和采集卡MIPI CSI面向树莓派等 ARM 开发板支持 CSI-2 接口摄像头模组RK3588 HDMI IN针对 RK3588 平台支持 HDMI 输入采集。视频编码支持多种硬件加速方案VAAPIIntel 显卡、QSVIntel Quick Sync、RKMPP瑞芯微、V4L2M2M通用 V4L2 硬件编码并以turbojpeg软件编码作为兜底保障确保在没有硬件编码器的情况下依然可用。视频流输出支持 MJPEG低延迟、易集成和 WebRTC支持 H.264/H.265/VP8/VP9P2P 直连两种模式两者共享同一个视频采集管线通过 SharedVideoPipeline 实现单一编码器对多路会话的广播分发。▲ 图3视频控制界面支持 WebRTC 和 MJPEG 双模式切换4.2 键鼠控制双模式支持远程控制键盘鼠标是 IP-KVM 的核心能力。One-KVM 支持两种 HID 后端USB OTG HID通过 Linux configfs gadget API将设备模拟为 USB HID 设备插入目标服务器后直接识别为键盘鼠标支持绝对鼠标用于触摸设备和相对鼠标标准鼠标两种模式串口 HID通过 CH340 或 CH9329 芯片将串口转换为 HID 信号适用于某些不支持 USB OTG 的场景。两种模式可以在 Web UI 中动态切换无需重启服务。▲ 图4鼠标控制界面支持绝对模式与相对模式切换4.3 虚拟媒体ISO 挂载与 Ventoy 模式虚拟媒体是 IP-KVM 的高级功能允许你将本地镜像文件模拟为 U盘挂载到目标服务器从而实现远程安装操作系统、引导修复等操作无需物理接触机器。One-KVM 支持两种虚拟媒体模式标准 MSD 模式将 ISO/IMG 文件虚拟为 USB Mass Storage 设备适合大多数场景Ventoy 模式支持 Ventoy 引导方案可以在虚拟 U盘中放置多个镜像文件并在目标机器启动时选择要引导的镜像适合需要多次重装或维护的场景。镜像支持从本地文件或 HTTP URL 加载并可实时查看下载进度。▲ 图5虚拟媒体挂载界面可查看已连接的镜像设备▲ 图6Ventoy 模式下的多镜像管理界面4.4 ATX 电源控制远程开关机ATX 控制让你无需物理操作按钮即可远程开关服务器。One-KVM 支持两种 ATX 控制方式GPIO 控制通过树莓派等设备的 GPIO 引脚连接继电器或 ATX 跳线发送短接信号触发电源按钮USB 继电器通过 USB 控制的继电器模块实现电源控制兼容更多硬件。配合 MSD 虚拟媒体可以实现远程开机 → 挂载镜像 → 安装系统 → 重启的完全自动化流程。▲ 图7ATX 电源控制界面可执行开机、关机、重启操作4.5 音频传输ALSA Opus远程装机或维护时音频反馈也很重要。One-KVM 的音频子系统通过 ALSA 采集声卡输入以Opus有损编码压缩后随视频流一同传输支持 HTTP 和 WebRTC 两种通道。Opus 编码器压缩率高、延迟低适合实时音频场景。▲ 图8音频控制界面可调节输入源和音量4.6 内置扩展隧道、组网、远程桌面除了核心 KVM 功能One-KVM 还内置了多个实用的扩展模块gostcGo Simple Tunnel 内网穿透允许从外网访问部署在内网的 One-KVM 实例EasyTier基于 WireGuard 的 P2P 组网工具可以将多台分布式的 One-KVM 实例组成虚拟局域网RustDesk 协议集成 RustDesk 远程桌面协议支持原生 RustDesk 客户端直接连接无需浏览器即可获得高质量的远程桌面体验ttyd嵌入式网页终端在浏览器中提供 SSH/串口访问能力RTSP 推流将视频流推送到外部 RTSP 服务器支持与现有监控系统集成。4.7 内置中文Web UI页面One-KVM 所有配置均通过 Web 界面完成首次安装后访问http://设备IP:8080即可进入引导配置页面全程无需编辑任何配置文件或敲击任何终端命令。界面支持中英文切换。▲ 图9Web 登录页面支持中英文界面五、快速上手5.1 环境要求One-KVM 官方推荐运行在 64 位 Linux 系统上Debian/Ubuntu可支持 x86_64 和 ARM64aarch64架构。硬件依赖方面取决于具体的使用场景可根据情况选择是否添加。视频采集需要 V4L2 兼容的摄像头或采集卡USB OTG 需要支持 USB Gadget 的 SoC如 RK3588、树莓派 4B 等ATX 控制需要 GPIO 或 USB 继电器模块。5.2 安装方式一Docker推荐一行命令即可启动dockerrun--nameone-kvm-itd\--privilegedtrue--restartunless-stopped\-v/dev:/dev-v/sys:/sys\--nethost\silentwind0/one-kvm-full如果需要更小的镜像不含 gostc、easytier 等扩展可以使用silentwind0/one-kvm。国内可能遇到 Docker Hub 拉取速度慢的问题建议替换为阿里云加速镜像registry.cn-hangzhou.aliyuncs.com/silentwind/one-kvm-full。5.3 安装方式二deb 包从 GitHub Releases 下载对应架构的 deb 包sudoaptupdatesudoaptinstall./one-kvm_0.x.x_arch.deb安装完成后服务会自动运行访问http://设备IP:8080即可看到 Web UI。5.4 飞牛 NAS 安装One-KVM 已上架飞牛应用市场直接在 NAS 管理界面搜索One-KVM即可一键安装安装后默认端口为 8420。5.5 验证服务安装完成后浏览器访问http://设备IP:8080首次访问会进入初始化引导页面设置管理员账号和密码后进入控制台。六、实战演示远程安装 Ubuntu Server下面通过一个完整的实战场景演示 One-KVM 的核心能力。目标在不物理接触目标服务器的情况下通过 One-KVM 远程安装 Ubuntu Server。▲ 图10One-KVM 控制台主界面实时显示目标服务器画面Step 1配置视频源进入设置 → 视频页面选择视频设备如/dev/video0设置分辨率为 1080p帧率 30fps。选择 H.264 编码硬件加速优先比特率设为均衡档4 Mbps。Step 2挂载 Ubuntu 镜像进入虚拟媒体页面点击添加镜像输入 Ubuntu Server 镜像的 HTTP 地址如https://releases.ubuntu.com/22.04/ubuntu-22.04.4-live-server-amd64.iso系统会自动下载并挂载为目标服务器的 U盘。进入MSD 控制页面开启虚拟媒体。此时目标服务器重新连接后会识别到一个 U盘设备就是我们的 ISO。Step 3远程 BIOS 设置通过 Web 控制台的键盘鼠标功能进入目标服务器的 BIOS设置从 USB 启动。保存退出后就可从虚拟 U盘启动进入 Ubuntu 安装程序。Step 4配合远程控制完成安装在 Web 控制台中通过鼠标和键盘远程操作安装向导完成磁盘分区、用户设置、网络配置等步骤。安装过程中视频延迟低操作流畅。Step 5ATX 重启确认安装结果安装完成后通过 ATX 控制发送重启命令验证系统可以正常启动。确认一切正常后关闭虚拟媒体释放镜像资源。整个过程无需物理接触服务器全部通过网络远程完成。七、技术亮点深度解析7.1 SharedVideoPipeline单一编码器多路分发One-KVM 视频管线的核心设计是SharedVideoPipeline共享视频管线。传统方案中每路视频流都需要独立的编码器实例资源消耗大。One-KVM 的做法是视频采集后只创建一个编码器实例编码后的帧通过内存共享广播给多个消费者MJPEG 会话、WebRTC 会话、RTSP 推流等大幅降低了 CPU 和内存占用。此外该管线还实现了xxhash 帧去重在广播前对帧做 hash 比对跳过重复帧减少无效编码自动启停当所有消费者断开后管线会在数秒内自动停止采集节省资源新消费者接入时自动恢复信号检测实时检测视频源状态无信号、热插拔、分辨率变化自动上报事件并尝试恢复。7.2 USB OTG Gadget configfs 深度应用Linux 的 USB Gadget configfs 是一套强大的 USB 设备模拟框架One-KVM 对其进行了深度定制。OTG 管理层通过动态创建 configfs 目录结构将 HID 和 MSD 两个功能组合为同一个 USB 复合设备Composite Device这样目标服务器只需要连接一根 USB 线即可同时获得键盘鼠标和虚拟 U盘两个功能。代码中实现了完整的 gadget 生命周期管理创建、绑定、解除绑定、销毁并处理了 USB 热插拔的边界情况如设备断开后重新连接的 graceful recovery。7.3 Rust 语言选型的工程价值从 Python 重写为 Rust带来了显著的工程收益二进制分发无需在目标机器上安装 Python 运行时一个 deb 包或 Docker 镜像即可完成部署内存安全Rust 的所有权系统和借用检查器在编译时就消除了大部分内存安全问题空指针、数据竞争等这对长期运行的网络服务尤为重要高性能Tokio 异步运行时配合无 GC 的 Rust 代码在同等硬件条件下比 Python 版本有数量级的性能提升小型交叉编译得益于 cargo 生态One-KVM 可以轻松交叉编译为 ARM64 二进制运行在树莓派、RK3588 等 ARM 设备上。八、相关资源GitHubhttps://github.com/mofeng-git/One-KVM官方文档https://docs.one-kvm.cn/在线体验https://one-kvm.mofeng.run/本文由「IT召唤狮」整理发布图片已添加版权水印转载需授权。

相关新闻