> Markdown version of [Getting Started](https://vaadin.com/docs/v24/control-center/getting-started). Section index: [llms.txt](https://vaadin.com/docs/v24/control-center/llms.txt)

# Getting Started

Control Center simplifies the management of Vaadin applications on Kubernetes clusters. This page explains how to deploy Control Center to a cloud environment and get it running smoothly.

> **Note:** Control Center is designed to run in a production environment. For local development, see the [Getting Started in a Local Environment](https://vaadin.com/docs/v24/control-center/getting-started/local-environment.md) guide.

> **Note:** For Azure, see [a step-by-step guide](https://vaadin.com/docs/v24/control-center/getting-started/azure.md).

## <a id="prerequisites"></a>Prerequisites

Before you begin, make sure you have a Kubernetes cluster running and available. It can be a service like [Google Kubernetes Engine (GKE)](https://cloud.google.com/kubernetes-engine), [Amazon EKS](https://aws.amazon.com/eks), [Azure AKS](https://azure.microsoft.com/en-us/products/kubernetes-service), [DigitalOcean](https://www.digitalocean.com/).

<!-- vale Vale.Spelling = NO -->

> **Important: Cloud Resources**
>
> You need to ensure that your cluster provides sufficient resources for Control Center. This includes CPU, memory, and storage. The exact requirements depend on the size and number of applications you plan to deploy and the traffic they’ll receive.
>
> For example, a node with 4 vCPUs and 8 GB of memory should be sufficient for Control Center and an application created with [Vaadin Start](https://start.vaadin.com).

<!-- vale Vale.Spelling = YES -->

You’ll also need to install [Helm](https://helm.sh/). It’s a Kubernetes package manager that simplifies application deployment and management. Make sure it’s configured to interact with your cluster.

## <a id="configure-hostnames"></a>Configure Hostnames

You’ll need to configure the hostnames for Control Center and for Keycloak — the Control Center’s authentication provider. They’ll need hostnames of hosts that are accessible from a web browser running outside the cluster.

Using your cloud provider’s dashboard, create two DNS records. Point them to your cluster’s public IP address, which are obtained from your cloud provider. For example, supposing your domain is `mydomain.com`, you’d create `control.mydomain.com` and `auth.mydomain.com`, both pointing to the cluster’s external IP.

You should find the external IP address in your cloud provider’s dashboard. Make sure that your network security settings allow traffic to this address on the necessary ports.

## <a id="deploying-control-center"></a>Deploying Control Center

When you’re ready, deploy Control Center. You can do this by entering the following from the command-line:

Terminal

```bash
helm install control-center oci://docker.io/vaadin/control-center \
    -n control-center --create-namespace \
    --set domain=mydomain.com \
    --set user.email=example@mydomain.com \
    -f values-ingress.yaml \
    --wait
```

You’d replace `mydomain.com` here with your domain, and replace the email address with your own. The email address is used to create the initial user account in Control Center.

> **Note:** The installation of Control Center can be customized by modifying the Helm command. See the [Configure Installation](https://vaadin.com/docs/v24/control-center/getting-started/configure-installation.md) page for more details.

Here’s an example of a custom ingress configuration:

values-ingress.yaml

```yaml
ingress:
  enabled: true
  className: "nginx"
  hosts:
    - host: "control.mydomain.com"
      paths:
        - path: "/"
          pathType: Prefix
    - host: "auth.mydomain.com"
      paths:
        - path: "/"
          pathType: Prefix
  tls:
    - hosts:
        - "control.mydomain.com"
        - "auth.mydomain.com"
      secretName: "control-center-tls"
```

This ingress configuration assumes that you already have a certificate in your production environment. To create the `control-center-tls` secret for the certificate, you should execute this from the command-line:

Terminal

```bash
kubectl -n control-center create secret tls control-center-tls --cert=cert.pem --key=key.pem
```

If you don’t have a certificate, or you’re not deploying to a production environment, you can create one with a tool like [`mkcert`](https://mkcert.org/), using the following:

Terminal

```bash
mkcert control.mydomain.com auth.mydomain.com
```

This creates the `cert.pem` and `key.pem` files.

## <a id="accessing-control-center"></a>Accessing Control Center

Once deployed, copy the temporary password for the initial user. Execute the following to retrieve it:

Terminal

```bash
kubectl -n control-center get secret control-center-user -o go-template="{{ .data.password | base64decode | println }}"
```

You can access Control Center through the web browser at `http://control.mydomain.com` — replacing "mydomain.com" with your domain.

### <a id="logging-in"></a>Logging In

When you first access Control Center, you’ll be prompted to log in. Use the email address you provided during deployment, and the temporary password you retrieved earlier.

[Image: Login to Control Center]

You’ll then be prompted to change your password, and then to provide a first and last name.

### <a id="accessing-the-dashboard"></a>Accessing the Dashboard

Upon successful authentication, you’ll be taken to the Control Center dashboard, as shown in the screenshot here:

[Image: Control Center Dashboard]

At this point, the dashboard should notify you that no applications are available. This is because none are deployed yet.

To start deploying your Vaadin applications and take full advantage of Control Center’s features, proceed to the [Application Deployment](https://vaadin.com/docs/v24/control-center/application-deployment.md) documentation page.
