收起左侧

飞牛自托管虚拟浏览器Neko

1
回复
188
查看
[ 复制链接 ]

2

主题

15

回帖

0

牛值

江湖小虾

前言

我想用上飞牛的内嵌浏览,看一下有没有现成的方案,问了ai半天,但事情没有我想象的简单,chromiun是开源的代码200万行,且编译它用十几个g空间与半天的时间,最开始的是cef方案,用go对接难度很高,第二种最实际,飞牛直接装桌面,这样可以用linux的一切软件,比如:vscode、chrom、wps等,实现一个内嵌的trigervnc连接,有这个平板也可以avnc连接写代码,第三种,是借鉴via浏览器手写一个全流程的,后面得到一个较好的方案无头浏览器(Handless Browser)来实现,以Node.js+Puppeteer为后端,用WebTC来传输视频流,Vue3作为前端来实现,这样实现一个内嵌浏览器,确实行的通:

前端:

Vue3 + WebRTC客户端
实时视频显示 + 输入转发
后端:

browserless (无头Chrome管理)
WebRTC信令服务器
输入事件转发服务
传输:

WebRTC: 实时视频/音频
WebSocket: 控制信令

但总的来说,无头浏览器 + WebRTC 的方案在性能、灵活性和用户体验上更为出色,特别是结合 Vue3 前端框架,可以实现非常流畅的交互和界面。

Neko自托管浏览器

n.eko 是一个使用 WebRTC 在 docker 容器中传输桌面视频流,在docker 隔离环境的虚拟浏览器,支持 firefox 、 chrome 、opera 等多个版本的浏览器,内置了聊天/简单的用户管理功能,它的主页与其它参考教程,这个项目确实实,差不多完成了我的设想,但不同是的它用的带有UI浏览器,然后用webrtc传输的,而无头浏览器它输的截图的vnc且不能传音频(传要自己实现),Neko相当于是完整的linux加完整的浏览器,开销很大毕竟要对桌面进行编码/传输,而且浏览器本身还要消耗性能,但是还是有作用的,对于多人在浏览器上也就是像腾讯会议,方案选择来选择去,感觉webtop还行的感觉,要不是就是飞牛安桌面内嵌vnc,最好的也是最难的像是via从头开始写。

这里选择Firefox,而Chrome,需要权限过多,较卡顿要加--cap-add=SYS_ADMIN 参数,先sudo docker pull ghcr.io/m1k1o/neko/firefox:latest 镜像,然后docker-compose中创建运行,输入https://Linux的IP:8080连线,配置如下。

#docker-compose文件

version: "3.8"

services:
  neko:
    image: ghcr.io/m1k1o/neko/firefox:latest
    container_name: neko
    restart: unless-stopped
    shm_size: "2gb"
    security_opt:
      - seccomp:unconfined
    ports:
      - "8080:8080"
      - "56000-56100:56000-56100/udp"
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Shanghai
      - NEKO_DESKTOP_SCREEN=1280x720@30
      - NEKO_MEMBER_MULTIUSER_USER_PASSWORD=neko
      - NEKO_MEMBER_MULTIUSER_ADMIN_PASSWORD=admin
      - NEKO_WEBRTC_NAT1TO1=192.168.xx.xxx  #飞牛的局域网IP
      - NEKO_WEBRTC_EPR=56000-56100  
      - NEKO_WEBRTC_ICELITE=1

    network_mode: bridge
  

上面有个udp端口池,因为每开一个相当一个朋友打开的浏览器,这个浏览器是可以共享的就离谱,了,它也是可以实现内嵌浏览器方案的,以Webrtc传输加vue3前端内嵌浏览器,外置则是像是neko那样是较好实现,就是性能开销大,结果如下:

image.png

收藏
送赞
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

2

主题

15

回帖

0

牛值

江湖小虾

2 小时前 楼主 显示全部楼层

感觉最可行的是,学习via浏览器采用的是系统的原生Webview,Linux上是webkit gtk、macos上是webkit、windows上是webview2,而飞牛os是debian系统应用webkit gtk,可以考虑用Tauri开发,最关键是解决如何将输出内嵌的html5

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则