> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.ibee.co.in/docs/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.ibee.co.in/docs/_mcp/server.

# Create a VM

> Deploy one or more Cloud VMs on IBEE Solutions — choose a location, plan, operating system, SSH keys, network, billing term, and hostname, then click Deploy.

Deploy one or more cloud virtual machines (VMs) from the IBEE Solutions portal. The **Deploy** page is a single scrolling form — location, plan, operating system, access, network, billing, and VM details — with a running cost summary and the **Deploy** button in the bottom bar.

## Before you begin

* An IBEE Solutions account with write access to the workspace.
* A verified account to unlock server deployment ([Verify your identity](/docs/getting-started/account-setup/verify-your-identity)).
* Sufficient wallet credits — the platform checks your balance before deploying ([Billing and usage](/docs/platform-fundamentals/billing-and-usage)).
* Optional, depending on how you want to connect the VM:
  * An [SSH key](/docs/tools/ssh-keys) (you can also create one during deploy).
  * A [VPC](/docs/network-security/vpc-ip-management) with at least one subnet in the target location.
  * A [Reserved IP](/docs/network-security/vpc-ip-management/reserved-ips) in the target location.
  * A [firewall group](/docs/network-security/firewalls) (you can also create one during deploy).

## Deploy a Cloud VM

### 1. Open the Deploy page

In the portal sidebar, open **Infrastructure → Cloud VMs**, then click **Deploy VM**.

### 2. Select a location

Under **Location**, pick a region tab (for example **Asia**), then choose a data center location. Plans, images, VPCs, and Reserved IPs further down the page are filtered to this location.

See [Regions and locations](/docs/getting-started/overview/regions-and-locations) for availability.

### 3. Choose a plan

Under **Choose Plan**, filter by **All**, **Standard**, or **Performance**, then select a plan. Each row shows the plan's vCPU, memory, storage, included bandwidth, and price per month and per hour. The portal checks that the plan can be placed in the selected location before you deploy.

See [Instance types](/docs/infrastructure/cloud-vms/instance-types) for how the plan families differ.

### 4. Select the operating system

Pick a source for the boot disk under **Operating System**:

| Tab           | Use it for                                              |
| ------------- | ------------------------------------------------------- |
| **Templates** | Curated OS images maintained by IBEE. The default.      |
| **ISOs**      | Boot from an ISO you added under **Tools → ISOs**.      |
| **Snapshots** | Create the VM from a snapshot captured from another VM. |
| **Backups**   | Create the VM from a scheduled backup recovery point.   |

On **Templates**, pick an OS family card (for example **Ubuntu** or **Windows**), then choose a version from the **OS Version** dropdown. A **Selected: \<version>** chip confirms your choice. Only images compatible with Cloud VMs are listed.

> **Info**
>
> Deploying from the **Backups** tab uses the captured root disk only. To restore the root disk **and** attached data disks, open the source VM's **Backups** tab and choose **Create New VM** instead. See [Restore from backup](/docs/tools/backups/restore-from-backup).

> **Warning**
>
> An ISO install needs an interactive console, and browser console access isn't available in the portal yet. See [Custom images](/docs/infrastructure/cloud-vms/custom-images#isos) before choosing the **ISOs** tab.

### 5. Review licences and control panels

If the selected plan and image have add-ons, a **Licences & control panels** section lists them with a monthly price:

* For Windows images, the Windows licence is selected automatically and marked **Required for the selected Windows image**.
* Other add-ons are **Optional** — click a card to add or remove it.

### 6. Add SSH keys (Linux)

For Linux images, the **SSH Keys** section appears. Open **Select SSH Keys** and pick one or more saved keys. To add a new one, click **Add Key**, then either use **Create Key Pair** (the private key downloads once — keep it safe) or **Import Key** to paste or upload an existing public key.

The section is hidden for Windows images, which use a password instead.

> **Info**
>
> A Linux VM deployed without an SSH key uses password login. Its username and password appear under **Overview → Connection Details** once the VM is running. Adding a key is recommended.

