> For the complete documentation index, see [llms.txt](https://docs.stg.ai.neevcloud.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.stg.ai.neevcloud.com/vm-service/getting-started.md).

# Getting Started

This page walks you through everything you need to do before and during your first VM deployment. Follow these sections in order and you will have a running VM ready for AI/ML workloads within minutes.

## Prerequisites

Before you deploy your first NeevCloud VM, make sure you have the following in place:

* A NeevCloud account with billing configured and sufficient balance
* An SSH key pair (see SSH Key Setup below)
* Basic familiarity with Linux terminal commands you will use SSH to connect to and operate your VM from your local machine.

## SSH Key Setup

SSH keys are the only way to log into a NeevCloud VM. Password-based login is not supported. You must have an SSH key pair ready before you deploy.

> **Warning:** there is no way to add one to a running VM without rebuilding it.

### Generate a New Key Pair

If you do not already have an SSH key, run this command on your local machine to generate one:

```bash
# Generate an Ed25519 key (recommended)
ssh-keygen -t ed25519 -C "your-email@example.com"

# Or generate an RSA key if Ed25519 is not supported
ssh-keygen -t rsa -b 4096 -C "your-email@example.com"

# Your public key is at:
cat ~/.ssh/id_ed25519.pub
```

During the deployment form, you will be asked to provide your SSH key. You have four options:

* Select an existing key you have already saved in your NeevCloud account
* Paste the contents of your \~/.ssh/id\_ed25519.pub or \~/.ssh/id\_rsa.pub file directly
* Upload your .pub key file
* Generate a new key pair directly in the NeevCloud console download the private key immediately if you choose this option

> **Critical:** If you use the console to generate a key and do not download the private key before closing the page, it is permanently gone. You will have no way to log into the VM. Always download and store the private key in your \~/.ssh/ directory before proceeding.

## Deployment Flow

Every NeevCloud VM CPU or GPU is deployed through the same three-step process. Complete each step in sequence; the platform guides you through them.

* Step 1 - **Select an Instance**: Choose CPU VM or GPU VM. Select the hardware size (GPU model, vCPU count, RAM). Review pricing in INR.
* Step 2 - **Configure Deployment**: Name your VM, pick an OS image or AI template, attach your SSH key, set network access (public IP or private), configure security groups, and optionally add a startup script.
* Step 3 - **Configure Storage**: Size your root SSD disk. For AI/ML workloads, account for model weights, datasets, and training checkpoints.

After Step 3, click Deploy CPU VM or Deploy GPU VM. You are redirected to the dashboard. Provisioning typically completes within a few minutes. When the status changes from Provisioning to Running, your VM is ready.

## Choosing an Image

The image determines what software environment your VM starts with. You choose this during Step 2. There are two options.

### Option A - AI Templates (Recommended)

Templates are pre-built disk images that include the OS, NVIDIA GPU drivers, CUDA, cuDNN, and a fully installed ML framework. You skip all driver setup and start running code immediately after your first SSH login.

Learn about template from here: [AI Templates](https://docs.ai.neevcloud.com/gpu-ai-service/ai-templates)

| Template         | Pre-installed Stack                                     | When to Use It                                               |
| ---------------- | ------------------------------------------------------- | ------------------------------------------------------------ |
| PyTorch          | Ubuntu + CUDA + cuDNN + PyTorch + pip + conda           | Model training, fine-tuning, and general research            |
| TensorFlow       | Ubuntu + CUDA + cuDNN + TensorFlow + Keras              | Deep learning models on the TensorFlow/Keras stack           |
| vLLM Inference   | Ubuntu + CUDA + vLLM + FastAPI                          | Deploying an OpenAI-compatible LLM inference server          |
| Image Generation | Ubuntu + CUDA + Stable Diffusion + diffusers + xformers | Running or fine-tuning Stable Diffusion, SDXL, or ControlNet |
| Fine-Tuning      | Ubuntu + CUDA + HuggingFace Transformers + PEFT + TRL   | LoRA, QLoRA, and RLHF fine-tuning pipelines                  |

> **Tip:** When in doubt, choose the PyTorch template. It is the most general-purpose template and supports all major AI/ML workflows. You can install any additional library on top with pip.

### Option B - Use Operating System (OS) Image

Use a bare OS when you need complete control over the software stack or have non-standard dependencies.

Use a bare OS when you need complete control over the software stack or have non-standard dependencies.

* Ubuntu 22.04 LTS - Stable, widely supported. Recommended for custom setups. CUDA must be installed manually.
* Ubuntu 24.04 LTS - Latest Ubuntu LTS with a newer kernel and toolchain.

> **Warning:** On a bare OS GPU VM, you are responsible for installing CUDA, cuDNN, and all ML frameworks yourself. This takes 30–60 minutes. Use a template unless you have a specific reason not to.

## Network Configuration

During Step 2, you choose how your VM is accessed from the network. This cannot be changed after deployment.

### Public IP Access

Your VM receives a public IPv4 address and is reachable from the internet over SSH. This is the standard choice for AI/ML engineers who need to connect remotely and run training jobs or inference servers.

* Use for: GPU training VMs you SSH into, vLLM inference APIs, JupyterLab servers, model evaluation environments

### Private Network Access

Your VM is restricted to internal NeevCloud network access only, with no public internet exposure. Use this for backend AI infrastructure that should not be directly accessible from outside.

* Use for: internal model serving workers behind a load balancer, private dataset storage VMs, secure ML pipeline nodes within a VPC

## Security Group Configuration

Security groups define which network traffic is allowed in and out of your VM. Set these correctly during Step 2 to avoid both security gaps and connectivity issues.

### Recommended Rules for AI/ML VMs

| Port | Direction | Purpose                                            | Access Recommendation                  |
| ---- | --------- | -------------------------------------------------- | -------------------------------------- |
| 22   | Inbound   | SSH - terminal access to the VM                    | Your IP address only (never 0.0.0.0/0) |
| 8000 | Inbound   | vLLM / FastAPI model server default port           | Your IP or internal ML network range   |
| 8888 | Inbound   | JupyterLab notebook server                         | Your IP address only                   |
| 6006 | Inbound   | TensorBoard experiment dashboard                   | Your IP address only                   |
| 443  | Outbound  | HTTPS - download model weights, pip packages, APIs | Allow to 0.0.0.0/0                     |
| 80   | Outbound  | HTTP - apt-get, system package downloads           | Allow to 0.0.0.0/0                     |

> **Critical:** Never open port 22 to 0.0.0.0/0 (all IPs) on any VM. Public SSH ports are discovered and brute-forced within minutes. Always restrict SSH to your known IP address or VPN CIDR range.

## Quick Start: Your First GPU VM

Follow these steps to get a GPU VM running as fast as possible:

* Log into the NeevCloud console and click New VM.
* Select GPU VM. ( Ex: Choose NVIDIA RTX A6000 (48 GB) for fine-tuning, or NVIDIA A30 (24GB))
* Under Image, select the template that matches your workflow (e.g., Fine-Tuning or vLLM Inference).
* Paste your SSH public key into the SSH Key field.
* Set your root disk to at least 200 GB.
* Click Deploy GPU VM.
* When status shows Running, connect:

```bash
chmod 400 /path/to/your-key.pem
ssh -i /path/to/your-key.pem root@<your-public-ip>

# Verify GPU is visible
nvidia-smi

# Verify PyTorch sees the GPU
python -c "import torch; print(torch.cuda.get_device_name(0))"
```

> **Tip:** Your AI template has CUDA, cuDNN, and your chosen framework pre-installed. You do not need to install GPU drivers manually. Run nvidia-smi immediately after login to confirm the GPU is accessible.
