Billd‑Desk:基于 WebRTC 的开源私有化远程桌面方案
项目地址:https://github.com/galaxy‑s10/billd‑desk
远程桌面工具早已成为远程办公、运维排障、设备调试的刚需。商业远程软件如向日葵、ToDesk 虽然开箱即用,但存在连接数量限制、高级功能付费、数据经过第三方服务器等痛点。而Billd‑Desk,一款开源 MIT 协议的远程桌面项目,给出了另一种选择:基于 WebRTC 实现、支持私有化部署、浏览器即可作为主控端,摆脱商业平台的约束。
一、项目概览
Billd‑Desk 是一套全栈远程桌面控制系统,采用 Vue3 + Node.js + Electron + Flutter + WebRTC 构建,支持 Windows、macOS、Android 作为被控端,浏览器网页直接作为主控端是它最大的亮点之一,无需安装客户端即可发起远程连接。
和 RustDesk 不同,Billd‑Desk 选择标准 WebRTC 协议作为底层传输,依赖 Coturn 作为中继服务,这就带来一个核心优势:任意现代浏览器都能直接控制设备,不需要预先安装主控软件;代价是需要自行维护中继服务,对部署有一定要求。
注意:官方提示,当前版本尚未达到稳定生产级别,存在权限、设备控制层面的已知短板,不建议直接用于正式生产业务,适合个人、测试环境、技术研究使用。项目分为 Billd‑Desk 原版与 Billd‑Desk Pro,Pro 版本针对原版架构缺陷做了优化迭代。
二、核心技术栈拆解
- 前端网页主控:Vue3 + TypeScript,WebRTC、WebCodecs、Canvas,浏览器直接完成画面解码、键鼠指令下发,不用安装程序。
- 后端服务:Node.js + Koa2 + Socket.io,搭配 MySQL、Redis,负责设备注册、信令转发、会话管理;可对接 Coturn 中继服务器处理 NAT 内网穿透问题。
- 桌面被控端:Electron,适配 Windows/macOS,实现屏幕捕获、键鼠模拟、文件传输、系统托盘、开机自启无人值守能力。
- 安卓被控端:Flutter,实现安卓设备被电脑、浏览器远程控制,这也是很多开源远控缺少的能力。
- 编解码能力:支持 H.264、H.265、AV1、VP8/VP9,支持 NVIDIA、AMD、Intel 硬件编解码加速,最高支持 2K@60fps 画面输出,兼顾画质与带宽消耗。
三、主要功能特性
基础远程能力
- 多端互控:电脑控电脑、电脑控安卓、安卓控安卓、浏览器网页控电脑 / 安卓。出门在外,打开浏览器输入地址,就可以访问家里或公司的电脑desk.hssli...。
- 无人值守访问:开机自启、进程保活,设置固定设备码和访问密码,无需人工确认即可接入设备,适合运维管理测试机器。
- 剪贴板同步、双向文件传输,远程场景复制粘贴、互传文件无需额外工具。
- 多显示器支持,识别被控端多块屏幕,自由切换控制对应屏幕。
特色高级功能
- 隐私屏:远程会话开启后,被控主机屏幕黑屏,防止旁边的人看到操作画面,主控端正常显示桌面,保护操作隐私desk.hssli...。
- 虚拟屏幕:可以创建虚拟显示设备,不占用物理显示器,无显示器主机也可以远程操作。
- 屏幕墙与批量群控:同时预览多台设备画面,支持批量下发操作指令,适合 IT 运维、测试设备集群管理场景。
- 驱动级键鼠模拟,部分场景规避游戏、软件的输入风控限制,支持快捷键映射自定义desk.hssli...。
- 完全私有化部署,所有信令、媒体流可经过自己的服务器,数据不经过第三方服务商,对数据隐私敏感的场景非常友好。
四、和主流远程工具对比思考
表格
| 项目 | Billd‑Desk | RustDesk | ToDesk / 向日葵 |
|---|---|---|---|
| 开源协议 | MIT 开源 | AGPL 开源 | 闭源商业软件 |
| 网页主控 | ✅浏览器直接控制 | ❌需要客户端 | 网页版功能阉割 |
| 私有化部署 | ✅需部署 Coturn 中继 | ✅自带中继服务 | 部分版本支持私有化 |
| 安卓被控 | ✅Flutter 客户端 | ✅ | 高级功能付费 |
| 缺点 | 未稳定,需维护中继服务 | 浏览器无法做主控 | 连接数、高级功能收费 |
Billd‑Desk 最大差异化就是Web 主控,浏览器打开页面就能远程,这个特性在临时应急、多人协助场景非常实用;但代价是运维成本提升,你需要准备服务器部署后端、Coturn 穿透服务,适合有一定技术能力的用户,普通小白开箱即用体验不如商业软件。
五、适合与不适合的人群
✅ 适合使用场景
- 开发者学习 WebRTC、跨平台桌面 / 移动端远程控制技术;
- 个人爱好者,想要一套完全自己掌控数据的远程工具;
- IT 运维,需要管理一批 Windows/macOS/ 安卓测试设备,用到屏幕墙、群控;
- 临时远程协助,不想下载客户端,直接浏览器访问即可。
❌ 不建议场景
- 零运维能力,只想安装即用,不想折腾服务器部署;
- 企业核心生产业务,官方明确当前版本非稳定生产版本;
- 需要支持 iOS、Linux 被控端,目前该项目尚不支持这两类平台。
六、部署简要思路
- 克隆仓库,准备 Node.js、MySQL、Redis 环境;
- 部署 Coturn 中继服务器,解决内网穿透;
- 启动后端信令服务,构建网页前端;
- Windows/macOS 安装 Electron 被控客户端,安卓安装 Flutter 构建的 APK;
- 被控端获取设备 ID + 访问密码,浏览器访问前端页面输入信息建立 WebRTC 远程会话。
提示:项目仍在迭代,部分功能还在完善,部署时建议查阅仓库最新 README 文档,关注 issue 中的已知 bug。
七、总结
Billd‑Desk 不一定适合替代所有人日常使用的商业远程桌面,但它提供了一条很有意思的路线:把 WebRTC 标准能力和远程桌面结合,实现浏览器直接远控,同时完全开源私有化。
如果你厌倦商业软件的各种限制,又有一点服务器运维能力,想要一套属于自己的远程桌面系统,不妨体验这个项目;如果追求稳定开箱即用,则优先选择成熟商业软件或者 RustDesk。对于开发者来说,它也是一份不错学习 WebRTC、跨平台客户端开发的参考工程。
项目 GitHub 地址:https://github.com/galaxy‑s10/billd‑desk