diff --git a/docs/do/credits.mdx b/docs/do/credits.mdx
new file mode 100644
index 00000000..12d481c3
--- /dev/null
+++ b/docs/do/credits.mdx
@@ -0,0 +1,11 @@
+---
+hide_title: true
+sidebar_label: Credits
+# custom_edit_url: https://github.com/facebook/docusaurus/edit/main/docs/api-doc-markdown.md
+description: credit to all the awesome open source projects
+image: "https://docs.kubefirst.io/img/logo.svg"
+---
+
+import CommonCredits from "../common/credits.mdx"
+
+
diff --git a/docs/do/deprovision.mdx b/docs/do/deprovision.mdx
new file mode 100644
index 00000000..0fe34d51
--- /dev/null
+++ b/docs/do/deprovision.mdx
@@ -0,0 +1,14 @@
+---
+hide_title: true
+display_sidebar: do
+sidebar_label: Deprovision
+# custom_edit_url: https://github.com/facebook/docusaurus/edit/main/docs/api-doc-markdown.md
+description: how to deprovision your kubefirst platform
+keywords:
+ - aws
+image: 'https://docs.kubefirst.io/img/logo.svg'
+---
+
+import Deprovision from '../common/deprovision.mdx';
+
+
diff --git a/docs/do/explore/argocd.mdx b/docs/do/explore/argocd.mdx
new file mode 100644
index 00000000..9a09befa
--- /dev/null
+++ b/docs/do/explore/argocd.mdx
@@ -0,0 +1,8 @@
+---
+title: Argo CD
+sidebar_position: 1
+---
+
+import ExploreArgocd from "../../common/argocd.mdx"
+
+
diff --git a/docs/do/explore/gitops.mdx b/docs/do/explore/gitops.mdx
new file mode 100644
index 00000000..cfa55bbc
--- /dev/null
+++ b/docs/do/explore/gitops.mdx
@@ -0,0 +1,9 @@
+---
+title: GitOps
+sidebar_position: 2
+---
+
+
+import ExploreGitOps from "../../common/gitops.mdx"
+
+
diff --git a/docs/do/explore/metaphor.mdx b/docs/do/explore/metaphor.mdx
new file mode 100644
index 00000000..ac0967be
--- /dev/null
+++ b/docs/do/explore/metaphor.mdx
@@ -0,0 +1,8 @@
+---
+title: Metaphor
+sidebar_position: 3
+---
+
+import ExploreMetaphor from "../../common/metaphor.mdx"
+
+
diff --git a/docs/do/explore/telemetry.mdx b/docs/do/explore/telemetry.mdx
new file mode 100644
index 00000000..41311723
--- /dev/null
+++ b/docs/do/explore/telemetry.mdx
@@ -0,0 +1,8 @@
+---
+title: Telemetry
+sidebar_position: 7
+---
+
+import ExploreTelemetry from "../../common/telemetry.mdx"
+
+
diff --git a/docs/do/explore/terraform.mdx b/docs/do/explore/terraform.mdx
new file mode 100644
index 00000000..9e4c817d
--- /dev/null
+++ b/docs/do/explore/terraform.mdx
@@ -0,0 +1,8 @@
+---
+title: Terraform & Atlantis
+sidebar_position: 4
+---
+
+import ExploreTerraform from "../../common/terraform.mdx"
+
+
diff --git a/docs/do/explore/user-creation.mdx b/docs/do/explore/user-creation.mdx
new file mode 100644
index 00000000..2d3ec653
--- /dev/null
+++ b/docs/do/explore/user-creation.mdx
@@ -0,0 +1,38 @@
+---
+title: User Creation
+sidebar_position: 5
+---
+
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+import styles from '../../stylesheets/tabs.module.css';
+
+import GitHubUserCreation from '../partials/github/_user-creation.mdx';
+import GitLabUserCreation from '../partials/gitlab/_user-creation.mdx';
+
+
+
+
+ GitHub
+
+ }
+ >
+
+
+
+
+ GitLab
+
+ }
+ >
+
+
+
diff --git a/docs/do/explore/vault.mdx b/docs/do/explore/vault.mdx
new file mode 100644
index 00000000..78f63959
--- /dev/null
+++ b/docs/do/explore/vault.mdx
@@ -0,0 +1,8 @@
+---
+title: Vault
+sidebar_position: 6
+---
+
+import ExploreVault from "../../common/vault.mdx"
+
+
diff --git a/docs/do/faq.mdx b/docs/do/faq.mdx
new file mode 100644
index 00000000..ab241f41
--- /dev/null
+++ b/docs/do/faq.mdx
@@ -0,0 +1,11 @@
+---
+hide_title: true
+sidebar_label: FAQ
+# custom_edit_url: https://github.com/facebook/docusaurus/edit/main/docs/api-doc-markdown.md
+description: frequently asked quesitons about the kubefirst platform
+image: "https://docs.kubefirst.io/img/logo.svg"
+---
+
+import FAQ from "../common/faq.mdx"
+
+
diff --git a/docs/do/gitops-catalog.mdx b/docs/do/gitops-catalog.mdx
new file mode 100644
index 00000000..984e0481
--- /dev/null
+++ b/docs/do/gitops-catalog.mdx
@@ -0,0 +1,14 @@
+---
+hide_title: true
+display_sidebar: civo
+sidebar_label: GitOps Catalog
+# custom_edit_url: https://github.com/facebook/docusaurus/edit/main/docs/api-doc-markdown.md
+description: using the kubefirst gitops catalog
+keywords:
+ - aws
+image: 'https://docs.kubefirst.io/img/logo.svg'
+---
+
+import GitOpsCatalog from '../common/gitops-catalog.mdx';
+
+
diff --git a/docs/do/overview.mdx b/docs/do/overview.mdx
new file mode 100644
index 00000000..4cc8a9bf
--- /dev/null
+++ b/docs/do/overview.mdx
@@ -0,0 +1,72 @@
+---
+hide_title: true
+sidebar_label: Overview
+sidebar_position: 1
+# custom_edit_url: https://github.com/facebook/docusaurus/edit/main/docs/api-doc-markdown.md
+description: an overview of kubefirst on a DigitalOcean kubernetes cluster
+image: 'https://docs.kubefirst.io/img/logo.svg'
+---
+
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+import styles from '../stylesheets/tabs.module.css';
+import ReactDom from 'react-dom';
+import * as config from '../constants.js';
+import GitHubOverview from '../do/partials/github/_overview.mdx';
+import GitLabOverview from '../do/partials/gitlab/_overview.mdx';
+import CloudBanner from '@site/src/components/CloudBanner/CloudBanner.jsx';
+import CommonProvisionProcess from "../common/partials/common/_provision-process.mdx";
+
+
+
+
+
+
+
+# Overview
+
+:::caution
+
+DigitalOcean is in beta. It is quite stable, but use at your own risks.
+
+:::
+
+The DigitalOcean provisioning process will:
+
+
+![kubefirst DigitalOcean with GitLab Cluster Diagram](../img/do/gitlab/installation-diagram-light.png#light-mode)![kubefirst DigitalOcean with GitLab Cluster Diagram](../img/do/gitlab/installation-diagram-dark.png#dark-mode)
+
+# Applications
+
+
+
+
+ GitHub
+
+ }
+ >
+
+
+
+
+ GitLab
+
+ }
+ >
+
+
+
diff --git a/docs/do/partials/common/_cluster-connectivity.mdx b/docs/do/partials/common/_cluster-connectivity.mdx
new file mode 100644
index 00000000..8ef8fac6
--- /dev/null
+++ b/docs/do/partials/common/_cluster-connectivity.mdx
@@ -0,0 +1,13 @@
+## Connecting to Kubernetes
+
+To connect to your new Kubernetes cluster, run
+
+```bash
+export KUBECONFIG=~/.k1/kubeconfig
+```
+
+To view all cluster pods, run
+
+```bash
+kubectl get pods -A
+```
diff --git a/docs/do/partials/common/_installed-applications.mdx b/docs/do/partials/common/_installed-applications.mdx
new file mode 100644
index 00000000..3a8283c0
--- /dev/null
+++ b/docs/do/partials/common/_installed-applications.mdx
@@ -0,0 +1,3 @@
+### Installed Applications
+
+To see what is installed by kubefirst, check the [overview page](../../overview.mdx).
diff --git a/docs/do/partials/common/_prerequisites.mdx b/docs/do/partials/common/_prerequisites.mdx
new file mode 100644
index 00000000..3787f2b1
--- /dev/null
+++ b/docs/do/partials/common/_prerequisites.mdx
@@ -0,0 +1,27 @@
+## Prerequisites
+
+### Local Prerequisites
+
+If you are on macOS, and have [Homebrew](https://brew.sh) installed, you can run:
+
+```shell
+brew install kubefirst/tools/kubefirst
+```
+
+To upgrade an existing kubefirst CLI to the latest version run:
+
+```shell
+brew update
+brew upgrade kubefirst
+```
+
+There are other ways to install kubefirst for different operating systems, architectures, and containerized environments. See our [installation README](https://github.com/kubefirst/kubefirst/blob/main/build/README.md) for details.
+
+### DigitalOcean Prerequisites
+
+For kubefirst to be able to provision your DigitalOcean cloud resources:
+
+- A [DigitalOcean account](https://cloud.digitalocean.com/registrations/new) in which you are an account owner.
+- A publicly routable [DNS](https://docs.digitalocean.com/tutorials/dns-registrars/).
+- A [DigitalOcean API personal access token](https://cloud.digitalocean.com/account/api/tokens).
+- A [DigitalOcean Spaces access key & its secret](https://cloud.digitalocean.com/account/api/spaces).
diff --git a/docs/do/partials/github/_cluster-create.mdx b/docs/do/partials/github/_cluster-create.mdx
new file mode 100644
index 00000000..4f984245
--- /dev/null
+++ b/docs/do/partials/github/_cluster-create.mdx
@@ -0,0 +1,20 @@
+import CloudflareDNS from "../../../common/partials/common/_cloudflare-dns.mdx";
+
+## Create your new kubefirst cluster
+
+Adjust the following command with your GitHub and DigitalOcean key in addition to the appropriate values for your new platform.
+
+```shell
+export GITHUB_TOKEN=ghp_xxxxxxxxxxxxxxxx
+export DO_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+export DO_SPACES_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+export DO_SPACES_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+
+kubefirst beta digitalocean create \
+ --alerts-email yourdistro@your-company.io \
+ --github-org your-github-org \
+ --domain-name your-domain.io \
+ --cluster-name kubefirst
+```
+
+
diff --git a/docs/do/partials/github/_overview.mdx b/docs/do/partials/github/_overview.mdx
new file mode 100644
index 00000000..e097403a
--- /dev/null
+++ b/docs/do/partials/github/_overview.mdx
@@ -0,0 +1,16 @@
+`kubefirst beta digitalocean create` provisions a local [DigitalOcean](https://digitalocean.com) Kubernetes cluster to host your cloud native environment locally.
+
+Your DigitalOcean cluster will include:
+
+| Application | Description |
+| ------------------------------- | ----------------------------------------------------------------- |
+| Argo CD | GitOps Continuous Delivery |
+| Argo Workflows | Application Continuous Integration |
+| Atlantis | Terraform Workflow Automation |
+| cert-manager | Certificate Automation Utility |
+| ChartMuseum | Helm Chart Registry |
+| External Secrets Operators | Syncs Kubernetes secrets with Vault secrets |
+| GitHub Action Runner Controller | GitHub Self-Hosted CI Executor |
+| HashiCorp Vault | Secrets Management |
+| Metaphor | (development, staging, production) instance of sample Next.js app |
+| Ingress Nginx | Ingress Controller |
diff --git a/docs/do/partials/github/_prerequisites.mdx b/docs/do/partials/github/_prerequisites.mdx
new file mode 100644
index 00000000..748f4a36
--- /dev/null
+++ b/docs/do/partials/github/_prerequisites.mdx
@@ -0,0 +1,5 @@
+### GitHub Prerequisites
+
+- A GitHub [organisation](https://docs.github.com/en/organizations/collaborating-with-groups-in-organizations/creating-a-new-organization-from-scratch).
+- A new GitHub [account](https://docs.github.com/en/get-started/signing-up-for-github/signing-up-for-a-new-github-account) for your `kbot` automation user.
+- A GitHub [personal access token](../../../common/git-auth.mdx) for your `kbot` account.
diff --git a/docs/do/partials/github/_repositories.mdx b/docs/do/partials/github/_repositories.mdx
new file mode 100644
index 00000000..4111db06
--- /dev/null
+++ b/docs/do/partials/github/_repositories.mdx
@@ -0,0 +1,25 @@
+# GitHub Repositories
+
+When you deploy a cluster on DigitalOcean using kubefirst, new repositories will be added to your organization's GitHub account.
+
+![GitHub repositories](../../../img/common/github/repositories.png)
+
+## Repositories
+
+### gitops
+
+The `gitops` repository houses all of our IAC and all your GitOps configurations. The infrastructure created by kubefirst was produced by some combination of Terraform and Argo CD. You modify the infrastructure or add new applications to your cluster by creating a pull request to your new `gitops` repository.
+
+### metaphor
+
+`metaphor` is a suite of demo microservice applications to demonstrate how an application can be integrated into the kubefirst platform following best practices. It is described in more details [here](../../../common/metaphor.mdx).
+
+## Repositories Management
+
+These {props.name} repositories are being managed in Terraform. As you need additional GitHub repositories, just add a new section of Terraform code to `digitalocean-github/terraform/github/repos.tf`:
+
+## Making Terraform Changes
+
+To make infrastructure and configuration changes with Terraform, simply open a pull request against any of the Terraform directory folders in the `gitops` repository. Your pull request will automatically provide plans, state locks, and applies, and even comment in the merge request itself. You'll have a simple, peer reviewable, auditable changelog of all infrastructure and configuration changes.
+
+![Atlantis GitHub](../../../img/common/github/atlantis.png)
diff --git a/docs/do/partials/github/_user-creation.mdx b/docs/do/partials/github/_user-creation.mdx
new file mode 100644
index 00000000..0e88fa64
--- /dev/null
+++ b/docs/do/partials/github/_user-creation.mdx
@@ -0,0 +1,62 @@
+## Platform User Onboarding
+
+In this tutorial we will show how to add users to your platform through [Atlantis](https://www.runatlantis.io/), which will allow a preview of how changes made will be expressed through Terraform before branches are merged into your repository.
+
+Navigate to the `gitops` repository in your GitHub org, clone the contents, and create a new branch:
+
+```shell
+cd gitops
+git checkout -b new-user
+```
+
+The folder `digitalocean-github/terraform/users/admins` contains two separate files that represent admin users: `admin-one.tf` (commented-out), and the kbot user in the `kbot.tf` file. Here's the module from `admin-one.tf`:
+
+```terraform
+module "admin_one" {
+ source = "./modules/user/github"
+
+ acl_policies = ["admin"]
+ email = "your.admin@your-company.io"
+ first_name = "Admin"
+ github_username = "admin-one-github-username"
+ last_name = "One"
+ team_id = data.github_team.admins.id
+ username = "aone"
+ user_disabled = false
+ userpass_accessor = data.vault_auth_backend.userpass.accessor
+}
+```
+
+Uncomment and edit this code to replace the values for the `email`, `first_name`, `github_username`, `last_name`, and `username` before pushing to your branch.
+
+Note: If you are doing using this walkthrough simply to test Atlantis, you do not need to update these fields to be accurate.
+
+```shell
+git add .
+git commit -m feat: add new user
+git push --set-upstream origin new-user
+```
+
+Create a pull request. This will kick off the Atlantis workflow. Within a minute or so of submitting the pull request, a comment will appear on the pull request that shows the Terraform plan with the changes it will be making to your infrastructure.
+
+![Atlantis Plan Comment Example](../../../img/common/github/atlantis-comments.png)
+
+To apply these changes, you or someone in the organization can submit a comment on that pull request with the following comment text:
+
+`atlantis apply`
+
+Doing so will instruct Atlantis to apply the plan. It will report back with the results of the apply within a minute or so.
+
+NOTE: Atlantis merges your pull request automatically once an apply is successfully executed. Don't merge Terraform pull requests yourself.
+
+Atlantis will always run plans automatically for you when a pull request is opened that changes files mapped in `atlantis.yaml`.
+
+Any new users you have created through this process will have their temporary initial passwords stored in your Vault cluster. You can access Vault using the root login credentials provided to you during your kubefirst installation. Only the root Vault token can access these secrets. You will find your users' initial passwords in the Vault secret store `/secrets/users/`.
+
+![vault token login](../../../img/kubefirst/local/vault-token-login.png)
+
+Once you've provided them their initial password, they can update their own password throughout the platform by updating their user password entity in Vault. Anyone can change their own password, and Admins can reset anyone's password. These rules, just like everything else on kubefirst, can be configured in your new `gitops` repository.
+
+![default user creation](../../../img/kubefirst/local/default-user-creation.png)
+
+The admins and developers that you add through IaC will automatically propagate to all tools due to the Vault OIDC provider that's preconfigured throughout the kubefirst platform tools.
diff --git a/docs/do/partials/gitlab/_cluster-create.mdx b/docs/do/partials/gitlab/_cluster-create.mdx
new file mode 100644
index 00000000..29b536e9
--- /dev/null
+++ b/docs/do/partials/gitlab/_cluster-create.mdx
@@ -0,0 +1,21 @@
+import CloudflareDNS from "../../../common/partials/common/_cloudflare-dns.mdx";
+
+## Create your new kubefirst cluster
+
+Adjust the following command with your GitHub and DigitalOcean tokens in addition to the appropriate values for your new platform.
+
+```shell
+export GITLAB_TOKEN=glpat-xxxxxxxxxxxxxxxx
+export DO_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+export DO_SPACES_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+export DO_SPACES_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+
+kubefirst beta digitalocean create \
+ --alerts-email yourdistro@your-company.io \
+ --git-provider gitlab \
+ --gitlab-group your-gitlab-group \
+ --domain-name your-domain.io \
+ --cluster-name kubefirst
+```
+
+
diff --git a/docs/do/partials/gitlab/_overview.mdx b/docs/do/partials/gitlab/_overview.mdx
new file mode 100644
index 00000000..f67aeada
--- /dev/null
+++ b/docs/do/partials/gitlab/_overview.mdx
@@ -0,0 +1,16 @@
+`kubefirst beta digitalocean create` provisions a local [DigitalOcean](https://vultr.com) Kubernetes cluster to host your cloud native environment locally.
+
+Your DigitalOcean cluster will include:
+
+| Application | Description |
+| -------------------------- | ----------------------------------------------------------------- |
+| Argo CD | GitOps Continuous Delivery |
+| Argo Workflows | Application Continuous Integration |
+| Atlantis | Terraform Workflow Automation |
+| cert-manager | Certificate Automation Utility |
+| ChartMuseum | Helm Chart Registry |
+| External Secrets Operators | Syncs Kubernetes secrets with Vault secrets |
+| GitLab Runner | GitLab Self-Hosted CI Executor |
+| HashiCorp Vault | Secrets Management |
+| Metaphor | (development, staging, production) instance of sample Next.js app |
+| Ingress Nginx | Ingress Controller |
diff --git a/docs/do/partials/gitlab/_prerequisites.mdx b/docs/do/partials/gitlab/_prerequisites.mdx
new file mode 100644
index 00000000..131880f2
--- /dev/null
+++ b/docs/do/partials/gitlab/_prerequisites.mdx
@@ -0,0 +1,7 @@
+### GitLab
+
+- Create or use an existing [GitLab account](https://gitlab.com).
+- Create a [GitLab group](https://docs.gitlab.com/ee/user/group/) developer permissions.
+
+:::note GitLab SaaS offering has limitations that require us to use groups contrary to GitHub which can be use without an organization.
+:::
diff --git a/docs/do/partials/gitlab/_repositories.mdx b/docs/do/partials/gitlab/_repositories.mdx
new file mode 100644
index 00000000..759feecc
--- /dev/null
+++ b/docs/do/partials/gitlab/_repositories.mdx
@@ -0,0 +1,37 @@
+# GitLab Repositories
+
+When you install the DigitalOcean version of kubefirst, 2 new repositories will be added to your GitLab project as shown here.
+
+![GitLab repositories](../../../img/common/gitlab/repositories.png)
+
+## Repository Summary
+
+### gitops
+
+The `gitops` repository houses all of our IAC and all our GitOps configurations. All of the infrastructure that you receive with kubefirst was produced by some combination of Terraform and Argo CD. You can add any infrastructure or application to your platform by pull requesting it to your new `gitops` repository.
+
+### metaphor
+
+`metaphor` is a suite of demo microservice applications to demonstrate how an application can be integrated into the kubefirst platform following best practices. It is described in more details [here](../../../common/metaphor.mdx).
+
+## GitLab Repository Management
+
+These GitLab projects (repositories) are being managed in Terraform. As you need additional GitLab projects, just add a new section of Terraform code to `digitalocean-gitlab/terraform/gitlab/projects.tf`:
+
+```terraform
+module "your_repo_name" {
+ source = "./modules/project"
+ group_name = data.gitlab_group.owner.id
+ project_name = "your_repo_name"
+ # create_ecr = true
+ initialize_with_readme = false
+ only_allow_merge_if_pipeline_succeeds = false
+ remove_source_branch_after_merge = true
+}
+```
+
+## Making Terraform Changes
+
+To make infrastructure and configuration changes with Terraform, simply open a pull request against any of the Terraform directory folders in the `gitops` repository. Your pull request will automatically provide plans, state locks, and applies, and even comment in the merge request itself. You'll have a simple, peer reviewable, auditable changelog of all infrastructure and configuration changes.
+
+![Atlantis GitLab](../../../img/common/gitlab/atlantis.png)
diff --git a/docs/do/partials/gitlab/_user-creation.mdx b/docs/do/partials/gitlab/_user-creation.mdx
new file mode 100644
index 00000000..9d1d725c
--- /dev/null
+++ b/docs/do/partials/gitlab/_user-creation.mdx
@@ -0,0 +1,63 @@
+## Platform User Onboarding
+
+In this tutorial we will show how to add users to your platform through [Atlantis](https://www.runatlantis.io/), which will allow a preview of how changes made will be expressed through Terraform before branches are merged into your repository.
+
+Navigate to the `gitops` repository in your GitLab group, clone the contents, and create a new branch:
+
+```shell
+cd gitops
+git checkout -b new-user
+```
+
+The folder `digitalocean-gitlab/terraform/users/admins` contains two separate files that represent admin users: `admin-one.tf` (commented-out), and the kbot user in the `kbot.tf` file. Here's the module from `admin-one.tf`:
+
+```terraform
+module "admin_one" {
+ source = "../modules/user"
+
+ acl_policies = ["admin"]
+ email = "your.admin@your-company.io"
+ first_name = "Admin"
+ fullname = "Admin One"
+ group_id = data.vault_identity_group.admins.group_id
+ gitlab_username = "your-admins-gitlab-username"
+ last_name = "One"
+ username = "aone"
+ user_disabled = false
+ userpass_accessor = data.vault_auth_backend.userpass.accessor
+}
+```
+
+Uncomment and edit this code to replace the values for the `email`, `first_name`, `gitlab_username`, `last_name`, and `username` before pushing to your branch.
+
+Note: If you are doing using this walkthrough simply to test Atlantis, you do not need to update these fields to be accurate.
+
+```shell
+git add .
+git commit -m feat: add new user
+git push --set-upstream origin new-user
+```
+
+Create a merge request. This will kick off the Atlantis workflow. Within a minute or so of submitting the merge request, a comment will appear on the merge request that shows the Terraform plan with the changes it will be making to your infrastructure.
+
+![Atlantis Plan Comment Example](../../../img/common/gitlab/atlantis-comments.png)
+
+To apply these changes, you or someone in the organization can submit a comment on that merge request with the following comment text:
+
+`atlantis apply`
+
+Doing so will instruct Atlantis to apply the plan. It will report back with the results of the apply within a minute or so.
+
+NOTE: Atlantis merges your merge request automatically once an apply is successfully executed. Don't merge Terraform merge requests yourself.
+
+Atlantis will always run plans automatically for you when a merge request is opened that changes files mapped in `atlantis.yaml`.
+
+Any new users you have created through this process will have their temporary initial passwords stored in your Vault cluster. You can access Vault using the root login credentials provided to you during your kubefirst installation. Only the root Vault token can access these secrets. You will find your users' initial passwords in the Vault secret store `/secrets/users/`.
+
+![vault token login](../../../img/kubefirst/local/vault-token-login.png)
+
+Once you've provided them their initial password, they can update their own password throughout the platform by updating their user password entity in Vault. Anyone can change their own password, and Admins can reset anyone's password. These rules, just like everything else on kubefirst, can be configured in your new `gitops` repository.
+
+![default user creation](../../../img/kubefirst/local/default-user-creation.png)
+
+The admins and developers that you add through IaC will automatically propagate to all tools due to the Vault OIDC provider that's preconfigured throughout the kubefirst platform tools.
diff --git a/docs/do/platform.mdx b/docs/do/platform.mdx
new file mode 100644
index 00000000..aeda90f6
--- /dev/null
+++ b/docs/do/platform.mdx
@@ -0,0 +1,11 @@
+---
+hide_title: true
+sidebar_label: kubefirst Platform
+# custom_edit_url: https://github.com/facebook/docusaurus/edit/main/docs/api-doc-markdown.md
+description: an overview of kubefirst
+image: "https://docs.kubefirst.io/img/logo.svg"
+---
+
+import Platform from "../common/platform.mdx"
+
+
diff --git a/docs/do/quick-start/install/cli.mdx b/docs/do/quick-start/install/cli.mdx
new file mode 100644
index 00000000..2695eec5
--- /dev/null
+++ b/docs/do/quick-start/install/cli.mdx
@@ -0,0 +1,68 @@
+---
+hide_title: true
+sidebar_label: CLI
+sidebar_position: 2
+# custom_edit_url: https://github.com/facebook/docusaurus/edit/main/docs/api-doc-markdown.md
+image: 'https://docs.kubefirst.io/img/logo.svg'
+---
+
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+import GitHubPrerequisites from '../../../common/partials/github/_prerequisites.mdx';
+import GitHubClusterCreateCmd from '../../partials/github/_cluster-create.mdx';
+import GitLabPrerequisites from '../../../common/partials/gitlab/_prerequisites.mdx';
+import GitLabClusterCreateCmd from '../../partials/gitlab/_cluster-create.mdx';
+import CommonCloudPrerequisites from '../../partials/common/_prerequisites.mdx';
+import CommonClusterConnectivity from '../../partials/common/_cluster-connectivity.mdx';
+import CommonRootCredentialsCmd from '../../../common/partials/common/_root-credentials-cmd.mdx';
+import CommonTerminalOutput from "../../../common/partials/common/_terminal-output.mdx";
+import * as config from '../../../constants.js';
+import styles from '../../../stylesheets/tabs.module.css';
+import GitHubHandoffScreen from "../../../img/do/github/handoff-screen.png";
+import GitLabHandoffScreen from "../../../img/do/gitlab/handoff-screen.png";
+
+export const TabLabel = ({ imgSrc, label }) => (
+
+
+
{label}
+
+);
+
+
+ }
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+ }
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/do/quick-start/install/ui.mdx b/docs/do/quick-start/install/ui.mdx
new file mode 100644
index 00000000..2c4d0f6e
--- /dev/null
+++ b/docs/do/quick-start/install/ui.mdx
@@ -0,0 +1,76 @@
+---
+hide_title: true
+sidebar_label: Console UI
+sidebar_position: 1
+# custom_edit_url: https://github.com/facebook/docusaurus/edit/main/docs/api-doc-markdown.md
+image: "https://docs.kubefirst.io/img/logo.svg"
+---
+
+There are a few ways to install kubefirst, whether you have a cluster already or don't.
+
+# Install kubefirst
+
+## Step 1: Install kubefirst console
+
+
+
+# Helm
+
+This will install our platform installer tools to your existing cluster so you can create your new management cluster in your favorite cloud provider using your favorite git provider.
+
+```shell
+helm repo add kubefirst https://charts.kubefirst.com
+helm repo update
+
+helm install kubefirst --create-namespace kubefirst/kubefirst
+
+k port-forward svc/kubefirst-console 8080:8080
+```
+
+Then connect to the provisioning tool at [http://localhost:8080](http://localhost:8080)
+
+# Helm (ARM / M1 Mac / M2 Mac)
+
+This will install our platform installer UI to your existing cluster so you can create your new management cluster in your favorite cloud provider using your favorite git provider.
+
+This example shows a couple additional Helm values settings that enable MongoDB to run on the ARM architecture.
+
+```shell
+helm repo add kubefirst https://charts.kubefirst.com
+helm repo update
+
+helm install kubefirst --create-namespace \
+--set=mongodb.image.repository=arm64v8/mongo \
+--set=mongodb.image.tag=latest \
+--set=mongodb.persistence.mountPath=/data/db \
+--set=mongodb.extraEnvVarsSecret=kubefirst-initial-secrets \
+kubefirst/kubefirst
+
+k port-forward svc/kubefirst-console 8080:8080
+```
+
+Then connect to the provisioning tool at [http://localhost:8080](http://localhost:8080)
+
+# No Kubernetes yet?
+
+**No cluster? No problem!** Let us create your bootstrap cluster for you as well. We'll install our provisioning tool into it to create your permanent infrastructure.
+
+```shell
+brew install kubefirst/tools/kubefirst
+
+kubefirst launch up
+```
+
+Then connect to the provisioning tool at [https://console.kubefirst.dev](https://console.kubefirst.dev )
+
+:::note
+The kubefirst.dev domain is only available after `kubefirst launch up` and resolves to the host machine.
+:::
+
+
+
+## Step 2: Install your kubefirst management cluster
+
+Provide details about your preferred git provider, cloud provider, access, and cluster details and let kubefirst do the rest.
+
+![kubefirst user interface showing cloud and git options](../../../img/console/installer.png)
diff --git a/docs/do/quick-start/repositories.mdx b/docs/do/quick-start/repositories.mdx
new file mode 100644
index 00000000..0c0481e8
--- /dev/null
+++ b/docs/do/quick-start/repositories.mdx
@@ -0,0 +1,54 @@
+---
+hide_title: true
+sidebar_label: Repositories
+sidebar_position: 3
+# custom_edit_url: https://github.com/facebook/docusaurus/edit/main/docs/api-doc-markdown.md
+description: the installation process for kubefirst cli
+image: 'https://docs.kubefirst.io/img/logo.svg'
+---
+
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+import styles from '../../stylesheets/tabs.module.css';
+import * as config from '../../constants.js';
+import GitHubRepositories from '../partials/github/_repositories.mdx';
+import GitLabRepositories from '../partials/gitlab/_repositories.mdx';
+
+
+
+
+
+
+
+
+
+
+ GitHub
+
+ }
+ >
+
+
+
+
+ GitLab
+
+ }
+ >
+
+
+
diff --git a/docs/do/quick-start/styles.module.css b/docs/do/quick-start/styles.module.css
new file mode 100644
index 00000000..ec10699b
--- /dev/null
+++ b/docs/do/quick-start/styles.module.css
@@ -0,0 +1,13 @@
+.gitlab {
+color: #fc6d26;
+}
+.gitlab[aria-selected='true'] {
+border-bottom-color: #fc6d26;
+}
+
+.github {
+color: black;
+}
+.github[aria-selected='true'] {
+border-bottom-color: black;
+}
diff --git a/docs/img/do/github/handoff-screen.png b/docs/img/do/github/handoff-screen.png
new file mode 100644
index 00000000..5fcd018b
Binary files /dev/null and b/docs/img/do/github/handoff-screen.png differ
diff --git a/docs/img/do/gitlab/handoff-screen.png b/docs/img/do/gitlab/handoff-screen.png
new file mode 100644
index 00000000..75bd3e51
Binary files /dev/null and b/docs/img/do/gitlab/handoff-screen.png differ
diff --git a/docs/index.mdx b/docs/index.mdx
index 88970d1b..368b1caa 100644
--- a/docs/index.mdx
+++ b/docs/index.mdx
@@ -46,11 +46,11 @@ We support local, AWS, and Civo clouds, with additional clouds in beta. By runni
+ alt="AWS"
+ title="AWS" />
-
AWS Cloud
+
AWS
Our AWS cloud platform can accommodate all the needs of your enterprise. All you need is a domain in addition to a hosted zone, and within 35 minutes of running a single command, you'll have a secure EKS infrastructure management and application delivery platform.
@@ -67,11 +67,11 @@ We support local, AWS, and Civo clouds, with additional clouds in beta. By runni
+ alt="Civo"
+ title="Civo" />
-
Civo Cloud
+
Civo
The perfect cloud environment when Kubernetes will be the center of attention.
@@ -88,17 +88,17 @@ We support local, AWS, and Civo clouds, with additional clouds in beta. By runni
+ src={require("/static/img/do_header.png").default}
+ alt="DigitalOcean"
+ title="DigitalOcean" />
-
Vultr Cloud
-
A cloud hosting provider that offers high-performance SSD-based cloud servers, block storage, object storage, and dedicated servers in multiple locations worldwide.
+
DigitalOcean
+
Whatever your vision—a SaaS app, a website, an eCommerce store—build it here using DigitalOcean's simple, cost-effective cloud hosting services.
@@ -122,4 +122,23 @@ We support local, AWS, and Civo clouds, with additional clouds in beta. By runni
+
+
+
+
+
+
+
Vultr
+
A cloud hosting provider that offers high-performance SSD-based cloud servers, block storage, object storage, and dedicated servers in multiple locations worldwide.
+
+
+
+
+
+
diff --git a/docusaurus.config.js b/docusaurus.config.js
index 2e7c1671..00851937 100644
--- a/docusaurus.config.js
+++ b/docusaurus.config.js
@@ -128,8 +128,8 @@ const config = {
{
type: 'docSidebar',
position: 'left',
- sidebarId: 'vultr',
- label: 'Vultr',
+ sidebarId: 'do',
+ label: 'DigitalOcean',
},
{
type: 'docSidebar',
@@ -137,6 +137,12 @@ const config = {
sidebarId: 'gcp',
label: 'Google Cloud',
},
+ {
+ type: 'docSidebar',
+ position: 'left',
+ sidebarId: 'vultr',
+ label: 'Vultr',
+ },
{
type: 'docsVersionDropdown',
position: 'right',
diff --git a/sidebars.js b/sidebars.js
index 82efdcdf..974f085a 100644
--- a/sidebars.js
+++ b/sidebars.js
@@ -45,6 +45,32 @@ const sidebars = {
'aws/faq',
'aws/credits',
],
+ do: [
+ 'do/overview',
+ {
+ 'Quick Start': [
+ {
+ Install: [
+ {
+ type: 'autogenerated',
+ dirName: 'do/quick-start/install',
+ },
+ ],
+ },
+ 'do/quick-start/repositories',
+ ],
+ Explore: [
+ {
+ type: 'autogenerated',
+ dirName: 'do/explore',
+ },
+ ],
+ },
+ 'do/gitops-catalog',
+ 'do/deprovision',
+ 'do/faq',
+ 'do/credits',
+ ],
civo: [
'civo/overview',
{
diff --git a/styles/Custom/substitutions.yml b/styles/Custom/substitutions.yml
index ce9c729a..146291c8 100644
--- a/styles/Custom/substitutions.yml
+++ b/styles/Custom/substitutions.yml
@@ -24,6 +24,8 @@ swap:
cronjob: CronJob
ecr: ECR
eks: EKS
+ 'digital[o|O]cean': DigitalOcean
+ '[d|D]igitalocean': DigitalOcean
docker: Docker
gcp: Google Cloud
gcp cloud: Google Cloud
diff --git a/versioned_docs/version-2.0/do/upgrade.md b/versioned_docs/version-2.0/do/upgrade.md
new file mode 100644
index 00000000..c96ea6f3
--- /dev/null
+++ b/versioned_docs/version-2.0/do/upgrade.md
@@ -0,0 +1,5 @@
+---
+title: DigitalOcean
+---
+
+DigitalOcean support was added in kubefirst 2.1 as beta, but documented only in v.next.
diff --git a/versioned_docs/version-2.1/do/upgrade.md b/versioned_docs/version-2.1/do/upgrade.md
new file mode 100644
index 00000000..c96ea6f3
--- /dev/null
+++ b/versioned_docs/version-2.1/do/upgrade.md
@@ -0,0 +1,5 @@
+---
+title: DigitalOcean
+---
+
+DigitalOcean support was added in kubefirst 2.1 as beta, but documented only in v.next.
diff --git a/versioned_docs/version-2.2/do/upgrade.md b/versioned_docs/version-2.2/do/upgrade.md
new file mode 100644
index 00000000..c96ea6f3
--- /dev/null
+++ b/versioned_docs/version-2.2/do/upgrade.md
@@ -0,0 +1,5 @@
+---
+title: DigitalOcean
+---
+
+DigitalOcean support was added in kubefirst 2.1 as beta, but documented only in v.next.
diff --git a/versioned_sidebars/version-2.0-sidebars.json b/versioned_sidebars/version-2.0-sidebars.json
index d8198ae8..afb1f456 100644
--- a/versioned_sidebars/version-2.0-sidebars.json
+++ b/versioned_sidebars/version-2.0-sidebars.json
@@ -201,5 +201,8 @@
],
"gcp": [
"gcp/upgrade"
+ ],
+ "do": [
+ "do/upgrade"
]
}
diff --git a/versioned_sidebars/version-2.1-sidebars.json b/versioned_sidebars/version-2.1-sidebars.json
index bfd86c65..be8cfac2 100644
--- a/versioned_sidebars/version-2.1-sidebars.json
+++ b/versioned_sidebars/version-2.1-sidebars.json
@@ -80,5 +80,8 @@
],
"gcp": [
"gcp/upgrade"
+ ],
+ "do": [
+ "do/upgrade"
]
}
diff --git a/versioned_sidebars/version-2.2-sidebars.json b/versioned_sidebars/version-2.2-sidebars.json
index 97c29217..5b158803 100644
--- a/versioned_sidebars/version-2.2-sidebars.json
+++ b/versioned_sidebars/version-2.2-sidebars.json
@@ -82,5 +82,8 @@
],
"gcp": [
"gcp/upgrade"
+ ],
+ "do": [
+ "do/upgrade"
]
}