跳转到内容

运行方式与自部署

Snow Cues 是纯前端应用,可以通过不同方式运行。多数用户直接使用官方 HTTPS 部署即可;自部署适合希望控制分发环境、固定版本、内部统一入口,或在源码 / 构建期扩展算法注册表的用户和维护者。

这篇文档先说明 Snow Cues 有哪些运行方式,再说明为什么需要自部署、如何自部署,以及自部署不会改变哪些安全边界。

运行方式推荐程度适合场景主要优点主要限制
官方 HTTPS 部署推荐大多数用户不需要维护部署,安全上下文稳定依赖官方分发入口
官方 HTTPS 安装的 PWA推荐常用设备和移动端入口像应用一样打开,仍使用官方 HTTPS仍来自官方部署
自部署 HTTPS 静态站点高级用户推荐个人或组织控制分发环境可固定版本、审计构建、控制域名需要自己维护部署和升级
localhost / 127.0.0.1开发推荐本地开发和调试浏览器通常视为安全上下文不适合作为正式共享入口
普通局域网 HTTP不推荐临时测试配置简单WebCrypto 或文件访问能力可能不可用
file:// 直接打开 HTML不推荐无服务环境直接打开ES module、WebCrypto、文件访问可能失败
移动端 App 内置浏览器不推荐从聊天或其他 App 打开链接入口方便安全上下文和 WebCrypto 能力不稳定

正式使用建议选择 Chrome、Edge 等 Chromium 系浏览器。其他浏览器可以尝试,但不作为主要推荐环境。

普通用户优先选择:

  1. 官方 HTTPS 部署。
  2. 由官方 HTTPS 地址安装的 PWA。

需要控制分发环境的用户选择:

  1. 自部署到可信 HTTPS 静态站点。
  2. 在升级前先验证旧 storageData 和规则链兼容性。

开发或调试选择:

  1. localhost
  2. 127.0.0.1

直接打开 file:// HTML 看起来简单,但不适合作为正式运行方式。

原因包括:

  • WebCrypto 能力依赖安全上下文。
  • ES module 和静态资源路径可能受限。
  • File System Access API 可能不可用。
  • 移动端和内置浏览器限制更多。

如果浏览器阻断 WebCrypto、模块加载或文件访问能力,Snow Cues 会无法完成敏感操作。

自部署的主要价值不是“把用户数据放到服务器”,而是控制前端应用的分发方式。

你可能需要自部署,如果你希望:

  • 减少对官方分发地址的依赖。
  • 固定某个版本,避免自动跟随官方更新。
  • 在组织内部提供统一入口。
  • 审计源码并自行构建。
  • 控制访问域名、网络环境或发布节奏。
  • 在源码 / 构建期扩展算法注册表。

自部署可以带来这些实际好处:

  • 运行入口由自己控制。
  • 可以固定版本,先测试再升级。
  • 可以部署在组织内部可信域名。
  • 可以保留纯静态前端模型,不引入服务端数据托管。
  • 可以在源码层扩展算法模板。

自部署不会改变 Snow Cues 的核心边界:

  • 不会自动备份 storageData
  • 不会提供空间主密码或关键密钥找回。
  • 不会提供云同步。
  • 不会自动合并冲突。
  • 不会让非 Chromium 浏览器变成推荐环境。
  • 不会允许运行时导入任意算法代码。
  • 不会让服务端参与密码派生。

不要把自部署理解为“搭建自己的密码托管服务器”。Snow Cues 的业务数据仍应由用户显式打开、保存、同步和备份。

自部署前先确认:

  • 你是否愿意维护 HTTPS 静态站点。
  • 你是否能保证部署产物来源可信。
  • 你是否能在升级前测试旧数据。
  • 你是否需要固定版本。
  • 你是否需要内部统一入口。
  • 你是否有能力维护自定义算法构建。

如果这些问题都不重要,直接使用官方 HTTPS 部署通常更合适。

推荐部署到 HTTPS 静态托管环境,例如:

  • Cloudflare Pages
  • Netlify
  • Vercel
  • GitHub Pages
  • 自维护 HTTPS 静态服务

不建议把普通局域网 HTTP、移动端 App 内置浏览器或直接打开 file:// HTML 作为正式运行方式。

在项目目录中安装依赖并构建:

Terminal window
npm install
npm run build

构建产物会输出到 dist/。将 dist/ 作为静态站点根目录部署即可。

部署后应检查:

  1. 站点通过 HTTPS 访问。
  2. 在 Chrome、Edge 等 Chromium 系浏览器中打开。
  3. 应用页面能正常加载。
  4. WebCrypto 相关操作没有被浏览器阻断。
  5. 新建或打开 storageData 的流程能正常完成。

构建后可以本地预览:

Terminal window
npm run preview

本地开发和预览可使用 localhost127.0.0.1。这不等同于正式部署;正式部署仍建议使用 HTTPS。

自部署站点和官方站点一样,只负责分发前端应用。

用户仍然需要自己管理:

  • storageData
  • 空间主密码
  • 单条密码的关键密钥
  • 导出备份
  • Syncthing 等外部同步工具

更新自部署版本前,建议:

  1. 先备份现有 storageData
  2. 阅读版本说明,尤其是规则链、导入 Rule、params 或存储格式相关变化。
  3. 在测试空间中验证新版本能正常进入空间、查看条目和保存数据。
  4. 再替换正式静态产物。

如果某个空间规则使用了 params,不要再用不支持 params 的旧版本打开和维护该空间。

官方构建只包含项目维护者审计过的规则算法模板。自部署版本可以在源码 / 构建期扩展算法注册表并自行构建。

这个能力适合:

  • 组织内部固定使用一组经过内部审计的派生算法模板。
  • 个人 fork 后加入官方版本暂未提供的 WebCrypto 或 WASM-backed 算法。
  • 在不修改业务数据主体模型的前提下,让声明式导入规则选择更多源码内置模板。

不支持:

  • 让用户在页面中粘贴 JavaScript、表达式、WASM URL 或远程脚本。
  • storageData 携带算法代码。
  • 通过 URL 参数决定运行哪个算法实现。
  • 通过远程规则市场或第三方 JSON 动态下发算法。

自部署构建和官方构建可能使用不同算法注册表。使用自部署专有算法创建的空间,必须继续使用包含该算法的构建打开;官方构建无法使用未注册算法维护该空间。

自部署方需要自己负责:

  • 静态站点托管和 HTTPS 配置。
  • 构建产物的来源可信度。
  • 浏览器兼容性验证。
  • 自部署专有算法的安全性、性能和长期维护。
  • 向使用者说明当前构建包含哪些算法模板。
  • 在升级前验证旧 storageData 和规则链兼容性。