新闻详情

新闻详情

首页 / 资讯中心 / 详情

OpenMuse 安全部署指南:单用户边界、密钥静态加密与 HTTPS 远程访问最佳实践

发布时间:2026/10/1 16:29:32来源:尧图网络
OpenMuse 安全部署指南:单用户边界、密钥静态加密与 HTTPS 远程访问最佳实践
OpenMuse 安全部署指南单用户边界、密钥静态加密与 HTTPS 远程访问最佳实践【免费下载链接】openmuseA personal agent with a browser, terminal, files, and work that keeps going built with CopilotKit and AG-UI.项目地址: https://gitcode.com/gh_mirrors/op/openmuseOpenMuse 是一款自带浏览器、终端和文件能力的个人 AI 智能体应用。这篇文章是一份 OpenMuse 安全部署指南讲解单用户边界如何隔离、密钥静态加密AES-256-GCM如何落地、以及 HTTPS 远程访问的配置要点帮助你把这套个人智能体安全地跑在公网或内网远程环境。单用户边界一次部署只服务一个 Owner理解 OpenMuse 的安全模型第一件事就是认清它的边界每个部署实例只支持一个 Owner所有者。这不是功能缺失而是刻意设计——live 模式使用共享访问密钥并不是多租户账号认证系统见 SECURITY.md 的 Deployment boundary 一节。这个边界在代码里是硬性校验的sample 模式示例模式只允许绑定回环地址。HOST必须是127.0.0.1、localhost或::1否则配置加载直接失败——示例数据不能暴露到网络上见 config.ts#L151-L152 的强制检查。live 模式真实模式必须同时提供访问密钥和加密密钥OPENMUSE_ACCESS_KEY至少 24 字符TOKEN_ENCRYPTION_KEY为 32 随机字节的 base64 编码缺一则 API 拒绝启动见 config.ts#L144-L150。会话令牌按 SHA-256 摘要存储登录密钥比对使用timingSafeEqual恒定时间比较防时序攻击见 auth.ts#L15-L23。登录接口有速率限制60 秒内最多 30 次尝试超限返回 429。 推论如果你需要给多个人使用请部署多个实例、各自独立磁盘与密钥而不是指望共享一个实例。密钥静态加密32 字节密钥 AES-256-GCM连接 Gmail / Google Calendar 后OpenMuse 需要在你本机存储 OAuth 令牌access token、refresh token。这些令牌是账户钥匙OpenMuse 用信封式静态加密保护它们加密算法为AES-256-GCM输出格式v1.nonce.tag.ciphertext并绑定固定 AAD附加认证数据openmuse:credential:v1篡改任何字节都会解密失败见 vault.ts#L11-L23。密钥要求严格必须是恰好 32 字节且为规范 base64 编码否则直接抛错Credential encryption requires a 32-byte base64 key见 vault.ts#L3-L9。Google 令牌的每次保存都通过 compare-and-swap 写入并轮换 generation令牌过期时用 refresh token 换新后重新加密落盘见 google-auth.ts。生成一个合格密钥的常用命令任选其一openssl rand -base64 32 node -e console.log(require(crypto).randomBytes(32).toString(base64))⚠️TOKEN_ENCRYPTION_KEY丢失且磁盘备份也丢失时已保存的 Google 连接无法解密只能重新授权。请把密钥和.env一起纳入你的备份与保险库管理。短期签名 URL文件与浏览器控制台的 15 分钟通行证PDF 文件和接管浏览器控制台页面不走会话令牌而是走短期 HMAC-SHA256 签名 URL签名内容是owner 路径 过期时间戳由签名密钥生成 64 位十六进制签名有效期只有 15 分钟过期后返回 401提示Document link expired验证同样使用timingSafeEqual恒定时间比较防时序旁路见 auth.ts#L42-L66。签名密钥session-signing-key自动创建在数据目录下文件权限0600。官方提醒很直接一个签名 URL 在过期前就是凭证——不要把它贴进聊天群或公共截图见 SECURITY.md。浏览器 Worker私有令牌与网络边界负责读网页、截图和接管的 Chromium 进程运行在独立的浏览器 Worker 中它有两道防线令牌隔离除/health外所有接口都要求Authorization: Bearer WORKER_TOKEN且令牌必须至少 32 字符的随机值API 与 Worker 两端必须一致。Worker 令牌绝不能发给浏览器或移动端客户端见 apps/worker/README.md。网络隔离Docker Compose 把 Worker 端口只发布到127.0.0.1:8790容器cap_drop: ALL、只读根文件系统、no-new-privileges见 compose.yaml#L1-L31。Worker 内部还强制只允许公网 80/443 出口的代理检查内网地址一律拦截。在 Render 等平台部署时浏览器服务是私有服务pservAPI 通过内网http://openmuse-browser:8790调用它没有公网 URL见 render.yaml#L61-L77。HTTPS 远程访问live 模式的强制检查把 OpenMuse 部署到远程主机如 Render时render.yaml 给出了完整蓝图安全相关的核心配置如下环境变量谁设置安全作用WORKSPACE_MODElive蓝图解锁非回环绑定sample 模式禁止HOST0.0.0.0蓝图仅 live 模式允许OPENMUSE_ACCESS_KEY平台生成登录密钥缺失则无法签到TOKEN_ENCRYPTION_KEY平台生成静态加密密钥缺失则 API 拒绝启动WORKER_TOKEN平台生成浏览器 Worker 私有令牌PUBLIC_API_URL指向 API 的RENDER_EXTERNAL_URLHTTPS签名 URL、OAuth 回调都基于它ALLOWED_ORIGINS指向 Web 的RENDER_EXTERNAL_URL白名单之外 Origin 直接 403三个 HTTPS 要点PUBLIC_API_URL必须设置为公网 HTTPS 地址。所有文件/控制台的签名链接都以它为前缀填错会导致链接无法打开Google OAuth 回调地址也自动变成${PUBLIC_API_URL}/api/google/callback注册回调时要用同一个 HTTPS 地址。CORS 白名单必须收紧。服务器对每个请求校验Origin不在ALLOWED_ORIGINS内的来源直接返回 403 Origin is not allowed见 app.ts#L47-L55。响应头自带防护X-Content-Type-Options: nosniff、Referrer-Policy: no-referrer、Cache-Control: no-store见 app.ts#L51-L53。平台自带的 TLS 终结即可满足 HTTPS 要求自建反向代理Nginx/Caddy时也请保持证书有效并启用 HSTS。数据目录与磁盘.openmuse 请按机密保护API 进程所在的主机必须保持运行后台任务由它承担。磁盘里存着数据库、PDF 和签名密钥本地默认是.openmuse/数据库、files/PDF、session-signing-key与.openmuse/browser-profiles/浏览器档案Render 蓝图挂载 1 GB 磁盘到/var/dataDATA_DIR/var/data/openmuse重新部署不挂盘会清空数据浏览器档案里存有登录 Cookie 与已下载的 PDF官方明确要求它应与应用文档存储享有同等访问控制见 apps/worker/README.md 的 Persistence 一节。备份.env、数据目录、数据库与浏览器档案时请把它们当作账户密钥 个人文件一起加密保存。部署前安全检查清单 ️WORKSPACE_MODElive且HOST/OPENMUSE_ACCESS_KEY/TOKEN_ENCRYPTION_KEY齐全OPENMUSE_ACCESS_KEY≥ 24 字符TOKEN_ENCRYPTION_KEY为 32 字节 base64WORKER_TOKEN≥ 32 字符随机值API 与 Worker 一致PUBLIC_API_URL与ALLOWED_ORIGINS均为 HTTPS 地址且互相匹配Google 回调${PUBLIC_API_URL}/api/google/callback已注册.env、数据目录、浏览器档案已加密备份浏览器 Worker 无公网 URL私有服务或仅回环发布边界提醒最后重申这是单用户个人部署不是面向敌意租户的多租户系统Docker 共享宿主机内核不构成完整 VM 隔离。把它当作你自己的电脑 自己的账户来保护即可。更多验证范围与限制见 docs/VERIFICATION.md可选 Linux 容器的隔离细节见 docs/COMPUTER.md。【免费下载链接】openmuseA personal agent with a browser, terminal, files, and work that keeps going built with CopilotKit and AG-UI.项目地址: https://gitcode.com/gh_mirrors/op/openmuse创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

