Neko运行于Docker中的自托管虚拟浏览器


n.eko

欢迎使用 Neko,这是一款基于 Docker 运行并使用 WebRTC 技术的自托管虚拟浏览器。Neko 是一款功能强大的工具,它允许您在虚拟环境中运行功能齐全的浏览器,让您能够从任何地方安全私密地访问互联网。使用 Neko,您可以像在普通浏览器上一样浏览网页、运行应用程序以及执行其他任务,所有这些都在安全且隔离的环境中进行。无论您是想要测试 Web 应用程序的开发者,还是注重隐私、寻求安全浏览体验的用户,或者仅仅是想要利用虚拟浏览器的便捷性和灵活性,Neko 都是您的完美解决方案。

除了安全和隐私功能外,Neko 还支持多用户同时访问。这使得它成为需要共享浏览器访问权限的团队或组织,以及希望使用多台设备访问同一虚拟环境的个人的理想解决方案。使用 Neko,您可以轻松安全地与他人共享浏览器访问权限,无需担心维护单独的配置或设置。无论您是需要协作项目、访问共享资源,还是仅仅想与亲朋好友共享浏览器访问权限,Neko 都能轻松实现。

Neko 也是举办观看派对和互动演示的绝佳工具。凭借其虚拟浏览器功能,Neko 允许您随时随地访问观看派对和演示,而无需亲自到场。即使您无法亲自见面,也能轻松与亲朋好友保持联系。有了 Neko,您可以轻松举办观看派对或进行互动演示,无论是休闲娱乐还是工作办公。只需邀请您的嘉宾加入虚拟环境,您就可以共享屏幕并与他们实时互动

关于

这款应用使用 WebRTC 在 Docker 容器内进行桌面流式传输。原作者之所以制作这款应用,是因为 rabb.it 倒闭了,他的网络无法处理流式传输,而他的朋友尝试使用 Discord 时,Discord 总是崩溃。他只是想和朋友们一起看动漫ლ(ಠ益ಠლ),于是他开始在网上搜索,找到了一些类似的克隆应用,但都没有虚拟浏览器。后来,他找到了 Turtus,并找到了剩下的功能。

后来我找到了 这个 项目,并开始深入研究。我非常喜欢多人协作浏览浏览器的想法,所以我创建了一个分支。最初,我想将我的更改合并到上游代码库,但原作者没有时间再处理这个项目,最终它被归档了。

用例和比较

Neko 最初是一个虚拟浏览器,使用 WebRTC 向多个用户进行流式传输。

  • 不仅限于浏览器;它可以运行任何在 Linux 上运行的应用程序(例如 VLC)。浏览器恰好是最流行和使用最广泛的用例。
  • 事实上,它也不限于单个程序;您可以安装完整的桌面环境(例如 XFCE、KDE)。
  • 说到限制,它不需要在容器中运行;您可以在主机上安装 neko,连接到 X 服务器并控制整个虚拟机。
  • 理论上,它不仅限于 X 服务器,任何可以控制并定期抓取图像的设备都可以代替。
  • 例如实现 RDP 或 VNC 协议,其中 neko 仅充当 WebRTC 中继服务器。目前这只是未来的发展方向。

主要用例是多人连接,利用实时同步和互动功能:

  • 观看派对 - 与多人一起观看视频内容并做出反应(聊天、表情) - giggl.apphyperbeam 的开源替代方案。
  • 交互式演示 - 不仅可以共享屏幕,其他人还可以控制屏幕。
  • 协作工具 - 集思广益、共同浏览、代码调试。
  • 支持/教学 - 在受控环境中以交互方式指导用户。
  • 嵌入任何内容 - 在您的 Web 应用中嵌入虚拟浏览器 - hyperbeam API 的开源替代方案。
  • 打开任何第三方网站或应用程序,在多个参与者之间完美同步音频和视频。
  • 使用 neko-rooms API 请求房间。

其他受益于单用户模式的用例:

  • 个人工作区 - 将容器化的应用和桌面流式传输给最终用户 - 类似于 kasm
  • 持久浏览器 - 拥有自己的浏览器,持久化 cookie 可在任何地方使用 - 类似于 mightyapp
  • 终止连接后,主机浏览器上不会留下任何状态。
  • 不会传输 cookie 等敏感数据 - 仅共享视频。
  • 一次性浏览器 - 计划秘密派对和从互联网上购买生日礼物的更佳解决方案。
  • 使用 Tor 浏览器和 VPN 实现更高的匿名性。
  • 通过在容器中运行,降低操作系统指纹识别和浏览器漏洞的风险。
  • 会话广播 - 使用 RTMP 协议广播房间内容(例如,到 twitch 或 youtube……)。
  • 会话录制 - 可以使用例如 nginx-rtmp 将广播 RTMP 保存到文件中。
  • 录制教程时拥有干净的环境。
  • 无需隐藏书签或使用隐身模式。
  • 跳转主机 - 无需 VPN 即可安全访问您的内部应用程序。
  • 自动浏览器 - 您可以安装 playwrightpuppeteer 并自动执行任务,同时能够主动拦截它们。

