爱意满满的作品展示区。
pikay

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

  •  5
     
  •   pikay · Jun 11, 2025 · 17411 views
    This topic created in 374 days ago, the information mentioned may be changed or developed.

    大家好,我是 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

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

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

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

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

    https://images2017.cnblogs.com/blog/1008788/201709/1008788-20170910193701397-440543753.png
    1  2  
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2495 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 68ms · UTC 15:38 · PVG 23:38 · LAX 08:38 · JFK 11:38
    ♥ Do have faith in what you're doing.