> For the complete documentation index, see [llms.txt](https://docs.carto.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.carto.com/carto-self-hosted/planning/deployment-methods/single-vm.md).

# Single Virtual Machine deployment

<img src="/files/5KoQqAIFdjmLp1ee8tV1" alt="Single Virtual Machine deployment" width="52">

CARTO is deployed on a single virtual machine using an embedded Kubernetes cluster and Kots. This is the easiest and fastest method to get CARTO running.

## How it works

All CARTO services run on one VM inside an embedded cluster managed by Kots. The platform connects out to the external dependencies you provide: a PostgreSQL metadata database and object-storage buckets are always required, plus your data warehouse.

```mermaid
flowchart TB
  subgraph VM["Single VM — embedded cluster + Kots"]
    AC["Kots Admin Console (:8800)"]
    SVC["CARTO services"]
    CACHE[("Bundled in-memory cache")]
    SVC --- CACHE
  end
  SVC --> PG[("External PostgreSQL — required")]
  SVC --> OS[("Object storage buckets — required")]
  SVC --> DW[("Data warehouse")]
```

Configuration and maintenance are handled through the Kots **Admin Console**, a web UI for applying updates, managing configuration with built-in versioning, and generating support bundles.

## When to use it

This method might be appropriate if you and your team:

* Are currently evaluating CARTO or deploying CARTO for the first time.
* Have less experience with Kubernetes or DevOps concepts.
* Need a lightweight, low-cost, and low-maintenance deployment method.
* Would like to deploy CARTO on a small-scale or single-server environment.

## Characteristics

| Aspect                      | Single Virtual Machine deployment (Kots)                |
| --------------------------- | ------------------------------------------------------- |
| Infrastructure              | One VM running an embedded Kubernetes cluster           |
| Configuration & maintenance | Kots Admin Console (web UI)                             |
| Scalability                 | Vertical only — not horizontally scalable               |
| High availability           | Not supported (single node)                             |
| Customization               | Standard configuration options via the Admin Console    |
| Best for                    | Evaluations, POCs, and small single-server environments |

## What you'll need

Review the [Prerequisites & Checklists](/carto-self-hosted/planning/prerequisites.md), in particular the [hardware & software requirements](/carto-self-hosted/planning/prerequisites/hardware-requirements.md), the external [metadata database](/carto-self-hosted/planning/prerequisites/metadata-database.md), and [object storage](/carto-self-hosted/planning/prerequisites/object-storage.md).

## Next steps

{% hint style="success" %}
Ready to deploy? Follow the [**Single Virtual Machine deployment guide**](/carto-self-hosted/deployment/single-vm-deployment.md), or try the [**Single VM quickstart**](/carto-self-hosted/quickstarts/quickstart-single-vm-kots.md) first.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.carto.com/carto-self-hosted/planning/deployment-methods/single-vm.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
