【免费下载链接】flowkit
AI agent can create video content better than you. No reason why you do it manually in google flow!
FlowKit 是一套用 AI agent 自动化 Google Flow 视频创作的开源系统,由本地 FastAPI 服务、Chrome 扩展桥和 Web Dashboard 组成。本文讲解FlowKit 安全部署的三大要点——端口隔离、反向代理与远程集成,帮助你在不暴露任何服务的前提下,稳定运行这套 AI 视频生成工作流。
一、部署前必知:FlowKit 的 4 个端口
安全部署的第一步是认清每个端口的职责。FlowKit 默认全部监听本地回环地址127.0.0.1,天然隔离在局域网之外,这一设计直接来自 agent/config.py:
| 服务 | 默认端口 | 默认监听 | 用途 |
|---|---|---|---|
| REST API | 8100 | 127.0.0.1 | 项目 / 场景 / 生成请求的 CRUD 接口 |
| 扩展 WebSocket | 9222 | 127.0.0.1 | Chrome 扩展与 Python agent 的通信桥 |
| Dashboard 开发服务器 | 5173 | localhost | Vite 开发服务器(仅开发时需要) |
| muse2api 网关 | 18610 | 127.0.0.1 | 可选的独立媒体网关(需自行部署) |
🛡️ 核心原则:不要主动扩大监听范围。
API_HOST/WS_HOST保持默认值127.0.0.1,攻击面即为零。
二、端口隔离:127.0.0.1 就是最小攻击面
FlowKit 有一个特殊约束:Chrome 扩展在 extension/background.js 中硬编码了ws://127.0.0.1:9222,并且所有 Flow 生成请求必须在已登录flow.google.com的浏览器标签页内签名发出。这意味着:
- 安装了扩展的 Chrome 与 FlowKit agent必须运行在同一台机器上;
- 端口
9222和8100永远不需要对外网开放,隔离是架构层面的,而非可选配置。
扩展连接成功后,用一条命令即可验证本机服务状态:
curl http://127.0.0.1:8100/health # {"status":"ok","extension_connected":true}安全建议:
- ✅ 保持默认监听地址,任何需要远程访问的场景都通过"代理"或"隧道"解决(见下文);
- ✅ 使用 setup.sh 一键完成环境检查与 venv 创建,减少手工配置出错;
- ❌ 避免随手设置
API_HOST=0.0.0.0——除非你明确知道要暴露什么、由谁保护。
三、反向代理:让 Dashboard 与 API 同域、带 TLS
开发环境:Vite 代理已内置
Dashboard 在开发模式下走 Vite 反向代理,dashboard/vite.config.ts 将/api、/ws、/health转发到http://127.0.0.1:8100。浏览器始终只访问 Dashboard 自身地址,8100 端口对浏览器"隐身"。
生产环境:同源 WebSocket + 服务端 Origin 校验
Dashboard 的实时事件流采用同源连接策略——dashboard/src/api/useWebSocket.ts 根据页面协议自动选择ws:或wss:,并连接到当前站点自身的/ws/dashboard。服务端还做了第二道防线:agent/main.py 会拒绝 Origin 不是127.0.0.1/localhost/chrome-extension://的跨源 WebSocket 连接。
如果确实需要让团队通过浏览器访问 Dashboard,推荐用Nginx / Caddy 反向代理 + TLS终结在 8100 之前,而不是直接开放端口:
server { listen 443 ssl; # ssl_certificate ...; location / { proxy_pass http://127.0.0.1:8100; } location /ws/dashboard { proxy_pass http://127.0.0.1:8100; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }⚠️ 注意:FlowKit 的 CORS 中间件配置较为宽松(agent/main.py 允许所有来源),因此访问控制务必交给代理层完成——在 Nginx 层做 IP 白名单、Basic Auth 或 Cloudflare 隧道,比修改应用代码更稳妥。
四、远程集成:SSH 隧道 + 密钥管理
SSH 隧道:远程机器的标准姿势
由于扩展必须与 agent 同机运行,"远程集成"的正确姿势是:agent 跑在服务器(上面装有 Chrome 和已登录的 Flow 标签页),你的工作机通过 SSH 隧道把端口拉回本地:
# 把服务器上的 8100 / 9222 映射到本地,隧道之外零暴露 ssh -L 8100:127.0.0.1:8100 -L 9222:127.0.0.1:9222 user@your-server隧道建立后,本地的 Dashboard、curl、AI agent 技能脚本都照常使用127.0.0.1,无需改任何配置。断开隧道即收回全部访问权限。
密钥与凭据管理
FlowKit 涉及多处敏感凭据,部署时请遵循以下清单:
| 凭据 | 来源 | 安全要点 |
|---|---|---|
| 扩展回调密钥 | 服务端每次启动自动生成 | 由 agent/main.py 以token_urlsafe(32)随机生成,经 WebSocket 下发,无需人工管理 |
MUSE2API_KEY | muse2api 网关 | 以Authorization: Bearer发送,通过环境变量注入,勿写入代码 |
ANTHROPIC_API_KEY/SUNO_API_KEY | 第三方 API | 一律使用环境变量;agent/config.py 已按此方式读取 |
| YouTube OAuth 凭据 | 本地文件 | 存放于youtube/channels/<channel>/(已 gitignore),切勿提交到仓库 |
systemd 部署的额外注意:若使用PrivateTmp=yes做服务隔离,调用方与 FlowKit 看到的/tmp不是同一个——此时外部调用方应使用 multipart 上传端点(POST /api/flow/upload-image-file)传文件,而不是file_path本地路径模式,详见 README.md。
五、部署后自检清单
按顺序执行以下检查,全部通过即可放心投入生产:
curl http://127.0.0.1:8100/health返回extension_connected: truess -lntp | grep -E ':(8100|9222)'确认两个端口只绑定127.0.0.1- 代理链路下 HTTPS 证书有效,
/ws/dashboard可正常握手(即wss可用) - 仓库内无 API Key、OAuth token 等敏感文件
- 限流参数符合预期:
FLOW_MAX_CONCURRENT(默认 5)与FLOW_COOLDOWN_S(默认 10 秒)可防止触发 Google 的异常活动风控(PUBLIC_ERROR_UNUSUAL_ACTIVITY),保护你的账号
小结
FlowKit 的安全部署可以浓缩为三句话:
- 端口隔离:保持
8100/9222只监听127.0.0.1,这是架构默认值,不要打破它; - 代理访问:所有对外访问经 Nginx / Caddy 反向代理终结 TLS,访问控制放在代理层;
- 隧道远程:远程机器用 SSH 本地端口转发,密钥只走环境变量。
遵循这套 FlowKit 安全部署实践,你既能享受 AI agent 全自动生成视频的效率,又把整个系统牢牢锁在本机回环地址之内。
【免费下载链接】flowkit
AI agent can create video content better than you. No reason why you do it manually in google flow!
相关推荐
Jupyter-TabNine未来展望:AI代码补全技术的发展趋势与应用前景
Jupyter TabNine未来展望:AI代码补全技术的发展趋势与应用前景 Jupyter TabNine作为一款基于深度学习的Jupyter Noteboo
Terminal-Icons主题系统完全指南:创建个性化终端界面
Terminal Icons主题系统完全指南:创建个性化终端界面 Terminal Icons是一款强大的PowerShell模块,它能为你的终端带来生动的文件
开发工具Home Assistant完整教程:如何快速搭建你的智能家居中枢系统
Home Assistant完整教程:如何快速搭建你的智能家居中枢系统 还在为家里各种品牌的智能设备无法统一管理而烦恼吗?小米、苹果、谷歌、亚马逊的设备各自为政
文档教程
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考