自定义存储
复制一个包含安装步骤和此插件的完整Markdown指南的设置提示。
Capgo 支持自定义存储解决方案来为您的应用程序包提供支持,使您能够在自己的基础设施或第三方存储服务上托管更新。这对于具有特定安全要求、合规需求或现有存储基础设施的组织来说尤其有用。
Capgo 中的自定义存储通过将包上传到外部位置并向 Capgo 提供 URL 来工作,以便访问它。Capgo SDK 将从自定义存储位置下载更新,而不是从 Capgo 的默认云存储中下载。
External URL Upload
Section titled “External URL Upload”The simplest way to use custom storage is by uploading your bundle to any publicly accessible URL and providing that URL to Capgo.
Basic External URL Upload
Section titled “Basic External URL Upload”npx @capgo/cli@latest bundle upload --external https://your-domain.com/bundles/v1.2.3.zip本命令告知Capgo从指定的URL引用捆绑包,而不是将其上传到Capgo的云存储中。
加密
加密部分为了安全的外部存储,您可以对捆绑包进行加密并提供解密密钥:
npx @capgo/cli@latest bundle upload --external https://your-domain.com/bundles/v1.2.3.zip --iv-session-key YOUR_IV_SESSION_KEYS3集成
S3集成部分Capgo内置支持Amazon S3和S3兼容存储服务。CLI可以自动将捆绑包上传到S3并配置Capgo使用S3 URL。
S3上传选项
S3上传选项部分npx @capgo/cli@latest bundle upload \ --s3-region us-east-1 \ --s3-apikey YOUR_ACCESS_KEY \ --s3-apisecret YOUR_SECRET_KEY \ --s3-bucket-name your-bucket-name完成S3配置
标题:完成S3配置或自定义端点:
npx @capgo/cli@latest bundle upload \ --s3-region us-east-1 \ --s3-apikey YOUR_ACCESS_KEY \ --s3-apisecret YOUR_SECRET_KEY \ --s3-endpoint https://s3.your-provider.com \ --s3-bucket-name your-bucket-name \ --s3-port 443 \ --no-s3-ssl # Only if your endpoint doesn't support SSLS3配置参数
标题:S3配置参数| 参数 | 描述 | 必填 |
|---|---|---|
--s3-region | 您的S3存储桶所在的AWS区域 | 是 |
--s3-apikey | S3访问密钥ID | 是 |
--s3-apisecret | S3密钥 | 是 |
--s3-bucket-name | 您的S3存储桶名称 | 是 |
--s3-endpoint | 自定义S3端点URL | 否 |
--s3-port | S3端点端口 | 否 |
--no-s3-ssl | 禁用S3上传的SSL | No |
打包准备和加密
《打包准备和加密》当使用自定义存储,特别是加密时,您需要正确准备您的打包。 这涉及创建一个 zip 文件并可选地加密它。
步骤 1:创建 zip 打包
《步骤 1:创建 zip 打包》首先,创建一个 zip 文件的应用程序打包:
npx @capgo/cli@latest bundle zip com.example.app --path ./distzip 命令将返回 zip 文件的校验和。 您可以使用此校验和来加密 zip 文件,如果需要。 使用 --json 选项以获取结构化输出,包括校验和。
zip 命令选项
压缩命令选项npx @capgo/cli@latest bundle zip [appId] \ --path ./dist \ --bundle 1.2.3 \ --name myapp-v1.2.3 \ --json \ --no-code-check \ --key-v2 \ --package-json ../../package.json,./package.json| 选项 | 描述 |
|---|---|
--path | 压缩文件夹的路径(默认为capacitor.config中的webDir) |
--bundle | 打包版本号来命名压缩文件 |
--name | 自定义压缩文件名 |
--json | 以 JSON 格式输出结果(包括校验和) |
--no-code-check | 跳过检查 notifyAppReady() 调用和索引文件 |
--key-v2 | 使用加密 v2 |
--package-json | 多包项目的 package.json 文件路径(逗号分隔) |
第 2 步:加密打包文件(可选)
第 2 步:加密打包文件(可选)为了增强安全性,请在上传之前加密您的 zip 打包文件:
# Using default local keynpx @capgo/cli@latest bundle encrypt ./myapp.zip CHECKSUM
# Using custom key filenpx @capgo/cli@latest bundle encrypt ./myapp.zip CHECKSUM --key ./path/to/.capgo_key_v2
# Using key data directlynpx @capgo/cli@latest bundle encrypt ./myapp.zip CHECKSUM --key-data "PRIVATE_KEY_CONTENT"这个 CHECKSUM 参数是必需的,应为您的 zip 文件的校验和。您可以从 zip 命令输出中获取校验和(使用 --json 选项以获取结构化输出)。
默认情况下,加密命令将使用您的本地私钥。您可以使用 --key 或 --key-data 选项指定自定义密钥。
加密命令将返回 ivSessionKey 需要用于上传或解密。
加密命令选项
加密命令选项| 选项 | 描述 |
|---|---|
zipPath | 加密的 zip 文件路径(必填) |
checksum | zip 文件的校验和(必填)- 从 zip 命令获取 |
--key | 自定义私钥路径(可选,使用本地私钥) |
--key-data | 私钥数据(可选) |
--json | 输出结果以 JSON 格式 |
完整工作流程示例
名为“完整工作流程示例”的部分示例 1:带加密的外部 URL
名为“示例 1:带加密的外部 URL”的部分-
构建你的应用:
终端窗口 npm run build -
创建一个 zip 压缩包:
终端窗口 npx @capgo/cli@latest bundle zip com.example.app --path ./dist --bundle 1.2.3注意此命令返回的校验和。
-
加密包裹:
终端窗口 npx @capgo/cli@latest bundle encrypt ./com.example.app-1.2.3.zip CHECKSUM_FROM_STEP_2注意
ivSessionKey从输出中 -
上传到您的存储: 上传加密的zip文件到您的托管服务。
-
注册到 Capgo:
终端窗口 npx @capgo/cli@latest bundle upload \--external https://your-cdn.com/bundles/com.example.app-1.2.3.zip \--iv-session-key IV_SESSION_KEY_FROM_STEP_3
示例 2:直接 S3 上传
示例 2:直接 S3 上传的标题-
构建您的应用:
终端窗口 npm run build -
直接上传到 S3:
终端窗口 npx @capgo/cli@latest bundle upload \--s3-region us-west-2 \--s3-apikey YOUR_ACCESS_KEY \--s3-apisecret YOUR_SECRET_KEY \--s3-bucket-name your-app-bundles \--channel Production
示例 3:带加密的 S3
示例 3:带加密的 S3 的标题-
构建并压缩:
终端窗口 npm run buildnpx @capgo/cli@latest bundle zip com.example.app --path ./dist --key-v2 -
加密打包:
终端窗口 npx @capgo/cli@latest bundle encrypt ./com.example.app.zip CHECKSUM -
使用加密上传到 S3:
终端窗口 npx @capgo/cli@latest bundle upload \--s3-region us-west-2 \--s3-apikey YOUR_ACCESS_KEY \--s3-apisecret YOUR_SECRET_KEY \--s3-bucket-name your-app-bundles \--iv-session-key IV_SESSION_KEY_FROM_STEP_2 \--channel Production
安全考虑
安全考虑部分在使用自定义存储时,请考虑以下安全最佳实践:
访问控制
访问控制部分- 确保您的存储 URL 可以让您的应用用户访问,但不应公开可发现
- 在可能的情况下使用签名 URL 或基于令牌的身份验证
- 为基于 Web 的应用程序实现适当的 CORS 头
加密
加密部分- 始终使用 Capgo 加密工具加密敏感包
- 安全存储加密密钥并定期轮换
- 为所有包 URL 使用 HTTPS(移动和 Electron 应用程序所必需)
- 设置失败包下载的警报
- 设置失败包下载的警报
- 定期审查存储权限
Troubleshooting
Troubleshooting常见问题
Common IssuesBundle 未下载:
- 确认 URL 公开可访问且使用 HTTPS(对于移动和 Electron 应用程序必需)
- 检查 Web 应用程序的 CORS 头
- 确保包格式正确
加密错误:
- 确认
ivSessionKey与加密包匹配 - 检查打包是否使用正确的密钥进行加密
- 确保新打包使用加密 v2
S3 上传失败:
- 验证您的 S3 凭证和权限
- 检查桶策略和 CORS 配置
- 确保指定的区域是正确的
调试命令
调试命令检查打包状态:
npx @capgo/cli@latest app debug验证打包完整性:
npx @capgo/cli@latest bundle list下一步
名为“下一步”的部分继续从自定义存储
标题:继续从自定义存储如果您正在使用 自定义存储 来规划安全性和合规性,连接它与 加密 加密的实现细节在 合规 合规的实现细节在 Capgo 安全扫描器 Capgo 安全扫描器的产品工作流, Capgo 安全 为产品工作流程在 Capgo 安全中 Capgo 信任中心 为产品工作流程在 Capgo 信任中心中