简介

BilldDesk​ 是一个基于Vue3、WebRTC、Node.js和Electron构建的开源跨平台远程桌面控制系统。它提供了类似ToDesk、向日葵等商业远程桌面软件的功能,但完全免费且开源,支持Windows、macOS、Android等多平台远程控制。

🔗 ​GitHub地址​:

https://github.com/galaxy-s10/billd-desk

🚀 ​核心价值​:

完全开源 · 跨平台支持 · WebRTC技术 · 免费无限制

项目背景​:

  • 个人项目​:由开发者galaxy-s10独立开发维护

  • 技术探索​:基于现代Web技术栈的远程桌面实践

  • 开源精神​:响应开源社区对免费远程工具的需求

  • 功能完整​:提供媲美商业软件的完整远程功能

现状说明​:

  • ⚠️ ​开发状态​:目前仍处于开发阶段,未发布稳定版本

  • 🔧 ​兼容性​:代码可能存在破坏性更新和兼容问题

  • 💡 ​Pro版本​:存在付费的BilldDeskPro版本解决已知问题

  • 🌟 ​开源承诺​:基础版本保持完全开源和免费

技术特色​:

  • 🌐 ​Web优先​:基于Web技术栈,支持网页端控制

  • 🔄 ​实时传输​:使用WebRTC实现低延迟音视频传输

  • 📱 ​多端支持​:桌面端、移动端、网页端全覆盖

  • 🔓 ​开源透明​:代码完全开源,可自定义修改

  • ⚡ ​高性能​:优化的编码和传输算法


主要功能

1. ​核心功能架构

2. ​功能详情

远程控制功能​:

  • 桌面共享​:实时远程桌面查看和控制

  • 跨平台控制​:Windows/macOS/Linux/Android互控

  • 多显示器​:支持多显示器环境的切换和控制

  • 远程音频​:同步被控端的系统音频

  • 文件传输​:安全的跨设备文件传输

高级特性​:

  • 隐私屏幕​:远程时隐藏被控端实际屏幕内容

  • 虚拟屏幕​:创建虚拟显示环境进行远程

  • 屏幕墙​:同时监控多个设备的屏幕

  • 设备分组​:按组织或项目分组管理设备

  • 权限管理​:细粒度的访问控制权限

用户体验​:

  • 低延迟​:基于WebRTC的优化传输

  • 高画质​:支持自适应画质和帧率调整

  • 易用性​:简洁直观的用户界面

  • 连接稳定​:自动重连和网络适应

  • 安全可靠​:端到端加密和认证机制

管理功能​:

  • 设备管理​:集中管理所有可控设备

  • 连接记录​:完整的远程操作日志

  • 用户管理​:多用户权限和角色管理

  • 统计报表​:使用统计和性能报告

  • 设置定制​:丰富的个性化设置选项

3. ​技术规格

技术栈​:

# 前端技术
Vue 3: 前端框架
TypeScript: 类型安全
WebRTC: 实时通信
WebCodecs: 视频编解码
Web Worker: 多线程处理
Canvas: 屏幕渲染

# 后端技术
Node.js: 运行时环境
Koa2: Web框架
Sequelize: ORM框架
MySQL: 数据库
Redis: 缓存服务
Socket.io: 实时通信

# 客户端技术
Electron: 桌面客户端
Flutter: 移动客户端

性能指标​:

# 连接性能
连接建立时间: < 3秒
传输延迟: < 100ms (局域网), < 300ms (互联网)
帧率: 最高60fps (取决于网络条件)
分辨率: 最高4K支持

# 资源使用
CPU占用: < 15% (典型使用)
内存占用: 100-300MB
网络带宽: 自适应调整 (100Kbps-20Mbps)

支持平台​:

# 控制系统
Windows: 7+ (推荐10/11)
macOS: 10.13+
Linux: 主流发行版 (Ubuntu, CentOS等)
Android: 11+
iOS: 计划支持

# 控制端
Web浏览器: Chrome 80+, Firefox 75+, Safari 13+
桌面客户端: Windows, macOS, Linux
移动客户端: Android, iOS (计划中)

安全特性​:

  • 加密传输​:WebRTC DTLS/SRTP加密

  • 身份验证​:设备认证和用户认证

  • 访问控制​:基于角色的权限管理

  • 审计日志​:完整的安全事件记录

  • 隐私保护​:远程时隐私屏幕保护


安装与配置

