How to Upload and Use Custom ISOs on Vultr

Vultr provides a library of standard ISOs and One-Click Apps for deploying popular operating systems and applications. However, you may need to install an operating system or tool not included in the library, such as a custom build of Kali Linux, OpenBSD, or pfSense. Upload and use your own custom ISO to cover these cases.
This guide explains how to upload a custom ISO to Vultr, deploy new instances with it, attach or detach it from running instances, and manage ISOs using the Vultr API.
Prerequisites
Before you begin, have access to one of the following: the Vultr Console, a Vultr API key, or the Vultr CLI.
Uploading an ISO on Vultr
Upload a custom ISO to Vultr by providing a publicly accessible URL. Once uploaded, the ISO is available in your account and can be used to deploy new instances or attach to existing ones.
- The ISO must be smaller than 10 GB (10240 MB).
- The filename must end with the
.isoextension. - The ISO URL must be an absolute path without authentication or query parameters.
- The ISO URL must be a direct link. It cannot contain HTTP redirects.
- Each account can store a maximum of two ISOs at a time. Delete and re-upload ISOs as needed.
- Vultr does not permit uploading Windows ISOs.
Using Vultr Console
- Log in to the Vultr Console.
- Click Orchestration in the left sidebar and select ISOs.
- Click Add ISO +.
- Enter the ISO URL in the Enter remote URL field. Optionally, enter a name in the Name field.
- Click Create ISO + to begin the transfer.
- Wait for the upload to finish. The ISO status changes from Pending to Complete. The time required depends on the size of the ISO and the speed of the source server.
Using Vultr CLI
Create an ISO from a public URL. Replace
ISO_URLwith the public link to your ISO file.console$ vultr-cli iso create --url ISO_URL
The response includes details about the ISO. Note the
idvalue for later use.Verify the upload status. Replace
ISO_IDwith theidvalue from the previous step.console$ vultr-cli iso get ISO_ID
Verify that the
STATUSfield shows completed before proceeding.
Using Vultr API
Create an ISO from a public URL. Replace
ISO_URLwith the direct link to your ISO file.console$ curl -sS --fail --compressed "https://api.vultr.com/v2/iso" \ -X POST \ -H "Authorization: Bearer ${VULTR_API_KEY}" \ -H "Content-Type: application/json" \ --data '{ "url" : "ISO_URL" }' \ | jq .
The response includes details about the ISO. Note the
idvalue for later use.Verify the upload status. Replace
ISO_IDwith theidvalue from the previous step.console$ curl -sS --fail --compressed "https://api.vultr.com/v2/iso/ISO_ID" \ -X GET \ -H "Authorization: Bearer ${VULTR_API_KEY}" \ | jq .
Verify that the
statusfield shows complete before proceeding.
Deploy a New Instance from a Custom ISO
After uploading the ISO, deploy a new instance that boots from it. Complete the operating system installation through the VNC console, then detach the ISO so the instance boots from the installed OS on subsequent reboots.
Using Vultr Console
- Click Compute in the left sidebar and select Instances.
- Click Create Instance +.
- Choose the instance Type that meets your workload requirements.
- Select the deployment Location.
- Choose an instance Plan that meets your workload requirements.
- Click Configure Software.
- Under Image Selection and Configuration, click the ISO tab and select your Custom ISO from the list.
- Configure optional Server Settings, such as SSH Keys or a Firewall Group.
- Enter a Server Hostname and an optional Server Label to identify the instance.
- Enable any optional Additional Features you want.
- Review the Deploy Summary and click Deploy to provision the instance.
- Wait until the instance status changes to Running in the instances list, then click the instance name to open its detail page.
- Click the View Console icon to open the VNC console and complete the installation.
- Click the Settings tab, select Custom ISO from the left menu, and click Remove ISO to detach the ISO.
Using Vultr CLI
After deploying the instance with the CLI, open the VNC console in the Vultr Console to complete the OS installation, then detach the ISO.
List all available ISOs in your account.
console$ vultr-cli iso list
Note the
idof the ISO you want to use.Create a new instance using the desired ISO. Replace
REGION,PLAN,ISO_ID,EXAMPLE_LABEL, andEXAMPLE_HOSTwith your values.console$ vultr-cli instance create --region REGION --plan PLAN --iso ISO_ID --label EXAMPLE_LABEL --host EXAMPLE_HOST
Log in to the Vultr Console.
Click Compute in the left sidebar and select Instances.
Select the newly created instance.
Click the View Console icon to open the VNC console and complete the installation.
Click the Settings tab, select Custom ISO from the left menu, and click Remove ISO to detach the ISO.
Using Vultr API
After creating the instance via the API, open the VNC console in the Vultr Console to complete the OS installation, then detach the ISO via the API.
List all available ISOs in your account and note the
idof the ISO you want to use.console$ curl -sS --fail --compressed "https://api.vultr.com/v2/iso" \ -X GET \ -H "Authorization: Bearer ${VULTR_API_KEY}" \ | jq '.isos[] | {id, filename, status}'
Create a new instance using the ISO. Replace
REGION,PLAN,EXAMPLE_LABEL,ISO_ID, andEXAMPLE_HOSTwith your values.console$ curl -sS --fail --compressed "https://api.vultr.com/v2/instances" \ -X POST \ -H "Authorization: Bearer ${VULTR_API_KEY}" \ -H "Content-Type: application/json" \ --data '{ "region": "REGION", "plan": "PLAN", "label": "EXAMPLE_LABEL", "iso_id": "ISO_ID", "backups": "enabled", "hostname": "EXAMPLE_HOST", "tags": ["a tag", "another"] }' | jq .
Note the
idof the newly created instance from the response.Log in to the Vultr Console.
Click Compute in the left sidebar and select Instances.
Select the newly created instance.
Click the View Console icon to open the VNC console and complete the installation.
Detach the ISO so the instance boots from the installed OS. Replace
INSTANCE_IDwith the instanceidfrom the previous step.console$ curl -sS --fail --compressed "https://api.vultr.com/v2/instances/INSTANCE_ID/iso/detach" \ -X POST \ -H "Authorization: Bearer ${VULTR_API_KEY}"
Vultr detaches the ISO and reboots the instance automatically.
Conclusion
You have uploaded a custom ISO to Vultr and deployed instances using the Vultr Console, CLI, and API. The instance now boots from the installed operating system, with the custom ISO detached.