Docker部署虚拟在线浏览器neko

admin
2天前发布 /正在检测是否收录...

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@3022gb一般
1280×720@3043gb可以
1280×720@3064gb推荐
1280×720@3084gb+最佳

这里使用的服务器配置: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 浏览器了,我们使用管理员密码登录:

图片[1] - Docker部署虚拟在线浏览器neko - 清~幽殇

默认界面:

图片[2] - Docker部署虚拟在线浏览器neko - 清~幽殇

基本使用:

图片[3] - Docker部署虚拟在线浏览器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

image

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

然后就可以下载安装扩展了

image

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,反代不方便
中文输入支持不好
移动端优化不足

© 版权声明
THE END
喜欢就支持一下吧
点赞 0 分享 收藏
评论
所有页面的评论已关闭