1. ​环境准备

系统要求​:

# 最低配置
操作系统: Windows 7+, macOS 10.13+, Linux Ubuntu 16.04+
CPU: 双核处理器
内存: 4GB RAM
存储: 2GB 可用空间
网络: 稳定互联网连接

# 推荐配置
操作系统: Windows 10/11, macOS 12+, Ubuntu 20.04+
CPU: 四核或更高性能处理器
内存: 8GB+ RAM
存储: 5GB+ SSD空间
网络: 100Mbps+ 带宽

软件依赖​:

# Node.js环境
Node.js: 16.0+ (推荐18.0+)
npm: 8.0+ 或 pnpm: 7.0+

# 数据库
MySQL: 5.7+ 或 8.0+
Redis: 6.0+

# 开发工具
Git: 版本控制
Docker: 可选,用于容器化部署

2. ​安装步骤

从源码安装(开发版)​​:

# 克隆仓库
git clone https://github.com/galaxy-s10/billd-desk.git
cd billd-desk

# 安装依赖
pnpm install  # 或 npm install

# 环境配置
cp .env.example .env
# 编辑.env文件配置数据库和服务器设置

# 构建项目
pnpm run build

# 启动开发服务器
pnpm run dev

使用预编译版本​:

# 从Release页面下载预编译版本
# https://github.com/galaxy-s10/billd-desk/releases

# Windows
# 下载最新版本的.exe安装程序
# 运行安装程序并按提示完成安装

# macOS
# 下载.dmg文件并拖拽到Applications文件夹

# Linux
# 下载.AppImage文件,添加执行权限后运行
chmod +x billd-desk-linux.AppImage
./billd-desk-linux.AppImage

Docker部署​:

# 使用Docker Compose部署完整环境
git clone https://github.com/galaxy-s10/billd-desk.git
cd billd-desk/docker

# 启动所有服务
docker-compose up -d

# 或分别启动服务
docker-compose up server -d  # 启动后端服务
docker-compose up web -d     # 启动前端服务
docker-compose up client -d  # 启动客户端服务

移动端安装​:

# Android安装
# 从Release页面下载APK文件
# 或在Google Play商店搜索BilldDesk

# 允许安装未知来源应用
# 安装后打开应用并配置连接

3. ​配置说明

服务器配置​:

# 环境变量配置 (.env)
SERVER_PORT=3000
DB_HOST=localhost
DB_PORT=3306
DB_NAME=billd_desk
DB_USER=root
DB_PASSWORD=your_password

REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=

WEBRTC_STUN_SERVER=stun:stun.l.google.com:19302
WEBRTC_TURN_SERVER=turn:your-turn-server.com:3478

JWT_SECRET=your_jwt_secret
ENCRYPTION_KEY=your_encryption_key

客户端配置​:

// config.json 示例配置
{
  "server": {
    "host": "https://your-server.com",
    "apiPort": 3000,
    "wsPort": 3001
  },
  "webrtc": {
    "iceServers": [
      {"urls": "stun:stun.l.google.com:19302"},
      {"urls": "turn:your-turn-server.com:3478", "username": "user", "credential": "pass"}
    ]
  },
  "video": {
    "maxFps": 30,
    "maxQuality": 1080,
    "adaptive": true
  },
  "security": {
    "encryption": true,
    "authentication": true
  }
}

网络配置​:

# 需要开放的端口
HTTP/HTTPS: 80, 443 (Web访问)
API服务: 3000 (REST API)
WebSocket: 3001 (实时通信)
STUN/TURN: 3478, 5349 (WebRTC)
自定义端口: 49152-65535 (P2P连接)

# 防火墙设置
# 允许上述端口的入站和出站连接
# 配置NAT转发和端口映射

使用指南

1. ​基本工作流

使用BilldDesk的基本流程包括:安装客户端 → 注册设备 → 建立连接 → 远程控制 → 结束会话。整个过程设计为直观简单,用户友好。

2. ​基本使用

设备注册和连接​:

# 首次运行会自动生成设备ID和连接密码
# 或手动设置自定义设备码

# 通过Web控制端连接
1. 访问Web控制页面: https://your-server.com
2. 输入目标设备ID和密码
3. 点击连接建立远程会话

# 通过客户端连接
1. 打开BilldDesk客户端
2. 在连接界面输入设备信息
3. 选择连接模式和控制权限
4. 开始远程控制

远程控制操作​:

