---
title: Import a Git repository
description: This guide walks you through setting up Cube Cloud, importing a generic Git repository with an existing Cube project via SSH, and connecting to your database.
---

## Step 1: Create an account

Navigate to [cubecloud.dev](https://cubecloud.dev/), and create a new Cube Cloud
account.

## Step 2: Create a new Deployment

Click **Create Deployment** button. This is the first step in the
deployment creation. Give it a name and select the cloud provider and region of
your choice.

<div style={{ textAlign: "center" }}>
  <img
    alt="Cube Cloud Create Deployment Screen"
    src="https://cubedev-blog-images.s3.us-east-2.amazonaws.com/f5b73cc7-ac72-49ff-a3cd-491c6ab89bbc.png"
    style={{ border: "none" }}
    width="100%"
  />
</div>

<Info>

Microsoft Azure is available on [Enterprise plan](https://cube.dev/pricing).
[Contact us](https://cube.dev/contact) for details.

</Info>

## Step 3: Import Git repository

Next up, the second step in creating a Cube App from scratch in Cube Cloud is to
click **Import Git repository via SSH** button.

<div style={{ textAlign: "center" }}>
  <img
    alt="Cube Cloud Upload Project Screen"
    src="https://cubedev-blog-images.s3.us-east-2.amazonaws.com/4e212151-527b-4435-892c-257a11842e03.png"
    style={{ border: "none" }}
    width="100%"
  />
</div>

Enter the SSH URL of your Git repository, and click **Generate SSH key**:

<div style={{ textAlign: "center" }}>
  <img
    alt="Getting SSH key from Cube Cloud"
    src="https://cubedev-blog-images.s3.us-east-2.amazonaws.com/ff06ef69-74bf-4259-ba4b-2499d3d5d265.png"
    style={{ border: "none" }}
    width="100%"
  />
</div>

Copy the SSH key and add it to your hosted Git repository. Back in Cube Cloud,
click **Connect**. After a connection is successfully established, you
should see the next screen:

<div style={{ textAlign: "center" }}>
  <img
    alt="Getting webhook URL from Cube Cloud"
    src="https://cubedev-blog-images.s3.us-east-2.amazonaws.com/eda31adf-fd36-4757-a2a2-d9b919b890d3.png"
    style={{ border: "none" }}
    width="100%"
  />
</div>

Copy the **Cube Cloud Git Webhook URL** and add it your hosted Git
repository's webhooks. Ensure that the Git repository can push events which
should trigger a build on Cube Cloud. Back in Cube Cloud,
click **Connect** to test the webhook.

### Webhook format

Cube recognizes push webhooks in the formats sent by GitLab, Bitbucket, and
Azure DevOps out of the box, so you can usually point your repository's native
webhook integration at the webhook URL without any extra configuration.

If your Git host does not send one of these formats (for example, AWS
CodeCommit), or you want to trigger a sync from a CI/CD pipeline or manually,
send a `POST` request to the webhook URL with the `x-git-event: push` header:

```bash
curl -X POST "<CUBE-GIT-WEBHOOK-URL>" \
  -H "x-git-event: push" \
  -H "Content-Type: application/json" \
  --data '{"ref": "refs/heads/main"}'
```

- Use the full webhook URL exactly as shown in the UI — it includes the
  `token` query parameter that authenticates the request.
- The `x-git-event: push` header is required. Requests that do not carry a
  recognized Git event are ignored: Cube responds with `204`, does not pull
  the repository, and the request is not shown under recent webhook requests.
- `ref` is optional and names the branch to sync (in the `refs/heads/<branch>`
  form). If omitted, the production branch configured for the deployment is
  used.

Response status codes:

| Status | Meaning                                                                                   |
| ------ | ----------------------------------------------------------------------------------------- |
| `201`  | The event was accepted and a build was triggered                                           |
| `204`  | The event was ignored — no recognized Git event in the request, or nothing new to build    |
| `403`  | The `token` query parameter is missing or invalid                                          |
| `429`  | Rate limited — there is a short per-branch cooldown between webhook calls; retry in ~30 s  |

## Step 4: Connect your Database

Enter your credentials to connect to your database. Check the [connecting to
databases][link-connecting-to-databases] guide for more details.

<Info>

Want to use a sample database instead? We also have a sample database where you
can try out Cube Cloud:

<br />

| Field    | Value              |
| -------- | ------------------ |
| Host     | `demo-db.cube.dev` |
| Port     | `5432`             |
| Database | `ecom`             |
| Username | `cube`             |
| Password | `12345`            |

</Info>

<div style={{ textAlign: "center" }}>
  <img
    alt="Cube Cloud Setup Database Screen"
    src="https://cubedev-blog-images.s3.us-east-2.amazonaws.com/1375f9f1-0860-412a-a436-e2e775ec10fa.png"
    style={{ border: "none" }}
    width="100%"
  />
</div>

In the UI it'll look exactly like the image below.

<div style={{ textAlign: "center" }}>
  <img
    alt="Cube Cloud Setup Database Screen"
    src="https://cubedev-blog-images.s3.us-east-2.amazonaws.com/031bb948-d706-412c-b714-5bf28df01312.png"
    style={{ border: "none" }}
    width="100%"
  />
</div>

If you run into issues here, make sure to allow the Cube Cloud IPs to access
your database. This means you need to enable these IPs in your firewall. If you
are using AWS, this would mean adding a security group with allowed IPs.

## Step 5: Generate the Data Model

Step five in this case consists of generating data models. Start by selecting
the database tables to generate the data models from, then
hit **Generate**.

<div style={{ textAlign: "center" }}>
  <img
    alt="Cube Cloud Setup Database Screen"
    src="https://cubedev-blog-images.s3.us-east-2.amazonaws.com/a906434b-c4da-414a-adb3-f010b1fa45d1.png"
    style={{ border: "none" }}
    width="100%"
  />
</div>

Cube Cloud will generate the data models and spin up your Cube deployment. With
this, you're done. You've created a Cube deployment, configured a database
connection, and generated data models!

<div style={{ textAlign: "center" }}>
  <img
    alt="Cube Cloud Setup Database Screen"
    src="https://cubedev-blog-images.s3.us-east-2.amazonaws.com/b6addada-cc77-4940-aa0c-a0a9c3df6fd1.png"
    style={{ border: "none" }}
    width="100%"
  />
</div>

You're ready for the last step, running queries in the Playground.

## Step 6: Try out Cube Cloud

Now you can navigate to Playground to try out your queries or connect your
application to the Cube Cloud API.

<div style={{ textAlign: "center" }}>
  <img
    alt="Cube Cloud Playground"
    src="https://ucarecdn.com/43bc545a-3c77-42e4-a9db-7c5188fe610e/"
    style={{ border: "none" }}
    width="100%"
  />
</div>

[link-connecting-to-databases]: /admin/connect-to-data/data-sources