neko自建服务器远程浏览器实操教程

简介

neko是一个在Docker中运行并使用WebRTC技术的自托管虚拟浏览器。使用 Neko,您可以像在常规浏览器上一样浏览 Web、运行应用程序以及执行其他任务,所有这些都在安全且隔离的环境中完成。无论您是希望测试 Web 应用程序的开发人员、寻求安全浏览体验的注重隐私的用户,还是只是想要利用虚拟浏览器的便利性和灵活性的人,Neko 都是完美的解决方案。

本文以一台1H1G Debian系统的VPS演示安装单个远程浏览器,以一台4H4G演示搭建neko room批量管理多个远程浏览器
你的用途取决于你的vps配置
仅仅用来浏览网页CPU和内存占用不会太高 1H1G加上虚拟内存足够
如果是看流媒体这种需要编解码占用CPU GPU的服务 vps配置自然需要高,看1080p流媒体至少需要2核2G(CPU总跑分1500+)
客户端浏览器需要支持webRTC,常见的chrome edge safari 都支持

操作流程

安装docker及docker compose

yum update -y && yum upgrade -y     #Centos执行这条命令更新源
apt update -y && apt upgrade -y     #Ubuntu/Debian执行这条命令更新源
curl -fsSL https://get.docker.com -o get-docker.sh && sh ./get-docker.sh     //安装docker及docker compose
docker -v    //检测是否安装成功
docker compose version      //检测是否安装成功

file

添加虚拟内存

我用的jcnf大佬的聚合脚本,添加了 2048MB的虚拟内存

wget -O jcnfbox.sh https://raw.githubusercontent.com/Netflixxp/jcnf-box/main/jcnfbox.sh && chmod +x jcnfbox.sh && clear && ./jcnfbox.sh

file

file

安装neko

可以参考官网教程:n.eko

下载neko docker compose文件

mkdir neko
cd neko
wget https://raw.githubusercontent.com/m1k1o/neko/master/docker-compose.yaml

默认配置文件应该是这样的,我们要对他进行一些修改:

version: "3.4"
services:
  neko:
    image: "m1k1o/neko:firefox"
    restart: "unless-stopped"
    shm_size: "2gb"
    ports:
      - "8080:8080"
      - "52000-52100:52000-52100/udp"
    environment:
      NEKO_SCREEN: 1920x1080@30
      NEKO_PASSWORD: neko
      NEKO_PASSWORD_ADMIN: admin
      NEKO_EPR: 52000-52100
      NEKO_ICELITE: 1

编辑docker compose文件 : vim docker-compose.yaml,按照注释修改:

  • image: "m1k1o/neko:firefox" 这里可以更改使用的浏览器,默认为Firefox,其他支持的浏览器我会放在文末附录

  • "8080:8080" 这里是浏览器访问端口,如果被占用则需要修改成没有占用的端口,例如 – "8082:8080"

  • NEKO_SCREEN: 分辨率,请自行修改为适合自己服务器配置的分辨率,格式为宽x高@帧率 例如 1280×720@30

  • NEKO_PASSWORD: 用户访问密码,默认为 neko 请务必修改为自己的密码

  • NEKO_PASSWORD_ADMIN: 管理员密码,默认为 admin 请务必修改为自己的密码

  • NEKO_CONTROL_PROTECTION: 控制保护,要求房间内至少有一名管理员时用户才能获得控制权,建议启用

  • NEKO_LOCKS: 启动时将被锁定的资源,以空格分隔,目前支持 control login file_transfer,例如 control file_transfer

  • NEKO_VIDEO_BITRATE: 视频码率,直接填写数字,默认为3500,单位kb/s

  • NEKO_FILE_TRANSFER_ENABLED: 是否启用文件传输功能

  • NEKO_FILE_TRANSFER_PATH: 文件保存路径,这里是容器内的路径,默认为/home/neko/Downloads

  • NEKO_PROXY: 反向代理设置,如果需要使用则启用,启用后Neko会信任X-Forwarded-For标头

其他支持的浏览器