# 基本控制功能
鼠标控制: 左键、右键、滚轮操作
键盘输入: 全键盘支持,包括特殊键
文件传输: 拖拽文件或使用传输菜单
音频传输: 启用远程音频收听
多屏切换: 在多显示器环境间切换

# 高级功能
隐私屏幕: 远程时隐藏真实屏幕
虚拟屏幕: 创建虚拟显示环境
屏幕墙: 同时监控多个设备
会话录制: 录制远程操作过程

Web端使用​:

// Web端基本API使用示例
// 初始化连接
const connection = new BilldDeskConnection({
  deviceId: 'target-device-id',
  password: 'connection-password',
  server: 'https://your-server.com'
});

// 建立连接
connection.connect()
  .then(session => {
    console.log('连接建立成功');
    
    // 获取视频流并显示
    session.getVideoStream()
      .then(stream => {
        const videoElement = document.getElementById('remote-video');
        videoElement.srcObject = stream;
      });
    
    // 发送控制命令
    session.sendMouseMove(100, 100);
    session.sendMouseClick('left');
    session.sendKeyboardInput('Hello World');
  })
  .catch(error => {
    console.error('连接失败:', error);
  });

命令行使用​:

# 使用命令行工具连接
billd-desk connect --device-id DEVICE_ID --password PASSWORD

# 批量设备管理
billd-desk list-devices  # 列出所有设备
billd-desk status        # 查看当前连接状态
billd-desk disconnect    # 断开当前连接

# 高级选项
billd-desk connect --quality high --audio-enabled --file-transfer

3. ​高级功能

多设备管理​:

# 设备分组管理
# 创建设备分组
billd-desk group create --name "开发团队" --description "开发人员设备"

# 添加设备到分组
billd-desk group add-device --group "开发团队" --device-id DEVICE_ID

# 按组批量连接
billd-desk connect --group "开发团队" --quality standard

屏幕墙功能​:

# 同时监控多个设备
billd-desk wall --devices DEVICE1,DEVICE2,DEVICE3 --layout 2x2

# 保存屏幕墙配置
billd-desk wall --save-config "监控配置" --devices DEVICE1,DEVICE2 --layout 1x2

# 自动轮巡监控
billd-desk wall --auto-rotate --interval 30 --devices DEVICE1,DEVICE2,DEVICE3

自动化脚本​:

# 使用API进行自动化控制
curl -X POST "https://your-server.com/api/connect" \
  -H "Content-Type: application/json" \
  -d '{
    "deviceId": "target-device",
    "password": "your-password",
    "options": {
      "quality": "high",
      "audio": true,
      "fileTransfer": true
    }
  }'

# 批量设备状态检查
curl "https://your-server.com/api/devices/status" \
  -H "Authorization: Bearer YOUR_TOKEN"

安全配置​:

# 配置访问白名单
billd-desk security whitelist add --ip 192.168.1.0/24 --description "内部网络"

# 设置访问时间限制
billd-desk security schedule add --device DEVICE_ID --days mon-fri --time 9:00-18:00

# 启用双因素认证
billd-desk security 2fa enable --device DEVICE_ID

应用场景实例

案例1:远程技术支持和维护

场景​:IT团队需要为远程员工提供技术支持

解决方案​:使用BilldDesk进行安全高效的远程协助。

实施配置​:

# 在企业服务器部署BilldDesk
docker-compose up -d

# 配置设备分组
billd-desk group create --name "员工设备" --description "所有员工办公设备"

# 设置访问策略
billd-desk policy create --name "技术支持策略" \
  --permission "full-control" \
  --time-restriction "9:00-18:00" \
  --require-approval true

# 员工设备安装客户端并注册到系统
# 生成唯一的设备ID和连接密码

支持流程​:

  1. 员工请求支持​:通过工单系统或直接联系IT部门

  2. IT人员连接​:使用设备ID和临时密码连接员工设备

  3. 远程诊断​:查看设备状态,诊断问题

  4. 解决问题​:远程操作修复问题或指导员工操作

  5. 结束会话​:完成后断开连接,生成服务报告

实施效果​:

  • 响应速度​:分钟级响应和连接建立

  • 解决效率​:远程直接操作大幅提高解决效率

  • 成本节约​:减少现场支持的人力和时间成本

  • 用户体验​:员工无需离开座位即可获得支持

  • 服务记录​:完整的服务记录和审计日志

