> ## Documentation Index
> Fetch the complete documentation index at: https://docs.infraudit.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Prerequisites: What You Need to Self-Host InfraAudit

> Everything you need before deploying InfraAudit: a Supabase project for authentication, Docker or Kubernetes, and minimum system requirements.

Before deploying InfraAudit, you need a Supabase project, a container runtime, and enough system resources. The Supabase requirement is the most common blocker for first-time self-hosters — set it up first, before you touch Docker or Kubernetes.

## 1. Supabase project (required)

InfraAudit delegates all authentication to Supabase. The backend validates every incoming JWT against your Supabase project and will refuse to start without valid connection details. You cannot substitute another auth provider in the current release.

<Steps>
  <Step title="Create a Supabase account">
    Go to [supabase.com](https://supabase.com) and create a free account. The Free tier is sufficient for development; the Pro tier is recommended for production.
  </Step>

  <Step title="Create a new project">
    Create a new project in any region. Wait for it to finish provisioning (about one minute).
  </Step>

  <Step title="Copy your API credentials">
    In your project, go to **Settings → API** and copy:

    * **Project URL** → `SUPABASE_URL`
    * **anon public** key → `SUPABASE_ANON_KEY`
    * **service\_role** secret → `SUPABASE_SERVICE_ROLE_KEY`
  </Step>

  <Step title="Copy the JWT secret">
    Still in **Settings → API**, scroll to **JWT Settings** and copy:

    * **JWT Secret** → `SUPABASE_JWT_SECRET`
  </Step>
</Steps>

Keep all four values — you'll paste them into your `.env` file or Kubernetes Secret during installation.

<Note>
  Supabase handles user accounts, OAuth logins (Google, GitHub), session management, and JWT signing. InfraAudit does not maintain its own user store.
</Note>

## 2. Container runtime

<Tabs>
  <Tab title="Docker Compose">
    For Docker Compose deployments, you need:

    * **Docker 24.0 or later**
    * **Docker Compose v2** — the `docker compose` subcommand (not the legacy `docker-compose` binary)

    Verify both are installed:

    ```bash theme={null}
    docker --version
    # Docker version 24.x.x, build ...

    docker compose version
    # Docker Compose version v2.x.x
    ```

    <Warning>
      Docker Compose v1 (`docker-compose`) is not supported. Make sure you're using the v2 `docker compose` subcommand.
    </Warning>
  </Tab>

  <Tab title="Kubernetes">
    For Kubernetes deployments, you need:

    * **Kubernetes 1.24 or later**
    * **kubectl** configured to target your cluster
    * A PostgreSQL instance (managed or in-cluster)
    * Optionally, Redis (the API degrades gracefully without it)

    Verify kubectl is configured:

    ```bash theme={null}
    kubectl cluster-info
    ```

    See the [Kubernetes deployment guide](/self-hosting/kubernetes) for the full setup.
  </Tab>
</Tabs>

## 3. System requirements

| Resource | Minimum      | Recommended |
| -------- | ------------ | ----------- |
| RAM      | 2 GB         | 4 GB        |
| CPU      | 1 core       | 2 cores     |
| Disk     | 10 GB        | 20 GB       |
| OS       | Linux, macOS | Linux       |

The 2 GB minimum covers the API, Postgres, and Redis containers running simultaneously. If you enable the optional Prometheus and Grafana monitoring profile, add another 512 MB.

## 4. Optional: Gemini API key

InfraAudit uses Google Gemini to generate AI-powered cost, security, and compliance recommendations. Without a key, it falls back to rule-based recommendations — all other features work normally.

To enable AI recommendations:

1. Go to [ai.google.dev](https://ai.google.dev) and create a project.
2. Generate an API key.
3. Set `GEMINI_API_KEY` in your `.env` or Kubernetes Secret.

## 5. Optional: cloud provider credentials

To scan your infrastructure, you need credentials for at least one cloud provider. Read-only credentials are sufficient and recommended for initial setup:

* **AWS** — IAM user access keys or a role ARN. See [Integrations: AWS](/integrations/aws).
* **GCP** — Service account JSON key. See [Integrations: GCP](/integrations/gcp).
* **Azure** — Service principal credentials. See [Integrations: Azure](/integrations/azure).
* **Kubernetes** — kubeconfig with read-only cluster access. See [Integrations: Kubernetes](/integrations/kubernetes).

You can add provider credentials after the platform is running — you don't need them to complete the initial deployment.

## Next steps

Once you have a Supabase project and Docker installed, choose your deployment path:

<CardGroup cols={2}>
  <Card title="Docker Compose" icon="docker" href="/self-hosting/docker-compose">
    Deploy with a single command. Recommended for getting started.
  </Card>

  <Card title="Kubernetes" icon="dharmachakra" href="/self-hosting/kubernetes">
    Deploy using the provided manifests for production environments.
  </Card>
</CardGroup>