### 7. Configure the network

Under **Network Configuration → VM network**, choose **Internet and VPC access**:

| Option                    | What you get                                                                                                                                                                                                                                       |
| ------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Public IP** *(default)* | A dedicated inbound and outbound IPv4 address. The VPC is optional: keep **No VPC · public interface only** to use the platform network, or pick a VPC to make it the VM's primary interface — the public IP then maps to the VM's VPC private IP. |
| **Private + NAT**         | The VM's primary interface is in a NAT Gateway VPC with managed outbound internet. Inbound internet is blocked.                                                                                                                                    |
| **Private only**          | The VM's primary interface is in a VPC with no internet route.                                                                                                                                                                                     |

When you pick a VPC, also pick a **Subnet**. With **Public IP** and a VPC, a **Reserved public IP** field appears:

* Leave it on **Allocate automatically**, or select one of your Reserved IPs in this location.
* A **private** VPC requires a Reserved IP for public exposure — create one in this location before deploying.
* Selecting a specific Reserved IP limits the deployment to one VM.

Under **Firewall**, pick a firewall group, or click **Create Group** to create one and select it. If you don't select a group, the default firewall group is attached automatically. Manage rules from the [Firewalls](/docs/network-security/firewalls) page.

See [Networking for VMs](/docs/infrastructure/cloud-vms/networking-for-vms) for how each option behaves after deploy.

### 8. Choose a billing term

Under **Billing**, choose how the VM is billed. The options offered depend on the plan:

| Term                   | How it works                                          |
| ---------------------- | ----------------------------------------------------- |
| **Hourly** *(default)* | No commitment. Usage is metered in 15-minute windows. |
| **Monthly**            | A fixed rate for the commitment term.                 |
| **Yearly**             | An annual commitment at the catalog rate.             |

Commitment cards show the equivalent hourly rate and any saving compared with Hourly.

### 9. Set VM details

Under **VM Details**:

* **Instances** — use **−** and **+** to deploy up to **5** VMs with the same configuration. The maximum can be lower when capacity (or, for **Public IP**, free public addresses) in the location is limited, and it is **1** when you select a specific Reserved IP.
* **Hostname** — use lowercase letters, numbers, and hyphens (spaces become hyphens; other characters are removed). With more than one instance, this field becomes the **Base hostname** and each instance is prefilled as `<base>-1`, `<base>-2`, and so on. Edit any of them under **Instance hostnames**. Every hostname must be unique.

### 10. Deploy

Check the summary in the bottom bar — it shows the estimated cost for all instances, including any licence. Then click **Deploy** (or **Deploy N VMs** for more than one instance).

The platform first checks your organization's billing state and wallet balance. If the check passes, you return to the **Cloud Virtual Machines** list while the VM provisions. If not, a **Billing needs attention** popup appears — click **Add Credits** to top up, then return and deploy again.

## Verify

Once provisioned, the VM appears in the **Cloud Virtual Machines** list with status **Running** and its IP address. Click it to open the detail page.

**Overview → Connection Details** shows how to connect:

| VM                            | What's shown                                                                                                        |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------- |
| Linux with an SSH key         | **SSH Key Connection** — username, host, the `chmod` command for your private key, and a ready-to-copy SSH command. |
| Linux without an SSH key      | **SSH Connection** — username, host, and password.                                                                  |
| Windows                       | **Remote Desktop (RDP)** — IP address, username, and password.                                                      |
| Private + NAT or Private only | Private SSH or RDP commands to use from inside the VPC (for example through a VPN or bastion host).                 |

Passwords are shown only to members with write access while the VM is running.

## Launch with the ibee CLI