案例2:分布式团队协作

场景​:远程团队需要协作和屏幕共享

解决方案​:使用BilldDesk进行团队协作和屏幕共享。

团队配置​:

# 创建团队工作空间
billd-desk workspace create --name "项目团队" --members user1,user2,user3

# 设置协作设备
billd-desk device share --device DEVICE_ID --workspace "项目团队" --permission "view-only"

# 配置协作策略
billd-desk policy create --name "团队协作策略" \
  --permission "view-and-control" \
  --recording-enabled true \
  --file-transfer-enabled true

协作场景​:

  • 代码审查​:开发者共享屏幕进行代码审查

  • 设计评审​:设计师展示设计稿并收集反馈

  • 培训会议​:远程进行团队培训和演示

  • 故障排查​:多人协作诊断复杂问题

  • 项目管理​:共享项目进度和演示成果

协作功能​:

# 多人同时观看
billd-desk connect --device DEVICE_ID --mode "view-only" --multi-viewer

# 协作控制(轮流控制)
billd-desk collaborate --device DEVICE_ID --participants user1,user2 --take-turn

# 会话录制和分享
billd-desk record start --session SESSION_ID --output "meeting-recording.mp4"
billd-desk record share --recording "meeting-recording.mp4" --participants all

实施价值​:

  • 协作效率​:实时屏幕共享和远程控制

  • 灵活参与​:支持多人同时观看和参与

  • 知识留存​:会话录制和回放功能

  • 跨地域协作​:打破地理限制,全球团队协作

  • 成本优化​:减少差旅和会议成本

案例3:教育和培训环境

场景​:教育机构需要远程教学和计算机实验室管理

解决方案​:使用BilldDesk构建虚拟计算机实验室。

教育部署​:

# 部署教育版服务器
docker-compose -f docker-compose.education.yml up -d

# 创建班级和设备分组
billd-desk class create --name "计算机科学101" --instructor instructor1
billd-desk group create --name "实验室计算机" --description "计算机实验室设备"

# 配置学生访问权限
billd-desk policy create --name "学生访问策略" \
  --permission "view-only" \
  --time-restriction "8:00-20:00" \
  --require-approval true

教学应用​:

  • 远程教学​:教师远程演示操作步骤

  • 学生实践​:学生远程操作实验室计算机

  • 作业辅导​:教师远程指导学生完成作业

  • 考试监考​:远程监控考试环境

  • 实验室管理​:集中管理实验室计算机设备

教育功能​:

# 批量部署学生端
# 使用脚本自动化安装和配置
for computer in lab-computer-{1..20}; do
  ssh $computer "curl -fsSL https://install.billd-desk.com/edu | bash"
done

# 课堂管理
billd-desk class start --name "计算机科学101" --duration 90
billd-desk class monitor --class "计算机科学101" --recording-enabled true

# 学生帮助请求
billd-desk assist request --student student-id --reason "需要帮助"
billd-desk assist respond --request REQUEST_ID --instructor instructor-id

教育价值​:

  • 资源优化​:最大化计算机实验室利用率

  • 灵活学习​:学生随时访问实验室资源

  • 教学质量​:教师实时查看和指导学生操作

  • 管理效率​:集中管理设备和用户权限

  • 可扩展性​:支持大量学生同时使用

案例4:工业设备远程监控和维护

场景​:制造企业需要远程监控生产线设备

解决方案​:使用BilldDesk进行工业设备远程监控。

工业配置​:

# 工业环境部署
docker-compose -f docker-compose.industrial.yml up -d

# 配置设备组和监控策略
billd-desk group create --name "生产线设备" --description "生产车间设备"
billd-desk policy create --name "监控策略" \
  --permission "view-only" \
  --always-on true \
  --quality "low"  # 节省带宽

# 设置报警和通知
billd-desk alert create --device DEVICE_ID \
  --condition "cpu-usage > 90" \
  --action "notify-admin" \
  --message "设备CPU使用率过高"

监控应用​:

  • 设备状态监控​:实时监控工业设备运行状态

  • 远程维护​:技术人员远程进行设备维护

  • 故障诊断​:远程诊断设备故障问题

  • 生产监控​:监控生产线运行情况

  • 数据收集​:收集设备运行数据和指标

工业功能​:

# 24/7监控
billd-desk monitor start --device DEVICE_ID --continuous --quality low

