AppMoe 应用萌选
← 返回首页

Neko

Neko 是一个自托管的虚拟浏览器,在 Docker 容器里跑完整的浏览器或桌面环境,通过 WebRTC 以低延迟视频流的方式让多人同时访问和操作同一个实例。

Neko 项目的猫形标志与自托管虚拟浏览器简介

简要说明#

Neko 能在服务器上跑一个完整的浏览器实例,然后通过 WebRTC 把画面实时传到你的浏览器里。客户端不需要装任何软件,打开链接就能用。而且不限于一个人——多个人可以同时看同一个屏幕、操作同一个浏览器。

这个项目已经有 6 年历史,21,000+ Stars,是目前自托管虚拟浏览器领域最活跃的开源方案。

由来#

Neko 的诞生跟一个叫 rabb.it 的网站关停有关。rabb.it 是一个多人共享浏览器服务,用户可以一起看视频。它关停后,原作者想找个替代品跟朋友一起追番,但市面上的方案都不太合意:Discord 共享屏幕经常卡,传统远程桌面又太重。后来基于 Turtus 这个原型项目开发了最初的 Neko。

原仓库 nurdism/neko 后来归档了,现在的维护者 m1k1o fork 之后一直持续维护至今。

(项目名字来自日语「猫」——作者自己说喜欢猫。)

工作方式#

Neko 的核心思路很简单:在 Docker 容器里启动一个带图形界面的浏览器(或者完整桌面),用 x11vnc 捕获画面,然后用 WebRTC 编码和传输到客户端。客户端那边就是一个普通的网页,通过 WebRTC 接收视频流,同时把你的鼠标键盘操作发回服务器。

WebRTC 带来的好处是延迟低——官方数据在 300ms 以内。比起传统的 VNC over WebSocket(如 noVNC、Guacamole),画面流畅度要好一个档次,视频播放也基本不卡。

Neko 登录并进入远程 Firefox 的演示 Neko 官方演示的精简片段:登录、连接房间并进入远程 Firefox。

核心功能#

多人同步#

房间里所有人都能看到同一个画面。主持人可以单独开关每个人的控制权,允许或拒绝操作请求。这个设计让 Neko 很适合几个人一起看视频、一起查资料,或者远程指导操作。

浏览器和桌面镜像#

官方提供了 10 种浏览器镜像:Firefox、Chromium、Google Chrome、Microsoft Edge、Brave、Vivaldi、Opera、Tor Browser、Waterfox、Ungooogled Chromium。还有 XFCE 和 KDE 两个完整桌面环境的镜像,跑 VLC、Remmina 这类 Linux 应用也没问题。

RTMP 广播#

可以把 Neko 房间的内容直接推流到 Twitch、YouTube 等 RTMP 平台。即使房间里没有人,推流也一直进行,适合做 24 小时不间断直播。

持久会话和一次性会话#

Neko 支持两种模式:持久会话——浏览器保持运行,关掉客户端下次回来还在;一次性会话——用完即销毁,不留任何历史记录和 Cookie。

跳板(Jump Host)#

因为浏览器跑在你的服务器上,可以通过它访问内网里的其他服务,比如管理后台、数据库面板等。客户端只看到视频流,实际的网络请求全部从服务器发出。

支持的镜像#

浏览器:Firefox、Chromium、Google Chrome、Ungoogled Chromium、Microsoft Edge、Brave、Vivaldi、Opera、Tor Browser、Waterfox

桌面环境:XFCE、KDE

应用:VLC(媒体播放器)、Remmina(远程桌面客户端)

更多镜像可以在 m1k1o/neko-apps 找到。

部署方式#

Neko 用 Docker Compose 部署,一个文件就能跑起来:

services:
  neko:
    image: ghcr.io/m1k1o/neko/firefox:latest
    ports:
      - "8080:8080"
      - "52000-52100:52000-52100/udp"
    environment:
      NEKO_PASSWORD: "<用户密码>"
      NEKO_PASSWORD_ADMIN: "<管理员密码>"

启动后在浏览器打开 http://你的IP:8080 就能用了。完整的配置项包括分辨率、音频开关、文件上传大小限制等。

硬件要求不高:x86_64 或 ARM64 的 CPU 都可以,内存建议 2GB 以上。Chromium 系容器需要额外设置 --shm-size=2g。GPU 硬件加速可选(Intel VAAPI / NVIDIA CUDA),但官方标注了 still experimental。

如果需要一个完整的房间管理系统(多个实例、自动分配、HTTPS),可以额外部署 neko-rooms

neko-rooms 的房间列表 neko-rooms 官方仓库中的房间列表截图,界面来自早期版本。

与同类工具的对比#

NekoApache GuacamolenoVNC + websockifyKasmVNC
传输方式WebRTCVNC over WebSocketVNC over WebSocketVNC over WebSocket
多人同步原生支持不支持不支持有限支持
控制权管理精细权限不支持不支持有限
浏览器镜像10 种预装通用桌面通用桌面预装应用
延迟低(WebRTC)
部署难度中等(Docker)较高中等

Neko 的核心差异化在两点:WebRTC 的低延迟和多人同步。传统的 VNC 方案延迟偏高,而且多人同时看同一个桌面时缺乏权限管理。

使用场景#

观影派对:几个人在各自的设备上打开同一个浏览器看视频,实时同步播放进度。这也是 Neko 最初诞生的目的。

远程技术支持:让求助者打开浏览器加入房间,你就能看到他的操作画面,必要时接管控制,直接演示操作步骤。

隐私浏览:在远程服务器上运行浏览器,本地只看到视频流。对 ISP 来说,你的流量看起来只是一个视频通话。需要更高隐私时可以切到 Tor Browser 镜像或加 VPN。

团队协作:共享同一个浏览器环境,书签、登录态、浏览记录都是共用的,适合一起做调研或审核。

嵌入到 Web 应用:Neko 支持 ?embed=1 参数隐藏界面元素,可以用 iframe 把虚拟浏览器嵌入到自己的应用里。

自动化:在容器里安装 Playwright 或 Puppeteer 做浏览器自动化,还能通过 Neko 的界面实时观察执行过程。

注意事项#

单容器等于单浏览器实例,房间里的所有人共享同一个浏览环境,没有用户隔离。如果需要多人同时使用不同的浏览器,需要跑多个容器,或使用 neko-rooms 管理。

GPU 硬件加速官方标注了 still experimental,不保证一定生效。

镜像体积不小——Firefox 约 400MB,Chromium 约 600MB,KDE 桌面超过 1.3GB。

HTTPS 需要自己配反向代理(Nginx/Caddy),文档有示例但非开箱即用。

Chromium 系的容器需要额外的 --shm-size 配置,否则容易因共享内存不足崩溃。

如果只想要一个给自己用的远程浏览器,Neko 的多人特性会显得多余。这种情况可以考虑更轻量的方案,比如直接在 Docker 里跑一个带 WebVNC 的浏览器镜像。

相关链接#