> For the complete documentation index, see [llms.txt](https://docs.inrupt.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.inrupt.com/ess/installation.md).

# Installation

Inrupt Enterprise Solid Server (ESS) is deployed using [Kustomize](https://github.com/kubernetes-sigs/kustomize) manifests on Kubernetes. Contact your Inrupt representative or Inrupt's [Business Development](https://www.inrupt.com/contact) team to obtain access.

{% hint style="info" %}
**PodSpaces (Developer Preview)** Inrupt provides hosted versions of the Enterprise Solid Server, eliminating the installation overhead. For more information, see [Inrupt PodSpaces](https://github.com/inrupt/docs-gitbook/tree/main/podspaces/README.md)
{% endhint %}

## Prerequisites

Before installing ESS, ensure the following are available:

* **Kubernetes** 1.28 or later — at least three worker nodes with 4 CPU and 8 GB RAM each
* **cert-manager** installed in the cluster
* **PostgreSQL** — one database per ESS service: seven for a standard deployment, or five if you are not deploying the Solid OIDC Broker and WebID Service (see [Advanced Configuration](/ess/services/advanced-configuration.md)). The Search Service requires one additional database with the `pgvector` extension enabled. The databases can be hosted on a single PostgreSQL instance or on separate instances.
* **Kafka** message broker — three brokers recommended
* **S3-compatible object storage**
* **OpenSearch** — required only if you deploy the [Search Service](/ess/services/service-search.md)
* **Secrets management** solution (e.g., Vault, AWS Secrets Manager)
* **Cloudsmith registry token** — contact Inrupt to obtain registry credentials

{% hint style="warning" %}
ESS installation requires access to Inrupt's private Cloudsmith registry. Ensure your registry credentials are configured before proceeding.
{% endhint %}

For full operational deployment steps including Kubernetes manifests and Kustomize overlays, see the [ESS Kustomize repository](https://github.com/inrupt-customers/ess-kustomize-releases) (private; requires Inrupt customer access).

## Getting Access

* **Container Registry Entitlement Token** — pull ESS container images from Inrupt's private registry.
* **Terraform Repository** *(optional)* — Terraform blueprints for provisioning ESS infrastructure (IdP, PostgreSQL, Kafka, etc.) on AWS.
* **Kustomize Repository** — deployment manifests, components, and installation documentation. Can build on top of the Terraform-provisioned infrastructure, but Terraform is not required.

## Installation Steps

### 1. Provision Infrastructure *(optional)*

If you are setting up a completely new, standalone deployment and do not have existing infrastructure, the Terraform repository provides blueprints to provision the required infrastructure (Identity Provider, PostgreSQL databases, Kafka, object storage) on AWS. Follow the documentation in the repository to get started. If you are deploying ESS onto existing infrastructure, you can skip this step and provision the required components inline with your existing infrastructure and tooling.

### 2. Deploy ESS

The Kustomize repository contains a quickstart guide and detailed installation documentation. Follow the repository documentation to:

* Fork the repository and create your overlay
* Configure your Identity Provider, database, and secrets
* Deploy to your Kubernetes cluster

## Customization

Once deployed, see [Customize ESS](/ess/installation/customize-configurations.md) for guidance on customizing your deployment, including:

* [Start App and Approval Pages](/ess/installation/customize-configurations/customization-start-apps.md)
* [Logging and Auditing](/ess/installation/customize-configurations/customization-logging.md)
* [Security Customization](/ess/installation/customize-configurations/customization-security.md)
