How to Add Custom Images to Additional Regions

Custom images are Linux and Unix-like images you import to DigitalOcean. You can create Droplets based custom images, which lets you migrate and scale your workloads without spending time recreating your environment from scratch.


After you upload a custom image to your account, you can create Droplets from that image as long as they are in the same datacenter. If you’d like to create a Droplet from a custom image in a different region, you need to add your custom image to that region first.

Add a Custom Image to a Region using Automation

How to Add an Image to a Region Using the DigitalOcean CLI
  1. Install doctl, the DigitalOcean command-line tool.

  2. Create a personal access token and save it for use with doctl.

  3. Use the token to grant doctl access to your DigitalOcean account.

              doctl auth init
              
  4. Finally, run doctl compute image-action transfer. Basic usage looks like this, but you can read the usage docs for more details:

                doctl compute image-action transfer <image-id> [flags]
              

    The following example transfers an image with the ID 386734086 to the region with the slug nyc3:

                  doctl compute image-action transfer 386734086 --region nyc3
                
How to Add an Image to a Region Using the DigitalOcean API
  1. Create a personal access token and save it for use with the API.

  2. Send a POST request to https://api.digitalocean.com/v2/images/{image_id}/actions

    cURL

    Using cURL:

                    # Transfer an Existing Image
    curl -X POST \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
      -d '{"type":"transfer","region":"nyc2"}' \
      "https://api.digitalocean.com/v2/images/7938269/actions"
    
    # Convert an Image into a Snapshot
    curl -X POST \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
      -d '{"type":"convert"}' \
      "https://api.digitalocean.com/v2/images/7938291/actions"
                  

    Go

    Using Godo, the official DigitalOcean V2 API client for Go:

                    import (
        "context"
        "os"
    
        "github.com/digitalocean/godo"
    )
    
    func main() {
        token := os.Getenv("DIGITALOCEAN_TOKEN")
    
        client := godo.NewFromToken(token)
        ctx := context.TODO()
    
        // Transfer an existing image
        transferRequest := &godo.ActionRequest{
            "type":   "transfer",
            "region": "nyc2",
        }
      # Transfer an Image
        transfer, _, err := client.ImageActions.Transfer(ctx, 7938269, transferRequest)
    
      # Convert an Image to a Snapshot
      # client.image_actions.convert(image_id: 7938269)
    
    }
                  

    Ruby

    Using DropletKit, the official DigitalOcean V2 API client for Ruby:

                    require 'droplet_kit'
    token = ENV['DIGITALOCEAN_TOKEN']
    client = DropletKit::Client.new(access_token: token)
    
    # Transfer an Image
    client.image_actions.transfer(image_id: 7938269, region: 'nyc2')
    
    # Convert an Image to a Snapshot
    # client.image_actions.convert(image_id: 7938269)
                  

    Python

                    import os
    from pydo import Client
    
    client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
    
    req = {
      "type": "convert"
    }
    resp = client.image_actions.post(image_id=342341, body=req)
                  

Add a Custom Image to a Region using the Control Panel

From the Backups & Snapshots section, click the Custom Images tab. From there, open the More menu of the custom image you want to add to a new region and choose Add to region.

Custom image more menu

In the Custom image availability window that opens, click the region or regions you want to add your custom image to.