PRIVAD
PRIVAD
私有扩展商店

打包上架

在浏览器里直接把本地扩展打包成可侧载的 CRX3 安装包。全程本机完成,私钥不上传、不离开页面。

为什么这里能打包。CRX3 只是「ZIP + Protobuf 头 + RSA 签名」,浏览器用WebCrypto 就能完整实现,不需要后端。 私钥以 CryptoKey 形式存在页面内,不会发往任何服务器——刷新页面即失效。

操作流程

  1. 选择扩展目录

    选直接包含 manifest.json 的那一层(同命令行 extensions/<id>/)。顶层目录名会自动剥掉。
    点击选择目录,或把文件夹拖到这里
    也可直接拖入单个扩展文件夹 · 支持多文件选择
    • 选择签名密钥

      用已有私钥(tools/keys/<id>.pem)可保持扩展 ID 不变,已安装用户才能覆盖升级; 首次上架可点「生成新密钥」。
      粘贴后失焦即自动加载。
    • 填写商店信息

      用于商店首页与详情页展示。扩展 ID 决定文件名与上架地址,创建后不建议更改。
      小写字母/数字/连字符,如 gk-resource-center
      用英文逗号分隔,如:PDF, 内嵌浏览, 工控
    • 生成产物

      产出 CRX3 安装包、ZIP 离线包、update.xml 更新清单,以及一份 store.json 商店元数据。
    • 上传到商店(一步生效)

      产物打包后直接上传到云端存储,无需再手动搬文件、无需重新部署—— 上传成功后商店首页立刻出现该扩展。签名始终在本机完成,服务器只接收已签名的包。
      与云函数环境变量 PUBLISH_TOKEN 一致。令牌不对会返回 401。

    两种上架方式

    推荐用云端上传:打包后一步生效,无需搬文件、无需重新部署。

    方式一 · 云端上传(推荐)。在上面第5 步填入发布令牌,点「上传到商店」—— 产物直接进云端存储,商店首页立即生效,不需要重新部署。适合日常发布。
    方式二 · 命令行(适合多扩展与批量)。把扩展源码放进项目的 extensions/<id>/(含store.json 商店元数据),然后跑一条命令, 全自动完成打包、校验、入库、部署:
    node tools/publish.js
    edgeone makers deploy _deploy -n privad
    产物由 publish.js 汇总成 dist/catalog.json,云端条目与之自动合并。 不要手改 catalog.json,它是构建产物。

    发布令牌从哪来

    令牌由你在服务端配置,浏览器端只做比对。首次配置:

    # 1) 生成一个随机令牌并保存好(只显示一次)
    node -e "console.log(require('crypto').randomBytes(16).toString('hex'))"
    
    # 2) 写入 EdgeOne Makers 项目环境变量(生产环境)
    edgeone makers env set PUBLISH_TOKEN <你的令牌> -e production
    
    # 3) 重新部署让云函数读到新环境变量
    node tools/publish.js && edgeone makers deploy _deploy -n privad

    然后把令牌粘到打包页第 5 步即可。未配置该环境变量时上传接口会自动禁用,不会「忘配=裸奔」。

    令牌等同于发布权限。谁拿到它就能往商店上传扩展。服务端用的是定长比较避免时序侧信道, 但仍建议:只在可信机器上粘贴、发现泄露立刻 env set 换一个。

    云端存储怎么组织

    平台没有数据库,用对象存储的 key 前缀建模。

    ext/<id>/<id>-<ver>.crx        安装包(云端直接下发二进制,不经转码)
    ext/<id>/<id>-<ver>.zip
    ext/<id>/<id>-update.xml       更新清单(codebase 由服务端改写为真实域名)
    meta/<id>.json                 商店元数据:名称/分类/权限用途/更新历史

    关于私钥安全

    这个页面部署在公网上。虽然代码不会主动上传私钥,但为稳妥起见,建议在本机打开本地构建产物使用打包功能 (node tools/publish.js 后,用任意静态服务器打开 _deploy/package.html),避免在公共设备上处理私钥。
    PRIVAD · 自建私有扩展商店