Saltar al contenido

Almacenamiento personalizado

Capgo permite usar soluciones de almacenamiento personalizadas para tus app bundles, permitiéndote alojar tus actualizaciones en tu propia infraestructura o servicios de terceros. Esto es ideal para organizaciones con requisitos de seguridad específicos, necesidades de cumplimiento o infraestructura de almacenamiento existente.

El almacenamiento personalizado en Capgo funciona subiendo tu bundle a una ubicación externa y proporcionando a Capgo la URL de acceso. El Capgo SDK descargará las actualizaciones directamente desde tu ubicación personalizada en lugar del almacenamiento cloud por defecto de Capgo.

La forma más sencilla de usar un almacenamiento personalizado es subiendo tu bundle a cualquier URL pública y proporcionando esa URL a Capgo.

Ventana de terminal
npx @capgo/cli@latest bundle upload --external https://your-domain.com/bundles/v1.2.3.zip

Este comando indica a Capgo que use el bundle de la URL especificada en lugar de subirlo al almacenamiento en la nube de Capgo.

Para un almacenamiento externo seguro, puedes cifrar tu bundle y proporcionar las claves de descifrado:

Ventana de terminal
npx @capgo/cli@latest bundle upload --external https://your-domain.com/bundles/v1.2.3.zip --iv-session-key YOUR_IV_SESSION_KEY

Capgo ofrece soporte nativo para Amazon S3 y servicios de almacenamiento compatibles con S3. El CLI puede subir automáticamente tu bundle a S3 y configurar Capgo para usar la URL de S3.

Ventana de terminal
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

Para servicios compatibles con S3 o endpoints personalizados:

Ventana de terminal
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
ParámetroDescripciónObligatorio
--s3-regionRegión de AWS para tu bucket de S3Sí
--s3-apikeyID de la clave de acceso S3Sí
--s3-apisecretClave de acceso secreta S3Sí
--s3-bucket-nameNombre de tu bucket S3Sí
--s3-endpointURL del endpoint S3 personalizadoNo
--s3-portPuerto del endpoint S3No
--no-s3-sslDesactivar SSL para el upload a S3No

Al usar un storage personalizado, especialmente con cifrado, debes preparar tus bundles correctamente. Esto implica crear un archivo zip y, opcionalmente, cifrarlo.

Primero, crea un archivo zip con el bundle de tu app:

Ventana de terminal
npx @capgo/cli@latest bundle zip com.example.app --path ./dist

El comando zip devolverá el checksum del archivo zip. Puedes usar este checksum para cifrar el zip si es necesario. Usa la --json opción para obtener una salida estructurada que incluya el checksum.

Ventana de terminal
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
OpciónDescripción
--pathRuta de la carpeta a comprimir (por defecto, webDir de capacitor.config)
--bundleNúmero de versión del bundle para nombrar el archivo zip
--nameNombre personalizado para el archivo zip
--jsonResultados en formato JSON (incluye checksum)
--no-code-checkOmitir la comprobación de notifyAppReady() y del archivo index
--key-v2Usar cifrado v2
--package-jsonRutas a los archivos package.json para monorepos (separadas por comas)

Para mayor seguridad, encripta tu bundle zip antes de subirlo:

Ventana de terminal
# 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"

El CHECKSUM el parámetro es obligatorio y debe ser el checksum de tu archivo zip. Puedes obtener el checksum con el comando zip (usa --json para obtener una salida estructurada).

Por defecto, el comando encrypt usará tu clave privada local. Puedes especificar una clave personalizada usando las --key o --key-data opciones.

El comando encrypt devolverá el ivSessionKey necesario para la subida o el desencriptado.

OpciónDescripción
zipPathRuta al archivo zip a cifrar (obligatorio)
checksumChecksum del archivo zip (obligatorio) - obtener con el comando zip
--keyRuta personalizada para la clave de firma privada (opcional, usa la clave local por defecto)
--key-dataDatos de la clave de firma privada directamente (opcional)
--jsonMostrar resultados en formato JSON
  1. Build de tu app:

    Ventana de terminal
    npm run build
  2. Crea un bundle zip:

    Ventana de terminal
    npx @capgo/cli@latest bundle zip com.example.app --path ./dist --bundle 1.2.3

    Anota el checksum que devuelve este comando.

  3. Encripta el bundle:

    Ventana de terminal
    npx @capgo/cli@latest bundle encrypt ./com.example.app-1.2.3.zip CHECKSUM_FROM_STEP_2

    Anota el ivSessionKey de la salida.

  4. Súbelo a tu storage: Sube el archivo zip encriptado a tu servicio de hosting.

  5. Regístralo en Capgo:

    Ventana de terminal
    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. Build de tu app:

    Ventana de terminal
    npm run build
  2. Upload directo a S3:

    Ventana de terminal
    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. Build y zip:

    Ventana de terminal
    npm run build
    npx @capgo/cli@latest bundle zip com.example.app --path ./dist --key-v2
  2. Encriptar el bundle:

    Ventana de terminal
    npx @capgo/cli@latest bundle encrypt ./com.example.app.zip CHECKSUM
  3. Subir a S3 con encriptación:

    Ventana de terminal
    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

Al usar un storage personalizado, considera estas buenas prácticas de seguridad:

  • Asegúrate de que las URLs de tu storage sean accesibles para los usuarios de tu app, pero no descubribles públicamente
  • Usa URLs firmadas o autenticación por token cuando sea posible
  • Implementa los headers CORS adecuados para apps web
  • Encripta siempre los bundles sensibles con las herramientas de Capgo
  • Guarda las llaves de encriptación de forma segura y rotalas regularmente
  • Usa HTTPS para todas las URLs de los bundles (requerido en mobile y Electron)
  • Monitorea los logs de acceso para detectar patrones de descarga inusuales
  • Configura alertas para fallos en la descarga de bundles
  • Audita regularmente los permisos de tu storage

El bundle no se descarga:

  • Verifica que la URL sea pública y use HTTPS (requerido para apps móviles y Electron)
  • Revisa los headers de CORS para web apps
  • Asegúrate de que el formato del bundle sea correcto

Errores de cifrado:

  • Verifica el ivSessionKey coincide con el bundle cifrado
  • Comprueba que el bundle se cifró con la clave correcta
  • Asegúrate de usar encryption v2 para nuevos bundles

Errores al subir a S3:

  • Verifica tus credenciales y permisos de S3
  • Revisa las políticas del bucket y la configuración CORS
  • Asegúrate de que la región especificada sea correcta

Verifica el estado del bundle:

Ventana de terminal
npx @capgo/cli@latest app debug

Verifica la integridad del bundle:

Ventana de terminal
npx @capgo/cli@latest bundle list

Si estás usando Almacenamiento personalizado para planificar la seguridad y el cumplimiento, conéctalo con Cifrado para los detalles de implementación en Cifrado, Cumplimiento para los detalles de implementación en Cumplimiento, Escáner de seguridad de Capgo para el flujo de trabajo del producto en Capgo Security Scanner, Seguridad de Capgo para el flujo de trabajo del producto en Capgo Security, y Centro de confianza de Capgo para el flujo de trabajo del producto en Capgo Trust Center.