---
title: Self-Host Live Update Bundles
description: Self-host Live Update bundles on your own server for Capacitor and Cordova apps — requirements, restrictions, and how it works with Capawesome Cloud.
---

# Self-Host Bundles

For customers with strict security requirements, Capawesome Cloud lets you self-host Live Update bundles. You host the bundles on your own server, and only the metadata required to check for updates is sent to Capawesome Cloud. This has several advantages:

- **Security**: You don't have to share your web artifacts with us and can keep them on your own servers.
- **Data transfer**: You are not affected by our data transfer limits. You can serve as many updates as you want.

## Requirements

To self-host Live Updates, you need to meet the following requirements:

- **Server**: You need to have a high-availability server that can serve static files and handle low to medium levels of traffic (varies based on number of app users).
- **HTTPS**: Your server must support HTTPS. This is required to ensure secure communication between the client and your server.

In addition, we recommend the following:

- **CDN**: Use a Content Delivery Network (CDN) to serve the updates. This can help reduce latency and improve download speeds for users around the world.

## Restrictions

There is one restriction right now:

- **Delta Updates**: Delta updates are not yet supported when self-hosting. This means the artifact type must be `zip` (default). [Reach out to us](mailto:support@capawesome.io) if you need support for delta updates.

## How it works

<figure markdown>
  ![Layers](../../assets/images/diagrams/capawesome-cloud-self-hosting-light.png#only-light)
  ![Layers](../../assets/images/diagrams/capawesome-cloud-self-hosting-dark.png#only-dark)
  <figcaption>Flow diagram of self-hosted Live Updates</figcaption>
</figure>

The process of self-hosting Live Updates is similar to the regular process, with the difference that the bundle is hosted on your server. Here's how it works:

1. **Request metadata**: The client sends a request to Capawesome Cloud to check for updates.
2. **Receive metadata**: If an update is available, Capawesome Cloud responds with the metadata required to download the update. This can look like this:

    ```json
    {
        "artifactType": "zip",
        "bundleId": "1e42e1df-f4b3-4564-90d0-2303ca8fbd49",
        "url": "https://server.tld/downloads/1e42e1df-f4b3-4564-90d0-2303ca8fbd49.zip",
    }
    ```

3. **Request file(s)**: The client requests the bundle from your server.
4. **Receive file(s)**: Your server responds with the bundle.

After that, the client can install the update as usual.

## Create a new bundle

To create a new self-hosted bundle on Capawesome Cloud, you can use the [Capawesome CLI](../cli/index.md). First, make sure you have the latest version of the CLI installed:

```bash
npm install -g @capawesome/cli@latest
```

After that, log in to your account:

```bash
npx @capawesome/cli login
```

Then, create a new bundle with the [`apps:liveupdates:register`](../cli/commands.md#appsliveupdatesregister) command:

```bash
npx @capawesome/cli apps:liveupdates:register --url https://domain.tld/bundle.zip
``` 

Replace `https://domain.tld/bundle.zip` with the URL of the bundle on your server. The bundle will be created and immediately available to all users.

## Bonus: Code Signing

To help ensure secure end-to-end delivery, you can sign your updates with a private key. This way, the client can verify that the updates are coming from you and not a malicious actor. To sign your updates, you need to provide a private key and a local path to the artifact when creating the bundle:

```bash
npx @capawesome/cli apps:liveupdates:register --url https://domain.tld/bundle.zip --private-key ./key.pem --path ./bundle.zip
```

We recommend integrating code signing into your CI/CD pipeline to automate the process. This way you can create a signed bundle directly after uploading the artifact to your server. Check out our [Code Signing](./code-signing.md) guide for more information on how to sign your updates.

???+ note

    Code signing for self-hosted bundles requires Live Update plugin **6.9.0+** (Capacitor 6), **7.5.0+** (Capacitor 7), **8.0.0+** (Capacitor 8), or **0.1.0+** (Cordova).
