diff --git a/.github/workflows/preview-website.yml b/.github/workflows/preview-website.yml
index 134e457..46979f6 100644
--- a/.github/workflows/preview-website.yml
+++ b/.github/workflows/preview-website.yml
@@ -41,7 +41,7 @@ jobs:
- name: Install Hugo
run: |
- curl -fsSL -o hugo_extended.deb https://github.com/gohugoio/hugo/releases/download/v0.111.1/hugo_extended_0.111.1_linux-amd64.deb
+ curl -fsSL -o hugo_extended.deb https://github.com/gohugoio/hugo/releases/download/v0.128.2/hugo_extended_0.128.2_linux-amd64.deb
sudo dpkg -i hugo_extended.deb
rm hugo_extended.deb
diff --git a/docs/README.md b/docs/README.md
index a1e877e..9fa5fb0 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -35,7 +35,7 @@ Concept explains some significant aspect of KubeStash. This is where you can lea
Setup contains instruction for installing, uninstalling, and upgrading KubeStash.
- **Install KubeStash:** Provides installation instructions for KubeStash and its various components.
- - [KubeStash](/docs/setup/install/kubestash/index.md): Provides installation instructions for KubeStash.
+ - [KubeStash](/docs/setup/install/kubestash/_index.md): Provides installation instructions for KubeStash.
- [kubeStash kubectl Plugin](/docs/setup/install/kubectl-plugin/index.md): Provides installation instructions for KubeStash `kubectl` plugin.
- [Troubleshooting](/docs/setup/install/troubleshooting/index.md): Provides troubleshooting guide for various installation problems.
- **Uninstall KubeStash:** Provides uninstallation instructions for KubeStash and its various components.
diff --git a/docs/guides/hooks/backup-and-restore-hooks/index.md b/docs/guides/hooks/backup-and-restore-hooks/index.md
index 807904b..b018ab2 100644
--- a/docs/guides/hooks/backup-and-restore-hooks/index.md
+++ b/docs/guides/hooks/backup-and-restore-hooks/index.md
@@ -22,7 +22,7 @@ Here, we are going to demonstrate how you can perform different actions before a
## Before You Begin
- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/).
-- Install KubeStash in your cluster following the steps [here](/docs/setup/install/kubestash/index.md).
+- Install KubeStash in your cluster following the steps [here](/docs/setup/install/kubestash/_index.md).
- Install [KubeDB](https://kubedb.com) in your cluster following the steps [here](https://kubedb.com/docs/latest/setup/). This step is optional. You can deploy your database using any method you want. We are using KubeDB because KubeDB simplifies many of the difficult or tedious management tasks of running production-grade databases on private and public clouds.
- If you are not familiar with how KubeStash backup and restore MySQL databases, please check the [KubeDB](https://kubedb.com/) documentation for MySQL backup and restore using KubeStash.
- Also, if you haven't read about how hooks work in KubeStash, please check it from [here](/docs/guides/hooks/overview/index.md).
diff --git a/docs/guides/hooks/slack-notification/index.md b/docs/guides/hooks/slack-notification/index.md
index 4160b58..3859bc4 100644
--- a/docs/guides/hooks/slack-notification/index.md
+++ b/docs/guides/hooks/slack-notification/index.md
@@ -18,7 +18,7 @@ In this guide, we are going to show you how to send backup notifications to a Sl
## Before You Begin
- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/).
-- Install KubeStash in your cluster following the steps [here](/docs/setup/install/kubestash/index.md).
+- Install KubeStash in your cluster following the steps [here](/docs/setup/install/kubestash/_index.md).
- If you haven't read about how hooks work in KubeStash, please check it from [here](/docs/guides/hooks/overview/index.md).
You should be familiar with the following `KubeStash` concepts:
diff --git a/docs/setup/README.md b/docs/setup/README.md
index 4f0e703..c315b8a 100644
--- a/docs/setup/README.md
+++ b/docs/setup/README.md
@@ -18,14 +18,14 @@ aliases:
# Setup
-
-
-## Using Helm 3
-
-KubeStash can be installed via [Helm](https://helm.sh/) using the [chart](https://github.com/kubestash/installer/tree/master/charts/kubestash) from [AppsCode Charts Repository](https://github.com/appscode/charts). To install the chart with the release name `kubestash`:
-
-```bash
-$ helm install kubestash oci://ghcr.io/appscode-charts/kubestash \
- --version {{< param "info.version" >}} \
- --namespace stash --create-namespace \
- --set-file global.license=/path/to/the/license.txt \
- --wait --burst-limit=10000 --debug
-```
-
-To see the detailed configuration options, visit [here](https://github.com/kubestash/installer/tree/master/charts/kubestash).
-
-
-
-
-### Using YAML
-
-If you prefer to not use Helm, you can generate YAMLs from KubeStash chart and deploy using `kubectl`. Here we are going to show the prodecure using Helm 3.
-
-```bash
-$ helm template kubestash oci://ghcr.io/appscode-charts/kubestash \
- --version {{< param "info.version" >}} \
- --namespace stash --create-namespace \
- --set-file global.license=/path/to/the/license.txt | kubectl apply -f -
-```
-
-To see the detailed configuration options, visit [here](https://github.com/kubestash/installer/tree/master/charts/kubestash).
-
-
-
-
-### Verify installation
-
-To check if KubeStash operator pods have started, run the following command:
-
-```bash
-$ kubectl get pods --all-namespaces -l app.kubernetes.io/name=kubestash-operator --watch
-NAMESPACE NAME READY STATUS RESTARTS AGE
-stash kubestash-kubestash-operator-fcd8bf7c6-psjs6 2/2 Running 0 5m49s
-```
-
-Once the operator pod is running, you can cancel the above command by typing `Ctrl+C`.
-
-Now, to confirm CRD groups have been registered by the operator, run the following command:
-```bash
-$ kubectl get crd -l app.kubernetes.io/name=kubestash
-NAME CREATED AT
-addons.addons.kubestash.com 2023-12-07T06:27:41Z
-backupbatches.core.kubestash.com 2023-12-07T06:27:41Z
-backupblueprints.core.kubestash.com 2023-12-07T06:27:41Z
-backupconfigurations.core.kubestash.com 2023-12-07T06:40:37Z
-backupsessions.core.kubestash.com 2023-12-07T06:40:37Z
-backupstorages.storage.kubestash.com 2023-12-07T06:40:37Z
-functions.addons.kubestash.com 2023-12-07T06:27:41Z
-hooktemplates.core.kubestash.com 2023-12-07T06:27:42Z
-repositories.storage.kubestash.com 2023-12-07T06:40:37Z
-restoresessions.core.kubestash.com 2023-12-07T06:27:42Z
-retentionpolicies.storage.kubestash.com 2023-12-07T06:27:42Z
-snapshots.storage.kubestash.com 2023-12-07T06:40:37Z
-```
-
-### Verify Catalogs
-
-KubeStash automatically installs the necessary Addon catalogs for workload, PVC and Kubernetes manifest backups. Verify that the Addon catalogs have been installed using the following command.
-
-```bash
-$ kubectl get addons.addons.kubestash.com
-NAME AGE
-kubedump-addon 7m1s
-pvc-addon 7m1s
-workload-addon 7m1s
-```
-
-As you can see from the above output that KubeStash has created `Addon` objects.
-
-Now, you are ready to [take your first backup](/docs/guides/README.md) using KubeStash.
-
-## Purchase KubeStash License
-
-If you are interested in purchasing KubeStash license, please contact us via sales@appscode.com for further discussion. You can also set up a meeting via our [calendly link](https://calendly.com/appscode/intro).
-
-If you are willing to purchase KubeStash license but need more time to test in your dev cluster, feel free to contact sales@appscode.com. We will be happy to extend your trial period.
diff --git a/docs/setup/install/kubestash/openshift.md b/docs/setup/install/kubestash/openshift.md
new file mode 100644
index 0000000..3fe803e
--- /dev/null
+++ b/docs/setup/install/kubestash/openshift.md
@@ -0,0 +1,68 @@
+---
+title: Install KubeStash on OpenShift
+description: Install KubeStash on OpenShift
+menu:
+ docs_{{ .version }}:
+ identifier: install-kubestash-openshift
+ name: OpenShift
+ parent: install-kubestash-enterprise
+ weight: 50
+product_name: kubestash
+menu_name: docs_{{ .version }}
+section_menu_id: setup
+---
+
+# Install in OpenShift
+
+There are two ways to deploy KubeStash in [OpenShift](https://www.redhat.com/en/technologies/cloud-computing/openshift). Use Option A for the standard upstream chart, or Option B if you require the Red Hat OpenShift certified chart (for example, to satisfy a Red Hat OpenShift certification requirement).
+
+### Option A: Standard chart with OpenShift values
+
+Use the standard [`kubestash` chart](/docs/setup/install/kubestash/helm.md) and enable the OpenShift distribution values. This switches the operator to UBI-based images and applies the SecurityContextConstraints and other OpenShift-specific tweaks:
+
+```bash
+$ helm install kubestash oci://ghcr.io/appscode-charts/kubestash \
+ --version {{< param "info.version" >}} \
+ --namespace stash --create-namespace \
+ --set-file global.license=/path/to/the/license.txt \
+ --set global.distro.openshift=true \
+ --set global.distro.ubi=all \
+ --wait --burst-limit=10000 --debug
+```
+
+Equivalently, in a `values.yaml`:
+
+```yaml
+global:
+ distro:
+ openshift: true
+ ubi: "all"
+```
+
+- `global.distro.openshift: true` enables OpenShift-specific resources (SCCs, etc.).
+- `global.distro.ubi: "all"` switches every component to UBI-based images. Set it to `operator` to only switch the operator images.
+
+### Option B: Red Hat OpenShift certified chart
+
+The `kubestash-certified` chart is the Red Hat certified distribution of KubeStash. Unlike the standard chart, **it does not include CRDs** — the certification process requires CRDs to ship as a separate chart. You must therefore install the CRDs chart first, and then the operator chart.
+
+#### Step 1: Install the CRDs
+
+```bash
+$ helm install kubestash-certified-crds oci://ghcr.io/appscode-charts/kubestash-certified-crds \
+ --version {{< param "info.version" >}} \
+ --namespace stash --create-namespace \
+ --wait --burst-limit=10000 --debug
+```
+
+#### Step 2: Install the certified operator chart
+
+```bash
+$ helm install kubestash oci://ghcr.io/appscode-charts/kubestash-certified \
+ --version {{< param "info.version" >}} \
+ --namespace stash \
+ --set-file global.license=/path/to/the/license.txt \
+ --wait --burst-limit=10000 --debug
+```
+
+Once installed, follow the [Common Configuration](/docs/setup/install/kubestash/configuration.md) steps to verify the operator and Addon catalogs are running.
diff --git a/docs/setup/install/kubestash/yaml.md b/docs/setup/install/kubestash/yaml.md
new file mode 100644
index 0000000..a282ffd
--- /dev/null
+++ b/docs/setup/install/kubestash/yaml.md
@@ -0,0 +1,28 @@
+---
+title: Install KubeStash using YAML
+description: Install KubeStash using YAML
+menu:
+ docs_{{ .version }}:
+ identifier: install-kubestash-yaml
+ name: YAML
+ parent: install-kubestash-enterprise
+ weight: 20
+product_name: kubestash
+menu_name: docs_{{ .version }}
+section_menu_id: setup
+---
+
+# Using YAML
+
+If you prefer to not use Helm, you can generate YAMLs from KubeStash chart and deploy using `kubectl`. Here we are going to show the procedure using Helm 3.
+
+```bash
+$ helm template kubestash oci://ghcr.io/appscode-charts/kubestash \
+ --version {{< param "info.version" >}} \
+ --namespace stash --create-namespace \
+ --set-file global.license=/path/to/the/license.txt | kubectl apply -f -
+```
+
+To see the detailed configuration options, visit [here](https://github.com/kubestash/installer/tree/master/charts/kubestash).
+
+Next: [verify the installation](/docs/setup/install/kubestash/configuration.md).
diff --git a/docs/setup/uninstall/kubestash/index.md b/docs/setup/uninstall/kubestash/index.md
index c6ec337..c15f9a9 100644
--- a/docs/setup/uninstall/kubestash/index.md
+++ b/docs/setup/uninstall/kubestash/index.md
@@ -29,7 +29,7 @@ To uninstall KubeStash, run the following command:
## Using Helm 3
-In Helm 3, release names are [scoped to a namespace](https://v3.helm.sh/docs/faq/#release-names-are-now-scoped-to-the-namespace). So, provide the namespace you used to install the operator when installing.
+In Helm 3, release names are [scoped to a namespace](https://helm.sh/docs/v3/faq/changes_since_helm2/). So, provide the namespace you used to install the operator when installing.
```bash
$ helm uninstall kubestash --namespace stash