引言 - 关于Neko

Neko V3 是一个开源、自托管的虚拟浏览器解决方案,允许多位用户共享并协同操作同一个浏览器实例,具备低延迟的音视频流实时传输,同时支持 GPU 加速、扩展和书签持久化等定制功能。

它定位于远程浏览、协作观影、Web 开发测试以及安全云端上网等应用场景,可通过 Linux/Docker、主流云平台(如 AWS、Azure、Google Cloud)以及树莓派等 ARM 设备进行部署,提供高度灵活、可控且便捷的浏览体验。

同时,Neko的网络环境也取决于部署设备的网络环境,可以巧妙地绕过一些网络限制。它也支持多人同时观看/操作。

但是缺点就是对服务器资源消耗稍高,不过因为要运行一套完整的最小桌面环境和浏览器,这也就显得挺正常了。

本文将记录我在Ubuntu 24.04.2 LTS服务器上搭建 Neko + Google Chrome 云浏览器的过程。

环境准备

  • 一台具有公有 IP 地址的服务器或 VPS
  • 能够使用ssh登录
  • 支持Docker

程序部署

Neko是基于Docker镜像的,安装部署非常简单,只需拉取镜像并进行简单配置。

本文中将以Ubuntu 24.04.2 LTS作为演示环境

安装并配置Docker环境

如果你已经安装了Docker,请直接前往下一步

  1. 安装 Docker :

    1
    curl -sSL https://get.docker.com/ | CHANNEL=stable bash
  2. 安装 Docker Compose 插件 :

    1
    2
    sudo apt-get update
    sudo apt-get install docker-compose-plugin

自定义docker-compose.yaml

  1. 创建/opt/neko文件夹

    1
    sudo mkdir /opt/neko
  2. 创建docker-compose.yaml

    1
    2
    cd /opt/neko
    vim docker-compose.yaml
  3. 写入以下内容

    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
    services:
    neko:
    image: "ghcr.io/m1k1o/neko/google-chrome:latest"
    restart: "always"
    shm_size: "2gb"
    cap_add:
    - SYS_ADMIN
    ports:
    - "8080:8080" # 映射到8080端口
    - "52000-52100:52000-52100/udp"
    volumes:
    - ./profile:/home/neko/.config/google-chrome # persist chrome settings
    - ./policy.json:/etc/opt/chrome/policies/managed/policies.json
    environment:
    NEKO_DESKTOP_SCREEN: '1920x1080@45'
    NEKO_DESKTOP_UPLOAD_DROP: true
    NEKO_DESKTOP_FILE_CHOOSER_DIALOG: true
    NEKO_MEMBER_MULTIUSER_USER_PASSWORD: "user" # 注意更改访客密码
    NEKO_MEMBER_MULTIUSER_ADMIN_PASSWORD: "admin" # 注意更改管理员密码
    NEKO_WEBRTC_EPR: 52000-52100
    NEKO_WEBRTC_ICELITE: 1
    NEKO_PLUGINS_ENABLED: true
    NEKO_CHAT_ENABLED: true
    NEKO_FILETRANSFER_ENABLED: true
    NEKO_FILETRANSFER_DIR: "./uploads"
    NEKO_FILETRANSFER_REFRESH_INTERVAL: "30s"
    LANGUAGE: "ZH-CN.UTF-8" # 为浏览器其用中文界面
  4. 硬件加速

    如果你的服务器有显卡,那么可以配置GPU加速,详情参考官方文档:

创建配置文件夹并设置权限

Neko默认会将浏览器配置存放在容器内,这意味着当停止容器时,我们对浏览器设置或浏览历史记录所做的任何更改都将丢失。这是因为容器是临时的,不会跨会话保留数据。

而且Neko默认会配置浏览器策略文件,对于个人使用这个非常没有必要。

创建浏览器配置文件夹

1
mkdir ./profile

创建空的浏览器策略文件以禁用浏览器策略

1
2
touch policy.json
echo "{}" > policy.json

设置所有者为neko用户

1
2
sudo chown -R 1000:1000 ./policy.json
sudo chown -R 1000:1000 ./profile

设置Nginx反向代理以支持HTTPS

你需要为你的域名添加一个子域名,我以neko.etaris.moe为例进行演示。

完整的Nginx server配置文件:

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
38
39
40
41
server {
listen 80 ;
listen 443 ssl http2 ;
server_name neko.etaris.moe; # 替换为你的域名

access_log /www/sites/neko.etaris.moe/log/access.log main;
error_log /www/sites/neko.etaris.moe/log/error.log;

location ^~ / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_http_version 1.1;
add_header X-Cache $upstream_cache_status;
add_header Cache-Control no-cache;
proxy_ssl_server_name off;
proxy_ssl_name $proxy_host;
}

# 设置你自己的ssl证书
ssl_certificate /www/sites/neko.etaris.moe/ssl/fullchain.pem;
ssl_certificate_key /www/sites/neko.etaris.moe/ssl/privkey.pem;

if ($scheme = http) {
return 301 https://$host$request_uri;
}

ssl_protocols TLSv1.3 TLSv1.2;
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:!aNULL:!eNULL:!EXPORT:!DSS:!DES:!RC4:!3DES:!MD5:!PSK:!KRB5:!SRP:!CAMELLIA:!SEED;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
error_page 497 https://$host$request_uri;
proxy_set_header X-Forwarded-Proto https;
}

测试配置并重启Nginx服务

1
2
sudo nginx -t
sudo systemctl restart nginx

万事俱备,拉取并启动Docker容器

1
2
cd /opt/neko/ # 确保位于正确目录下
sudo docker-compose up -d

接下来,docker会自动拉取镜像并启动容器,在这个过程中会下载近700MB的文件,注意你的磁盘空间和流量消耗。

启动好之后,在浏览器访问你的域名,输入配置文件中定义的密码(用户名任意),便可以进入云浏览器:

Neko + Google Chrome