xterm.js 搜索插件 @xterm/addon-search 完整指南:API、搜索选项与源码级原理 2026/10/1 17:54:05

xterm.js 搜索插件 @xterm/addon-search 完整指南:API、搜索选项与源码级原理

前端UI组件 【免费下载链接】xterm.js A terminal for the web 项目地址: https://gitcode.com/GitHub_Trending/xt/xterm.js 点击查看 免费下载 本指南以 xterm/addon-search 官方 README 为骨架,系统讲解如何在 xterm.js 终端中实现缓冲区文本搜索&am…

阅读更多 →
微信聊天记录怎么导出到电脑?WeChatMsg 免费导出完全指南 2026/10/1 17:54:04

微信聊天记录怎么导出到电脑?WeChatMsg 免费导出完全指南

微信聊天记录怎么导出到电脑?WeChatMsg 免费导出完全指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/We…

阅读更多 →
告别无标题:项目命名与标题撰写的底层逻辑与实操方法 2026/10/1 17:53:58

告别无标题:项目命名与标题撰写的底层逻辑与实操方法

站在“无标题”面前:项目命名的底层逻辑与实操心法一个文件命名为“无标题.doc”,一个文件夹叫“新建文件夹”,一篇博文写着“无标题”——这事我们都干过。但如果你把一个真正要交付的项目、一个要上线推广的产品、一篇要发布的内容也长期挂…

阅读更多 →
概要设计与详细设计:从架构蓝图到代码落地的实战指南 2026/10/1 17:53:57

概要设计与详细设计:从架构蓝图到代码落地的实战指南

1. 先搞清楚这两份文档到底在解决什么问题很多人一听到“概要设计”和“详细设计”,第一反应就是“又要写文档了”,然后开始痛苦地凑字。我在项目里见过太多次这种场景——开发同学对着模板憋半天,写出来的东西既没指导价值,也没人…

阅读更多 →
主动配电网源-荷-储协同优化调度:模型、求解与工程实践 2026/10/1 17:53:57

主动配电网源-荷-储协同优化调度:模型、求解与工程实践

1. 源-荷-储协同互动的内涵与主动配电网的“主动”所在做配电网优化调度这几年,我最大的感受是:“源-荷-储”这三个字,看着简单,真正把它们的协同关系讲清楚、建模建明白、调度调度得动的人,并不多。很多刚接触这个方向…

阅读更多 →
Kubernetes HPA 实战:从原理到自动扩容配置与避坑指南 2026/10/1 17:53:57

Kubernetes HPA 实战:从原理到自动扩容配置与避坑指南

半夜两点被监控电话吵醒,登录集群一看,某个服务的 Pod 已经被流量打到 CPU 100%,而 Deployment 的副本数还停留在白天的两个。这种手动kubectl scale的运维方式,说到底就是拿人肉当控制器——反应慢、容易漏、凌晨尤其痛苦。Kuber…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