【Docker项目实战】使用Docker部署neko自托管虚拟浏览器
一、neko介绍
1.1 neko简介
- neko简介
Neko
,这是一个在 Docker 中运行并使用 WebRTC 技术的自托管虚拟浏览器。Neko 是一个功能强大的工具,允许您在虚拟环境中运行功能齐全的浏览器,使您能够从任何地方安全、私密地访问互联网。借助 Neko,您可以像在常规浏览器上一样浏览网页、运行应用程序并执行其他任务,所有这些都在安全且隔离的环境中进行。无论您是想要测试 Web 应用程序的开发人员、寻求安全浏览体验的注重隐私的用户,还是只是想要利用虚拟浏览器的便利性和灵活性的人,Neko 是完美的解决方案。
1.2 neko特点
- 多用户同时访问:Neko 支持多个用户共享一个浏览器环境,适合团队协作、组织共享或个人跨设备访问需求。
- 安全的权限共享:提供一种机制,允许用户安全地与他人共享浏览器访问权限,无须担心隐私泄露或配置复杂性。
- 维护简便:用户不必为每个新成员单独配置或管理设置,简化了共享环境的维护工作。
- 协同工作与资源共享:适用于项目合作、访问共享资源场景,促进团队间的高效协作。
- 个人共享便利:也适合个人用户与家人、朋友分享浏览器访问,便于日常生活中的信息共享。
- 虚拟观看派对与演示:特色虚拟浏览器功能支持远程观看聚会和互动演示,打破地理位置限制。
- 远程互动性:使用户能够远程参与,保持社交和工作联系,不受物理距离影响。
- 实时互动屏幕共享:集成的屏幕共享与实时互动功能,优化了远程沟通与协作体验。
- 易于邀请与加入:用户可以轻松邀请他人加入虚拟环境,降低了技术门槛,提高了使用的便捷性。
1.3 neko使用场景
-
Web 开发与测试:Neko 为开发人员提供了一个理想的环境来测试网页应用的不同版本或功能,尤其是在需要隔离测试条件以避免本地环境干扰时。它支持多用户协作,使得团队成员可以共同审查代码更改,进行实时调试,以及在不同平台和浏览器配置下验证应用兼容性。
-
安全浏览与隐私保护:对于注重隐私的用户,Neko 提供了一个增强安全性的浏览选项。通过在隔离的容器中运行浏览器,用户的浏览历史、cookies 和其他敏感信息不会保存在本地设备上,有效防止了数据泄露和跟踪,特别适合处理敏感信息或在公共网络环境下上网。
-
数字营销与广告测试:市场营销人员可以利用 Neko 来模拟不同地理位置的用户浏览习惯,进行广告投放效果测试、SEO 优化分析,以及监控竞争对手的在线活动,所有这些都在不影响个人浏览记录的情况下完成。
-
教育与培训:教育机构可以利用 Neko 举办线上课程,特别是在教授网络技术、网络安全或需要学生集体参与在线实验的课程中。教师可以广播自己的浏览器会话给全班,学生也能在各自的环境中跟随操作,促进了互动学习。
-
远程工作与团队协作:Neko 使远程团队能够共享一个浏览器环境工作,方便进行项目演示、网页审查、内容创作讨论等,提高了团队协作效率,减少了因技术配置不一致导致的沟通障碍。
-
产品演示与客户服务:销售团队和客服代表可以使用 Neko 进行产品演示,实时展示网站功能或解决客户问题,而无需客户下载任何软件或共享他们的屏幕,增强了客户体验和信任。
-
安全审计与渗透测试:网络安全专业人员可以利用 Neko 在受控环境中执行安全审计和渗透测试,评估 Web 应用的安全漏洞,而不危及实际生产系统或留下痕迹。
-
临时浏览需求:对于那些偶尔需要访问特定网站但不想在常用浏览器留下痕迹的用户,Neko 提供了一个快速、便捷的解决方案,满足一次性或短期的匿名浏览需求。
二、本地环境介绍
2.1 本地环境规划
本次实践为个人测试环境,操作系统版本为centos7.6。
hostname | IP地址 | 操作系统版本 | Docker版本 |
---|---|---|---|
jeven | 192.168.3.166 | centos 7.6 | 2 20.10.17 |
2.2 本次实践介绍
1.本次实践部署环境为个人测试环境,生产环境请谨慎;
2.使用Docker部署neko虚拟共享浏览器。
三、本地环境检查
3.1 检查Docker服务状态
检查Docker服务是否正常运行,确保Docker正常运行。
[root@jeven neko]# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since Sun 2024-05-12 08:34:14 CST; 11h ago
Docs: https://docs.docker.com
Main PID: 11565 (dockerd)
Tasks: 23
Memory: 153.6M
CGroup: /system.slice/docker.service
3.2 检查Docker版本
检查Docker版本
[root@jeven ~]# docker -v
Docker version 20.10.17, build 100c701
3.3 检查docker compose 版本
检查Docker compose版本,确保2.0以上版本。
[root@jeven ~]# docker compose version
Docker Compose version v2.6.0
四、下载neko镜像
在docker hub镜像仓库中拉取neko镜像,本次使用火狐内核版本
m1k1o/neko:firefox
,其余可选择谷歌内核版本m1k1o/neko:chromium
,树莓派版本m1k1o/neko:arm-chromium
等。
[root@jeven neko]# docker pull m1k1o/neko:firefox
firefox: Pulling from m1k1o/neko
Digest: sha256:9ed6532d88b1ccf7645e6c1938bb4024cb6ea62729e2125d3acd511aea93bb7a
Status: Image is up to date for m1k1o/neko:firefox
docker.io/m1k1o/neko:firefox
五、部署署neko应用
5.1 创建部署目录
创建部署目录
/data/neko/
mkdir -p /data/neko/ && cd /data/neko/
5.2 编辑docker-compose.yml文件
如果使用docker-cli直接部署,可参考以下命令。主要修改
NEKO_NAT1TO1
为自己服务器IP地址,其余部分可根据下面给的环境变量说明自行修改。
docker run -d \
--restart always \
--name neko \
--shm-size="2gb" \
-p 9800:8080 \
-p 52000-52100:52000-52100/udp \
-e NEKO_PASSWORD='neko' \
-e NEKO_PASSWORD_ADMIN='admin' \
-e NEKO_NAT1TO1=192.168.3.166 \
-e NEKO_SCREEN=1920x1080@30 \
-e NEKO_ICELITE=1 \
-e NEKO_EPR=52000-52100 \
m1k1o/neko:latest
编辑docker-compose.yml文件
version: "3.8"
services:
neko:
image: "m1k1o/neko:firefox"
container_name: "neko"
restart: "always"
shm_size: "2gb"
ports:
- "9800: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` 如果不需要启用文件传输功能 |
5.3 创建neko容器
- 使用docker-compose.yaml文件创建neko容器
docker compose up -d
5.4 检查neko容器状态
检查neko容器状态,确保neko容器正常启动。
[root@jeven neko]# docker compose ps
NAME COMMAND SERVICE STATUS PORTS
neko "/usr/bin/supervisor…" neko running (healthy) 0.0.0.0:9800->8080/tcp, 0.0.0.0:52000-52100->52000-52100/udp, :::9800->8080/tcp, :::52000-52100->52000-52100/udp
六、访问neko首页
6.1 进入neko初始页
访问地址:
http://192.168.3.166:9800
,将IP替换为自己服务器IP地址,进入到neko初始页初始页。如果无法访问,则检查服务器防火墙是否设置,云服务器的安全组端口是否放行等。
6.2 登录neko
输入我们设置的登录账号密码admin/admin,如果使用其他普通用户则账号密码为
xxx/neko
。
6.3 访问测试
- 开启键盘鼠标操作
我们在浏览器,输入网址,这里输入本人CSDN博客地址进行测试。
6.4 其他用户访问
我们在另外浏览器或者电脑打开:
http://192.168.3.166:9800
,输入账户名密码:jeven/neko。
我们在聊天区域,发送信息。
我们再返回到admin用户下,可以成功看到jeven用户发送的信息。
七、总结
Neko 是一款创新的虚拟浏览器解决方案,巧妙地结合了Docker容器技术和WebRTC通信协议,为用户提供了一个强大、灵活且安全的在线浏览平台。它的核心价值在于创造了一个与本机系统隔离的沙盒环境,让用户能够在任何地点安全私密地访问网络资源,而不用担心数据泄露或隐私侵犯。Neko不仅适用于开发者进行Web应用测试,也非常适合注重隐私的普通用户、远程协作团队,以及需要高性能、低延迟在线交互的各类应用场景,如观看派对、在线教学和企业演示等。其便捷的多用户访问控制和丰富的定制化选项,进一步提升了用户体验和工作效率。
- 点赞
- 收藏
- 关注作者
评论(0)