镜像名 浏览器 备注
m1k1o/neko:latest Firefox 默认
m1k1o/neko:firefox Firefox 默认
m1k1o/neko:chromium Chromium 需要以系统管理员运行
m1k1o/neko:google-chrome Google Chrome 需要以系统管理员运行
m1k1o/neko:ungoogled-chromium Ungoogled Chromium 需要以系统管理员运行
m1k1o/neko:microsoft-edge Microsoft Edge 需要以系统管理员运行
m1k1o/neko:vlc VLC Video Player 需要以系统管理员运行
m1k1o/neko:opera Opera Browser 需要以系统管理员运行

在使用 需要以系统管理员运行 的浏览器时,需要在配置文件中添加如下两行:

原:

version: "3.4"
services:
  neko:
    image: "m1k1o/neko:firefox

新:

version: "3.4"
services:
  neko:
    image: "m1k1o/neko:google-chrome
    cap_add:
      - SYS_ADMIN

因此我的配置文件是:

version: "3.4"
services:
  neko:
    image: "m1k1o/neko:chromium"
    volumes:
      - '/root/neko/policies.json:/etc/chromium/policies/managed/policies.json'
    restart: "unless-stopped"
    shm_size: "4gb"
    ports:
      - "8088:8080"
      - "52000-52100:52000-52100/udp"
    cap_add:
      - SYS_ADMIN
    environment:
      NEKO_SCREEN: '1920x1080@30'
      NEKO_PASSWORD: 输入游客密码
      NEKO_PASSWORD_ADMIN: 输入管理员密码
      NEKO_EPR: 52000-52100
      NEKO_ICELITE: 1
      NEKO_FILE_TRANSFER_ENABLED: ture

启动docker程序

执行命令:

sudo docker compose up -d

接下来程序已经成功运行了。之后如果想要关闭它,在这个包含 docker-compose.yaml 的目录使用 docker compose down 命令。

要修改密码和分辨率,就修改上面的 NEKO_PASSWORD, NEKO_PASSWORD_ADMIN, 和 NEKO_SCREEN 后面的内容就行。然后先通过命令 docker compose down 关闭 Neko, 再使用 docker compose up -d 启动 Neko 就能生效。

cd到docker-compose.yaml 文件目录:

docker compose down    //停止
docker compose up -d   //启动

访问

通过 ip:port 访问,上面的端口是8088,因此地址是 ip:8088

用户名随便,密码可以是普通用户密码,也可以是管理员密码

增强玩法

中文输入

Neko 的聊天框可以输入中文,但是 Neko 的浏览器中无法直接输入中文。可以借助一些在线输入法输入中文,比如 Google Input Tools. 打开这个网页之后,在红框处选择 “Chinese (Simplified, China)” 之后,就可以使用拼音输入法输入中文了。当然它也支持双拼和五笔输入。

在这个输入框输入中文之后,就可以复制 (Ctrl + C) 这里的中文,然后粘贴 (Ctrl + V) 到其他输入框中。

隐藏链接

禁用密码是不可能的。但是,您可以使用以下查询参数来创建自动加入链接:
添加?pwd=将预填充密码。
添加?usr=将预填充用户名。
添加?cast=1将隐藏所有控件并仅显示视频。
添加?embed=1将隐藏大多数附加组件并仅显示视频。
添加?volume=<0-1>会将音量设置为给定值。
添加?lang=会将语言设置为给定值。
例如http(s)://<URL:Port>/?pwd=neko&usr=guest&cast=1

删除策略

当前安装的浏览器会有组织策略,会阻止添加书签和组件,因此我们需要创建空策略。

创建策略文件:

在你的本地系统上创建一个名为 policies.json 的文件。打开这个文件,输入 {} 保存并关闭。这个空的JSON对象表示没有任何策略。

然后找到你的 docker-compose.yml 文件。在其中运行 m1k1o/neko:chromium 镜像的服务部分,添加一个新的 volume 来挂载你刚刚创建的 policies.json 文件:

services:
  neko:
    image: m1k1o/neko:google-chrome
    volumes:
      - '/root/policies.json:/etc/chromium/policies/managed/policies.json'
    # 其他的配置保持不变

允许文件上传和下载和保存浏览数据

编辑policies.json文件

vim policies.json

复制一下内容粘贴进去,

{
  "DownloadRestrictions": 0,
  "AllowFileSelectionDialogs": true,
  "URLAllowlist": [
    "file:///home/neko/Downloads"
  ],
  "DefaultCookiesSetting": 1,
  "RestoreOnStartup": 1
}