Docker部署虚拟在线浏览器neko

admin
1年前发布 /正在检测是否收录...
温馨提示:
本文最后更新于2025年09月20日,已超过382天没有更新,若内容或图片失效,请留言反馈。

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: ""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的示例

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​ 保存退出。

运行:

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 分享 收藏
评论
所有页面的评论已关闭