> For the complete documentation index, see [llms.txt](https://docs.digit.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.digit.org/platform/guides/installation-guide/infrastructure-setup/sdc.md).

# On Premise

## Overview

Running Kubernetes on a State Data Centre (SDC) gives a cloud-native experience for deploying DIGIT on infrastructure you own and operate. This page describes the recommended SDC reference architecture: a Rancher-managed RKE2 Kubernetes cluster backed by PostgreSQL 15.12, NFS-backed persistent storage, and a MinIO S3-compatible object store.

Whether States have their own on-premise data centre or have decided to forego the various managed cloud solutions, there are a few things one should know when getting started with on-premise K8s.

All virtual machines run on Ubuntu 24.04 LTS and are connected exclusively through private networking. A bastion server, equipped with HAProxy, serves as the single public entry point for accessing the cluster.

Compared with a hand-rolled Kubernetes install, RKE2 + Rancher gives you a hardened, highly available control plane, a management UI/API for cluster lifecycle operations, and a repeatable path to reproduce the same setup across environments - closing much of the gap between a managed cloud service and a self-operated SDC.

## Infrastructure Architecture

The diagram below shows how the components fit together within the SDC private network. Users reach the platform through a public DNS/domain that resolves to the Bastion + HAProxy node - the only node with a public IP. It forwards application (HTTP/HTTPS) traffic to the ingress controller on the RKE2 cluster and provides SSH access to the private network. Rancher Manager handles cluster lifecycle (provisioning, upgrades, monitoring, access). Worker nodes run the DIGIT workloads and consume the dedicated PostgreSQL 15.12 VM for application data, the NFS server (via the NFS CSI driver) for persistent volumes, and MinIO for S3-compatible object storage - with NFS and MinIO co-located on a single storage node.

<figure><img src="/files/8QnqX77NRIsJqp2splZN" alt=""><figcaption></figcaption></figure>

## Installation Steps

{% content-ref url="/pages/TLwg30TE2nMiVYhGTr0w" %}
[Create Infrastructure On-Premise](/platform/guides/installation-guide/infrastructure-setup/sdc/create-infrastructure-on-premise.md)
{% endcontent-ref %}

{% content-ref url="/pages/a4zyqRshEsVNp82nVkAa" %}
[DIGIT Deployment](/platform/guides/installation-guide/digit-deployment.md)
{% endcontent-ref %}

{% content-ref url="/pages/15mjpFXFiGiyy9WoAE1q" %}
[Bootstrap DIGIT](/platform/guides/data-setup-guide/bootstrap-digit.md)
{% endcontent-ref %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.digit.org/platform/guides/installation-guide/infrastructure-setup/sdc.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
