Skip to main content
This guide shows you the steps to deploy a self-hosted instance of Plane using Kubernetes.
If you want to upgrade from Community to the Commercial edition, see Upgrade to Commercial Edition.

Install Plane

Plane Pro and Plane Business are enabled on this edition, so the Free plan on this edition is easier to trial our paid plans from.

Prerequisites

  • A working Kubernetes cluster
  • kubectl and helm on the client system that you will use to install our Helm charts
Ensure you use use the latest Helm chart version.

Procedure

  1. Open terminal or any other command-line app that has access to Kubernetes tools on your local system.
  2. Set the following environment variables:
    When configuring the PLANE_VERSION environment variable, do not set it to stable. Always specify the latest version number (e.g., 1.8.0). Using stable can lead to unexpected issues.
  3. Add the Plane helm chart repo.
  4. Use one of the following ways to deploy Plane:
    • Quick setup:
      This is the fastest way to deploy Plane with the default settings. This will create stateful deployments for Postgres, Redis/Valkey, and Minio with a persistent volume claim using the longhorn storage class. This also sets up the Ingress routes for you using nginx ingress class. To customize these settings, see the Custom ingress routes.
      Run the following command to deploy Plane:
      This is the minimum required to set up Plane Commercial edition. You can change the default namespace from plane, the default app name from plane-app, the default storage class from longhorn, and the default ingress class from nginx to whatever you would like to.

      You can also pass other settings referring to the Configuration Settings toggle section below.
    • Advanced setup:
      When self-hosting Plane for production use, it is strongly recommended to configure external database and storage. This ensures that your data remains secure and accessible even if the local machine crashes or encounters hardware issues. Relying solely on local storage for these components increases the risk of data loss and service disruption.
      For more control over your setup, follow the steps below:
      1. Run the script below to download the values.yaml file and and edit using any editor like Vim or Nano.
        Make sure you set the required environment variables listed below:
        • planeVersion: v1.16.0
        • license.licenseDomain: <The domain you have specified to host Plane>
        • license.licenseServer: https://prime.plane.so
        • ingress.enabled: <true | false>
        • ingress.ingressClass: <nginx or any other ingress class configured in your cluster>
        • env.storageClass: <longhorn or any other storage class configured in your cluster>
        See the Configuration settings toggle section for more details.
      2. After saving the values.yaml file, run the following command to deploy Plane:
  5. If you’ve purchased a paid plan, activate your license key to unlock premium features.

Configuration settings

License

Airgapped settings

Postgres

Redis/Valkey Setup

RabbitMQ Setup

Doc Store (Minio/S3) Setup

Web Deployment

Space Deployment

Admin Deployment

Live Service Deployment

Monitor Deployment

API Deployment

Silo Deployment

Worker Deployment

Beat-Worker Deployment

Email Service Deployment

Outbox Poller Service Deployment

Automation Consumer Deployment

Iframely Deployment

External Secrets Config

To configure the external secrets for your application, you need to define specific environment variables for each secret category. Below is a list of the required secrets and their respective environment variables.

Ingress and SSL Setup

Common Environment Settings

Extra Environment Variables

Custom Ingress Routes

If you are planning to use 3rd party ingress providers, here is the available route configuration
The Commercial edition comes with a free plan and the flexibility to upgrade to a paid plan at any point. If you still want to install the Community edition, follow the steps below:

Prerequisites

  • A working Kubernetes cluster
  • kubectl and helm on the client system that you will use to install our Helm charts

Installation

  1. Open Terminal or any other command-line app that has access to Kubernetes tools on your local system.
  2. Add the Helm Repo
  3. Set-up and customization
    • Quick setup This is the fastest way to deploy Plane with default settings. This will create stateful deployments for Postgres, Redis, and Minio with a persistent volume claim using the longhorn storage class. This also sets up the ingress routes for you using nginx ingress class.
      To customize this, see Custom ingress routes below.
      Continue to be on the same Terminal window as you have so far, copy the code below, and paste it on your Terminal screen.
    This is the minimum required to set up Plane-CE. You can change the default namespace from plane-ce, the default app name from plane-app, the default storage class from [postgres, redis, minio].storageClass, and the default ingress class from ingress.ingressClass to whatever you would like to.You can also pass other settings referring to Configuration Settings section.
    • Advanced setup For more control over your set-up, run the script below to download the values.yaml file and and edit using any editor like Vim or Nano.
      See Available customizations for more details.
      After saving the values.yaml file, continue to be on the same Terminal window as on the previous steps, copy the code below, and paste it on your Terminal screen.

Configuration settings

Plane Version

Postgres DB Setup

Redis/Valkey Setup

RabbitMQ Setup

Doc Store (Minio/S3) Setup

Web Deployment

Space Deployment

Admin Deployment

Live Service Deployment

API Deployment

Worker Deployment

Beat-Worker Deployment

Common Environment Settings