Docker部署虚拟在线浏览器neko 发表于 2025-05-07 | 更新于 2025-05-07
| 总字数: 1.9k | 阅读时长: 7分钟 | 浏览量:
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、更新源 1 2 yum update -y && yum upgrade -y #Centos执行这条命令 apt update -y && apt upgrade -y #Ubuntu/Debian执行这条命令
2、安装docker及docker compose 1 curl -fsSL https://get.docker.com -o get-docker.sh && sh ./get-docker.sh
3、检查docker是否安装成功 1 2 3 4 5 # 以下即为安装成功 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 1 wget -O jcnfbox.sh https://raw.githubusercontent.com/Netflixxp/jcnf-box/main/jcnfbox.sh && chmod +x jcnfbox.sh && clear && ./jcnfbox.sh
2、手动添加 创建 1G 的 swap,可以根据你的服务器配置来调整大小
1 dd if=/dev/zero of=/mnt/swap bs=1M count=1024
设置交换分区文件
启动 swap
设置开机时自启用 swap 分区
需要修改文件 /etc/fstab
中的 swap 行
添加
1 /mnt/swap swap swap defaults 0 0
三、docker compose安装neko 本次使用火狐内核版本m1k1o/neko:firefox
,其余可选择谷歌内核版本m1k1o/neko:chromium
,树莓派版本m1k1o/neko:arm-chromium
创建文件夹:
1 mkdir -p /home/neko/ && cd /home/neko/
创建配置文件:
主要修改NEKO_NAT1TO1
为自己服务器IP地址,其余部分可根据下面给的环境变量说明自行修改
英文输入法下按 i 进入编辑模式后,在这个配置文件的最后加入:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 version: "3.8" services: neko: image: "" ghcr.io/m1k1o/neko/firefox:latest"" 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` 如果不需要启用文件传输功能 | ```
m1k1o/neko:firefox:测试下来firefox不会黑屏,使用别的浏览器可能会黑屏,这点可以自己设置chromium等,最好还是firefox
安装chromium的示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 version: "3.8" services: neko: image: "ghcr.io/m1k1o/neko/chromium:latest" restart: "unless-stopped" shm_size: "2gb" cap_add: - SYS_ADMIN ports: - "8080:8080" - "52000-52100:52000-52100/udp" environment: NEKO_DESKTOP_SCREEN: '1920x1080@30' NEKO_MEMBER_MULTIUSER_USER_PASSWORD: neko NEKO_MEMBER_MULTIUSER_ADMIN_PASSWORD: admin NEKO_WEBRTC_EPR: 52000 -52100 NEKO_WEBRTC_ICELITE: 1 NEKO_WEBRTC_NAT1TO1: <your-IP>
按 esc
后,输入:wq
保存退出。
运行:
访问 ip:38080
或者是你的域名就可以进入到 neko 浏览器了,我们使用管理员密码登录:
默认界面:
基本使用:
四、neko room neko room是另外的一个工具,可以批量添加多个不同浏览器
选择一个域名解析到vps的IP
下载neko room安装脚本
1 wget -O neko-rooms.sh https://raw.githubusercontent.com/m1k1o/neko-rooms/master/traefik/install
执行脚本
直接回车表示使用默认配置
脚本会自动申请证书,通过填入的域名访问
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反代设置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 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`
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 { "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 原本严格的政策
1 2 3 # 容器ID'13f53eaa2252' 记得替换为你自己的 # /root/policies.json 也是替换为你文件路径 docker cp /root/policies.json 13f53eaa2252:/etc/chromium/policies/managed/policies.json
然后就可以下载安装扩展了
5、甲骨文arm运行 1 2 3 4 5 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,反代不方便 中文输入支持不好 移动端优化不足