推广一下 WebRTC+Electron 搭建的开源远程桌面(累计 100+) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
billdlive
V2EX    商业模式

推广一下 WebRTC+Electron 搭建的开源远程桌面(累计 100+)

  •  
  •   billdlive 349 天前 3334 次点击
    这是一个创建于 349 天前的主题,其中的信息可能已经有所发展或是发生改变。

    illd-Desk logo

    BilldDesk

    基于 WebRTC + Vue3 + Electron + Nodejs 搭建的远程桌面

    简介

    BilldDesk 远程桌面控制,目前实现了类似 ToDesk 、向日葵等远程桌面的功能。

    生态

    名称 仓库 star & fork 线上地址
    远程桌面网页端 billd-desk github github https://desk.hsslive.cn
    远程桌面客户端 billd-desk-electron github github
    远程桌面移动端 billd-desk-flutter github github
    远程桌面服务端 billd-desk-server github github

    功能

    • Web 端控制桌面客户端
    • Web 端查看 Web 端
    • 桌面客户端控制桌面客户端
    • 桌面客户端查看 Web 端
    • 连接鉴权
    • 支持 Macos 系统
    • 支持 Windows 系统
    • 支持 Linux 系统
    • 文件传输
    • 移动客户端
    • 后台管理

    目前暂不实现以下功能:

    • Web 端控制 Web 端
    • 桌面客户端控制 Web 端
    • Docker 部署

    预览

    控制端发起远程控制

    https://github.com/user-attachments/assets/8e760673-49b5-48b1-b15b-29963880fa64

    https://github.com/user-attachments/assets/beb7d43c-5660-4185-96c8-2f2761a11413

    控制端正在控制被控端

    https://github.com/user-attachments/assets/4cc167f5-70ac-47bc-a226-564a2f69c2f1

    被控端

    https://github.com/user-attachments/assets/b1482a29-ca11-4ed8-b78e-49815a556bfe

    接口文档

    线上接口:https://desk-api.hsslive.cn

    接口文档:todo

    本地启动

    • 安装依赖(建议使用 node 版本:v18.19.0 )
    pnpm i 

    更新 billd 相关依赖:

    pnpm i billd-deploy@latest billd-utils@latest billd-scss@latest billd-html-webpack-plugin@latest 
    • 运行
    npm run dev 
    • 打包 windows 、macos 、linux 包
    npm run build 
    • 打包 windows 包
    npm run build:win 
    • 打包 macos 包
    npm run build:mac 
    • 打包 linux 包
    npm run build:linux 

    性能测试

    主要测试各个端之间远程时候的延迟。

    TODO

    视频教程

    b 站合集:BilldDesk 开源远程桌面控制

    WebRTC 课程:https://www.hsslive.cn/article/151

    常见问题

    rebuild

    npm config set registry https://registry.npmmirror.com 
    ./node_modules/.bin/electron-rebuild 

    rebuild 时 cpu-feature 报错

    直接删了 node_modules 的 cpu-feature

    pnpm 安装 electron 时卡在 postinstall

    1. 直接 ctrl+c 退出 npm 安装
    2. 进入 node_modules/electron/install.js ,将
      downloadArtifact({ version, artifactName: 'electron', force: process.env.force_no_cache === 'true', cacheRoot: process.env.electron_config_cache, checksums: process.env.electron_use_remote_checksums ?? process.env.npm_config_electron_use_remote_checksums ? undefined : require('./checksums.json'), platform, arch, }) .then(extractFile) .catch((err) => { console.error(err.stack); process.exit(1); }); 
      修改为:
      downloadArtifact({ version, artifactName: 'electron', force: process.env.force_no_cache === 'true', cacheRoot: process.env.electron_config_cache, checksums: process.env.electron_use_remote_checksums ?? process.env.npm_config_electron_use_remote_checksums ? undefined : require('./checksums.json'), platform, arch, mirrorOptions: { mirror: 'https://npmmirror.com/mirrors/electron/', platform, arch, }, }) .then(extractFile) .catch((err) => { console.error(err.stack); process.exit(1); }); 
    3. 在 node_modules/electron 目录下执行 node install

    兼容性

    • Windows
    • Macos
    • Linux
    12 条回复    2024-11-07 14:25:18 +08:00
    ilylx2008
        1
    ilylx2008  
       349 天前
    牛逼,需要服务端中转吗?
    xdeng
        2
    xdeng  
       349 天前
    在不理想的情况下 WebRTC 支持中转方式的。
    Robertwhite
        3
    Robertwhite  
       349 天前
    请问一下,一台电脑控制另一台电脑的原理是啥?是操作系统留有统一的 API 吗?
    itechify
        4
    itechify  
    PRO
       349 天前
    牛逼
    billdlive
        5
    billdlive  
    OP
       348 天前
    @ilylx2008 需要 turn 服务器
    billdlive
        6
    billdlive  
    OP
       348 天前
    @xdeng 是的
    billdlive
        7
    billdlive  
    OP
       348 天前
    @Robertwhite 看 readme
    wsyss
        8
    wsyss  
       347 天前
    能不能远程协助安卓手机?不用直接操作,可以涂鸦标记指引就 OK
    billdlive
        9
    billdlive  
    OP
       347 天前
    @wsyss 正在做
    wsyss
        10
    wsyss  
       347 天前
    @billdlive #9 star 一下,中转服务是自建吗?顺便期待使用教程
    billdlive
        11
    billdlive  
    OP
       347 天前
    @wsyss 完全自建,使用教程在 b 站,https://www.bilibili.com/video/BV1X61uYiEbP
    Robertwhite
        12
    Robertwhite  
       342 天前
    @Robertwhite google 了下,原来只是把鼠标键盘操作实时同步到另一端就行了,之前还在想是怎么接管的,实时同步画面估计技术角度更难点
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2619 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 15:32 PVG 23:32 LAX 08:32 JFK 11:32
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86