与无客户端远程桌面网关(例如 Apache GuacamolewebsockifynoVNC)相比,与远程桌面服务器以及所需程序(例如 linuxserver/firefox)一起安装的 neko 还具有以下优势:

  • 流畅的视频,因为它使用 WebRTC 而不是通过 WebSockets 发送图像。
  • 内置音频支持,这是 Apache Guacamole 和 noVNC 所不具备的。
  • 多参与者控制,这是 Apache Guacamole 和 noVNC 原生不支持的。

支持的浏览器

其它应用

文档

完整文档请访问 neko.m1k1o.net。主要章节包括:

Docker 安装

安装 Neko 的首选方法是使用 Docker。这种方法易于设置和管理,包含所有必要的依赖项,并且与主机系统隔离。其他安装方法不在本文档的讨论范围内。

运行 docker

要启动基本的 Neko 容器,请使用以下命令:

shell 复制代码
docker run -d --rm \
  -p 8080:8080 \
  -p 56000-56100:56000-56100/udp \
  -e NEKO_WEBRTC_EPR=56000-56100 \
  -e NEKO_WEBRTC_NAT1TO1=127.0.0.1 \
  -e NEKO_MEMBER_MULTIUSER_USER_PASSWORD=neko \
  -e NEKO_MEMBER_MULTIUSER_ADMIN_PASSWORD=admin \
  ghcr.io/m1k1o/neko/firefox:latest

参数说明

  • -d --rm - 在后台运行容器,并在容器退出时自动移除。
  • -p 8080:8080 - 将容器的 8080 端口映射到主机的 8080 端口。
  • -p 56000-56100:56000-56100/udp - 将容器的 UDP 端口 56000-56100 映射到主机的 56000-56100 端口。
  • -e NEKO_WEBRTC_EPR=56000-56100 - 设置 WebRTC 端点范围,此值必须与上面映射的端口匹配。
    • 有关此设置的更多信息,请参阅“WebRTC 临时端口范围”。
    • 还有一种仅使用单个端口的替代方法,请参阅“WebRTC UDP/TCP 多路复用”。
  • -e NEKO_WEBRTC_NAT1TO1=127.0.0.1 - 设置 WebRTC 客户端应连接的地址。
    • 如果仅在本地计算机上测试,请使用 127.0.0.1。
    • 如果在专用网络中使用,请使用主机的 IP 地址(例如 192.168.1.5)。
    • 如果在公用网络中使用,您需要在路由器上正确设置端口转发并删除此环境变量。
    • 有关此设置的更多信息,请参阅“WebRTC 服务器 IP 地址”。
  • -e NEKO_MEMBER_MULTIUSER_USER_PASSWORD=neko - 设置用户帐户的密码。
  • -e NEKO_MEMBER_MULTIUSER_ADMIN_PASSWORD=admin - 设置管理员帐户的密码。
    • 有关此设置的更多信息,请参阅“多用户配置”。
    • 还有其他可用的身份验证提供程序,请参阅“身份验证提供程序”。
  • ghcr.io/m1k1o/neko/firefox:latest - 要使用的 Docker 镜像。

现在,打开浏览器并访问:http://localhost:8080。你应该会看到 Neko 界面。

进一步配置

您可以通过设置环境变量或配置文件来配置 Neko。更多信息请参阅配置参考。


Docker Compose

您也可以使用 Docker Compose 来运行 Neko。在生产环境中,建议使用 Docker Compose 来运行 Neko,因为这样可以轻松管理、更新和配置容器。

创建包含以下内容的 docker-compose.yml 文件:

shell 复制代码
services:
  neko:
    image: ghcr.io/m1k1o/neko/firefox:latest
    restart: unless-stopped
    ports:
      - "8080:8080"
      - "56000-56100:56000-56100/udp"
    environment:
      NEKO_WEBRTC_EPR: "56000-56100"
      NEKO_WEBRTC_NAT1TO1: "127.0.0.1"
      NEKO_MEMBER_MULTIUSER_USER_PASSWORD: "neko"
      NEKO_MEMBER_MULTIUSER_ADMIN_PASSWORD: "admin"

然后,运行以下命令:

language 复制代码
docker compose up -d

要停止 Neko,请运行:

language 复制代码
docker compose down

要更新 Neko,请运行:

language 复制代码
docker compose pull
docker compose up -d

您需要在与 docker-compose.yml 文件相同的目录中运行 docker compose 命令。

关于项目

Neko是一款基于 Docker 运行并使用 WebRTC 技术的自托管虚拟浏览器。Neko 是一款功能强大的工具,可让您在虚拟环境中运行功能齐全的浏览器,让您能够从任何地方安全私密地访问互联网。
Apache-2.0
Golang
15,584
1033
81
2020-03-15
2025-09-25

增长趋势 - stars