安全内网下 AI 自主看屏幕操控电脑
以下是已在 Ubuntu 主机 100.64.0.1 和 Windows Edge 验证的私有 CA 方案。证书中的域名和 IP、Nginx 配置中的监听地址及域名都要按实际部署修改。私有 CA 不依赖公网续签,但每台访问设备都必须信任它。
-
在管理员电脑的仓库外私有目录中用 OpenSSL 创建 CA 和网站证书。CA 私钥
root-ca.key只留在管理员电脑,妥善备份,不要复制到服务器或提交到 Git。以下命令可在 Linux shell 或 Windows Git Bash 中运行:openssl req -x509 -newkey rsa:3072 -noenc -sha256 -days 3650 \ -keyout root-ca.key -out root-ca.crt -subj '/CN=ChatKVM Private Root CA' \ -addext 'basicConstraints=critical,CA:TRUE' \ -addext 'keyUsage=critical,keyCertSign,cRLSign' openssl req -new -newkey rsa:2048 -noenc -sha256 \ -keyout server.key -out server.csr -subj '/CN=app.chatkvm.com' \ -addext 'subjectAltName=DNS:app.chatkvm.com,IP:100.64.0.1' \ -addext 'extendedKeyUsage=serverAuth' \ -addext 'keyUsage=critical,digitalSignature,keyEncipherment' openssl x509 -req -in server.csr -CA root-ca.crt -CAkey root-ca.key \ -CAcreateserial -out server.crt -days 365 -sha256 -copy_extensions copy
-
将
server.crt和server.key通过 SSH 传到服务器上仅部署用户可访问的暂存目录,例如~/.cache/chatkvm-pki/。在服务器的 ChatKVM 项目目录执行:sudo apt update sudo apt install nginx sudo install -d -m 700 /etc/ssl/chatkvm sudo install -m 644 ~/.cache/chatkvm-pki/server.crt /etc/ssl/chatkvm/server.crt sudo install -m 600 ~/.cache/chatkvm-pki/server.key /etc/ssl/chatkvm/server.key sudo install -m 644 scripts/nginx-chatkvm.conf /etc/nginx/sites-available/chatkvm sudo ln -s /etc/nginx/sites-available/chatkvm /etc/nginx/sites-enabled/chatkvm sudo install -d -m 755 /etc/systemd/system/nginx.service.d sudo install -m 644 scripts/nginx-chatkvm-override.conf /etc/systemd/system/nginx.service.d/chatkvm.conf sudo systemctl daemon-reload sudo nginx -t sudo systemctl enable --now nginx sudo systemctl reload nginx
证书安装后删除服务器暂存目录中的私钥副本。若 Nginx 只服务 ChatKVM,可停用其默认 HTTP 站点。覆盖配置让 Nginx 在 xEdge 的
tailscaled启动后运行,并在绑定虚拟网地址失败时重试;如果不使用该服务,按实际网络服务修改或省略覆盖配置。 -
安装 服务模板并启动 ChatKVM:
mkdir -p ~/.config/systemd/user install -m 644 scripts/chatkvm.service ~/.config/systemd/user/chatkvm.service systemctl --user daemon-reload systemctl --user enable --now chatkvm systemctl --user restart chatkvm
模板假定项目位于
~/chatkvm;Streamlit 只监听127.0.0.1:8501,外部设备通过 Nginx 的443端口访问,不再直接开放 HTTP8501。重启或无人登录后仍需运行时,可执行sudo loginctl enable-linger "$(whoami)"。 -
在访问设备上安装并信任
root-ca.crt,然后打开https://100.64.0.1/或已解析到该地址的https://app.chatkvm.com/,点击输入框中的麦克风并允许权限。Windows 可将根证书导入“当前用户 → 受信任的根证书颁发机构”;iPhone 手动安装证书描述文件后,还需在“设置 → 通用 → 关于本机 → 证书信任设置”中开启完全信任。不要通过忽略浏览器证书警告来使用录音。
在已信任 CA 的 Windows Edge 中,https://100.64.0.1/ 页面已验证可正常打开;iPhone 上的麦克风录音与识别仍需在该设备上实测。
域名访问还取决于客户端 DNS:联网时可使用指向虚拟网 IP 的公网 A 记录,完全离线时需自建内网 DNS 或配置 hosts。部分代理的假 IP DNS 也会影响解析。网站证书到期前要用保留的 CA 私钥重新签发并替换服务器证书;本方案不在服务器保存 CA 私钥,也不自动续签。