Docker部署虚拟在线浏览器neko
欢迎来到 Neko,这是一个在 Docker 中运行并使用 WebRTC 技术的自托管虚拟浏览器。Neko 是一个强大的工具,允许您在虚拟环境中运行一个功能齐全的浏览器,让您能够从任何地方安全和私密地访问互联网。使用 Neko,您可以浏览网页、运行应用程序和执行其他任务,就像在普通浏览器上一样,所有这些都在一个安全和隔离的环境中进行。无论您是希望测试 web 应用程序的开发人员,还是寻求安全浏览体验的注重隐私的用户,或者只是想利用虚拟浏览器的便利性和灵活性的人,Neko 都是完美的解决方案。
项目 GitHub:m1k1o/neko: A self hosted virtual browser that runs in docker and uses WebRTC.
项目 doc:Getting Started (m1k1o.net)
配置需求:
分辨率 | CPU Cores | 内存 | 推荐意见 |
---|---|---|---|
1024×576@30 | 2 | 2gb | 一般 |
1280×720@30 | 4 | 3gb | 可以 |
1280×720@30 | 6 | 4gb | 推荐 |
1280×720@30 | 8 | 4gb+ | 最佳 |
这里使用的服务器配置:2Cores 2GB Ubuntu22.04。如果只是用来浏览网页的话,CPU 和内存的占用不会太高,1C1G 加个 1Gswap 就够了。如果你要看视频之类的,可能需要更高的配置,推荐 2C 以上。
此项目强烈推荐使用域名并开启 SSL,否则可能会出现未知错误。
在开始部署之前,你需要安装 docker 和 docker-compose
一、安装基础环境
1、更新源
yum update -y && yum upgrade -y #Centos执行这条命令
apt update -y && apt upgrade -y #Ubuntu/Debian执行这条命令
2、安装docker及docker compose
curl -fsSL https://get.docker.com -o get-docker.sh && sh ./get-docker.sh
3、检查docker是否安装成功
#以下即为安装成功
root@debian-4gb-fsn1-2:~# docker compose version
Docker Compose version v2.17.2
root@debian-4gb-fsn1-2:~# docker -v
Docker version 23.0.2, build 569dd73
二、添加虚拟内存
如果你机器内存够就不需要加虚拟内存
1、脚本一键添加,单位是MB
wget -O jcnfbox.sh https://raw.githubusercontent.com/Netflixxp/jcnf-box/main/jcnfbox.sh && chmod +x jcnfbox.sh && clear && ./jcnfbox.sh
2、手动添加
创建 1G 的 swap,可以根据你的服务器配置来调整大小
dd if=/dev/zero of=/mnt/swap bs=1M count=1024
设置交换分区文件
mkswap /mnt/swap
启动 swap
swapon /mnt/swap
设置开机时自启用 swap 分区
需要修改文件 /etc/fstab
中的 swap 行
vim /etc/fstab
添加
/mnt/swap swap swap defaults 0 0
三、docker compose安装neko
本次使用火狐内核版本m1k1o/neko:firefox
,其余可选择谷歌内核版本m1k1o/neko:chromium
,树莓派版本m1k1o/neko:arm-chromium
创建文件夹:
mkdir -p /home/neko/ && cd /home/neko/
创建配置文件:
vim docker-compose.yml
主要修改NEKO_NAT1TO1
为自己服务器IP地址,其余部分可根据下面给的环境变量说明自行修改
英文输入法下按 i 进入编辑模式后,在这个配置文件的最后加入:
version: "3.8"
services:
neko:
image: "m1k1o/neko:firefox"
container_name: "neko"
restart: "always"
shm_size: "2gb"
ports:
- "38080:8080"
- "52000-52100:52000-52100/udp"
environment:
NEKO_SCREEN: 1920x1080@30
NEKO_PASSWORD: neko
NEKO_PASSWORD_ADMIN: admin
NEKO_NAT1TO1: 192.168.3.166
NEKO_EPR: 52000-52100
NEKO_ICELITE: 1
| 参数名称 | 描述 | 示例值/说明 |
|----------------------|--------------------------------------------------------------|-----------------------------------------------------------------|
| `--shm-size=2gb` | 设置共享内存大小为 2GB,此设置为必须。 | |
| `--cap-add SYS_ADMIN` | 使用 Chromium 内核时需添加,以获取必要的系统管理权限。 | |
| `NEKO_PASSWORD` | 普通用户的登录密码。 | `mySecurePass123` |
| `NEKO_PASSWORD_ADMIN` | 管理员(admin)用户的登录密码。 | `AdminSecurePass456` |
| `NEKO_NAT1TO1` | 局域网使用时设置为服务器本地 IP,公网则自动获取公网 IP,可选。 | `192.168.3.166` 或留空自动获取 |
| `NEKO_SCREEN` | 自定义浏览器窗口分辨率。 | `1920x1080` |
| `NEKO_ICELITE` | 启用 Ice Lite 协议以优化连接性能,可选。 | `true` 或留空默认值 |
| `NEKO_EPR` | 设置 WebRTC 的 UDP 端口范围,用于P2P连接。 | `52000-52100` |
| `NEKO_FILE_TRANSFER_ENABLED` | 启用文件传输功能,需要设置为 `true`。 | `true` 或默认 `false` 如果不需要启用文件传输功能 |
```
按 esc
后,输入:wq
保存退出。
运行:
docker-compose up -d
访问 ip:38080
或者是你的域名就可以进入到 neko 浏览器了,我们使用管理员密码登录:
默认界面:
基本使用:
四、neko room
neko room是另外的一个工具,可以批量添加多个不同浏览器
选择一个域名解析到vps的IP
下载neko room安装脚本
wget -O neko-rooms.sh https://raw.githubusercontent.com/m1k1o/neko-rooms/master/traefik/install
执行脚本
sudo bash neko-rooms.sh
直接回车表示使用默认配置
脚本会自动申请证书,通过填入的域名访问
expert setting 可以添加环境变量、对CPU和内存设置资源限制、启用GPU
1、所有人都有控制权,可以同时控制屏幕,无需请求
neko room:开启 NEKO\_IMPLICIT\_CONTROL
docker compose运行的neko:在compose文件的环境变量加上 NEKO\_IMPLICIT\_CONTROL: true
2、复制粘贴,同时需要使用https,另外一些浏览器例如firefox不支持
neko或neko-room添加环境变量 NEKO\_FILE\_TRANSFER\_ENABLED: true
3、neko反代设置
server {
listen 443 ssl http2;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_cache_bypass $http_upgrade;
}
}
4、安装浏览器扩展或下载文件
参考: Chrome policies:https://support.google.com/chrome/a/answer/7579271?hl=en
作者为了安全默认禁止下载文件 禁止安装扩展(https://github.com/m1k1o/neko/issues/114#issuecomment-988309991)
For security, if the browser would be compromised, installing any extension could potentially allow anyone to access filesystem or steal all cookies, inject malware to any page…
但我们一般不在乎那些,可以根据官方教程手动修改 chrome polices
以 Chromium
为例
1、在vps新建一个 policies.json 文件,可以填入如下政策
这里文件添加在 `/root/policies.json`
{
"AutofillAddressEnabled": false,
"AutofillCreditCardEnabled": false,
"BrowserSignin": 0,
"DefaultNotificationsSetting": 2,
"DeveloperToolsAvailability": 2,
"EditBookmarksEnabled": false,
"FullscreenAllowed": true,
"IncognitoModeAvailability": 1,
"SyncDisabled": true,
"AutoplayAllowed": true,
"BrowserAddPersonEnabled": false,
"BrowserGuestModeEnabled": false,
"DefaultPopupsSetting": 2,
"DownloadRestrictions": 0,
"VideoCaptureAllowed": true,
"AllowFileSelectionDialogs": false,
"PromptForDownloadLocation": false,
"BookmarkBarEnabled": false,
"PasswordManagerEnabled": false,
"BrowserLabsEnabled": false,
"URLAllowlist": [
"file:///home/neko/Downloads",
"file://*",
"chrome://policy"
],
"ExtensionInstallForcelist": [
"cjpalhdlnbpafiamejdnhcphjbkeiagm;https://clients2.google.com/service/update2/crx",
"mnjggcdmjocbbbhaepdhchncahnbgone;https://clients2.google.com/service/update2/crx"
],
"ExtensionInstallAllowlist": [
"cjpalhdlnbpafiamejdnhcphjbkeiagm",
"mnjggcdmjocbbbhaepdhchncahnbgone",
"padekgcemlokbadohgkifijomclgjgif"
]
}
然后替换 Chromium 原本严格的政策
#容器ID'13f53eaa2252' 记得替换为你自己的
#/root/policies.json 也是替换为你文件路径
docker cp /root/policies.json 13f53eaa2252:/etc/chromium/policies/managed/policies.json
然后就可以下载安装扩展了
5、甲骨文arm运行
ghcr.io/m1k1o/neko/arm-firefox:latest
ghcr.io/m1k1o/neko/arm-chromium:latest
ghcr.io/m1k1o/neko/arm-ungoogled-chromium:latest
ghcr.io/m1k1o/neko/arm-vlc:latest
ghcr.io/m1k1o/neko/arm-xfce:latest
五、整体评价
1、优点
可以装逼
网络没问题的情况下非常流畅,在线看视频是没有问题的
2、缺点
需要配置较高的 vps 才能流畅运行
网络要求高,需要线路较好的 vps,反代不方便
中文输入支持不好
移动端优化不足