核心用法
WebChat HTTPS Proxy 是专为 OpenClaw 语音交互系统设计的反向代理基础设施组件,主要解决浏览器安全策略(CORS、Mixed Content)与本地语音网关的桥接问题。部署后默认在 127.0.0.1:8443 提供 HTTPS 服务,自动完成以下三件事:
1. 静态资源服务:托管 WebChat Control UI 单页应用(SPA),支持前端路由回退;
2. WebSocket 透传:将 WSS 连接降级代理到本地网关的明文 WebSocket (ws://127.0.0.1:18789);
3. 转录端点代理:把 /transcribe 请求转发至 faster-whisper 本地服务,支持浏览器同源认证或 Bearer Token 回退。
部署通过单一脚本完成,支持通过环境变量 VOICE_HOST 和 VOICE_HTTPS_PORT 自定义绑定地址与端口。首次运行自动生成自签名 TLS 证书(RSA 2048),私钥权限严格设为 600。
显著优点
- 零 root 依赖:完全运行在用户命名空间,通过 systemd user instance 持久化,适合受限环境(企业笔记本、容器内嵌)
- 安全默认配置:TLS 1.2+ 强制、SSRF 防护(仅允许 localhost 上游)、路径遍历防护(
realpath校验)、50MB 上传限制、120s 上游超时 - 幂等部署:重复执行
deploy.sh不会重复生成证书或破坏现有配置,适合 CI/CD 或配置管理工具 - 细粒度 CORS:仅允许单一显式配置的 origin,拒绝通配符与畸形输入,降低 CSRF 面
- 无遥测:零出站网络调用,无埋点、无版本检查,隐私可控
潜在局限
- 自签名证书 UX:首次访问必现浏览器证书警告,需用户手动信任或企业 CA 签名替换
- 单 origin 限制:不支持多域名同时访问,跨设备场景需统一配置
VOICE_HOST为 LAN IP - 依赖 systemd:非 systemd 发行版(如某些容器镜像、WSL1)需手动适配启动逻辑
- Python 版本锁定:要求 aiohttp ≥3.9.0,旧版系统包可能需 venv 隔离
- 无内置高可用:单进程模型,故障需依赖 systemd restart,无负载均衡或健康检查端点
适合人群
- 已部署 OpenClaw 语音网关、希望为 WebChat UI 添加 HTTPS 封装的现有用户
- 需要在受控 LAN 环境(如家庭服务器、会议室主机)共享语音控制界面的进阶用户
- 对系统权限敏感、拒绝 sudo 的开发者或企业合规环境
常规风险
- LAN 暴露风险:一旦设置
VOICE_HOST为非 127.0.0.1 地址,整个服务暴露于局域网,需确保网络边界可信 - Token 泄露:Bearer Token 通过 URL query (
?token=...) 首次传递,可能残留于浏览器历史或日志 - 证书管理:自签名证书无过期自动续期机制,长期运行需手动轮换
- 依赖链攻击:aiohttp/openssl 若存在 CVE,需用户手动更新宿主环境,无自动补丁机制