メインコンテンツへスキップ

カスタムストレージ

Capgo はアプリの bundle に対するカスタムストレージに対応しており、独自のインフラやサードパーティのストレージサービスでアップデートをホストできます。これは、特定のセキュリティ要件やコンプライアンス、既存のストレージインフラを持つ組織にとって非常に有用です。

Capgo のカスタムストレージは、bundle を外部に upload し、そのアクセス用 URL を Capgo に提供することで動作します。これにより、Capgo の SDK は、Capgo のデフォルトのクラウドストレージではなく、カスタムストレージから直接アップデートを download します。

外部URLからのアップロード

「External URL Upload」セクション

カスタムストレージを利用する最も簡単な方法は、bundleを公開URLにアップロードし、そのURLをCapgoに渡すことです。

基本的なExternal URL Upload

「Basic External URL Upload」セクション
ターミナル
npx @capgo/cli@latest bundle upload --external https://your-domain.com/bundles/v1.2.3.zip

このコマンドは、bundleをCapgoのクラウドストレージにアップロードする代わりに、指定したURLのbundleを参照するようにCapgoに指示します。

外部ストレージのセキュリティを高めるには、bundleを暗号化し、復号キーを指定できます。

ターミナル
npx @capgo/cli@latest bundle upload --external https://your-domain.com/bundles/v1.2.3.zip --iv-session-key YOUR_IV_SESSION_KEY

Capgo は、Amazon S3 および S3 互換のストレージサービスを標準でサポートしています。CLI を使用して bundle を S3 へ自動的に upload し、Capgo が S3 の URL を使用するように設定できます。

ターミナル
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互換サービスまたはカスタムエンドポイントを使用する場合:

ターミナル
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 SSL
パラメータ説明必須
--s3-regionS3バケットのAWSリージョンはい
--s3-apikeyS3 アクセスキーIDはい
--s3-apisecretS3 シークレットアクセスキーはい
--s3-bucket-nameS3 バケット名はい
--s3-endpointカスタムS3エンドポイントURLいいえ
--s3-portS3エンドポイントのポートいいえ
--no-s3-sslS3アップロードのSSLを無効化いいえ

カスタムストレージ、特に暗号化を使用する場合は、Bundleを適切に準備する必要があります。これには、zipファイルの作成と、必要に応じた暗号化が含まれます。

まず、アプリのBundleをzipファイルにまとめます:

ターミナル
npx @capgo/cli@latest bundle zip com.example.app --path ./dist

zipコマンドを実行すると、zipファイルのチェックサムが返されます。必要に応じて、このチェックサムを使用してzipファイルを暗号化できます。チェックサムを含む構造化された出力を取得するには、 --json オプションを使用してください。

ターミナル
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
オプション説明
--pathzip対象フォルダのパス (capacitor.config の webDir がデフォルト)
--bundlezipファイル名に使用するBundleのバージョン番号
--namezipファイルのカスタム名
--json結果をJSON形式で出力 (チェックサムを含む)
--no-code-checknotifyAppReady() の呼び出しとindexファイルのチェックをスキップ
--key-v2暗号化 v2 を使用
--package-jsonモノレポにおける package.json へのパス (カンマ区切り)

ステップ 2: Bundle を暗号化する (任意)

「ステップ 2: Bundle の暗号化 (オプション)」セクション

セキュリティを強化するために、アップロード前に zip bundle を暗号化してください:

ターミナル
# Using default local key
npx @capgo/cli@latest bundle encrypt ./myapp.zip CHECKSUM
# Using custom key file
npx @capgo/cli@latest bundle encrypt ./myapp.zip CHECKSUM --key ./path/to/.capgo_key_v2
# Using key data directly
npx @capgo/cli@latest bundle encrypt ./myapp.zip CHECKSUM --key-data "PRIVATE_KEY_CONTENT"

この CHECKSUM parameter は必須で、zip ファイルのチェックサムを指定する必要があります。チェックサムは zip コマンドの出力から取得できます(構造化された出力を得るには --json オプションを使用してください)。

デフォルトでは、encrypt コマンドはローカルのプライベート署名キーを使用します。カスタムキーを使用する場合は、 --key または --key-data オプションで指定できます。

encrypt コマンドは、アップロードまたは復号に必要な ivSessionKey を返します。

オプション説明
zipPath暗号化するzipファイルのパス (必須)
checksumzipファイルのチェックサム (必須) - zipコマンドから取得してください
--key秘密署名キーのカスタムパス (任意、デフォルトではローカルキーを使用)
--key-data秘密署名キーのデータを直接指定 (任意)
--json結果をJSON形式で出力
  1. アプリをビルドします:

    ターミナル
    npm run build
  2. zip bundleを作成します:

    ターミナル
    npx @capgo/cli@latest bundle zip com.example.app --path ./dist --bundle 1.2.3

    このコマンドで返されるチェックサムを控えておいてください。

  3. bundleを暗号化します:

    ターミナル
    npx @capgo/cli@latest bundle encrypt ./com.example.app-1.2.3.zip CHECKSUM_FROM_STEP_2

    以下の ivSessionKey を、出力結果から確認してください。

  4. ストレージにアップロードします: 暗号化したzipファイルをホスティングサービスにアップロードしてください。

  5. 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
  1. アプリをビルド:

    ターミナル
    npm run build
  2. 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
  1. ビルドしてzip圧縮:

    ターミナル
    npm run build
    npx @capgo/cli@latest bundle zip com.example.app --path ./dist --key-v2
  2. bundleを暗号化する:

    ターミナル
    npx @capgo/cli@latest bundle encrypt ./com.example.app.zip CHECKSUM
  3. 暗号化してS3にuploadする:

    ターミナル
    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ヘッダーを実装してください
  • 機密性の高いbundleは必ず Capgo の暗号化ツールを使用して暗号化してください
  • 暗号化キーは安全に保管し、定期的にローテーションしてください
  • すべてのbundle URLにHTTPSを使用してください(モバイルおよびElectronアプリでは必須)
  • アクセスログを監視し、異常なdownloadパターンを検知してください
  • bundleのdownload失敗に対するアラートを設定してください
  • ストレージの権限を定期的に監査してください

Bundleがダウンロードできない場合:

  • URLが公開されており、HTTPSを使用しているか確認してください(モバイルおよびElectronアプリでは必須)
  • Webアプリの場合はCORSヘッダーを確認してください
  • Bundleのフォーマットが正しいことを確認してください

暗号化エラー:

  • 以下の内容を確認してください: ivSessionKey 暗号化されたbundleと一致しているか
  • Bundleが正しいキーで暗号化されているかを確認してください
  • 新しいbundleにはencryption v2を使用してください

S3のアップロード失敗:

  • S3の認証情報と権限を確認してください
  • バケットポリシーとCORS設定を確認してください
  • 指定したリージョンが正しいか確認してください

デバッグ用コマンド

「Debug Commands」セクション

bundleのステータスを確認:

ターミナル
npx @capgo/cli@latest app debug

bundleの整合性を確認:

ターミナル
npx @capgo/cli@latest bundle list

使用している場合 カスタムストレージ セキュリティとコンプライアンスを計画するには、これを以下と連携させてください 暗号化 暗号化の実装詳細について コンプライアンス コンプライアンスの実装詳細について Capgo セキュリティスキャナー Capgo Security Scanner のプロダクトワークフローについて Capgo のセキュリティ Capgo Security のプロダクトワークフロー向け、および Capgo トラストセンター Capgo Trust Center のプロダクトワークフロー向け。