自托管虚拟浏览器n.eko

本文开始于 202010 月,但因为种种原因一直未完成,最近因为朋友需要,又重新捡起来了,最终完成了这篇横跨了 5 年的文档

什么是 n.eko ?

n.eko 是一个基于 docker 隔离环境的虚拟浏览器,支持 firefoxchromeopera 等多个版本的浏览器,内置了聊天/简单的用户管理功能。

这个应用程序使用 WebRTCdocker 容器中传输桌面视频流,所以需要比较高的配置,毕竟要对桌面进行编码/传输,而且浏览器本身还要消耗性能,以下数据来自官方的文档,https://neko.m1k1o.net/#/getting-started/quick-start

分辨率 核心数 内存 建议
1024×576 @ 30 2 2GB 不建议
1280x720 @ 30 4 3GB 还行
1280x720 @ 30 6 4GB 推荐
1280x720 @ 30 8 4GB以上 最好

现在最高可以支持到 1920×1080@60,但没有找到新的关于性能的说明。

管理员可以在 GUI 上直接修改分辨率,后面有提到

官方 nurdism/neko2021 年就不再维护了,现在最新的分支是 m1k1o/neko

n.eko 有很多用例和场景,例如可以互动演示,远程协作,观看视频等等,更多的用例请看:
https://github.com/m1k1o/neko#use-cases-and-comparison

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 neko ,选择第一个 m1k1o/neko,版本选择 latest

本文写作时, latest 版本对应为 firefox

因为涉及到连续 udp 端口的映射,所以我们用 SSH 客户端连到群晖主机,采用命令行方式安装

docker cli 安装

docker cli 会更快捷

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 运行容器
docker run -d \
--restart unless-stopped \
--name neko \
--shm-size="2gb" \
-p 4181:8080 \
-p 52000-52100:52000-52100/udp \
-e NEKO_PASSWORD='neko' \
-e NEKO_PASSWORD_ADMIN='admin' \
-e NEKO_NAT1TO1=192.168.0.197 \
-e NEKO_SCREEN=1920x1080@30 \
-e NEKO_ICELITE=1 \
-e NEKO_EPR=52000-52100 \
m1k1o/neko:latest

主要参数的说明

  • --shm-size=2gb 是必须要,表示将共享内存的大小设置为 2GB
  • --cap-add SYS_ADMIN :如果你采用的是 chromium 核心的浏览器版本,需要增加 --cap-add=SYS_ADMIN 参数
  • NEKO_PASSWORD :是普通用户的密码
  • NEKO_PASSWORD_ADMIN:是管理员 admin 的密码

用户名随便,通过匹配密码获得相应的权限,记得将上面两个参数修改成你自己的密码

  • NEKO_NAT1TO1
    1. 如果你在局域网使用,设置为群晖的局域网 IP 即可;
    2. 如果你在公网使用,可以忽略这个参数,它会自动获取您的公网 IP
  • NEKO_SCREEN:设置分辨率
  • NEKO_ICELITE:使用 Ice Lite 协议
  • NEKO_EPR: WebRTC 所需的 UDP 端口范围
  • NEKO_FILE_TRANSFER_ENABLED:如果要启用文件传输功能,需设置为 true

更多参数说明,请参考官方文档:https://github.com/m1k1o/neko/blob/master/docs/getting-started/configuration.md

或者 https://neko.m1k1o.net/#/getting-started/configuration

docker-compose` 安装

将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
version: "3.4"

services:
neko:
image: "m1k1o/neko:latest"
container_name: "neko"
restart: "unless-stopped"
shm_size: "2gb"
ports:
- "4181:8080"
- "52000-52100:52000-52100/udp"
environment:
NEKO_SCREEN: 1920x1080@30
NEKO_PASSWORD: neko
NEKO_PASSWORD_ADMIN: admin
NEKO_NAT1TO1: 192.168.0.197
NEKO_EPR: 52000-52100
NEKO_ICELITE: 1

然后执行下面的命令

1
2
3
4
5
6
7
8
9
10
# 新建文件夹 neko 
mkdir -p /volume1/docker/neko

# 进入 neko 目录
cd /volume1/docker/neko

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:4181,就可以看到主界面了

title

普通用户

例如使用用户名 laosu,密码就是刚才设置的 NEKO_PASSWORD,只要密码对上就可以登录

如果你使用的是 chromium 版本

如果密码错误

title

管理员

例如使用用户名 admin ,密码就是刚才设置的 NEKO_PASSWORD_ADMIN

如果你使用的是 chromium 版本

聊天

打开网页

支持聊天

分辨率

管理员端的右侧电脑图标

最高分辨率为 1920*1080@60

最低可以到 640*360@60,其他端会同步分辨率

参考资料

nurdism/neko: A self hosted virtual browser (rabb.it clone) that runs in docker.
地址:https://github.com/nurdism/neko

m1k1o/neko: A self hosted virtual browser (rabb.it clone) that runs in docker.
地址:https://github.com/m1k1o/neko

n.eko
地址:https://neko.m1k1o.net