# Compute migration guides

Source: https://docs.quake.ai/docs/compute/migration
Markdown: https://docs.quake.ai/docs/compute/migration.md

---

# Compute migration guides

You move virtual machines and compute workloads to Quake AI from another provider. Major cloud providers do not offer one-click VM migration to OpenStack, so you use **rebuild and rsync**: you provision a fresh Nova instance from a standard image, install your application stack, and transfer data.

For containerized workloads, you push container images to a portable registry, provision Nova instances, and deploy.

## Choose your source provider

<UseCaseGrid>
<UseCaseCard
  title="Migrate from AWS EC2"
  description="Image export via VM Import/Export, full flavor mapping from M6i/C6i/R6i/T3 to Quake AI families, and rsync-based data transfer."
  href="/docs/compute/migration/migrate-from-ec2"
  difficulty="intermediate"
  services={["Compute"]}
/>
<UseCaseCard
  title="Migrate a Docker container app from AWS"
  description="Move ECS, Fargate, or EC2+Docker workloads to Quake AI. ECS concept translation, image export from ECR, and Docker Compose deployment."
  href="/docs/compute/migration/migrate-docker-app-from-aws"
  difficulty="intermediate"
  services={["Compute"]}
/>
<UseCaseCard
  title="Migrate from DigitalOcean Droplets"
  description="Rebuild and rsync from Droplets to Nova instances. Clean flavor mapping from Basic/General/CPU-Optimized plans."
  href="/docs/compute/migration/migrate-from-droplets"
  difficulty="intermediate"
  services={["Compute"]}
/>
<UseCaseCard
  title="Migrate from Hetzner Cloud Servers"
  description="Rebuild and rsync from CX/CPX/CCX servers. Closest operational model to Quake AI of any provider."
  href="/docs/compute/migration/migrate-from-hetzner-servers"
  difficulty="intermediate"
  services={["Compute"]}
/>
<UseCaseCard
  title="Migrate from GCP Compute Engine"
  description="QCOW2 image export via Cloud Build (no manual qemu-img step), full flavor mapping from N2/E2/C2 machine types."
  href="/docs/compute/migration/migrate-from-gce"
  difficulty="intermediate"
  services={["Compute"]}
/>
<UseCaseCard
  title="Migrate from Azure Virtual Machines"
  description="VHD export via SAS URL, full flavor mapping from D-series/E-series/F-series/B-series VM sizes."
  href="/docs/compute/migration/migrate-from-azure-vms"
  difficulty="intermediate"
  services={["Compute"]}
/>
<UseCaseCard
  title="Migrate from Linode Compute Instances"
  description="Rebuild and rsync from Linodes (Akamai Cloud Computing). Plan-family mapping from Shared CPU, Dedicated CPU, High Memory, and Premium to Quake AI flavors."
  href="/docs/compute/migration/migrate-from-linode"
  difficulty="intermediate"
  services={["Compute"]}
/>
<UseCaseCard
  title="Migrate from Vultr Cloud Compute"
  description="Rebuild and rsync from Vultr Cloud Compute and Bare Metal. Plan-family mapping from Regular Cloud Compute, High Frequency, High Performance, CPU Optimized, and Optimized Cloud Compute to Quake AI flavors."
  href="/docs/compute/migration/migrate-from-vultr"
  difficulty="intermediate"
  services={["Compute"]}
/>
</UseCaseGrid>

## Migration approaches

You typically choose one of three approaches, depending on your workload type.

### Containerized workloads (recommended)

You push container images from any source registry (ECR, GCR, ACR, Docker Hub) to a portable registry. You provision Nova instances on Quake AI, install your container runtime, and deploy. This path stays the same no matter which provider you leave.

### Non-containerized workloads (rebuild and rsync)

You provision a fresh Nova instance from a Quake AI public image (Ubuntu, Debian, Rocky Linux). You install your application stack with your existing configuration management tooling (Ansible, cloud-init, shell scripts). You transfer application data and databases with `rsync` or standard dump/restore tools.

### Image export (special cases only)

AWS, GCP, and Azure support exporting VM images. GCP exports disk images to QCOW2, OpenStack Glance's preferred format, through the Cloud Build pipeline, so you do not run a manual `qemu-img` conversion step. AWS and Azure require a manual `qemu-img` conversion step after download. DigitalOcean and Hetzner do not support image export. Use image export only for custom images with many manual changes that are difficult to rebuild.

## Quake AI flavor families

Quake AI offers four flavor families. Use this reference to pick the right target size for your workload.

| Family | Naming | RAM per vCPU | Use case |
|---|---|---|---|
| General Purpose | `m2a.{size}` | 4 GiB | Balanced workloads, web servers, application servers |
| Compute Optimized | `c2a.{size}` | 2 GiB | CPU-bound workloads, CI/CD, batch processing |
| Memory Optimized | `r2a.{size}` | 8 GiB | Databases, caching, in-memory analytics |
| Shared Resources | `s1a.{size}` | 1-2 GiB | Dev/test, low-traffic services, personal projects |

Each per-provider guide includes a detailed flavor mapping table with at least 8 common sizes.

## What transfers and what does not

| Component | Portable? | Notes |
|---|---|---|
| Application data (files, configs) | Yes | `rsync` over SSH from source to Quake AI |
| Databases (PostgreSQL, MySQL) | Yes | Standard `pg_dump` / `mysqldump` and restore |
| Container images | Yes | Push to any OCI-compatible registry; pull on Quake AI with your existing runtime |
| SSH public keys | Yes | Import via `openstack keypair create --public-key` |
| cloud-init configs | Partial | Remove provider-specific datasource references |
| VM images | Varies | GCP exports QCOW2 via Cloud Build (no manual qemu-img step); AWS/Azure require qemu-img conversion; DO/Hetzner do not support image export |
| IAM credentials | No | Replace with OpenStack application credentials |
| Provider-specific metadata | No | Instance metadata paths differ between providers |

## See also

- [Migrate to Quake AI](/resources/migration): cross-service migration hub
- [Kubernetes migration guides](/docs/kubernetes/migration): migrate GKE, EKS, and AKS clusters
- [Create an instance](/docs/compute/how-to/create-instance): provision your first Nova instance
- [Flavors](/docs/compute/concepts/flavors): detailed flavor specifications
- [Object storage migration](/docs/object/migration): if you also need to move storage
