> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.ibee.co.in/docs/infrastructure/cloud-vms/launch-your-first-vm/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.ibee.co.in/_mcp/server. # Launch your first VM > A 5-minute quickstart for deploying your first IBEE Solutions VM from the portal or the ibee CLI. This quickstart walks you through launching your first IBEE Solutions VM — pick a region, plan, and OS, deploy the server, and SSH in. You can use the portal, the [`ibee`](#using-the-ibee-cli) CLI, or the API. By the end you'll have a running Ubuntu 24.04 VM in Amaravati on a small Performance plan, accessible over SSH and ready to run your workload. ## Before you begin You'll need: * An [IBEE Solutions account](/docs/getting-started/account-setup/sign-up) — verified for compute access. * An organization ([Create an organization](/docs/getting-started/account-setup/create-an-organization)). * Sufficient wallet credits ([Billing and usage](/docs/platform-fundamentals/billing-and-usage)). * A local SSH key pair. Generate one if you don't have it: ```bash ssh-keygen -t ed25519 -C "your-email@example.com" ``` Your public key is at `~/.ssh/id_ed25519.pub`. ## Option A — Launch from the portal ### 1. Open Cloud VMs In the portal sidebar, open **Infrastructure → Cloud VMs**, then click **Deploy VM**. ### 2. Pick a region and location Under **Location**, select the **Asia** tab and **Amaravati** for this quickstart. See [Regions and locations](/docs/getting-started/overview/regions-and-locations) for the full list. ### 3. Choose a plan Pick any plan that fits your workload. For a first VM we recommend `perf.1.c2.m4` or `std.1.c4.m16` — both have enough headroom for typical web/API work. The estimated monthly and hourly cost updates as you select. **Standard VMs** — balanced vCPU, memory, included disk and bandwidth. Good default for production: | Plan | vCPU | RAM | Disk | Bandwidth | Best for | | -------------------------- | ---- | ------- | ------ | --------- | --------------------------------------------------- | | `std.1.c2.m8` | 2 | 8 GiB | 50 GB | 2 TB | Development environments, small apps, APIs, staging | | `std.1.c4.m16` *(popular)* | 4 | 16 GiB | 100 GB | 4 TB | Production web apps, SaaS, APIs, small databases | | `std.1.c8.m32` | 8 | 32 GiB | 150 GB | 6 TB | SaaS, CRM/ERP, medium databases | | `std.1.c16.m64` | 16 | 64 GiB | 200 GB | 8 TB | High-traffic apps, growing databases | | `std.1.c32.m128` | 32 | 128 GiB | 300 GB | 12 TB | Enterprise, analytics, large backends | | `std.1.c64.m256` | 64 | 256 GiB | 400 GB | 16 TB | Large-scale systems, in-memory databases | **Performance VMs** — compute-optimized with stronger CPU density per core: | Plan | vCPU | RAM | Disk | Bandwidth | Best for | | -------------------------- | ---- | ------- | ------ | --------- | -------------------------------------------------- | | `perf.1.c1.m2` | 1 | 2 GiB | 40 GB | 1 TB | Dev, testing, lightweight workloads | | `perf.1.c2.m4` | 2 | 4 GiB | 50 GB | 2 TB | First VM, microservices, API gateways | | `perf.1.c4.m8` *(popular)* | 4 | 8 GiB | 80 GB | 3 TB | High-traffic web servers, stateless apps | | `perf.1.c8.m16` | 8 | 16 GiB | 120 GB | 5 TB | Gaming servers, batch processing, CPU ML inference | | `perf.1.c16.m32` | 16 | 32 GiB | 160 GB | 8 TB | Data pipelines, container workloads | | `perf.1.c32.m64` | 32 | 64 GiB | 240 GB | 12 TB | HPC, distributed systems, compute-intensive apps | | `perf.1.c64.m128` | 64 | 128 GiB | 320 GB | 16 TB | Large compute clusters, simulations | For full network bandwidth tiers per plan and the naming convention, see [Instance types](/docs/infrastructure/cloud-vms/instance-types). ### 4. Select an operating system On the **Operating System → Templates** tab, pick **Ubuntu**, then choose **Ubuntu 24.04** from the OS Version dropdown. The available templates are filtered to show only images compatible with Cloud VMs. For ISOs, snapshots, or backups as the source, see [Custom images](/docs/infrastructure/cloud-vms/custom-images). ### 5. Add an SSH key Under **SSH Keys**, click **Add Key**, open the **Import Key** tab, give the key a name, and paste the contents of `~/.ssh/id_ed25519.pub`. If you've already saved the key, pick it from **Select SSH Keys** instead. The key is injected into the VM at first boot. See [SSH Keys](/docs/tools/ssh-keys) for full details. ### 6. Keep the default network and billing Leave **Network Configuration** on **Public IP** with **No VPC · public interface only**, and don't select a firewall group — the default firewall group is attached automatically. Leave **Billing** on **Hourly**. See [Create a VM](/docs/infrastructure/cloud-vms/create-a-vm) for the other options. ### 7. Set a hostname and deploy Under **VM Details**, keep **Instances** at 1 and enter a lowercase hostname (letters, numbers, hyphens only — for example `web-01`). Then click **Deploy** in the bottom bar. The platform checks your billing state and wallet balance first. If credits are sufficient, you return to the Cloud VMs list while the VM provisions. If not, a **Billing needs attention** popup prompts you to add credits. ### 8. Connect Once the status shows **Running**, open the VM and copy the SSH command from **Overview → Connection Details**, or copy the public IP from the Cloud VMs list and SSH in: ```bash ssh ubuntu@ ``` If SSH times out, check that the VM's firewall group allows port 22 from your address. You're done — you have a running VM. Next steps below. ## Option B — Using the ibee CLI `ibee` is the official IBEE Solutions command-line tool. Use it to launch and manage VMs from scripts, CI/CD, and your terminal. ### Install Install Python 3.10 or later, then install the CLI from PyPI: ```bash python3 -m pip install --upgrade ibee-cli ``` On Windows, use `py -m pip install --upgrade ibee-cli`. Verify the install by running `ibee --version`. ### Authenticate Generate an API token in the portal under **Organization → API Tokens**, then export the token and workspace used by your commands: ```bash export IBEE_TOKEN="ibee_prod_key_xxxxxxxxxxxx" export IBEE_WORKSPACE_ID="WORKSPACE_ID" ``` ### Launch a VM A VM create request uses IDs returned by the compute catalog. List valid sites, plans, and images first: ```bash ibee compute sites ibee compute plans --vm-type cloud --site-id SITE_ID ibee compute images --vm-type cloud --site-id SITE_ID ``` Pass the returned IDs to `vms create`. The name is the first positional argument. Save your public key in the portal first and copy its SSH key ID. Omit `--site-id` to let IBEE select a site automatically: ```bash ibee vms create web-01 \ --site-id SITE_ID \ --plan-id PLAN_ID \ --template-id IMAGE_ID \ --ssh-key-id SSH_KEY_ID \ --wait ``` Create and power actions are asynchronous. `--wait` polls the returned operation until it finishes; without it, save the operation ID and check it later with `ibee ops get --wait`. ### Helpful CLI commands | Command | Description | | -------------------------------------- | ------------------------------------------ | | `ibee vms list` | List Cloud VMs in the current workspace | | `ibee vms get ` | Show one VM's details | | `ibee vms metrics ` | Show current resource-usage metrics | | `ibee vms stop --wait` | Stop a running VM and wait for completion | | `ibee vms start --wait` | Start a stopped VM and wait for completion | | `ibee vms reboot --wait` | Reboot a VM and wait for completion | | `ibee vms delete --yes --wait` | Permanently delete a VM | | `ibee ops get --wait` | Poll an asynchronous operation | For full help on any command: ```bash ibee vms create --help ``` ### List available sites, plans, and images ```bash ibee compute sites ibee compute plans --vm-type cloud ibee compute images --vm-type cloud ``` ### Output as JSON Put the global `--json` option before the command for machine-readable output: ```bash ibee --json vms list | jq ``` ## Verify Whichever path you took, confirm the VM is healthy: ```bash # From your laptop ssh ubuntu@ 'uname -a; uptime' # Inside the VM sudo apt update sudo apt install -y nginx curl -I http://localhost ``` Open `http://` in a browser to see the default nginx page. ## What to do next * **Protect your data** — turn on [scheduled backups](/docs/tools/backups/enable-backups) or take a [manual snapshot](/docs/tools/snapshots/create-a-snapshot). * **Open the right ports** — add rules to the VM's [firewall group](/docs/network-security/firewalls) before exposing services beyond SSH. * **Add a domain** — point an `A` record at the VM's IP with your DNS provider. * **Add persistent storage** — [attach a Block Storage volume](/docs/infrastructure/cloud-vms/attach-volumes) for data that should outlive the VM. * **Resize when ready** — move to a larger plan from **Settings → Change Plan** ([Resize a VM](/docs/infrastructure/cloud-vms/resize-a-vm)). ## Troubleshooting **Deploy shows an error message** The portal validates the form when you click **Deploy** and names the missing item — for example a plan, an OS version, or a hostname. Fix it and click **Deploy** again. **Billing needs attention popup** Your organization's wallet balance is insufficient for the selected plan. Click **Add Credits** to top up, then return to deploy. **SSH connection refused** Wait until the VM shows **Running** and the public IP is populated. The first `sshd` start takes a few seconds after the IP is assigned. **`ibee: command not found`** Re-open your shell after installation, or add the Python user scripts directory to `PATH`. **The CLI reports a missing token or workspace** Set `IBEE_TOKEN` and `IBEE_WORKSPACE_ID`, or pass the global `--token` and `--workspace` options before the command group. Generate tokens under **Organization → API Tokens**. ## Related pages * [Create a VM](/docs/infrastructure/cloud-vms/create-a-vm) * [Instance types](/docs/infrastructure/cloud-vms/instance-types) * [SSH Keys](/docs/tools/ssh-keys) * [API Tokens](/docs/tools/api-tokens) * [Power actions](/docs/infrastructure/cloud-vms/power-actions) > A 5-minute quickstart for deploying your first IBEE Solutions VM from the portal or the ibee CLI.