Prefer the terminal? Use the [`ibee`](/docs/infrastructure/cloud-vms/launch-your-first-vm#using-the-ibee-cli) CLI to script VM creation.

```bash
# Authenticate and select a workspace
export IBEE_TOKEN="ibee_prod_key_xxxxxxxxxxxx"
export IBEE_WORKSPACE_ID="WORKSPACE_ID"

# Launch a VM
ibee vms create web-01 \
  --site-id SITE_ID \
  --plan-id PLAN_ID \
  --template-id IMAGE_ID \
  --ssh-key-id SSH_KEY_ID \
  --wait
```

The `--wait` flag polls the asynchronous create operation until it finishes.
Drop it to receive the operation immediately and poll it later with
`ibee ops get <operation-id> --wait`.

### Common flags

| Argument or flag    | Purpose                                                      |
| ------------------- | ------------------------------------------------------------ |
| `NAME`              | VM display name (required positional argument).              |
| `--site-id`         | Optional placement site ID; omit it for automatic placement. |
| `--plan-id`         | Plan ID returned by `ibee compute plans` (required).         |
| `--template-id`     | Image ID returned by `ibee compute images` (required).       |
| `--os-distro`       | OS distribution; defaults to `ubuntu`.                       |
| `--os-type`         | OS family; defaults to `linux`.                              |
| `--cpu`, `--ram-mb` | Fallback compute fields accepted by the API.                 |
| `--disk-gb`         | Optional root-disk size.                                     |
| `--ssh-key-id`      | Existing SSH key ID; repeat for multiple keys.               |
| `--tag`             | Resource tag; repeat for multiple tags.                      |
| `--wait`            | Poll the asynchronous create operation until completion.     |

### Discover available sites, plans, and images

```bash
ibee compute sites
ibee compute plans --vm-type cloud --site-id SITE_ID
ibee compute images --vm-type cloud --site-id SITE_ID
```

For the full quickstart and CLI reference, see [Launch your first VM](/docs/infrastructure/cloud-vms/launch-your-first-vm).

## Manage your VM

From the VM detail page, use **Actions** to control your server:

| Action | Description                                                                                                            |
| ------ | ---------------------------------------------------------------------------------------------------------------------- |
| Start  | Power on a stopped server                                                                                              |
| Stop   | Shut down a running server                                                                                             |
| Reboot | Restart the server                                                                                                     |
| Delete | Permanently delete the server — you type the VM name to confirm, and can choose to keep its public IP as a Reserved IP |

The detail page also has **Overview**, **Monitoring**, **Backups**, **Snapshots**, and **Settings** tabs. Under **Settings** you can change the plan, manage the public IP and Reserved IPs, attach VPCs, and manage SSH keys and passwords. See [Power actions](/docs/infrastructure/cloud-vms/power-actions), [Resize a VM](/docs/infrastructure/cloud-vms/resize-a-vm), and [Networking for VMs](/docs/infrastructure/cloud-vms/networking-for-vms).

> **Warning**
>
> Deleting a VM is permanent and cannot be undone. Back up your data before
> deleting.

## Troubleshooting

**Deploy shows an error message**
The portal validates the form when you click **Deploy** and names the missing item — for example **Please select a VM plan**, **Please select an Operating System version**, **Select a subnet for this VPC**, or **Each instance needs a unique hostname**. Fix the named field and deploy again. The button is disabled only while locations, plans, or plan availability are still loading.

**Billing needs attention popup appears**
Your organization's billing state or wallet balance blocks the deploy. Click **Add Credits** to top up, then return to deploy.

**Only 1 VM of this plan can be deployed right now**
Capacity (or free public addresses, for **Public IP**) in the location is limited. Deploy fewer instances, pick another plan or location, or use **Private + NAT**, which doesn't need a public address.

**Server stuck in provisioning**
Wait a few minutes. If the status does not update, contact [IBEE support](/docs/support/contact-support).

## Related pages

* [SSH Keys](/docs/tools/ssh-keys)
* [Networking for VMs](/docs/infrastructure/cloud-vms/networking-for-vms)
* [Take a snapshot](/docs/tools/snapshots/create-a-snapshot)
* [Attach block storage](/docs/infrastructure/block-storage/attach-and-detach-a-volume)
* [Power actions and delete](/docs/infrastructure/cloud-vms/power-actions)