# Quickstart

> From signup to a live deployment in about 15 minutes. No sales calls, no architecture reviews.

This walkthrough takes you end-to-end: sign up, connect AWS, create a cluster, deploy your first app. If you already have an Ownkube account and a connected AWS account, jump to [Deploy your first app](/docs/guides/deploy-first-app).

## What you'll need

- An **AWS account** with permission to create IAM roles and CloudFormation stacks
- A container image (public image, or one in a connected registry such as Amazon ECR or a GitHub repository)
- About 15 minutes. Cluster provisioning runs in the background.

You don't need a credit card to get started. The free tier covers up to **10 vCPU and 20 GB RAM** across all your clusters.

## 1. Sign up

1. **Create your account**

   Go to [app.ownkube.io/signup](https://app.ownkube.io/signup) and sign up with email, GitHub, or Google.

2. **Create your organization**

   Ownkube auto-creates a workspace for you. You can invite teammates later from [Settings](https://app.ownkube.io/dashboard/settings).

## 2. Connect your AWS account

Ownkube uses a [CloudFormation](https://docs.aws.amazon.com/cloudformation/) stack to create a least-privilege IAM role in your AWS account. Your data stays in your VPC. The platform never sees your application traffic.

1. **Open the AWS onboarding flow**

   Go to [**AWS onboarding**](https://app.ownkube.io/dashboard/aws-onboarding). The first time you land here you'll see the three-step connect flow.

2. **Enter your AWS account ID and region**

   - **AWS account ID**, 12 digits (find it in your AWS console, top-right account menu)
   - **Region**, pick where you want clusters provisioned (17 [AWS regions](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/) supported, including `us-east-1`, `us-west-2`, `eu-west-1`, `ap-south-1`)

3. **Deploy the CloudFormation stack**

   Click **Deploy stack**. A new tab opens in the AWS console with parameters pre-filled. Tick the IAM acknowledgement and click **Create stack**. It takes about two minutes.

4. **Verify the connection**

   Come back to the Ownkube tab and click **Verify**. Ownkube assumes the role, runs a short account-setup workflow, and marks the account as verified.

Stuck on this step? See [Connect your AWS account](/docs/guides/connect-aws) for the full walkthrough and troubleshooting.

## 3. Create a cluster

Ownkube supports two cluster shapes. We recommend starting with the **Starter** shape ([K3s](https://github.com/k3s-io/k3s) on one AWS instance), free of any Ownkube platform fee, that provisions in about 5 minutes. You can add a **Production** cluster (managed [EKS](https://aws.amazon.com/eks/)) later for live traffic that needs to be highly available across availability zones.

**Starting out? Pick the Starter shape (K3s).** It's the cheapest path onto Ownkube. One EC2 instance runs unlimited apps, workers, and databases with **no Ownkube platform fee**, you only pay AWS for the EC2 instance. AWS Activate or other startup credits cover that in full. See the [comparison table](/docs/introduction) for how this stacks up against Heroku, Render, and Railway.

#### K3s (Starter)

A single EC2 instance running K3s. **Free** Ownkube platform fee. You only pay AWS for the EC2 instance. Best for dev, staging, side projects, small production workloads, and single-tenant apps. Provisions in about 5 minutes.

1. **Start the wizard**

   Open your [dashboard](https://app.ownkube.io/dashboard) and select **Deploy on EC2** from the create-cluster wizard.

2. **Name your cluster**

   Enter a cluster name (e.g. `side-project`), pick your AWS account, and keep the default region.

3. **Pick an instance type**

   | Instance | vCPU | Memory | ~EC2 cost | Comfortably runs |
   |---|---|---|---|---|
   | `t3.medium` | 2 | 4 GiB | ~\$30 / mo | 1-2 apps + 1 small db |
   | `t3.large` | 2 | 8 GiB | ~\$60 / mo | 2-3 apps + 1 db |
   | `t3.xlarge` | 4 | 16 GiB | ~\$120 / mo | 4-6 apps + 1-2 dbs |
   | `t3.2xlarge` | 8 | 32 GiB | ~\$240 / mo | 8-12 apps + 2-3 dbs |

   No Ownkube platform fee on top, you pay AWS only. AWS Activate or other startup credits cover these EC2 costs in full.

4. **Review and create**

   Starter clusters skip the networking and compute steps. Confirm the summary and click **Create cluster**.

#### EKS (Production)

Managed [Kubernetes](https://kubernetes.io/) with autoscaling, highly available across availability zones. Use this for production workloads that need HA, node autoscaling, or multi-AZ resilience. Provisions in about 10 minutes.

1. **Start the wizard**

   Open your [dashboard](https://app.ownkube.io/dashboard) and start the create-cluster wizard.

2. **Choose EKS and name your cluster**

   Select **Deploy on EKS**. Enter a cluster name (e.g. `prod-us-east-1`), pick your AWS account and region, and keep the default Kubernetes version.

3. **Configure networking**

   Accept the defaults unless you have conflicting CIDRs in your VPC. Default pods CIDR is `10.244.0.0/16`, services CIDR is `10.96.0.0/12`.

4. **Size your workload capacity**

   Drag **Workload vCPUs** and **Memory** to your starting size. Defaults are 8 vCPU and 16 GiB. You can resize after creation; autoscaling kicks in automatically.

5. **Review and create**

   Confirm the review summary and estimated monthly cost. Click **Create cluster**.

## 4. Connect a registry or GitHub repository

Your deployment needs an image source. The two shipped paths are: connect **Amazon ECR** (via the IAM role from onboarding) or connect a **GitHub repository** (via the GitHub App), which lets Ownkube build images directly from source.

1. **Go to Settings**

   Open [**Settings**](https://app.ownkube.io/dashboard/settings).

2. **Connect a registry or GitHub App**

   Click **Connect GitHub App** to enable builds from a GitHub repository, or wire up your Amazon ECR registry. Public images need no registry connection.

See [Registries](/docs/features/registries) for details and the full list of supported types.

## 5. Deploy your first app

1. **Start a new deployment**

   Go to [**Create deployment**](https://app.ownkube.io/dashboard) from your dashboard.

2. **Pick a resource type**

   - **Web**, HTTP service with a public hostname
   - **Worker**, background process, no public endpoint
   - **Job**, runs once and exits
   - **Database**, managed Postgres (see [Databases](/docs/features/databases))
   - **Functions** (beta), serverless event handlers triggered by HTTP or a cron schedule

3. **Pick a target**

   Choose the cluster from the previous step and an environment. The defaults are **Development** and **Production**. Pick `Development` for this first run.

4. **Configure your container**

   - **Registry + repository + tag**, pick from your connected registries
   - **Port**, the port your app listens on (e.g. `3000`)
   - **Public**, toggle on for web deployments to get a public hostname
   - **Env vars**, add any `KEY=value` pairs your app needs. Flip the **Secret** toggle for anything sensitive.

5. **Deploy**

   Click **Create deployment**. The deployment page opens and shows live status. Image pull, startup, and health-check progression.

When the status goes **healthy**, click the generated hostname on the Overview tab. Your app is live.

## You're running

From here, Ownkube handles the rest. You can:

- **Scale automatically** on CPU / memory thresholds. See [Autoscaling](/docs/features/autoscaling).
- **Add a database** with one click. See [Databases](/docs/features/databases).
- **Invite teammates** from [Settings](https://app.ownkube.io/dashboard/settings)

- [Deploy guide](/docs/guides/deploy-first-app)
- [How it works](/docs/how-it-works)

---

**Don't see a feature you need?** Email [support@ownkube.io](mailto:support@ownkube.io?subject=Feature%20request). Ownkube is shaped by the teams using it and we ship what our users ask for.