# 异常检测和报警
billd-desk alert set --device DEVICE_ID \
  --metric "cpu_usage" \
  --threshold 90 \
  --duration 300 \
  --action "notify-sms"

# 远程维护会话
billd-desk maintain --device DEVICE_ID --technician tech-id --reason "定期维护"

实施效益​:

  • 运维效率​:减少现场维护次数和时间

  • 故障响应​:快速远程诊断和解决故障

  • 成本节约​:减少差旅和停机时间成本

  • 安全性​:远程操作减少现场安全风险

  • 数据驱动​:基于数据的设备维护决策


生态系统与社区

1. ​社区资源

获取帮助​:

  • 📚 ​官方文档​:GitHub README和详细使用指南

  • 💬 ​社区讨论​:GitHub Issues和讨论区

  • 🐛 ​问题报告​:通过GitHub Issues报告问题

  • 💡 ​功能建议​:提交新功能请求和改进建议

支持渠道​:

  • GitHub Issues​:主要的问题跟踪和功能请求

  • 开发者社区​:技术博客和教程分享

  • 更新通知​:关注仓库获取最新更新

  • 付费支持​:BilldDeskPro提供商业支持

贡献指南​:

  1. Fork项目仓库

  2. 创建特性分支 (git checkout -b feature/AmazingFeature)

  3. 提交更改 (git commit -m 'Add some AmazingFeature')

  4. 推送到分支 (git push origin feature/AmazingFeature)

  5. 发起Pull Request

2. ​相关项目集成

WebRTC生态系统​:

  • WebRTC标准​:底层实时通信技术

  • STUN/TURN服务器​:NAT穿透和中继服务

  • 媒体处理​:音视频编解码和处理

  • 网络优化​:传输优化和拥塞控制

开发工具集成​:

  • Docker​:容器化部署和管理

  • Kubernetes​:容器编排和扩展

  • CI/CD管道​:自动化测试和部署

  • 监控工具​:性能监控和日志管理

企业系统集成​:

  • 身份提供商​:LDAP、Active Directory集成

  • 监控系统​:Prometheus、Grafana集成

  • 日志系统​:ELK、Splunk集成

  • 通知系统​:邮件、短信、Webhook集成


总结

BilldDesk作为一个基于现代Web技术的开源远程桌面控制系统,在功能性、易用性和可扩展性方面都表现出色。虽然目前仍处于开发阶段,但其技术架构和功能设计显示了巨大的潜力。

核心优势​:

  • 🚀 ​技术先进​:基于WebRTC等现代Web技术

  • 🌐 ​跨平台​:支持多平台设备和控制系统

  • 🔓 ​开源免费​:完全开源,无使用限制

  • ⚡ ​高性能​:优化的传输和渲染性能

  • 🛡️ ​安全可靠​:端到端加密和认证机制

适用场景​:

  • 企业远程技术支持和维护

  • 分布式团队协作和屏幕共享

  • 教育机构远程教学和实验室管理

  • 工业设备远程监控和维护

  • 个人远程访问和文件传输

技术特色​:

  • Web优先架构​:基于Web技术栈,易于部署和扩展

  • 实时通信​:低延迟的WebRTC音视频传输

  • 多端支持​:全面的客户端和控制端支持

  • 灵活部署​:支持云部署和私有化部署

  • 社区驱动​:开源社区参与开发和改进

🌟 ​GitHub地址​:

https://github.com/galaxy-s10/billd-desk

🚀 ​在线体验​:

https://desk.hsslive.cn

💬 ​社区支持​:

通过GitHub Issues获取帮助和支持

注意事项​:

  • ⚠️ ​开发状态​:项目仍在积极开发中,API可能变化

  • 🔧 ​兼容性​:不同版本间可能存在兼容性问题

  • 💡 ​Pro版本​:考虑BilldDeskPro获得更稳定体验

  • 🐛 ​问题反馈​:欢迎反馈问题和贡献代码

立即体验BilldDesk,探索开源远程桌面的可能性!​

最佳实践建议​:

  • 🏁 ​初学者​:从预编译版本开始体验基本功能

  • 🔧 ​开发者​:探索源码学习和自定义开发

  • 🏢 ​企业用户​:评估私有化部署方案

  • 📚 ​教育用户​:考虑教育版特性和需求

  • 🔍 ​技术评估​:全面测试功能和性能表现

BilldDesk持续演进和发展,欢迎加入社区共同塑造开源远程桌面的未来!

Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