# Neko 一键部署脚本 当前目录包含两个文件: - `deploy-neko.sh`: 运行在 Linux 服务器上的交互式部署脚本。 - `run_remote_deploy.py`: 在本机 Windows 上通过 SSH 上传并启动 `deploy-neko.sh`。 ## 已实现的目标 1. `x86_64` 默认部署 `ghcr.io/m1k1o/neko/google-chrome:latest`,`arm64` 自动切换 `ghcr.io/m1k1o/neko/chromium:latest`。 2. 自动覆盖 Neko 镜像自带的 Chromium/Chrome policy 为 `{}`,去掉默认企业管控。 3. 首次启动通过 `initial_preferences/master_preferences` 预装 Tampermonkey,并打开扩展开发者模式。 4. 默认账号固定为: - 普通用户: `live / 12345678` - 管理员: `admin / 12345678` 5. 每个实例独立目录、独立 profile、独立下载目录、独立用户文件、独立会话文件。 6. 自动探测下一个可用 HTTP 端口、Display 编号、WebRTC UDP 端口段。 7. 交互菜单内置实例 `创建 / 列表 / 启动 / 停止 / 重启 / 删除`,以及可选 `Portainer` Web 控制面板。 8. 默认尝试放行服务器本机防火墙端口(`ufw` / `firewalld`)。 ## 服务端直接使用 ```bash chmod +x ./deploy-neko.sh ./deploy-neko.sh ``` 常用命令: ```bash ./deploy-neko.sh list ./deploy-neko.sh create ./deploy-neko.sh start --name neko-1 ./deploy-neko.sh stop --name neko-1 ./deploy-neko.sh restart --name neko-1 ./deploy-neko.sh remove --name neko-1 ./deploy-neko.sh portainer ``` 如果想先生成配置、不真正启动容器: ```bash ./deploy-neko.sh create --name smoke-test --yes --dry-run ``` ## Windows 本地一键上传并运行 本机已经有 `python` 和 `paramiko` 时,直接执行: ```powershell python .\run_remote_deploy.py ``` 也可以显式指定: ```powershell python .\run_remote_deploy.py --host 192.168.2.179 --user eric ``` 密码可用环境变量传入: ```powershell $env:NEKO_REMOTE_PASSWORD="你的SSH密码" python .\run_remote_deploy.py ``` ## 目录结构 默认所有实例都落在: ```text ~/neko-instances/<实例名>/ ``` 每个实例至少包含: - `docker-compose.yml` - `browser.conf` - `browser-prefs.json` - `policies.json` - `members.json` - `sessions.json` - `profile/` - `downloads/` ## 我对 YouTube 直播环境的建议 脚本已经尽量把容器环境往“真实长期使用的浏览器”方向收: - 使用真 Chrome(x86)而不是无头浏览器。 - 不使用 Selenium、Puppeteer、`--enable-automation`、`--remote-debugging-port` 这类明显自动化痕迹。 - 关闭 Neko 默认浏览器管控,保留独立持久化 profile,让 Cookie、登录态、浏览历史长期稳定。 - 保持固定实例、固定账号、固定 profile,不要频繁删容器和清 profile。 - 让服务器 `TZ`、语言、登录地区、出口 IP 长期稳定。 但要直接说明: `Google/YouTube 是否降权` 不能靠容器脚本“保证”。最关键的还是: - 出口 IP 质量,优先住宅/稳定商宽,尽量避免脏数据中心 IP。 - 账号历史和行为稳定性,不频繁换设备特征、IP、语言、时区。 - 不要频繁重新登录、清 Cookie、重建 profile。 - 如果有反向代理,尽量上 HTTPS,避免纯 HTTP 下的会话和风控问题。 ## 额外说明 - 现在脚本为了满足“权限尽量放开”的要求,容器使用了 `privileged: true` 和 `seccomp=unconfined`。功能上最省事,但安全边界最弱,只建议在你自己可控的服务器上使用。 - 如果后续你要继续极限优化,我建议下一步增加: - 反向代理 + HTTPS - 住宅代理 / 固定出口 IP - 按实例自动生成二级域名 - GPU 加速镜像切换逻辑 - 自动备份 `profile/` 与 `members.json`