V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
pikay
V2EX  ›  分享创造

突破浏览器极限:我花了 4 年时间,开发了一个在浏览器上运行的操作系统!

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

    大家好,我是 pikay 。四年前我在 V2EX 上发过一个帖子(《想做一个操作系统,问问大家意见》),用了很多业余时间和非业余时间,终于把它搞出来了!它叫 NoneOS,现在已经有了一个初步可用的 Demo ,现在就分享出来给大家试试看。(记得挂梯子)

    https://os.tutous.com/

    这个系统有什么特别之处?

    很简单,你只需要一个现代浏览器,打开它的域名,点几下“下一步”,就能在你的浏览器里完成安装。下次再访问这个网址,就能直接进入这个虚拟操作系统了。

    而且,它完全不需要动态服务器。整个系统运行在纯静态环境下,也就是说,不怕服务器挂掉,它就是存在你本地的。安装完成后,你可以断开网络试试,也是可以正常使用的。

    它依赖的是浏览器自带的 File System API 来存储数据,包括系统本身运行所需的文件也都是存在浏览器本地的。这意味着你可以直接在这个系统里运行 Web App ,以后开发应用再也不需要部署到服务器上,直接丢进这个系统就能跑。可以查看 packages/apps 目录,是系统自带的应用。

    那系统里的应用怎么交换数据呢?

    系统内置了一套应用间的数据交互 API。只要是在这个系统上开发的应用,都可以通过这套接口和其他设备上的应用进行通信。

    举个例子,如果你有一台手机和一台电脑,就可以先在 NoneOS 里配对这两个设备。等系统启动后,它们之间会自动通过 WebRTC 技术 建立连接。这样一来,应用之间就不需要自己再去搭服务器了,直接调用这套 API 就能传输数据,不仅省掉了服务器成本,速度还特别快。

    在这个系统上开发的应用有什么好处?

    最大的优势就是——不用管服务器的事。没有服务器,也就意味着几乎没有维护成本。

    为什么我会想做这个东西?

    因为我觉得现在开发一个联网应用的成本实在太高了。哪怕只是一个很简单的应用,你也得经历一堆繁琐流程:

    • 准备服务器 / 租虚拟主机
    • 要买域名
    • 绑定域名和服务器
    • 开发前端页面
    • 再写后端逻辑
    • 前后端打通
    • 部署上线
    • 后续还要花钱维持服务器

    这一整套流程下来,不仅麻烦,而且花销不小。

    但如果你用的是 NoneOS ,这些步骤统统可以跳过。你只需要:

    • 打开浏览器,装上这个系统
    • 在系统上开发应用
    • 利用系统提供的 API 实现数据交互
    • 然后直接上线使用

    我现在能拿它干啥?

    目前系统已经自带了一个非常实用的小工具 —— 网页收藏夹应用。你可以把平时喜欢的网站都收藏进去,支持跨设备同步。无论你在电脑、手机还是平板上,彼此访问设备间的数据。

    你可以轻松地将设备中的文件导入到这个虚拟系统,借助系统内置的文件管理器,跨设备传输文件。

    而且因为它不依赖服务器,所以这个收藏夹没有广告,也不会偷偷改你的数据或者泄露隐私,完全是属于你自己的小空间。

    接下来有什么计划?

    接下来我们会陆续加入更多功能,比如笔记与知识管理应用,让你可以在各个设备上快速同步和整理知识。

    之后还会完善开发文档,让更多的开发者能够快速上手,在这个系统上开发自己的应用。

    目标是让它成为前端界的 Docker ,让那些原本需要复杂部署的前端应用,也能被小白用户一键安装、轻松使用。

    NoneOS 短期小目标是,把这个系统打造成一个私人设备联动平台,有点像 NAS 那样的私有云系统。让你的手机、电脑、平板之间可以自由地交换数据。比如电脑可以直接查看手机里的文件,手机也能远程播放电脑里的视频,真正实现多设备无缝协作。

    如果你想体验一下,欢迎去试用这个 Demo ,有任何建议或反馈也欢迎留言告诉我!我们一起把这个系统做得更好!

    反馈地址: https://github.com/kirakiray/NoneOS/issues

    第 1 条附言  ·  86 天前
    哎真的不懂,为什么被改到推广板块了,不过是用 AI 润色一下,看起来像是推广文而已。这东西又是开源的没有盈利的,发出来是为了给 4 年前的帖子填坑。是标题起错了吗,还是板块选错了?能不能改回来?
    第 2 条附言  ·  85 天前
    感谢各位的支持,我会根据大家留下的宝贵意见,不断的迭代下去,就像 4 年前那样。等优化到下一个好用的阶段,我再来这里发帖给大家试试。

    感谢管理员将帖子重新挪出了推广 tag ,下次我知道发分享创造 tag 了。
    127 条回复    2025-06-17 20:05:49 +08:00
    1  2  
    pikay
        101
    pikay  
    OP
       86 天前
    @ygtq 是的,必须得设备开着,你可以在两个设备开启的时候,先按一下同步,同步完成就以缓存的形式保存,下次就算没开机也可以看到缓存的收藏夹。

    我也有考虑一些长期挂起的方案,例如做成 apk ,让废旧手机作为主服务器,不过还在思考中,看有没有更好的方案。
    pikay
        102
    pikay  
    OP
       86 天前
    @HTravel 🙏 感谢你的反馈,其实我只是想让用户更便捷使用 NAS ,那这样我后面用 Tauri 打包成各个端的运行程序,就不用考虑缓存和沙箱之类的问题。(相当于浏览器是普通版,客户端拥有更高级的权限)

    也会设计一个 24 小时运行的角色,例如我有很多废手机,那就装个 apk ,放家里头,就是 24 小时开着。有条件的买 mini 主机,没条件的用废旧笔记本,装个 exe ,到时候也加上快照功能。
    pikay
        103
    pikay  
    OP
       86 天前
    @Cereal 有没有开梯子?梯子会让 webrtc 信令传输失败。又或者其他情况?方便详细提个 issuse 吗? https://github.com/kirakiray/NoneOS/issues
    bomb77
        104
    bomb77  
       86 天前
    挺有意思的,界面也很好看,支持一下
    simo
        105
    simo  
       86 天前
    试用了下,真挺不错的
    Vipcw95
        106
    Vipcw95  
       86 天前
    怎么卸载?
    pikay
        107
    pikay  
    OP
       86 天前
    @Vipcw95 通过 recovery 卸载: https://os.tutous.com/recovery
    HENQIGUAI
        108
    HENQIGUAI  
       86 天前
    虽然暂时不用,但还是给楼主点赞!
    Vipcw95
        109
    Vipcw95  
       85 天前
    @pikay #107 感觉文档应该完善一点指引,比如这个恢复模式还能导出导入数据迁移到别的电脑上。然后这个数据交换只能 1 对 1 吗,可以 1 对多吗类似建立一个群组,比如 1 台设备修改了内容自动同步群组内其他设备可以一键自动同步
    blanu
        110
    blanu  
       85 天前
    既然目的是为了解决不同设备之间应用的点对点通信,那你干嘛不抽象出一层网络通信层,非要做一个四不像的界面作为平台?
    pikay
        111
    pikay  
    OP
       85 天前
    @Vipcw95 😂 是的,下一步我就是完善使用文档和开发文档了。
    可以 1 对多,多对多组群这个功能还在 todo 里,到时候不需要按什么按键,直接打开就会自动多端同步。
    pikay
        112
    pikay  
    OP
       85 天前
    @blanu 已经抽象出网络通信层了,但仅仅实现数据的传输几乎没有价值。如果没有像界面这样的数据展示支撑,数据传输本身几乎毫无价值,就像 IPFS 一样。真正赋予数据通信价值的,是将数据以直观、易用的方式呈现给用户。
    pikay
        113
    pikay  
    OP
       85 天前
    @andyskaura 😂 是的,可惜 webrtc 的易用性太差了,不然现在前端还有很多活干。你这个是怎么交换信令的?
    winterbells
        114
    winterbells  
       85 天前
    快进到支持浏览器里启动浏览器
    andyskaura
        115
    andyskaura  
       85 天前
    @pikay #113 刚开始是用自己写的一套部署在国内,后面觉得有点害怕法律风险 ,就换成公益的服务器了 https://peerjs.com/peerserver
    andyskaura
        116
    andyskaura  
       85 天前
    @pikay #113 易用性还行吧,我们公司有业务是通过 webrtc 传监控的,2K 的北京到广州也很稳定,延迟在 60ms 内,当然会有波动
    curlychen
        117
    curlychen  
       85 天前
    赞~~
    KaiGer666
        118
    KaiGer666  
       84 天前
    念念不忘 必有回响
    skvi
        119
    skvi  
       84 天前 via Android
    支持
    sunxfancy
        120
    sunxfancy  
       84 天前
    用了很多业余时间和非业余时间。哈哈哈哈,希望你老板没上 v2ex
    pikay
        121
    pikay  
    OP
       84 天前
    @sunxfancy 😂 在上班的时候,用的是下班时间。gap 的时候,完全投入去写。
    zmt2023
        122
    zmt2023  
    PRO
       82 天前
    酷炫,有想法
    zhaosong
        123
    zhaosong  
       82 天前
    竟然不是 wasm 构建的,那么在运行高运算量的应用时岂不是直接跑满 cpu 了
    pikay
        124
    pikay  
    OP
       82 天前
    @zhaosong 没关系的,都是用 js ,高运算的逻辑都是手动打包 wasm + webworker 来跑,而且系统的基础框架支持 .wasm 文件。
    thinkdiff
        125
    thinkdiff  
       82 天前
    有趣,已 star !
    iminto
        126
    iminto  
       80 天前 via Android
    我真的很想吐槽,你这东西,20 年前我还在玩无忧 js 论坛的时候就见过了,这就是个网页,和操作系统谈不上一文钱关系
    pikay
        127
    pikay  
    OP
       80 天前
    @iminto 怎么说呢,如果你说要从控制计算机操作、运用和运行硬件开始的话,的确不算是真正的操作系统。但是这个是在浏览器上做的一个应用层 runtime ,你是可以在 NoneOS 上直接开发应用的。已经封装了像安卓的 Android Runtime 、Lib 和 Application 层,NoneOS 往下的层就是浏览器和宿主系统。

    https://images2017.cnblogs.com/blog/1008788/201709/1008788-20170910193701397-440543753.png
    1  2  
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2855 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 06:17 · PVG 14:17 · LAX 23:17 · JFK 02:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.