コンテンツにスキップ

カスタムストレージ

Capgoでは、独自のストレージソリューションをサポートして、アプリケーションバンドルのアップデートを自社のインフラまたは第三者ストレージサービスでホストできます。

Custom storage in Capgo works by uploading your bundle to an external location and providing Capgo with the URL to access it. The Capgo SDK will then download updates directly from your custom storage location instead of Capgo’s default cloud storage.

Capgoに公開アクセス可能なURLを指定して、Capgoにバンドルをアップロードするのではなく、Capgoが指定されたURLのバンドルを参照するように指示するコマンド

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

Capgoのクラウドストレージにアップロードするのではなく、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_KEY

CapgoはAmazon S3とS3互換ストレージサービスに対応しています。CLIは自動的にバンドルをS3にアップロードし、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アクセスキーIDYes
--s3-apisecretS3シークレットアクセスキーYes
--s3-bucket-nameS3バケットの名前Yes
--s3-endpointカスタムS3エンドポイントURLNo
--s3-portS3エンドポイントのポートNo
--no-s3-sslS3アップロードのSSL無効化No

バンドル作成と暗号化の準備

「バンドル準備と暗号化」のセクション

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

最初に、zipファイルを作成してアプリケーションバンドルを圧縮してください。

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

zipコマンドはzipファイルのチェックサムを返します。このチェックサムを使用してzipファイルを暗号化する必要がある場合は、使用できます。 --json オプションを使用して、構造化された出力、チェックサムを含む。

「zipコマンドのオプション」のセクション

ターミナル画面
「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
オプション説明
--pathcapacitor.configのwebDirからデフォルトのフォルダパスを指定
--bundleバンドルバージョン番号をzipファイルの名前として使用
--nameカスタムのzipファイル名
--jsonJSON形式で出力(チェックサムを含む)
--no-code-checknotifyAppReady()の呼び出しとindexファイルのチェックをスキップ
--key-v2暗号化v2を使用
--package-jsonモノレポ用のpackage.jsonファイルのパス(カンマ区切り)

ステップ 2: バンドルを暗号化(オプション)

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

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

ターミナルウィンドウ
# 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"

The CHECKSUM __CAPGO_KEEP_0__は必須のパラメーターで、zipファイルのチェックサムを指定してください。チェックサムはzipコマンドの出力から取得できます (structured outputのオプションを使用)。 --json デフォルトでは、encryptコマンドはローカルプライベート署名キーを使用します。カスタムキーを指定するには、オプションを使用してください。

encryptコマンドは、アップロードまたは復号化に必要な --key を返します。 --key-data 暗号化コマンドのオプション

__CAPGO_KEEP_0__ ivSessionKey __CAPGO_KEEP_0__

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

    ターミナル画面
    npm run build
  2. zip アーカイブを作成する:

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

    このコマンドによって返されるチェックサムを注意してください。

  3. ファイルを暗号化:

    ターミナル画面
    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. __CAPGO_KEEP_0__を構築:

    ターミナルウィンドウ
    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

例3:S3に暗号化

例3:S3に暗号化
  1. __CAPGO_KEEP_0__をビルドしてzip:

    ターミナルウィンドウ
    npm run build
    npx @capgo/cli@latest bundle zip com.example.app --path ./dist --key-v2
  2. バンドルを暗号化

    ターミナルウィンドウ
    npx @capgo/cli@latest bundle encrypt ./com.example.app.zip CHECKSUM
  3. 暗号化を含む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またはトークンベースの認証を使用する
  • ウェブベースのアプリケーション向けに適切なCORSヘッダーを実装する
  • 敏感なバンドルを常にCapgo暗号化ツールを使用して暗号化する
  • 暗号化キーを安全に保存し、定期的にローテートする
  • モバイルおよびElectronアプリケーション向けにはすべてのバンドルURLにHTTPSを使用する (必須)
  • アクセスログを監視して異常なダウンロードパターンを検出する
  • バンドルダウンロードに失敗したときにアラートを設定する
  • ストレージパーミッションを定期的に検証する

トラブルシューティング

Section titled “Troubleshooting”

Bundle not downloading:

  • URLが公開アクセス可能かつHTTPSを使用していることを確認してください (モバイルおよびElectronアプリ用)。
  • Webアプリ用のCORSヘッダーを確認してください。
  • Bundleのフォーマットが正しいことを確認してください。

エラー:

  • URLが暗号化されたBundleと一致していることを確認してください。 ivSessionKey Bundleが正しいキーで暗号化されたことを確認してください。
  • 新しいBundleの場合、暗号化v2を使用していることを確認してください。
  • URLが公開アクセス可能かつHTTPSを使用していることを確認してください (モバイルおよびElectronアプリ用)。

__CAPGO_KEEP_0__

  • S3のアップロードエラーが発生しています:
  • S3の資格情報と権限を確認してください
  • バケットポリシーとCORS設定を確認してください

指定されたリージョンが正しいことを確認してください

__CAPGO_KEEP_1__

バンドルステータスを確認:

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

バンドル整合性を確認:

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

__CAPGO_KEEP_0__ を使用している場合 __CAPGO_KEEP_0__ セキュリティとコンプライアンスを計画するために使用している場合は、__CAPGO_KEEP_0__ と接続してください __CAPGO_KEEP_0__ の実装詳細 __CAPGO_KEEP_0__ __CAPGO_KEEP_0__ の実装詳細 __CAPGO_KEEP_0__ セキュリティ スキャナー Capgo セキュリティ スキャナーの製品ワークフロー Capgo セキュリティ Capgo セキュリティの製品ワークフロー Capgo Capgo 信頼センター Capgo 信頼センターの製品ワークフロー用