From e47bfa57f4dee7d599e274ec5b967dbae5709960 Mon Sep 17 00:00:00 2001 From: danciaclara Date: Tue, 3 Feb 2026 18:17:44 +0530 Subject: [PATCH 01/12] Algolia and GA --- docs/.vitepress/config.mts | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index da75aeb3..bf59e608 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -45,6 +45,13 @@ export default withMermaid(defineConfig({ head: [ ['link', { rel: 'icon', href: '/logo/favicon-32x32.png' }], + // Google Analytics + ['script', { async: '', src: 'https://www.googletagmanager.com/gtag/js?id=G-JF828SKW90' }], + ['script', {}, `window.dataLayer = window.dataLayer || []; + function gtag(){dataLayer.push(arguments);} + gtag('js', new Date()); + gtag('config', 'G-JF828SKW90');`], + // SEO: Basic meta tags ['meta', { name: 'viewport', content: 'width=device-width, initial-scale=1.0' }], ['meta', { name: 'author', content: 'Plane' }], @@ -619,7 +626,15 @@ export default withMermaid(defineConfig({ ], search: { - provider: 'local' + provider: 'algolia', + options: { + appId: 'AXICJJC8RP', + apiKey: '23df4157dee1d9a8d435cadd6cae3f26', + indexName: 'plane_developer_docs', + + // Enable insights for tracking search analytics + insights: true, + } }, editLink: { From e5e8ce31b45589c7c3eae5077c9794d9bbf9d59a Mon Sep 17 00:00:00 2001 From: danciaclara Date: Tue, 3 Feb 2026 18:57:47 +0530 Subject: [PATCH 02/12] added search filters --- docs/.vitepress/config.mts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index bf59e608..1f6d60e0 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -631,8 +631,9 @@ export default withMermaid(defineConfig({ appId: 'AXICJJC8RP', apiKey: '23df4157dee1d9a8d435cadd6cae3f26', indexName: 'plane_developer_docs', - - // Enable insights for tracking search analytics + searchParameters: { + facetFilters: [] + }, insights: true, } }, From d906e4bf4064380708516f924c3ed61dafca27ac Mon Sep 17 00:00:00 2001 From: danciaclara Date: Tue, 3 Feb 2026 19:05:41 +0530 Subject: [PATCH 03/12] added search filters --- docs/.vitepress/config.mts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index 1f6d60e0..f504e5e2 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -28,6 +28,7 @@ export default withMermaid(defineConfig({ ], }, }, + lang: 'root', title: 'Plane developer documentation', description: 'Self-host Plane, integrate with our API, configure webhooks, and extend your project management platform. Complete guides for developers building on Plane.', @@ -631,9 +632,6 @@ export default withMermaid(defineConfig({ appId: 'AXICJJC8RP', apiKey: '23df4157dee1d9a8d435cadd6cae3f26', indexName: 'plane_developer_docs', - searchParameters: { - facetFilters: [] - }, insights: true, } }, From 56e7d6932d6cf6b5c875b40138be082210b895c6 Mon Sep 17 00:00:00 2001 From: danciaclara Date: Tue, 3 Feb 2026 19:14:25 +0530 Subject: [PATCH 04/12] added search filters --- docs/.vitepress/config.mts | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index f504e5e2..45210c79 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -28,7 +28,6 @@ export default withMermaid(defineConfig({ ], }, }, - lang: 'root', title: 'Plane developer documentation', description: 'Self-host Plane, integrate with our API, configure webhooks, and extend your project management platform. Complete guides for developers building on Plane.', From b475eca7dae9cc701c64d3acfb6cdf40d1e8f304 Mon Sep 17 00:00:00 2001 From: danciaclara Date: Tue, 3 Feb 2026 20:08:11 +0530 Subject: [PATCH 05/12] changed license error title --- docs/self-hosting/troubleshoot/license-errors.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/self-hosting/troubleshoot/license-errors.md b/docs/self-hosting/troubleshoot/license-errors.md index 7031143e..3eee629e 100644 --- a/docs/self-hosting/troubleshoot/license-errors.md +++ b/docs/self-hosting/troubleshoot/license-errors.md @@ -5,7 +5,7 @@ keywords: plane, self-hosting, deployment, plane installation --- -# License errors +# Errors related to licenses This guide is designed to help you resolve common issues encountered while activating the license key for a workspace. Each section includes potential causes and step-by-step solutions for identified problems. From 0c37c425dacf870e4dd6fb97b8bc69fe635c0ffe Mon Sep 17 00:00:00 2001 From: danciaclara Date: Tue, 3 Feb 2026 20:24:04 +0530 Subject: [PATCH 06/12] increased search results --- docs/.vitepress/config.mts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index 45210c79..5dcbe29b 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -632,6 +632,9 @@ export default withMermaid(defineConfig({ apiKey: '23df4157dee1d9a8d435cadd6cae3f26', indexName: 'plane_developer_docs', insights: true, + searchParameters: { + hitsPerPage: 10 + } } }, From 8e599996d05e3417d7bf9b1ef85635d9d8e340a2 Mon Sep 17 00:00:00 2001 From: danciaclara Date: Wed, 4 Feb 2026 17:19:51 +0530 Subject: [PATCH 07/12] removed search parameters --- docs/.vitepress/config.mts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index 5dcbe29b..5e85bfe9 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -631,10 +631,7 @@ export default withMermaid(defineConfig({ appId: 'AXICJJC8RP', apiKey: '23df4157dee1d9a8d435cadd6cae3f26', indexName: 'plane_developer_docs', - insights: true, - searchParameters: { - hitsPerPage: 10 - } + insights: true } }, From 34b01832d4e0b78e2370363a6befeef4e0ff6fc9 Mon Sep 17 00:00:00 2001 From: danciaclara Date: Wed, 4 Feb 2026 18:09:37 +0530 Subject: [PATCH 08/12] Added old redirects --- .../governance/authentication/custom-sso.md | 128 --------- .../governance/workspaces-and-teams.md | 44 --- docs/plane-one/introduction.md | 27 -- docs/plane-one/manage/advanced-deploy.md | 9 - docs/plane-one/manage/prime-cli.md | 94 ------- docs/plane-one/manage/prime-client.md | 30 --- docs/plane-one/self-host/guides.md | 9 - docs/plane-one/self-host/methods/docker.md | 98 ------- .../plane-one/self-host/methods/kubernetes.md | 255 ------------------ docs/plane-one/self-host/overview.md | 24 -- vercel.json | 88 +++++- 11 files changed, 87 insertions(+), 719 deletions(-) delete mode 100644 docs/plane-one/governance/authentication/custom-sso.md delete mode 100644 docs/plane-one/governance/workspaces-and-teams.md delete mode 100644 docs/plane-one/introduction.md delete mode 100644 docs/plane-one/manage/advanced-deploy.md delete mode 100644 docs/plane-one/manage/prime-cli.md delete mode 100644 docs/plane-one/manage/prime-client.md delete mode 100644 docs/plane-one/self-host/guides.md delete mode 100644 docs/plane-one/self-host/methods/docker.md delete mode 100644 docs/plane-one/self-host/methods/kubernetes.md delete mode 100644 docs/plane-one/self-host/overview.md diff --git a/docs/plane-one/governance/authentication/custom-sso.md b/docs/plane-one/governance/authentication/custom-sso.md deleted file mode 100644 index 6286b330..00000000 --- a/docs/plane-one/governance/authentication/custom-sso.md +++ /dev/null @@ -1,128 +0,0 @@ ---- -title: OIDC and SAML -description: OIDC and SAML. Complete guide and documentation for Plane. -keywords: plane ---- - - -# OIDC and SAML - -Plane enables custom SSO via any identity provider with an official and supported implementation of OIDC + SAML standards. This page cites examples from Okta, but we will soon publish provider-specific instructions in phases. - -## OIDC - -You will need to configure values on your IdP first and then on Plane later. - -### On your preferred IdP - -Create a Plane client or application per your IdP's documentation and configure ↓. - -::: tip - `domain.tld` is the domain that you have hosted your Plane app on. -::: - -| **Config** | **Key** | -|----------------|-------------------------------------------------------| -| Origin URL | `http(s)://domain.tld/auth/oidc/` | -| Callback URL | `http(s)://domain.tld/auth/oidc/callback/` | -| Logout URL | `http(s)://domain.tld/auth/oidc/logout/` | - -### On Plane - -Go to `/god-mode/authentication/oidc` on your Plane app and find the configs ↓. - -::: tip - Your IdP will generate some of the following configs for you. Others, you will specify yourself. Just copy them over to each field. -::: - -![OIDC Configuration](/images/custom-sso/oidc-oauth.png) - -- Copy the `CLIENT_ID` for the Plane client or app you just created over from your IdP and paste it in the field for it. - - With providers like Keycloak, you have to choose a unique ID per app your configure. With providers like Okta and Auth0, you copy over the generated ID over to Plane. Typically, you will find it on the Plane application Home or Settings page on your IdP. - -- Copy the `CLIENT_SECRET` for the Plane client or app you created over from your IdP and paste it in the field for it. - - The secret is usually auto-generated and you just need to copy it over from the Plane app or client's Home or Settings page. - -- Copy the `TOKEN URL` from your IdP and paste it into the field for it on `/god-mode/authentication/oidc/`.\ - Typically used to maintain user authentication and to persist it with refreshes, this URL lives in the `.well-known/` directory for the Plane app or client on your IdP. - -- Copy the `User info URL` from your IdP and paste it into the field for it on `/god-mode/authentication/oidc/`. - - Used to get an authenticating user's `email`, `first_name` and the `last_name` values from the IdP, this too can be copied over from the `.well-known/` directory. - -- Copy the `Authorize URL` over from the `.well-known/` directory and paste it into the field for it on Plane's `/god-mode/authentication/oidc/`.\ - This is the URL that Plane's login screen redirects to when your users click `Sign up with ` or `Login with `. - - ![Login with IdP](/images/custom-sso/plane-login.png) - - To test if this URL is right, see if clicking the `Login with ` button brings up your IdP's authentication screen. - - ![Login with Okta](/images/custom-sso/okta-signin.webp) - -- Finally, choose a name for your IdP on Plane so you can recognize this set of configs. - -## SAML - -You will need to configure values on your IdP first and then on Plane later. -::: tip - `domain.tld` is the domain that you have hosted your Plane app on. -::: - -### On your preferred IdP - -Create a Plane client or application per your IdP's documentation and configure ↓. - -| **Config** | **Value** | -|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------| -| Entity ID

Metadata that identifies Plane as an authorized service on your IdP | `http(s)://domain.tld/auth/oidc/` | -| ACS URL

Assertion Consumer service that your IdP will redirect to after successful authentication by a user

This is roughly the counterpart of the `Callback URL` in OIDC set-ups. | `http(s)://domain.tld/auth/oidc/callback/`

Plane supports HTTP-POST bindings. | -| SLS URL

Single Logout Service that your IdP will recognize to end a Plane session when a user logs out

This is roughly the counterpart of the `Logout URL` in OIDC set-ups. | `http(s)://domain.tld/auth/oidc/logout/` | - -::: tip -When setting these values up on the IdP, it’s important to remember Plane does not need to provide a signing certificate like other service providers. -::: - -### Let your IdP identify your users on Plane. - -| **Config** | **Value** | -|----------------------------|--------------------------------------------------------| -| Name ID format | emailAddress

By default, your IdP should send back a username, but Plane recognizes email addresses as the username. Set the value to the above so Plane recognizes the user correctly. -### Set additional attribute values. - -By default, your IdP will send the value listed under `Property`. You have to map it to the SAML attribute Plane recognizes. - -| **Default property value** | **Plane SAML attribute** | -|----------------------------|--------------------------------------------| -| user.firstName | first_name | -| user.lastName | last_name | -| user.email | email | - -::: tip - Depending on your IdP, you will have to find both the `Name ID format` and the three other user identification properties on different screens. Please refer to your IdP's documentation when configuring these up on your IdP. Additionally, you may have to configure the IdP to sign assertions. Irrespective of that, you have to copy the signing certificate from the IdP. -::: - -### On Plane - -![SAML Configuration](/images/custom-sso/saml-oauth.png) - -::: tip - You will find all of the values for the fields below in the `/metadata` endpoint your IdP generates for the Plane app or client. -::: - -- Copy the `ENTITY_ID` for the Plane client or app you just created over from your IdP and paste it in the field for it. - -- Copy the `SSO URL` for the Plane client or app from your IdP and paste it in the field for it. - - This will bring up the IdP's authentication screen for your users. - - ![SSO URL](/images/custom-sso/okta-signin.webp) - -- Copy the `SLS URL` for the Plane client or app from your IdP and paste it in the `Logout URL` field on Plane's `/god-mode/authentication/saml/`. - -- Add the name of the IdP that you want to show on your Plane instance's log-in or sign-up screens. - - ![Log-in Screen](/images/custom-sso/instance-login.png) - -- Finally, paste the signing certificate from your IdP that you got in the last step of setting up your Plane client or app on your IdP above and paste it in the field for it. \ No newline at end of file diff --git a/docs/plane-one/governance/workspaces-and-teams.md b/docs/plane-one/governance/workspaces-and-teams.md deleted file mode 100644 index 9ae48148..00000000 --- a/docs/plane-one/governance/workspaces-and-teams.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Workspaces and teams -description: Workspaces and teams. Complete guide and documentation for Plane. -keywords: plane ---- - - -# Workspaces and teams - -Since April 15 when Plane One was announced, we have communicated on our website and Discord that One will have one workspace linked to one domain and one license. -::: tipBy domain, we mean something like `domain.tld` or `subdomain.domain.tld` that you set up to access Plane.::: -This was a carefully deliberate move driven entirely by what Plane stands for and what it should enable from a product point of view. - -## Workspaces → Teams - -To align the product better with the ethos of collaboration, we will introduce Teams, functional groups within a workspace housing projects mapped to real-world teams or coalitions of members with shared responsibilities for goals and tasks. This change will roll out backwards to the Community Edition + the hosted Cloud and forwards to our self-hosted Enterprise Edition for all our paid plans. -::: tipTeams will come to One toward the end of June 2024.::: - -## Why this change - -Plane was conceived, designed, and built for cross-functional collaboration, going beyond just your team or company to include customers. Features like [Intake](https://docs.plane.so/core-concepts/inbox), [Publish](https://docs.plane.so/core-concepts/deploy), and [Pages](https://docs.plane.so/core-concepts/pages/overview) unlock that unique-to-Plane collaboration and will work with other forthcoming paid features. While workspaces have enabled essential separation of team- or org-specific data, we have come to realize they create silos that render our collaboration features moot. - -## The short-term plan for One - -Because Teams isn’t here and we don’t want to delay getting One into your hands until Teams launches, we will map your Community Edition to One as-is. Meaning, all your workspaces will come to One for a period of three weeks or so. In that time, we will refine and add the finishing touches to Teams. When ready, your One instance will get an update to enable Teams. - -## Existing workspaces - -You will create a default workspace or choose one from your existing workspaces to be the default, as the case may be. All other workspaces will turn into teams in your default workspace. Projects in other workspaces will become team projects in your default workspace. - -## The default workspace - -Think of it as your org-wide parent in Plane. It will house teams, members, projects, and organizational settings. - -## Other workspaces going forward - -While we recommend having just one workspace, there are cases when you need more than one workspace, especially when you are managing data-sensitive clients. We don’t want to put restrictions on the creation of workspaces by instance. Meaning, you can create other workspaces should you need to on the same instance, but only with a new license even if it’s the Free plan or the Community Edition. Each workspace going forward will be linked to a license that becomes the unique identifier between you and us for all workspace management needs. - -This unlocks new ways of using workspaces. For example, you could have a One-licensed workspace internally, then a Free workspace for a client, then another Pro-licensed workspace for another client. Billing becomes simpler and more predictable for you. - -To answer an obvious question, we can’t turn existing workspaces into the new license-linked workspaces retroactively because of how we were architected in the past. We can only do that going forward. - ---- -For questions about this, please reach out to us on [Discord](https://discord.com/channels/1031547764020084846/1240291034307497994). \ No newline at end of file diff --git a/docs/plane-one/introduction.md b/docs/plane-one/introduction.md deleted file mode 100644 index a7b9b2ad..00000000 --- a/docs/plane-one/introduction.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Meet Plane One -description: Meet Plane One. Complete guide and documentation for Plane. -keywords: plane ---- - - -# Meet Plane One - -[Plane One](https://plane.so/one) is our first licensed self-hosted edition for growing teams serious about staying in control. One unlocks security, governance, and project management features scale-ups need to manage their instance and projects better. - -## Good to know -1. Plane One is a self-hosted-only solution. To use our hosted Cloud editions, [go here](https://app.plane.so). -2. Plane One only works with a domain, not with an IP addresses or `localhost`. -3. Plane One comes with updates for two years with an option to auto-update to latest versions when they are released. -4. Plane One works well for up to 100 users. If you have more than 100 users, you should consider [our Pro plan](https://plane.so/pricing). - -## Getting your Plane One license - -If you have already purchased a Plane One license, go to https://prime.plane.so and log in with the same email address you used at the time of purchase. To figure out that email address, look for an email from `@plane.so` or Stripe with the subject, "**Your Plane One order**". - -When you log in, you will see a list of your licenses. Clicking any will show you your license info and the command you should copy to start deploying One. - -::: tipIf you are yet to get a license, do that [here](https://plane.so/one).::: - -## Quickstart -Plane One installs with a single command on your CLI. [Learn more](/self-hosting/methods/docker-compose). \ No newline at end of file diff --git a/docs/plane-one/manage/advanced-deploy.md b/docs/plane-one/manage/advanced-deploy.md deleted file mode 100644 index 6900cb78..00000000 --- a/docs/plane-one/manage/advanced-deploy.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Documentation -description: Documentation. Complete guide and documentation for Plane. -keywords: plane ---- - - -# Documentation - diff --git a/docs/plane-one/manage/prime-cli.md b/docs/plane-one/manage/prime-cli.md deleted file mode 100644 index e0e52f7c..00000000 --- a/docs/plane-one/manage/prime-cli.md +++ /dev/null @@ -1,94 +0,0 @@ ---- -title: Manage your instance -description: Manage your instance. Complete guide and documentation for Plane. -keywords: plane ---- - - -# Manage your instance - -::: warningUpdate your CLI with the command `sudo prime-cli update-cli` before you download any Plane One updates. The latest version of the CLI ensures your Plane upgrades happen smoothly.::: - -The Prime CLI is our own command-line interface to help you install, upgrade, and manage your instance without being a pro at Docker. - - -Bring up the Prime CLI with ```sudo prime-cli``` from any directory on your machine. - -- The three operators you will use the most are, - - - `start` - - You will use this to start a service in the Docker network with the name of the service. - - - `stop` - - You will use this to stop a service in the Docker network with the name of the service. - - - `restart` - - You will use this to restart a service in the Docker network with the name of the service as a `{param or flag}`. -- Often, you will want to monitor the health of your instance and see if some services are up or down. Use `monitor` to do that. - -- `healthcheck` is another useful utility that lets you see the status and errors, if any, of all running services - -- `repair` fixes your Plane install for common errors automatically. - -- `update-cli` downloads and installs the latest version of Prime CLI. - ::: tip - It is highly recommend to run this first before you download any Plane One updates. The latest version of the CLI ensures your Plane upgrades happen smoothly. - ::: - - -For more advanced admins that want greater control over their instance, the list of additional commands available on Prime CLI follow. - - `configure` - - Brings up a step form to let you specify the following. - ::: details Steps to configure your instance - - `Listening port` - - Specify the port that the built-in reverse proxy will use - - Default value: 80 - - - `Max file-upload size` - - Specify a size in MBs for how big each file uploaded to your Plane app can be - - Default value: 5 MB - - - `External Postgres URL` - - Specify the URL of your own hosted Postgres if you would like to change the database your Plane app uses. - - Default database: Postgres 15.5 in the Docker container - - - `External Redis URL` - - Specify the URL of your own hosted REdis if you would like to change the default Redis Plane ships with. - - Default Redis: Redis 7.2.4 - - - `External storage` - - Specify your AWS S3 bucket's credentials in the format below to change storage from the default Plane ships with. - - AWS Access Key ID - - AWS Secret Access Key - - AWS S3 Bucket Name - - Default storage: MinIO - - - Confirm your choices on the screen ↓. - - This restarts your instance with the new configs. - ::: - -- `upgrade` - - checks your instance for available version upgrades and asks you for a confirmation before downloading the latest available version. - 1. Typing `YES` lets the CLI automatically download's the latest version and installs it. Then it restarts the instance to load the latest app. - 2. Typing `NO` cancels the upgrade. - -- `uninstall` - - uninstalls Plane. Before it goes through, it asks you for a confirmation. - 1. Typing `YES` lets the CLI clean up the `/opt/plane` folder, leaving behind the `/opt/plane/data` and `/opt/plane/logs` folders. - 2. Typing `NO` cancels the uninstall. \ No newline at end of file diff --git a/docs/plane-one/manage/prime-client.md b/docs/plane-one/manage/prime-client.md deleted file mode 100644 index 4fd8329d..00000000 --- a/docs/plane-one/manage/prime-client.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Manage your license -description: Manage your license. Complete guide and documentation for Plane. -keywords: plane ---- - - -# Manage your license - -After you purchase Plane One, you can log in to our customer portal(https://prime.plane.so) and find your license in the portal. - -You can also choose to buy multiple Plane One licenses from here and post your purchase you can see all of them listed here. - -## Manage licenses - -After you login, you can find all the licenses listed in a single place. All licenses, will show the key and the domain attached to the purchase. This makes it easy to identify which license corresponds to which domain, should you choose to buy multiple licenses. - - - -## View license details - -Once you select a license from the list, you quickly get information on how to setup plane one via our suggested setup methods. You can also download the invoice for your Plane One purchase here and copy your license key - - - -::: infoWe will soon add health metrics of your instance in this page, so that you can also monitor the health of your Plane One instance here.::: - -## Buy a new plane one license - -Within the customer portal, you can buy a new license for Plane One directly and self-host a new instance of Plane One. \ No newline at end of file diff --git a/docs/plane-one/self-host/guides.md b/docs/plane-one/self-host/guides.md deleted file mode 100644 index 6900cb78..00000000 --- a/docs/plane-one/self-host/guides.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Documentation -description: Documentation. Complete guide and documentation for Plane. -keywords: plane ---- - - -# Documentation - diff --git a/docs/plane-one/self-host/methods/docker.md b/docs/plane-one/self-host/methods/docker.md deleted file mode 100644 index 1e0fdefd..00000000 --- a/docs/plane-one/self-host/methods/docker.md +++ /dev/null @@ -1,98 +0,0 @@ ---- -title: Docker -description: Docker. Complete guide and documentation for Plane. -keywords: plane ---- - - -# Docker - -Plane One supports a standard Docker-based installation via our own command-line interface called the Prime CLI. -## Pre-requisites -- A Plane One license -If you don't have a license, [get it here](https://plane.so/one). -- A virtual or on-prem machine with at-least 2 vCPUs and 4 GB RAM -- `x64` AKA `AMD 64` or `AArch 64` AKA `ARM 64` CPUs -- Ubuntu, Debian, or CentOS - - For Amazon Linux 2 or Linux 2023, click here. - -## Upgrading from Community Edition to One -::: warning -Do not install One first if you are upgrading from the Community Edition. Follow the instructions below first all the way to the end of the section `Restoring your data to your One instance`. - -We strongly recommend you install One on a fresh machine, not the one running Plane Community. -::: - -### Backing up your data -`setup.sh` in the Community Edition now comes with an option to back up your data. - -1. Use `./setup.sh` to open the operator menu and select `7` to backup your Plane data. -2. When done, your data will be backed up to the folder shown on the screen. -e.g., `/plane-selfhost/plane-app/backup/20240522-1027` -3. This folder will contain 3 `tar.gz` files. - - `pgdata.tar.gz` - - `redisdata.tar.gz` - - `uploads.tar.gz` -4. Copy all the 3 files from the server running the Community Edition to any folder on the server running Plane One on any folder of your choice._createMdxContent - -e.g., `~/ce-backup` - -### Restoring your data to your One instance -1. Start any command-line interface like Terminal and go into the folder with the back-up files. - ``` - cd ~/ce-backup - ``` -2. Copy and paste the script below on Terminal and hit Enter. - ``` - - TARGET_DIR=/opt/plane/data - sudo mkdir -p $TARGET_DIR - for FILE in *.tar.gz; do - if [ -e "$FILE" ]; then - tar -xzvf "$FILE" -C "$TARGET_DIR" - else - echo "No .tar.gz files found in the current directory." - exit 1 - fi - done - - mv $TARGET_DIR/pgdata/ $TARGET_DIR/db - mv $TARGET_DIR/redisdata/ $TARGET_DIR/redis - mkdir -p $TARGET_DIR/minio - mv $TARGET_DIR/uploads/ $TARGET_DIR/minio/uploads/ - ``` -3. This script will extract your Community Edition data and restore it to /opt/plane/data. -4. Follow the instructions for new installations below. - -## New installations -1. `ssh` into your machine as the root user (or user with sudo access) per the norms of your hosting provider. -2. Run the command below with the last twelve characters being your license key. -::: tipThe easiest way to get this command is from the [customer portal](https://prime.plane.so/) where you also got your license key. Each entry on the portal shows the command bound to the license key, so you can just copy it from there.::: - ``` - curl -fsSL https://prime.plane.so/install/YOUR-LICENSE-KEY | sh - - ``` - -Successfully running that command, -1. Validates the license key -2. Downloads `prime-cli` per your OS and your CPU's architecture and saves it to the `/usr/bin` directory. -3. Runs the `prime-cli setup` command with necessary parameters. which in turn - 1. Asks you for the domain to link the license to - - Choose this carefully. The domain linked to the license can't be changed later. - - 2. Asks you to setup Plane in Express or Advanced modes - - Express is the fastest way to setup Plane. Advanced lets you configure all Docker services to your specs. - - 3. Installs Docker and its necessary plugins - 4. Downloads the license file - 5. Downloads `docker-compose`, `plane.env`, and the images for the microservices that will run in the Docker network - 6. Downloads the required docker images - 7. Starts Plane services - -Successful installation shows you the domain you entered in `1.` above. Go to that domain to access your Plane app. - ---- -# Docker Swarm -::: infoDocker Swarm will come soon. Please [reach out to us](mailto:support@plane.so) for updates and to have a quick chat to help us build it better.::: \ No newline at end of file diff --git a/docs/plane-one/self-host/methods/kubernetes.md b/docs/plane-one/self-host/methods/kubernetes.md deleted file mode 100644 index 4243dcad..00000000 --- a/docs/plane-one/self-host/methods/kubernetes.md +++ /dev/null @@ -1,255 +0,0 @@ ---- -title: Kubernetes -description: Kubernetes. Complete guide and documentation for Plane. -keywords: plane ---- - - -# Kubernetes - -## Pre-requisite - -- A Plane One license -::: tip If you don’t have a license, get it [here](https://prime.plane.so/) ::: -- A working Kubernetes cluster -- `kubectl` and `helm` on the client system that you will use to install our Helm charts - -## Installing Plane One - -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. - - Copy the format of constants below, paste it on Terminal to start setting environment variables, set values for each variable, and hit ENTER or RETURN. - ::: tip You will get the values for the variables from [prime.plane.so](https://prime.plane.so) under the Kuberntes tab of your license's details page. When installing Plane One for the first time, remember to specify a domain name.::: - - ```bash - LICENSE_KEY= - REG_USER_ID= - REG_PASSWORD=<******> - PLANE_VERSION= - DOMAIN_NAME= - ``` - -3. Add Plane helm chart repo - - Continue to be on the same Terminal window as with the previous steps, copy the code below, paste it on Terminal, and hit ENTER or RETURN. - - ```bash - helm repo add plane https://helm.plane.so/ - helm repo update - ``` - -4. Set-up and customization - - Quick set-up - - 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. - ::: tip 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. - - ```bash - helm install one-app plane/plane-enterprise \ - --create-namespace \ - --namespace plane-one \ - --set dockerRegistry.loginid=${REG_USER_ID} \ - --set dockerRegistry.password=${REG_PASSWORD} \ - --set license.licenseKey=${LICENSE_KEY} \ - --set license.licenseDomain=${DOMAIN_NAME} \ - --set license.licenseServer=https://prime.plane.so \ - --set planeVersion=${PLANE_VERSION} \ - --set ingress.ingressClass=nginx \ - --set env.storageClass=longhorn \ - --timeout 10m \ - --wait \ - --wait-for-jobs - ``` - - ::: tip - This is the minimum required to set up Plane One. You can change the default namespace from `plane-one`, the default appname - from `one-app`, the default storage class from `env.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. - ::: - - Advance set-up - - 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. - - ```bash - helm show values plane/plane-enterprise > values.yaml - vi values.yaml - ``` - - Make sure you set the minimum required values as below. - - `planeVersion: ` - - `dockerRegistry.loginid: ` - - `dockerRegistry.password: ` - - `license.licenseKey: ` - - `license.licenseDomain: ` - - `license.licenseServer: https://prime.plane.so` - - `ingress.ingressClass: ` - - `env.storageClass: ` - - ::: tip 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. - - ```bash - helm install one-app plane/plane-enterprise \ - --create-namespace \ - --namespace plane-one \ - -f values.yaml \ - --timeout 10m \ - --wait \ - --wait-for-jobs - ``` - -## Available customizations - -### Docker registry - -| Setting | Default | Required | Description | -|---|:---:|:---:|---| -| dockerRegistry.enabled | true | Yes | Plane uses a private Docker registry which needs authenticated login. This must be set to `true` to install Plane One. | -| dockerRegistry.registry | registry.plane.tools| Yes | The host that will serve the required Docker images; Don't change this. | -| dockerRegistry.loginid | | Yes | Sets the `loginid` for the Docker registry. This is the same as the REG_USER_ID value on prime. plane.so | -| dockerRegistry.password | | Yes | Sets the `password` for the Docker registry. This is the same as the REG_PASSWORD value on prime.plane.so| - -### License - -| Setting | Default | Required | Description | -|---|:---:|:---:|---| -| planeVersion | vX.XX.X | Yes | Specifies the version of Plane to be deployed. Copy this from prime.plane.so. | -| license.licenseServer | [https://prime.plane.so](https://prime.plane.so) | Yes | Sets the value of the `licenseServer` that gets you your license and validates it periodically. Don't change this. | -| license.licenseKey | | Yes | Holds your license key to Plane One. Copy this from prime.plane.so. | -| license.licenseDomain | 'plane.example.com' | Yes | The fully-qualified domain name (FQDN) in the format `sudomain.domain.tld` or `domain.tld` that the license is bound to. It is also attached to your `ingress` host to access Plane. | - -### Postgres - -| Setting | Default | Required | Description | -|---|:---:|:---:|---| -| services.postgres.local_setup | true | | Plane uses `postgres` as the primary database to store all the transactional data. This database can be hosted within kubernetes as part of helm chart deployment or can be used as hosted service remotely (e.g. aws rds or similar services). Set this to `true` when you choose to setup stateful deployment of `postgres`. Mark it as `false` when using a remotely hosted database | -| services.postgres.image | registry.plane.tools/plane/postgres:15.5-alpine | | Using this key, user must provide the docker image name to setup the stateful deployment of `postgres`. (must be set when `services.postgres.local_setup=true`)| -| services.postgres.servicePort | 5432 | | This key sets the default port number to be used while setting up stateful deployment of `postgres`. | -| services.postgres.cliConnectPort | | | If you intend to access the hosted stateful deployment of postgres using any of the client tools (e.g Postico), this key helps you expose the port. The mentioned port must not be occupied by any other applicaiton| -| services.postgres.volumeSize | 2Gi | | While setting up the stateful deployment, while creating the persistant volume, volume allocation size need to be provided. This key helps you set the volume allocation size. Unit of this value must be in Mi (megabyte) or Gi (gigabyte) | -| env.pgdb_username | plane | | Database credentials are requried to access the hosted stateful deployment of `postgres`. Use this key to set the username for the stateful deployment. | -| env.pgdb_password | plane | | Database credentials are requried to access the hosted stateful deployment of `postgres`. Use this key to set the password for the stateful deployment. | -| env.pgdb_name | plane | | Database name to be used while setting up stateful deployment of `Postgres`| -| env.pgdb_remote_url | | | Users can also decide to use the remote hosted database and link to Plane deployment. Ignoring all the above keys, set `services.postgres.local_setup` to `false` and set this key with remote connection url. | - -### Redis Setup - -| Setting | Default | Required | Description | -|---|:---:|:---:|---| -| services.redis.local_setup | true | | Plane uses `redis` to cache the session authentication and other static data. This database can be hosted within kubernetes as part of helm chart deployment or can be used as hosted service remotely (e.g. aws rds or similar services). Set this to `true` when you choose to setup stateful deployment of `redis`. Mark it as `false` when using a remotely hosted database | -| services.redis.image | registry.plane.tools/plane/redis:7.2.4-alpine | | Using this key, user must provide the docker image name to setup the stateful deployment of `redis`. (must be set when `services.redis.local_setup=true`)| -| services.redis.servicePort | 6379 | | This key sets the default port number to be used while setting up stateful deployment of `redis`. | -| services.redis.volumeSize | 500Mi | | While setting up the stateful deployment, while creating the persistant volume, volume allocation size need to be provided. This key helps you set the volume allocation size. Unit of this value must be in Mi (megabyte) or Gi (gigabyte) | -| env.remote_redis_url | | | Users can also decide to use the remote hosted database and link to Plane deployment. Ignoring all the above keys, set `services.redis.local_setup` to `false` and set this key with remote connection url. | - -### Doc Store (Minio/S3) Setup - -| Setting | Default | Required | Description | -|---|:---:|:---:|---| -| services.minio.local_setup | true | | Plane uses `minio` as the default file storage drive. This storage can be hosted within kubernetes as part of helm chart deployment or can be used as hosted service remotely (e.g. aws S3 or similar services). Set this to `true` when you choose to setup stateful deployment of `minio`. Mark it as `false` when using a remotely hosted database | -| services.minio.image | registry.plane.tools/plane/minio:latest | | Using this key, user must provide the docker image name to setup the stateful deployment of `minio`. (must be set when `services.minio.local_setup=true`)| -| services.minio.volumeSize | 3Gi | | While setting up the stateful deployment, while creating the persistant volume, volume allocation size need to be provided. This key helps you set the volume allocation size. Unit of this value must be in Mi (megabyte) or Gi (gigabyte) | -| services.minio.root_user | admin | | Storage credentials are requried to access the hosted stateful deployment of `minio`. Use this key to set the username for the stateful deployment. | -| services.minio.root_password | password | | Storage credentials are requried to access the hosted stateful deployment of `minio`. Use this key to set the password for the stateful deployment. | -| env.docstore_bucket | uploads | Yes | Storage bucket name is required as part of configuration. This is where files will be uploaded irrespective of if you are using `Minio` or external `S3` (or compatible) storage service | -| env.doc_upload_size_limit | 5242880 | Yes | Document Upload Size Limit (default to 5Mb) | -| env.aws_access_key | | | External `S3` (or compatible) storage service provides `access key` for the application to connect and do the necessary upload/download operations. To be provided when `services.minio.local_setup=false` | -| env.aws_secret_access_key | | | External `S3` (or compatible) storage service provides `secret access key` for the application to connect and do the necessary upload/download operations. To be provided when `services.minio.local_setup=false` | -| env.aws_region | | | External `S3` (or compatible) storage service providers creates any buckets in user selected region. This is also shared with the user as `region` for the application to connect and do the necessary upload/download operations. To be provided when `services.minio.local_setup=false` | -| env.aws_s3_endpoint_url | | | External `S3` (or compatible) storage service providers shares a `endpoint_url` for the integration purpose for the application to connect and do the necessary upload/download operations. To be provided when `services.minio.local_setup=false` | - -### Web Deployment - -| Setting | Default | Required | Description | -|---|:---:|:---:|---| -| services.web.replicas | 1 | Yes | Kubernetes helps you with scaling up/down the deployments. You can run 1 or more pods for each deployment. This key helps you setting up number of replicas you want to run for this deployment. It must be >=1 | -| services.web.memoryLimit | 1000Mi | | Every deployment in kubernetes can be set to use maximum memory they are allowed to use. This key sets the memory limit for this deployment to use.| -| services.web.cpuLimit | 500m | | Every deployment in kubernetes can be set to use maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use.| -| services.web.image| registry.plane.tools/plane/web-enterprise | | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment | - -### Space Deployment - -| Setting | Default | Required | Description | -|---|:---:|:---:|---| -| services.space.replicas | 1 | Yes | Kubernetes helps you with scaling up/down the deployments. You can run 1 or more pods for each deployment. This key helps you setting up number of replicas you want to run for this deployment. It must be >=1 | -| services.space.memoryLimit | 1000Mi | | Every deployment in kubernetes can be set to use maximum memory they are allowed to use. This key sets the memory limit for this deployment to use.| -| services.space.cpuLimit | 500m | | Every deployment in kubernetes can be set to use maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use.| -| services.space.image| registry.plane.tools/plane/space-enterprise | | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment | - -### Admin Deployment - -| Setting | Default | Required | Description | -|---|:---:|:---:|---| -| services.admin.replicas | 1 | Yes | Kubernetes helps you with scaling up/down the deployments. You can run 1 or more pods for each deployment. This key helps you setting up number of replicas you want to run for this deployment. It must be >=1 | -| services.admin.memoryLimit | 1000Mi | | Every deployment in kubernetes can be set to use maximum memory they are allowed to use. This key sets the memory limit for this deployment to use.| -| services.admin.cpuLimit | 500m | | Every deployment in kubernetes can be set to use maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use.| -| services.admin.image| registry.plane.tools/plane/admin-enterprise | | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment | - -### API Deployment - -| Setting | Default | Required | Description | -|---|:---:|:---:|---| -| services.api.replicas | 1 | Yes | Kubernetes helps you with scaling up/down the deployments. You can run 1 or more pods for each deployment. This key helps you setting up number of replicas you want to run for this deployment. It must be >=1 | -| services.api.memoryLimit | 1000Mi | | Every deployment in kubernetes can be set to use maximum memory they are allowed to use. This key sets the memory limit for this deployment to use.| -| services.api.cpuLimit | 500m | | Every deployment in kubernetes can be set to use maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use.| -| services.api.image| registry.plane.tools/plane/backend-enterprise | | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment | -| env.sentry_dsn | | | (optional) API service deployment comes with some of the preconfigured integration. Sentry is one among those. Here user can set the Sentry provided DSN for this integration.| -| env.sentry_environment | | | (optional) API service deployment comes with some of the preconfigured integration. Sentry is one among those. Here user can set the Sentry environment name (as configured in Sentry) for this integration.| - -### Worker Deployment - -| Setting | Default | Required | Description | -|---|:---:|:---:|---| -| services.worker.replicas | 1 | Yes | Kubernetes helps you with scaling up/down the deployments. You can run 1 or more pods for each deployment. This key helps you setting up number of replicas you want to run for this deployment. It must be >=1 | -| services.worker.memoryLimit | 1000Mi | | Every deployment in kubernetes can be set to use maximum memory they are allowed to use. This key sets the memory limit for this deployment to use.| -| services.worker.cpuLimit | 500m | | Every deployment in kubernetes can be set to use maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use.| - -### Beat-Worker deployment - -| Setting | Default | Required | Description | -|---|:---:|:---:|---| -| services.beatworker.replicas | 1 | Yes | Kubernetes helps you with scaling up/down the deployments. You can run 1 or more pods for each deployment. This key helps you setting up number of replicas you want to run for this deployment. It must be >=1 | -| services.beatworker.memoryLimit | 1000Mi | | Every deployment in kubernetes can be set to use maximum memory they are allowed to use. This key sets the memory limit for this deployment to use.| -| services.beatworker.cpuLimit | 500m | | Every deployment in kubernetes can be set to use maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use.| - -### Ingress and SSL Setup - -| Setting | Default | Required | Description | -|---|:---:|:---:|---| -| ingress.enabled | true | | Ingress setup in kubernetes is a common practice to expose application to the intended audience. Set it to `false` if you are using external ingress providers like `Cloudflare` | -| ingress.minioHost | 'plane-services.minio.example.com' | | Based on above configuration, if you want to expose the `minio` web console to set of users, use this key to set the `host` mapping or leave it as `EMPTY` to not expose interface. | -| ingress.ingressClass | 'nginx' | Yes | Kubernetes cluster setup comes with various options of `ingressClass`. Based on your setup, set this value to the right one (eg. nginx, traefik, etc). Leave it to default in case you are using external ingress provider.| -| ingress.ingress_annotations | `{ "nginx.ingress.kubernetes.io/proxy-body-size": "5m" }` | | Ingress controllers comes with various configuration options which can be passed as annotations. Setting this value lets you change the default value to user required. | -| ssl.createIssuer | false | | Kubernets cluster setup supports creating `issuer` type resource. After deployment, this is step towards creating secure access to the ingress url. Issuer is required for you generate SSL certifiate. Kubernetes can be configured to use any of the certificate authority to generate SSL (depending on CertManager configuration). Set it to `true` to create the issuer. Applicable only when `ingress.enabled=true`| -| ssl.issuer | http | | CertManager configuration allows user to create issuers using `http` or any of the other DNS Providers like `cloudflare`, `digitalocean`, etc. As of now Plane supports `http`, `cloudflare`, `digitalocean`| -| ssl.token | | | To create issuers using DNS challenge, set the issuer api token of dns provider like cloudflare` or `digitalocean`(not required for http) | -| ssl.server | [https://acme-v02.api.letsencrypt.org/directory](https://acme-v02.api.letsencrypt.org/directory) | | Issuer creation configuration need the certificate generation authority server url. Default URL is the `Let's Encrypt` server| -| ssl.email | `plane@example.com` | | Certificate generation authority needs a valid email id before generating certificate. Required when `ssl.createIssuer=true` | -| ssl.generateCerts | false | | After creating the issuers, user can still not create the certificate untill sure of configuration. Setting this to `true` will try to generate SSL certificate and associate with ingress. Applicable only when `ingress.enabled=true` and `ssl.createIssuer=true` | - -### Common Environment Settings - -| Setting | Default | Required | Description | -|---|:---:|:---:|---| -| env.storageClass | longhorn | | Creating the persitant volumes for the stateful deployments needs the `storageClass` name. Set the correct value as per your kubernetes cluster configuration. | -| env.secret_key | 60gp0byfz2dvffa45cxl20p1scy9xbpf6d8c5y0geejgkyp1b5 | Yes | This must a random string which is used for hashing/encrypting the sensitive data within the application. Once set, changing this might impact the already hashed/encrypted data| - -## Custom Ingress Routes - -If you are planning to use 3rd party ingress providers, here is the available route configuration - -| Host | Path | Service | -|--- |:---:|---| -| plane.example.com | / | [http://plane-web.plane-one:3000](http://plane-web.plane-one:3000) | -| plane.example.com | /spaces/* | [http://plane-space.plane-one:3000](http://plane-space.plane-one:3000) | -| plane.example.com | /god-mode/* | [http://plane-admin.plane-one:8000](http://plane-admin.plane-one:8000) | -| plane.example.com | /api/* | [http://plane-api.plane-one:8000](http://plane-api.plane-one:8000) | -| plane.example.com | /auth/* | [http://plane-api.plane-one:8000](http://plane-api.plane-one:8000)| -| plane.example.com | /uploads/* | [http://plane-minio.plane-one:9000](http://plane-minio.plane-one:9000) | -| plane-minio.example.com | / | [http://plane-minio.plane-one:9000](http://plane-minio.plane-one:9000) | \ No newline at end of file diff --git a/docs/plane-one/self-host/overview.md b/docs/plane-one/self-host/overview.md deleted file mode 100644 index a4853203..00000000 --- a/docs/plane-one/self-host/overview.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Self-hosting overview -description: Self-hosting overview. Complete guide and documentation for Plane. -keywords: plane ---- - - -# Self-hosting overview - -## Methods - -### [Docker](/self-hosting/methods/docker-compose) -Run Plane One using docker with a single command - -### Kubernetes (Coming Soon!) -Run Plane One on a kubernetes cluster using helm package manager. - -## Manage - -### [Manage Licenses](https://docs.plane.so/workspaces-and-users/upgrade-plan) -Learn how to configure your instance. - -### [Prime CLI](/self-hosting/manage/prime-cli) -Setup authentication methods on your Plane instance. diff --git a/vercel.json b/vercel.json index bd6fd8fa..13ddcb28 100644 --- a/vercel.json +++ b/vercel.json @@ -1,3 +1,89 @@ { - "cleanUrls": true + "cleanUrls": true, + "redirects": [ + { + "source": "/api-reference/byoa/build-plane-app", + "destination": "/dev-tools/build-plane-app" + }, + { + "source": "/webhooks/intro-webhooks", + "destination": "/dev-tools/intro-webhooks" + }, + { + "source": "/api-reference/cycle-issue/overview", + "destination": "/api-reference/cycle/overview" + }, + { + "source": "/api-reference/cycle-issue/add-cycle-issue", + "destination": "/api-reference/cycle/add-cycle-work-items" + }, + { + "source": "/api-reference/cycle-issue/list-cycle-issues", + "destination": "/api-reference/cycle/list-cycle-work-items" + }, + { + "source": "/api-reference/cycle-issue/delete-cycle-issue", + "destination": "/api-reference/cycle/remove-cycle-work-item" + }, + { + "source": "/api-reference/module-issue/overview", + "destination": "/api-reference/module/overview" + }, + { + "source": "/api-reference/module-issue/add-module-issue", + "destination": "/api-reference/module/add-module-work-items" + }, + { + "source": "/api-reference/module-issue/list-module-issues", + "destination": "/api-reference/module/list-module-work-items" + }, + { + "source": "/api-reference/module-issue/delete-module-issue", + "destination": "/api-reference/module/remove-module-work-item" + }, + { + "source": "/plane-one/governance/authentication/custom-sso", + "destination": "/self-hosting/govern/authentication" + }, + { + "source": "/plane-one/governance/workspaces-and-teams", + "destination": "/self-hosting/overview" + }, + { + "source": "/plane-one/manage/advanced-deploy", + "destination": "/self-hosting/overview" + }, + { + "source": "/plane-one/manage/advanced-deploy", + "destination": "/self-hosting/overview" + }, + { + "source": "/plane-one/manage/prime-cli", + "destination": "/self-hosting/manage/prime-cli" + }, + { + "source": "/plane-one/manage/prime-client", + "destination": "/self-hosting/manage/manage-licenses/activate-pro-and-business" + }, + { + "source": "/plane-one/self-host/methods/docker", + "destination": "/self-hosting/methods/docker-compose" + }, + { + "source": "/plane-one/self-host/methods/kubernetes", + "destination": "/self-hosting/methods/kubernetes" + }, + { + "source": "/plane-one/self-host/guides", + "destination": "/self-hosting/overview" + }, + { + "source": "/plane-one/self-host/overview", + "destination": "/self-hosting/overview" + }, + { + "source": "/plane-one/introduction", + "destination": "/self-hosting/overview" + } + ] } From f20bb9e26044787c39a13f697131548e97984a5b Mon Sep 17 00:00:00 2001 From: danciaclara Date: Wed, 4 Feb 2026 18:35:22 +0530 Subject: [PATCH 09/12] Added Posthog analytics --- docs/.vitepress/config.mts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index 5e85bfe9..9c5a7e71 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -52,6 +52,12 @@ export default withMermaid(defineConfig({ gtag('js', new Date()); gtag('config', 'G-JF828SKW90');`], + // PostHog Analytics + ['script', {}, ` + !function(t,e){var o,n,p,r;e.__SV||(window.posthog=e,e._i=[],e.init=function(i,s,a){function g(t,e){var o=e.split(".");2==o.length&&(t=t[o[0]],e=o[1]),t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}}(p=t.createElement("script")).type="text/javascript",p.async=!0,p.src=s.api_host.replace(".i.posthog.com","-assets.i.posthog.com")+"/static/array.js",(r=t.getElementsByTagName("script")[0]).parentNode.insertBefore(p,r);var u=e;for(void 0!==a?u=e[a]=[]:a="posthog",u.people=u.people||[],u.toString=function(t){var e="posthog";return"posthog"!==a&&(e+="."+a),t||(e+=" (stub)"),e},u.people.toString=function(){return u.toString(1)+".people (stub)"},o="init capture register register_once register_for_session unregister unregister_for_session getFeatureFlag getFeatureFlagPayload isFeatureEnabled reloadFeatureFlags updateEarlyAccessFeatureEnrollment getEarlyAccessFeatures on onFeatureFlags onSessionId getSurveys getActiveMatchingSurveys renderSurvey canRenderSurvey getNextSurveyStep identify setPersonProperties group resetGroups setPersonPropertiesForFlags resetPersonPropertiesForFlags setGroupPropertiesForFlags resetGroupPropertiesForFlags reset get_distinct_id getGroups get_session_id get_session_replay_url alias set_config startSessionRecording stopSessionRecording sessionRecordingStarted captureException loadToolbar get_property getSessionProperty createPersonProfile opt_in_capturing opt_out_capturing has_opted_in_capturing has_opted_out_capturing clear_opt_in_out_capturing debug getPageViewId captureTraceFeedback captureTraceMetric".split(" "),n=0;n Date: Wed, 4 Feb 2026 18:37:26 +0530 Subject: [PATCH 10/12] fixed duplicate redirect --- vercel.json | 4 ---- 1 file changed, 4 deletions(-) diff --git a/vercel.json b/vercel.json index 13ddcb28..6f8453d7 100644 --- a/vercel.json +++ b/vercel.json @@ -53,10 +53,6 @@ "source": "/plane-one/manage/advanced-deploy", "destination": "/self-hosting/overview" }, - { - "source": "/plane-one/manage/advanced-deploy", - "destination": "/self-hosting/overview" - }, { "source": "/plane-one/manage/prime-cli", "destination": "/self-hosting/manage/prime-cli" From 679b0dda02f4299e5202c67b1ef360f9744b36a2 Mon Sep 17 00:00:00 2001 From: sriramveeraghanta Date: Thu, 5 Feb 2026 19:01:45 +0530 Subject: [PATCH 11/12] fix: convert variables to envs --- .env.example | 7 + .gitignore | 5 +- docs/.vitepress/config.mts | 68 +- .../theme/components/CookieConsent.vue | 173 ++ docs/.vitepress/theme/index.ts | 8 +- .../govern/configure-dns-email-service.md | 182 +- docs/self-hosting/govern/custom-domain.md | 66 +- docs/self-hosting/methods/coolify.md | 22 +- docs/self-hosting/methods/kubernetes.md | 1470 ++++++++--------- docs/self-hosting/methods/portainer.md | 57 +- docs/self-hosting/upgrade-from-community.md | 129 +- 11 files changed, 1209 insertions(+), 978 deletions(-) create mode 100644 .env.example create mode 100644 docs/.vitepress/theme/components/CookieConsent.vue diff --git a/.env.example b/.env.example new file mode 100644 index 00000000..16aa059b --- /dev/null +++ b/.env.example @@ -0,0 +1,7 @@ +# PostHog Analytics +VITE_POSTHOG_KEY= + +# Algolia Search +VITE_ALGOLIA_APP_ID= +VITE_ALGOLIA_API_KEY= +VITE_ALGOLIA_INDEX_NAME= diff --git a/.gitignore b/.gitignore index 74434ed4..615541a0 100644 --- a/.gitignore +++ b/.gitignore @@ -15,4 +15,7 @@ examples-temp node_modules pnpm-global TODOs.md -*.timestamp-*.mjs \ No newline at end of file +*.timestamp-*.mjs +.env +.env.local +.env.*.local \ No newline at end of file diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index 9c5a7e71..55c4a473 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -1,6 +1,47 @@ -import { defineConfig } from 'vitepress' +import { defineConfig, type HeadConfig } from 'vitepress' import { tabsMarkdownPlugin } from 'vitepress-plugin-tabs' import { withMermaid } from 'vitepress-plugin-mermaid' +import { readFileSync } from 'node:fs' +import { resolve } from 'node:path' + +function loadEnvVar(key: string): string | undefined { + // process.env takes precedence (CI/hosting platforms set vars here) + if (key in process.env) return process.env[key] || undefined + // Fall back to .env file for local development + try { + const envFile = readFileSync(resolve(process.cwd(), '.env'), 'utf-8') + const match = envFile.match(new RegExp(`^${key}=(.+)$`, 'm')) + return match?.[1]?.trim() + } catch { + return undefined + } +} + +const posthogKey = loadEnvVar('VITE_POSTHOG_KEY') +const algoliaAppId = loadEnvVar('VITE_ALGOLIA_APP_ID') +const algoliaApiKey = loadEnvVar('VITE_ALGOLIA_API_KEY') +const algoliaIndexName = loadEnvVar('VITE_ALGOLIA_INDEX_NAME') + +const searchConfig = algoliaAppId && algoliaApiKey && algoliaIndexName + ? { + provider: 'algolia' as const, + options: { + appId: algoliaAppId, + apiKey: algoliaApiKey, + indexName: algoliaIndexName, + insights: true + } + } + : { provider: 'local' as const } + +const posthogHead: HeadConfig[] = posthogKey + ? [ + ['script', {}, ` + !function(t,e){var o,n,p,r;e.__SV||(window.posthog=e,e._i=[],e.init=function(i,s,a){function g(t,e){var o=e.split(".");2==o.length&&(t=t[o[0]],e=o[1]),t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}}(p=t.createElement("script")).type="text/javascript",p.async=!0,p.src=s.api_host.replace(".i.posthog.com","-assets.i.posthog.com")+"/static/array.js",(r=t.getElementsByTagName("script")[0]).parentNode.insertBefore(p,r);var u=e;for(void 0!==a?u=e[a]=[]:a="posthog",u.people=u.people||[],u.toString=function(t){var e="posthog";return"posthog"!==a&&(e+="."+a),t||(e+=" (stub)"),e},u.people.toString=function(){return u.toString(1)+".people (stub)"},o="init capture register register_once register_for_session unregister unregister_for_session getFeatureFlag getFeatureFlagPayload isFeatureEnabled reloadFeatureFlags updateEarlyAccessFeatureEnrollment getEarlyAccessFeatures on onFeatureFlags onSessionId getSurveys getActiveMatchingSurveys renderSurvey canRenderSurvey getNextSurveyStep identify setPersonProperties group resetGroups setPersonPropertiesForFlags resetPersonPropertiesForFlags setGroupPropertiesForFlags resetGroupPropertiesForFlags reset get_distinct_id getGroups get_session_id get_session_replay_url alias set_config startSessionRecording stopSessionRecording sessionRecordingStarted captureException loadToolbar get_property getSessionProperty createPersonProfile opt_in_capturing opt_out_capturing has_opted_in_capturing has_opted_out_capturing clear_opt_in_out_capturing debug getPageViewId captureTraceFeedback captureTraceMetric".split(" "),n=0;n +import { ref, onMounted } from 'vue' + +const STORAGE_KEY = 'plane-docs-cookie-consent' +const showBanner = ref(false) + +function getConsent(): string | null { + try { + return localStorage.getItem(STORAGE_KEY) + } catch { + return null + } +} + +function grantConsent() { + if (typeof window === 'undefined') return + + // Google Analytics + if (typeof window.gtag === 'function') { + window.gtag('consent', 'update', { + analytics_storage: 'granted' + }) + } + + // PostHog (may not be loaded if VITE_POSTHOG_KEY is unset) + if (window.posthog?.opt_in_capturing) { + window.posthog.opt_in_capturing() + } +} + +function denyConsent() { + if (typeof window === 'undefined') return + + // Google Analytics — consent stays denied by default, no update needed + + // PostHog (may not be loaded if VITE_POSTHOG_KEY is unset) + if (window.posthog?.opt_out_capturing) { + window.posthog.opt_out_capturing() + } +} + +function accept() { + try { + localStorage.setItem(STORAGE_KEY, 'granted') + } catch {} + grantConsent() + showBanner.value = false +} + +function decline() { + try { + localStorage.setItem(STORAGE_KEY, 'denied') + } catch {} + denyConsent() + showBanner.value = false +} + +onMounted(() => { + const consent = getConsent() + if (consent === 'granted') { + grantConsent() + } else if (consent === 'denied') { + denyConsent() + } else { + showBanner.value = true + } +}) + + + + + diff --git a/docs/.vitepress/theme/index.ts b/docs/.vitepress/theme/index.ts index 567a59ae..7064b113 100644 --- a/docs/.vitepress/theme/index.ts +++ b/docs/.vitepress/theme/index.ts @@ -1,6 +1,6 @@ import DefaultTheme from 'vitepress/theme' import type { Theme } from 'vitepress' -import { onMounted, nextTick } from 'vue' +import { onMounted, nextTick, h } from 'vue' import { enhanceAppWithTabs } from 'vitepress-plugin-tabs/client' import './style.css' @@ -11,6 +11,7 @@ import CodePanel from './components/CodePanel.vue' import ResponsePanel from './components/ResponsePanel.vue' import Card from './components/Card.vue' import CardGroup from './components/CardGroup.vue' +import CookieConsent from './components/CookieConsent.vue' /** * Adds 'api-page' class to hide the aside on API reference pages @@ -108,6 +109,11 @@ function updateHashOnTabClick(event: Event) { export default { extends: DefaultTheme, + Layout() { + return h(DefaultTheme.Layout, null, { + 'layout-bottom': () => h(CookieConsent) + }) + }, enhanceApp({ app, router }) { enhanceAppWithTabs(app) diff --git a/docs/self-hosting/govern/configure-dns-email-service.md b/docs/self-hosting/govern/configure-dns-email-service.md index c599eae1..801afcfd 100644 --- a/docs/self-hosting/govern/configure-dns-email-service.md +++ b/docs/self-hosting/govern/configure-dns-email-service.md @@ -4,10 +4,9 @@ description: Learn how to configure dns for intake email for self-hosted Plane. keywords: plane, self-hosting, deployment, plane installation, configuration, administration --- - # Configure DNS for Intake Email -This guide explains how to configure DNS settings to enable the [Intake Email](https://docs.plane.so/intake/intake-email) feature for your self-hosted Plane instance. These configurations enable your server to accept messages sent to your project's dedicated Intake address, which are then converted into work items in your project's Intake section. +This guide explains how to configure DNS settings to enable the [Intake Email](https://docs.plane.so/intake/intake-email) feature for your self-hosted Plane instance. These configurations enable your server to accept messages sent to your project's dedicated Intake address, which are then converted into work items in your project's Intake section. ## Prerequisites @@ -19,114 +18,122 @@ If any of these ports are currently in use, you can free them by running: fuser -k 25/tcp 465/tcp 587/tcp ``` -## Generate SSL/TLS Certificate for Email Domain +## Generate SSL/TLS Certificate for Email Domain + ::: warning Mandatory for Docker Compose deployments only. ::: Before configuring DNS records for Intake Email, secure your email domain with an SSL/TLS certificate. This ensures encrypted communication between mail servers and improves email trust and deliverability. -1. **Install Certbot** -Update your system and install Certbot. +1. **Install Certbot** + Update your system and install Certbot. + ```bash sudo apt update && sudo apt install certbot ``` - For NGINX: - ```bash - sudo apt install python3-certbot-nginx - ``` - For Apache: - ```bash - sudo apt install python3-certbot-apache - ``` - -2. **Generate SSL Certificate** -Choose the method that matches your web server setup: For NGINX: + ```bash - sudo certbot --nginx -d + sudo apt install python3-certbot-nginx ``` For Apache: - ```bash - sudo certbot --apache -d - ``` - For standalone (no web server): ```bash - sudo certbot certonly --standalone -d + sudo apt install python3-certbot-apache ``` -3. **Copy Certificate Files** -Copy the generated certificate files to Plane's expected directory: +2. **Generate SSL Certificate** + Choose the method that matches your web server setup: - ```bash - sudo cp /etc/letsencrypt/live//fullchain.pem /opt/plane/data/email/tls/cert.pem - sudo cp /etc/letsencrypt/live//privkey.pem /opt/plane/data/email/tls/key.pem - ``` + For NGINX: + ```bash + sudo certbot --nginx -d + ``` -4. **Configure Environment Variables** -Add the following settings to your plane.env file: + For Apache: + ```bash + sudo certbot --apache -d + ``` - ```bash - # If using SMTP_DOMAIN as FQDN (e.g., intake.example.com), - # generate a valid SSL certificate and set these paths accordingly. - SMTP_DOMAIN=intake.example.com - TLS_CERT_PATH=tls/cert.pem - TLS_PRIV_KEY_PATH=tls/key.pem - INTAKE_EMAIL_DOMAIN=intake.example.com - ``` + For standalone (no web server): + ```bash + sudo certbot certonly --standalone -d + ``` - ::: warning - Important: `SMTP_DOMAIN` and `INTAKE_EMAIL_DOMAIN` must be identical. - ::: +3. **Copy Certificate Files** + Copy the generated certificate files to Plane's expected directory: + ```bash + sudo cp /etc/letsencrypt/live//fullchain.pem /opt/plane/data/email/tls/cert.pem + sudo cp /etc/letsencrypt/live//privkey.pem /opt/plane/data/email/tls/key.pem + ``` -## Configure DNS records +4. **Configure Environment Variables** + Add the following settings to your plane.env file: -1. **Create an A Record** -This record points to the server running your email service. + ```bash + # If using SMTP_DOMAIN as FQDN (e.g., intake.example.com), + # generate a valid SSL certificate and set these paths accordingly. + SMTP_DOMAIN=intake.example.com + TLS_CERT_PATH=tls/cert.pem + TLS_PRIV_KEY_PATH=tls/key.pem + INTAKE_EMAIL_DOMAIN=intake.example.com + ``` - ```bash - Type: A - Host: # Example: plane.example.com - Value: # Your server's public IP address - TTL: Auto | 3600 - ``` - - ::: tip - You can alternatively use a CNAME record if you're using a cloud load balancer. - ::: - -2. **Add an MX Record** -This record directs email traffic to your mail server. - ```bash - Type: MX - Host: # Example: intake.example.com - Value: # Same as your A record host - Priority: 10 - TTL: Auto | 3600 - ``` + ::: warning + Important: `SMTP_DOMAIN` and `INTAKE_EMAIL_DOMAIN` must be identical. + ::: -3. **Configure an SPF Record** -This record helps prevent email spoofing. +## Configure DNS records - ```bash - Type: TXT - Host: # Example: intake.example.com - Value: "v=spf1 ip4: -all" - TTL: Auto | 3600 - ``` -4. **Set Up a DMARC record** -This record specifies how receiving mail servers should handle authentication failures. +1. **Create an A Record** + This record points to the server running your email service. + + ```bash + Type: A + Host: # Example: plane.example.com + Value: # Your server's public IP address + TTL: Auto | 3600 + ``` + + ::: tip + You can alternatively use a CNAME record if you're using a cloud load balancer. + ::: + +2. **Add an MX Record** + This record directs email traffic to your mail server. + `bash +Type: MX +Host: # Example: intake.example.com +Value: # Same as your A record host +Priority: 10 +TTL: Auto | 3600 +` + +3. **Configure an SPF Record** + This record helps prevent email spoofing. + + ```bash + Type: TXT + Host: # Example: intake.example.com + Value: "v=spf1 ip4: -all" + TTL: Auto | 3600 + ``` + +4. **Set Up a DMARC record** + This record specifies how receiving mail servers should handle authentication failures. + + ```bash + Type: TXT + Host: _dmarc. # Example: _dmarc.intake.example.com + Value: "v=DMARC1; p=reject; rua=mailto:" + TTL: Auto | 3600 + ``` - ```bash - Type: TXT - Host: _dmarc. # Example: _dmarc.intake.example.com - Value: "v=DMARC1; p=reject; rua=mailto:" - TTL: Auto | 3600 - ``` ## Verify your configuration + After setting up your DNS records, verify that they're correctly configured: ```bash @@ -146,6 +153,7 @@ dig TXT _dmarc. You can also use [MXToolbox](https://mxtoolbox.com) to check for any issues with your DNS configuration. ## Test your mail server + Once your DNS records have propagated, test your SMTP connections: ```bash @@ -158,16 +166,14 @@ telnet 587 ## Troubleshooting - MX Record issues - - - Ensure there's a proper dot at the end of the domain. - - Check that the priority number is correct (lower = higher priority). - - Allow 24-48 hours for DNS changes to fully propagate. + - Ensure there's a proper dot at the end of the domain. + - Check that the priority number is correct (lower = higher priority). + - Allow 24-48 hours for DNS changes to fully propagate. - A Record issues - - - Verify that the IP address is correct. - - Ensure your mail subdomain matches the MX record. + - Verify that the IP address is correct. + - Ensure your mail subdomain matches the MX record. ## See also -[Intake Email](https://docs.plane.so/intake/intake-email) \ No newline at end of file +[Intake Email](https://docs.plane.so/intake/intake-email) diff --git a/docs/self-hosting/govern/custom-domain.md b/docs/self-hosting/govern/custom-domain.md index 274291d2..3f2b9e2a 100644 --- a/docs/self-hosting/govern/custom-domain.md +++ b/docs/self-hosting/govern/custom-domain.md @@ -4,7 +4,6 @@ description: Configure custom domain for self-hosted Plane. Setup your own domai keywords: plane, self-hosting, deployment, plane installation, configuration, administration --- - # Configure custom domain During installation, you configure a domain for your instance. If you need to change that domain later, whether you're moving to a production domain, switching to a different hostname, or updating your DNS configuration, this guide walks you through the process. @@ -29,7 +28,8 @@ cat /opt/plane/plane.env | grep ``` **Example output:** -```env + +```ini DOMAIN_NAME=localhost SITE_ADDRESS=http://localhost WEB_URL=http://localhost @@ -41,54 +41,56 @@ This shows you all the variables that contain your current domain. You'll update ## Update domain in environment file 1. Open the Plane environment configuration file: - ```bash - vim /opt/plane/plane.env - ``` + + ```bash + vim /opt/plane/plane.env + ``` 2. Find and update these environment variables with your new domain: + - **DOMAIN_NAME** - - **DOMAIN_NAME** + Set this to your bare domain name without protocol: - Set this to your bare domain name without protocol: - ```env - DOMAIN_NAME=plane.company.com - ``` + ```ini + DOMAIN_NAME=plane.company.com + ``` - Don't include `http://` or `https://` here, just the hostname. + Don't include `http://` or `https://` here, just the hostname. + - **SITE_ADDRESS** - - **SITE_ADDRESS** + Set this to your full domain URL: - Set this to your full domain URL: - ```env - SITE_ADDRESS=https://plane.company.com - ``` + ```ini + SITE_ADDRESS=https://plane.company.com + ``` - Include the protocol (`https://` for SSL, `http://` if you haven't set up SSL yet). + Include the protocol (`https://` for SSL, `http://` if you haven't set up SSL yet). + - **WEB_URL** - - **WEB_URL** + This should match your SITE_ADDRESS: - This should match your SITE_ADDRESS: - ```env - WEB_URL=https://plane.company.com - ``` + ```ini + WEB_URL=https://plane.company.com + ``` - Again, include the full protocol. + Again, include the full protocol. - **CORS_ALLOWED_ORIGINS** + **CORS_ALLOWED_ORIGINS** - List all domains that should be allowed to make cross-origin requests to your Plane instance. This typically includes both HTTP and HTTPS versions of your domain: - ```env - CORS_ALLOWED_ORIGINS=https://plane.company.com,http://plane.company.com - ``` + List all domains that should be allowed to make cross-origin requests to your Plane instance. This typically includes both HTTP and HTTPS versions of your domain: - Separate multiple entries with commas, no spaces. If you have multiple domains or subdomains that need access, add them all here. + ```ini + CORS_ALLOWED_ORIGINS=https://plane.company.com,http://plane.company.com + ``` + + Separate multiple entries with commas, no spaces. If you have multiple domains or subdomains that need access, add them all here. ## Restart Plane services Apply your configuration changes by restarting Plane: - ```bash +`bash sudo prime-cli restart - ``` + ` This process typically takes a few minutes. You'll see output indicating the status of each service as it restarts. @@ -138,4 +140,4 @@ If your server is behind a firewall or router and has an internal IP address, yo By following these steps, you will be able to access your self-hosted instance of Plane using your custom domain name, whether your server has a public IP address or is behind a firewall with an internal IP address. -::: \ No newline at end of file +::: diff --git a/docs/self-hosting/methods/coolify.md b/docs/self-hosting/methods/coolify.md index 7b44604d..53023dc3 100644 --- a/docs/self-hosting/methods/coolify.md +++ b/docs/self-hosting/methods/coolify.md @@ -4,7 +4,6 @@ description: Learn how to deploy plane with coolify for self-hosted Plane. Compl keywords: plane, self-hosting, deployment, plane installation --- - # Deploy Plane with Coolify This guide shows you the steps to deploy a self-hosted instance of Plane using Coolify. @@ -18,16 +17,16 @@ This guide shows you the steps to deploy a self-hosted instance of Plane using C ### Procedure -1. **Download the required depoyment files** +1. **Download the required depoyment files** - `coolify-compose.yml` – Defines Plane's services and dependencies. ```bash curl -fsSL https://prime.plane.so/releases//coolify-compose.yml -o coolify-compose.yml ``` - ::: warning - The `` value should be v1.8.2 or higher. - ::: + ::: warning + The `` value should be v1.8.2 or higher. + ::: 2. Create a new project in Coolify. @@ -38,15 +37,14 @@ This guide shows you the steps to deploy a self-hosted instance of Plane using C 5. Copy and paste the contents of the `coolify-compose.yml` file into the editor. 6. Configure external DB, Redis, RabbitMQ and any other required environment variables in the UI. - ::: warning - 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. - ::: - + ::: warning + 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. + ::: - `DATABASE_URL` – Connection string for your external database. - `REDIS_URL` – Connection string for your external Redis instance. - `AMQP_URL` – Connection string for your external RabbitMQ server. -8. Deploy to launch your Plane instance. - Once the deployment is complete, your Plane instance should be accessible on the configured domain. +7. Deploy to launch your Plane instance. + Once the deployment is complete, your Plane instance should be accessible on the configured domain. -9. If you've purchased a paid plan, [activate your license key](/self-hosting/manage/manage-licenses/activate-pro-and-business#activate-your-license) to unlock premium features. \ No newline at end of file +8. If you've purchased a paid plan, [activate your license key](/self-hosting/manage/manage-licenses/activate-pro-and-business#activate-your-license) to unlock premium features. diff --git a/docs/self-hosting/methods/kubernetes.md b/docs/self-hosting/methods/kubernetes.md index d0bffa55..fb7f6021 100644 --- a/docs/self-hosting/methods/kubernetes.md +++ b/docs/self-hosting/methods/kubernetes.md @@ -4,7 +4,6 @@ description: Deploy Plane on Kubernetes using Helm charts. Complete guide for pr keywords: plane, self-hosting, deployment, plane installation, kubernetes, helm, k8s --- - # Kubernetes This guide shows you the steps to deploy a self-hosted instance of Plane using Kubernetes. @@ -14,6 +13,7 @@ If you want to upgrade from Community to the Commercial edition, see [Upgrade to ::: ## 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 @@ -25,14 +25,15 @@ Plane Pro and Plane Business are enabled on this edition, so the Free plan on th 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: + ```bash PLANE_VERSION=v2.2.1 ``` + ```bash DOMAIN_NAME= ``` @@ -47,532 +48,531 @@ When configuring the PLANE_VERSION environment variable, **do not** set it to `s helm repo add plane https://helm.plane.so/ ``` -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](#custom-ingress-routes). - - Run the following command to deploy Plane: - - ```bash - helm install plane-app plane/plane-enterprise \ - --create-namespace \ - --namespace plane \ - --set license.licenseDomain=${DOMAIN_NAME} \ - --set license.licenseServer=https://prime.plane.so \ - --set planeVersion=${PLANE_VERSION} \ - --set ingress.enabled=true \ - --set ingress.ingressClass=nginx \ - --set env.storageClass=longhorn \ - --timeout 10m \ - --wait \ - --wait-for-jobs - ``` - - ::: info - 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**: - ::: warning - When self-hosting Plane for production use, it is strongly recommended to configure [external database and storage](/self-hosting/methods/kubernetes#configuration-settings). 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: - - i. Run the script below to download the `values.yaml` file and and edit using any editor like Vim or Nano. - - ```bash - helm show values plane/plane-enterprise > values.yaml - vi values.yaml - ``` - - Make sure you set the required environment variables listed below: - - `planeVersion: v2.2.1` - - `license.licenseDomain: ` - - `license.licenseServer: https://prime.plane.so` - - `ingress.enabled: ` - - `ingress.ingressClass: ` - - `env.storageClass: ` - - See the **Configuration settings** toggle section for more details. - - ii. After saving the `values.yaml` file, run the following command to deploy Plane: - - ```bash - helm install plane-app plane/plane-enterprise \ - --create-namespace \ - --namespace plane \ - -f values.yaml \ - --timeout 10m \ - --wait \ - --wait-for-jobs - ``` -iii. If you've purchased a paid plan, [activate your license key](/self-hosting/manage/manage-licenses/activate-pro-and-business#activate-your-license) to unlock premium features. +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](#custom-ingress-routes). + + Run the following command to deploy Plane: + + ```bash + helm install plane-app plane/plane-enterprise \ + --create-namespace \ + --namespace plane \ + --set license.licenseDomain=${DOMAIN_NAME} \ + --set license.licenseServer=https://prime.plane.so \ + --set planeVersion=${PLANE_VERSION} \ + --set ingress.enabled=true \ + --set ingress.ingressClass=nginx \ + --set env.storageClass=longhorn \ + --timeout 10m \ + --wait \ + --wait-for-jobs + ``` + + ::: info + 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**: + ::: warning + When self-hosting Plane for production use, it is strongly recommended to configure [external database and storage](/self-hosting/methods/kubernetes#configuration-settings). 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: + + i. Run the script below to download the `values.yaml` file and and edit using any editor like Vim or Nano. + + ```bash + helm show values plane/plane-enterprise > values.yaml + vi values.yaml + ``` + + Make sure you set the required environment variables listed below: + - `planeVersion: v2.2.1` + - `license.licenseDomain: ` + - `license.licenseServer: https://prime.plane.so` + - `ingress.enabled: ` + - `ingress.ingressClass: ` + - `env.storageClass: ` + + See the **Configuration settings** toggle section for more details. + + ii. After saving the `values.yaml` file, run the following command to deploy Plane: + + ```bash + helm install plane-app plane/plane-enterprise \ + --create-namespace \ + --namespace plane \ + -f values.yaml \ + --timeout 10m \ + --wait \ + --wait-for-jobs + ``` + + iii. If you've purchased a paid plan, [activate your license key](/self-hosting/manage/manage-licenses/activate-pro-and-business#activate-your-license) to unlock premium features. ## Configuration settings #### License -| Setting | Default | Required | Description | -|---|:---:|:---:|---| -| planeVersion | v2.2.1 | Yes | Specifies the version of Plane to be deployed. Copy this from `prime.plane.so.` | -| license.licenseDomain | 'plane.example.com' | Yes | The fully-qualified domain name (FQDN) in the format `sudomain.domain.tld` or `domain.tld` that the license is bound to. It is also attached to your `ingress` host to access Plane. | +| Setting | Default | Required | Description | +| --------------------- | :-----------------: | :------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| planeVersion | v2.2.1 | Yes | Specifies the version of Plane to be deployed. Copy this from `prime.plane.so.` | +| license.licenseDomain | 'plane.example.com' | Yes | The fully-qualified domain name (FQDN) in the format `sudomain.domain.tld` or `domain.tld` that the license is bound to. It is also attached to your `ingress` host to access Plane. | #### Airgapped settings -| Setting | Default | Required | Description | -|---|:---:|:---:|---| -| airgapped.enabled | false | No | Specifies the airgapped mode the Plane API runs in. | -| airgapped.s3SecretName | "" | No | Name of the Secret that contains the CA certificate (.crt). The Secret must include a data key whose filename matches the basename of `airgapped.s3SecretKey` (default: `s3-custom-ca.crt`). Used to override S3’s CA when `airgapped.enabled=true`. Applying this secret looks like: `kubectl -n plane create secret generic plane-s3-ca \ --from-file=s3-custom-ca.crt=/path/to/your/ca.crt` | -| airgapped.s3SecretKey | "" | No | Key name of the secret to load the Custom Root CA from `airgapped.s3SecretName` | - +| Setting | Default | Required | Description | +| ---------------------- | :-----: | :------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| airgapped.enabled | false | No | Specifies the airgapped mode the Plane API runs in. | +| airgapped.s3SecretName | "" | No | Name of the Secret that contains the CA certificate (.crt). The Secret must include a data key whose filename matches the basename of `airgapped.s3SecretKey` (default: `s3-custom-ca.crt`). Used to override S3’s CA when `airgapped.enabled=true`. Applying this secret looks like: `kubectl -n plane create secret generic plane-s3-ca \ --from-file=s3-custom-ca.crt=/path/to/your/ca.crt` | +| airgapped.s3SecretKey | "" | No | Key name of the secret to load the Custom Root CA from `airgapped.s3SecretName` | #### Postgres -| Setting | Default | Required | Description | -|---|:---:|:---:|---| -| services.postgres.local_setup | true | | Plane uses `postgres` as the primary database to store all the transactional data. This database can be hosted within kubernetes as part of helm chart deployment or can be used as hosted service remotely (e.g. aws rds or similar services). Set this to `true` when you choose to setup stateful deployment of `postgres`. Mark it as `false` when using a remotely hosted database | -| services.postgres.image | `postgres:15.7-alpine` | | Using this key, user must provide the docker image name to setup the stateful deployment of `postgres`. (must be set when `services.postgres.local_setup=true`)| -| services.postgres.pullPolicy | IfNotPresent | | Using this key, user can set the pull policy for the stateful deployment of postgres. (must be set when `services.postgres.local_setup=true`)| -| services.postgres.servicePort | 5432 | | This key sets the default port number to be used while setting up stateful deployment of `postgres`. | -| services.postgres.volumeSize | 2Gi | | While setting up the stateful deployment, while creating the persistant volume, volume allocation size need to be provided. This key helps you set the volume allocation size. Unit of this value must be in Mi (megabyte) or Gi (gigabyte) | -| env.pgdb_username | plane | | Database credentials are requried to access the hosted stateful deployment of `postgres`. Use this key to set the username for the stateful deployment. | -| env.pgdb_password | plane | | Database credentials are requried to access the hosted stateful deployment of `postgres`. Use this key to set the password for the stateful deployment. | -| env.pgdb_name | plane | | Database name to be used while setting up stateful deployment of `Postgres`| -| services.postgres.assign_cluster_ip | false | | This key allows you to set the node selector for the stateful deployment of postgres. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster.| -| services.postgres.nodeSelector | {} | | Set it to `true` if you want to assign `ClusterIP` to the service | -| services.postgres.tolerations | [] | | This key allows you to set the tolerations for the stateful deployment of postgres. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster.| -| services.postgres.affinity | {} | | This key allows you to set the affinity rules for the stateful deployment of postgres. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | -| services.postgres.labels | {} | | Set it to `true` if you want to assign `ClusterIP` to the service | -| services.postgres.nodeSelector | {} | | This key allows you to set custom labels for the stateful deployment of postgres. This is useful for organizing and selecting resources in your Kubernetes cluster. -| services.postgres.annotations | {} | | This key allows you to set custom annotations for the stateful deployment of postgres. This is useful for adding metadata or configuration hints to your resources. | -| env.pgdb_remote_url | | | Users can also decide to use the remote hosted database and link to Plane deployment. Ignoring all the above keys, set `services.postgres.local_setup` to `false` and set this key with remote connection url. | +| Setting | Default | Required | Description | +| ----------------------------------- | :--------------------: | :------: | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| services.postgres.local_setup | true | | Plane uses `postgres` as the primary database to store all the transactional data. This database can be hosted within kubernetes as part of helm chart deployment or can be used as hosted service remotely (e.g. aws rds or similar services). Set this to `true` when you choose to setup stateful deployment of `postgres`. Mark it as `false` when using a remotely hosted database | +| services.postgres.image | `postgres:15.7-alpine` | | Using this key, user must provide the docker image name to setup the stateful deployment of `postgres`. (must be set when `services.postgres.local_setup=true`) | +| services.postgres.pullPolicy | IfNotPresent | | Using this key, user can set the pull policy for the stateful deployment of postgres. (must be set when `services.postgres.local_setup=true`) | +| services.postgres.servicePort | 5432 | | This key sets the default port number to be used while setting up stateful deployment of `postgres`. | +| services.postgres.volumeSize | 2Gi | | While setting up the stateful deployment, while creating the persistant volume, volume allocation size need to be provided. This key helps you set the volume allocation size. Unit of this value must be in Mi (megabyte) or Gi (gigabyte) | +| env.pgdb_username | plane | | Database credentials are requried to access the hosted stateful deployment of `postgres`. Use this key to set the username for the stateful deployment. | +| env.pgdb_password | plane | | Database credentials are requried to access the hosted stateful deployment of `postgres`. Use this key to set the password for the stateful deployment. | +| env.pgdb_name | plane | | Database name to be used while setting up stateful deployment of `Postgres` | +| services.postgres.assign_cluster_ip | false | | This key allows you to set the node selector for the stateful deployment of postgres. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | +| services.postgres.nodeSelector | {} | | Set it to `true` if you want to assign `ClusterIP` to the service | +| services.postgres.tolerations | [] | | This key allows you to set the tolerations for the stateful deployment of postgres. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | +| services.postgres.affinity | {} | | This key allows you to set the affinity rules for the stateful deployment of postgres. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | +| services.postgres.labels | {} | | Set it to `true` if you want to assign `ClusterIP` to the service | +| services.postgres.nodeSelector | {} | | This key allows you to set custom labels for the stateful deployment of postgres. This is useful for organizing and selecting resources in your Kubernetes cluster. | +| services.postgres.annotations | {} | | This key allows you to set custom annotations for the stateful deployment of postgres. This is useful for adding metadata or configuration hints to your resources. | +| env.pgdb_remote_url | | | Users can also decide to use the remote hosted database and link to Plane deployment. Ignoring all the above keys, set `services.postgres.local_setup` to `false` and set this key with remote connection url. | #### Redis/Valkey Setup -| Setting | Default | Required | Description | -|---|:---:|:---:|---| -| services.redis.local_setup | true | | Plane uses `redis` to cache the session authentication and other static data. This database can be hosted within kubernetes as part of helm chart deployment or can be used as hosted service remotely (e.g. aws rds or similar services). Set this to `true` when you choose to setup stateful deployment of `redis`. Mark it as `false` when using a remotely hosted database | -| services.redis.image | `valkey/valkey:7.2.5-alpine` | | Using this key, user must provide the docker image name to setup the stateful deployment of `redis`. (must be set when `services.redis.local_setup=true`)| -| services.redis.pullPolicy | IfNotPresent | | Using this key, user can set the pull policy for the stateful deployment of redis. (must be set when services.redis.local_setup=true) | -| services.redis.servicePort | 6379 | | This key sets the default port number to be used while setting up stateful deployment of `redis`. | -| services.redis.volumeSize | 500Mi | | While setting up the stateful deployment, while creating the persistant volume, volume allocation size need to be provided. This key helps you set the volume allocation size. Unit of this value must be in Mi (megabyte) or Gi (gigabyte) | -| services.redis.assign_cluster_ip | false | | Set it to `true` if you want to assign `ClusterIP` to the service | -| services.redis.nodeSelector | 0 | | This key allows you to set the node selector for the stateful deployment of redis. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | -| services.redis.tolerations | [] | | This key allows you to set the tolerations for the stateful deployment of redis. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | -| services.redis.affinity | {} | | This key allows you to set the affinity rules for the stateful deployment of redis. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | -| services.redis.labels | {} | | This key allows you to set custom labels for the stateful deployment of redis. This is useful for organizing and selecting resources in your Kubernetes cluster. | -| services.redis.annotations | {} | | This key allows you to set custom annotations for the stateful deployment of redis. This is useful for adding metadata or configuration hints to your resources. | -| env.remote_redis_url | | | Users can also decide to use the remote hosted database and link to Plane deployment. Ignoring all the above keys, set `services.redis.local_setup` to `false` and set this key with remote connection url. | +| Setting | Default | Required | Description | +| -------------------------------- | :--------------------------: | :------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| services.redis.local_setup | true | | Plane uses `redis` to cache the session authentication and other static data. This database can be hosted within kubernetes as part of helm chart deployment or can be used as hosted service remotely (e.g. aws rds or similar services). Set this to `true` when you choose to setup stateful deployment of `redis`. Mark it as `false` when using a remotely hosted database | +| services.redis.image | `valkey/valkey:7.2.5-alpine` | | Using this key, user must provide the docker image name to setup the stateful deployment of `redis`. (must be set when `services.redis.local_setup=true`) | +| services.redis.pullPolicy | IfNotPresent | | Using this key, user can set the pull policy for the stateful deployment of redis. (must be set when services.redis.local_setup=true) | +| services.redis.servicePort | 6379 | | This key sets the default port number to be used while setting up stateful deployment of `redis`. | +| services.redis.volumeSize | 500Mi | | While setting up the stateful deployment, while creating the persistant volume, volume allocation size need to be provided. This key helps you set the volume allocation size. Unit of this value must be in Mi (megabyte) or Gi (gigabyte) | +| services.redis.assign_cluster_ip | false | | Set it to `true` if you want to assign `ClusterIP` to the service | +| services.redis.nodeSelector | 0 | | This key allows you to set the node selector for the stateful deployment of redis. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | +| services.redis.tolerations | [] | | This key allows you to set the tolerations for the stateful deployment of redis. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | +| services.redis.affinity | {} | | This key allows you to set the affinity rules for the stateful deployment of redis. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | +| services.redis.labels | {} | | This key allows you to set custom labels for the stateful deployment of redis. This is useful for organizing and selecting resources in your Kubernetes cluster. | +| services.redis.annotations | {} | | This key allows you to set custom annotations for the stateful deployment of redis. This is useful for adding metadata or configuration hints to your resources. | +| env.remote_redis_url | | | Users can also decide to use the remote hosted database and link to Plane deployment. Ignoring all the above keys, set `services.redis.local_setup` to `false` and set this key with remote connection url. | #### RabbitMQ Setup -| Setting | Default | Required | Description | -|---|:---:|:---:|---| -| services.rabbitmq.local_setup | true | | Plane uses `rabbitmq` as message queuing system. This can be hosted within kubernetes as part of helm chart deployment or can be used as hosted service remotely (e.g. aws mq or similar services). Set this to `true` when you choose to setup stateful deployment of `rabbitmq`. Mark it as `false` when using a remotely hosted service | -| services.rabbitmq.image | `rabbitmq:3.13.6-management-alpine` | | Using this key, user must provide the docker image name to setup the stateful deployment of `rabbitmq`. (must be set when `services.rabbitmq.local_setup=true`)| -| services.rabbitmq.pullPolicy | IfNotPresent | | Using this key, user can set the pull policy for the stateful deployment of `rabbitmq`. (must be set when `services.rabbitmq.local_setup=true`)| -| services.rabbitmq.servicePort | 5672 | | This key sets the default port number to be used while setting up stateful deployment of `rabbitmq`. | -| services.rabbitmq.managementPort | 15672 | | This key sets the default management port number to be used while setting up stateful deployment of `rabbitmq`. | -| services.rabbitmq.volumeSize | 100Mi | | While setting up the stateful deployment, while creating the persistant volume, volume allocation size need to be provided. This key helps you set the volume allocation size. Unit of this value must be in Mi (megabyte) or Gi (gigabyte) | -| services.rabbitmq.default_user | plane | | Credentials are requried to access the hosted stateful deployment of `rabbitmq`. Use this key to set the username for the stateful deployment. | -| services.rabbitmq.default_password | plane | | Credentials are requried to access the hosted stateful deployment of `rabbitmq`. Use this key to set the password for the stateful deployment. | -| services.rabbitmq.assign_cluster_ip | false | | Set it to `true` if you want to assign `ClusterIP` to the service | -| services.rabbitmq.nodeSelector | {} | | This key allows you to set the node selector for the stateful deployment of rabbitmq. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | -| services.rabbitmq.tolerations | [] | | This key allows you to set the tolerations for the stateful deployment of rabbitmq. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | -| services.rabbitmq.affinity | {} | | This key allows you to set the affinity rules for the stateful deployment of rabbitmq. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | -| services.rabbitmq.labels | {} | | This key allows you to set custom labels for the stateful deployment of rabbitmq. This is useful for organizing and selecting resources in your Kubernetes cluster. | -| services.rabbitmq.annotations | {} | | This key allows you to set custom annotations for the stateful deployment of rabbitmq. This is useful for adding metadata or configuration hints to your resources. | -| services.rabbitmq.external_rabbitmq_url | | | Users can also decide to use the remote hosted service and link to Plane deployment. Ignoring all the above keys, set `services.rabbitmq.local_setup` to `false` and set this key with remote connection url. | +| Setting | Default | Required | Description | +| --------------------------------------- | :---------------------------------: | :------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| services.rabbitmq.local_setup | true | | Plane uses `rabbitmq` as message queuing system. This can be hosted within kubernetes as part of helm chart deployment or can be used as hosted service remotely (e.g. aws mq or similar services). Set this to `true` when you choose to setup stateful deployment of `rabbitmq`. Mark it as `false` when using a remotely hosted service | +| services.rabbitmq.image | `rabbitmq:3.13.6-management-alpine` | | Using this key, user must provide the docker image name to setup the stateful deployment of `rabbitmq`. (must be set when `services.rabbitmq.local_setup=true`) | +| services.rabbitmq.pullPolicy | IfNotPresent | | Using this key, user can set the pull policy for the stateful deployment of `rabbitmq`. (must be set when `services.rabbitmq.local_setup=true`) | +| services.rabbitmq.servicePort | 5672 | | This key sets the default port number to be used while setting up stateful deployment of `rabbitmq`. | +| services.rabbitmq.managementPort | 15672 | | This key sets the default management port number to be used while setting up stateful deployment of `rabbitmq`. | +| services.rabbitmq.volumeSize | 100Mi | | While setting up the stateful deployment, while creating the persistant volume, volume allocation size need to be provided. This key helps you set the volume allocation size. Unit of this value must be in Mi (megabyte) or Gi (gigabyte) | +| services.rabbitmq.default_user | plane | | Credentials are requried to access the hosted stateful deployment of `rabbitmq`. Use this key to set the username for the stateful deployment. | +| services.rabbitmq.default_password | plane | | Credentials are requried to access the hosted stateful deployment of `rabbitmq`. Use this key to set the password for the stateful deployment. | +| services.rabbitmq.assign_cluster_ip | false | | Set it to `true` if you want to assign `ClusterIP` to the service | +| services.rabbitmq.nodeSelector | {} | | This key allows you to set the node selector for the stateful deployment of rabbitmq. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | +| services.rabbitmq.tolerations | [] | | This key allows you to set the tolerations for the stateful deployment of rabbitmq. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | +| services.rabbitmq.affinity | {} | | This key allows you to set the affinity rules for the stateful deployment of rabbitmq. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | +| services.rabbitmq.labels | {} | | This key allows you to set custom labels for the stateful deployment of rabbitmq. This is useful for organizing and selecting resources in your Kubernetes cluster. | +| services.rabbitmq.annotations | {} | | This key allows you to set custom annotations for the stateful deployment of rabbitmq. This is useful for adding metadata or configuration hints to your resources. | +| services.rabbitmq.external_rabbitmq_url | | | Users can also decide to use the remote hosted service and link to Plane deployment. Ignoring all the above keys, set `services.rabbitmq.local_setup` to `false` and set this key with remote connection url. | #### Doc Store (Minio\/S3) Setup -| Setting | Default | Required | Description | -|---|:---:|:---:|---| -| services.minio.local_setup | true | | Plane uses `minio` as the default file storage drive. This storage can be hosted within kubernetes as part of helm chart deployment or can be used as hosted service remotely (e.g. aws S3 or similar services). Set this to `true` when you choose to setup stateful deployment of `minio`. Mark it as `false` when using a remotely hosted database | -| services.minio.image | minio/minio:latest | | Using this key, user must provide the docker image name to setup the stateful deployment of `minio`. (must be set when `services.minio.local_setup=true`)| -| services.minio.image_mc | minio/mc:latest | | Using this key, user must provide the docker image name to setup the job deployment of `minio client`. (must be set when `services.minio.local_setup=true`)| -| services.minio.pullPolicy | services.minio.pullPolicy | | Using this key, user can set the pull policy for the stateful deployment of minio. (must be set when services.minio.local_setup=true) | -| services.minio.volumeSize | 3Gi | | While setting up the stateful deployment, while creating the persistant volume, volume allocation size need to be provided. This key helps you set the volume allocation size. Unit of this value must be in Mi (megabyte) or Gi (gigabyte) | -| services.minio.root_user | admin | | Storage credentials are requried to access the hosted stateful deployment of `minio`. Use this key to set the username for the stateful deployment. | -| services.minio.root_password | password | | Storage credentials are requried to access the hosted stateful deployment of `minio`. Use this key to set the password for the stateful deployment. | -| services.minio.env.minio_endpoint_ssl | false | | (Optional) Env to enforce HTTPS when connecting to minio uploads bucket | -| env.docstore_bucket | uploads | Yes | Storage bucket name is required as part of configuration. This is where files will be uploaded irrespective of if you are using `Minio` or external `S3` (or compatible) storage service | -| env.doc_upload_size_limit | 5242880 | Yes | Document Upload Size Limit (default to 5Mb) | -| services.minio.assign_cluster_ip | false | | Set it to `true` if you want to assign `ClusterIP` to the service | -| services.minio.nodeSelector | {} | | This key allows you to set the node selector for the stateful deployment of minio. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster.| -| services.minio.tolerations | [] | | This key allows you to set the tolerations for the stateful deployment of minio. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster.| -| services.minio.affinity | {} | | This key allows you to set the affinity rules for the stateful deployment of minio. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | -| services.minio.labels | {} | | This key allows you to set custom labels for the stateful deployment of minio. This is useful for organizing and selecting resources in your Kubernetes cluster. | -| services.minio.annotations | {} | | This key allows you to set custom annotations for the stateful deployment of minio. This is useful for adding metadata or configuration hints to your resources. | -| env.aws_access_key | | | External `S3` (or compatible) storage service provides `access key` for the application to connect and do the necessary upload or download operations. To be provided when `services.minio.local_setup=false` | -| env.aws_secret_access_key | | | External `S3` (or compatible) storage service provides `secret access key` for the application to connect and do the necessary upload or download operations. To be provided when `services.minio.local_setup=false` | -| env.aws_region | | | External `S3` (or compatible) storage service providers creates any buckets in user selected region. This is also shared with the user as `region` for the application to connect and do the necessary upload or download operations. To be provided when `services.minio.local_setup=false` | -| env.aws_s3_endpoint_url | | | External `S3` (or compatible) storage service providers shares a `endpoint_url` for the integration purpose for the application to connect and do the necessary upload or download operations. To be provided when `services.minio.local_setup=false` | +| Setting | Default | Required | Description | +| ------------------------------------- | :-----------------------: | :------: | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| services.minio.local_setup | true | | Plane uses `minio` as the default file storage drive. This storage can be hosted within kubernetes as part of helm chart deployment or can be used as hosted service remotely (e.g. aws S3 or similar services). Set this to `true` when you choose to setup stateful deployment of `minio`. Mark it as `false` when using a remotely hosted database | +| services.minio.image | minio/minio:latest | | Using this key, user must provide the docker image name to setup the stateful deployment of `minio`. (must be set when `services.minio.local_setup=true`) | +| services.minio.image_mc | minio/mc:latest | | Using this key, user must provide the docker image name to setup the job deployment of `minio client`. (must be set when `services.minio.local_setup=true`) | +| services.minio.pullPolicy | services.minio.pullPolicy | | Using this key, user can set the pull policy for the stateful deployment of minio. (must be set when services.minio.local_setup=true) | +| services.minio.volumeSize | 3Gi | | While setting up the stateful deployment, while creating the persistant volume, volume allocation size need to be provided. This key helps you set the volume allocation size. Unit of this value must be in Mi (megabyte) or Gi (gigabyte) | +| services.minio.root_user | admin | | Storage credentials are requried to access the hosted stateful deployment of `minio`. Use this key to set the username for the stateful deployment. | +| services.minio.root_password | password | | Storage credentials are requried to access the hosted stateful deployment of `minio`. Use this key to set the password for the stateful deployment. | +| services.minio.env.minio_endpoint_ssl | false | | (Optional) Env to enforce HTTPS when connecting to minio uploads bucket | +| env.docstore_bucket | uploads | Yes | Storage bucket name is required as part of configuration. This is where files will be uploaded irrespective of if you are using `Minio` or external `S3` (or compatible) storage service | +| env.doc_upload_size_limit | 5242880 | Yes | Document Upload Size Limit (default to 5Mb) | +| services.minio.assign_cluster_ip | false | | Set it to `true` if you want to assign `ClusterIP` to the service | +| services.minio.nodeSelector | {} | | This key allows you to set the node selector for the stateful deployment of minio. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | +| services.minio.tolerations | [] | | This key allows you to set the tolerations for the stateful deployment of minio. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | +| services.minio.affinity | {} | | This key allows you to set the affinity rules for the stateful deployment of minio. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | +| services.minio.labels | {} | | This key allows you to set custom labels for the stateful deployment of minio. This is useful for organizing and selecting resources in your Kubernetes cluster. | +| services.minio.annotations | {} | | This key allows you to set custom annotations for the stateful deployment of minio. This is useful for adding metadata or configuration hints to your resources. | +| env.aws_access_key | | | External `S3` (or compatible) storage service provides `access key` for the application to connect and do the necessary upload or download operations. To be provided when `services.minio.local_setup=false` | +| env.aws_secret_access_key | | | External `S3` (or compatible) storage service provides `secret access key` for the application to connect and do the necessary upload or download operations. To be provided when `services.minio.local_setup=false` | +| env.aws_region | | | External `S3` (or compatible) storage service providers creates any buckets in user selected region. This is also shared with the user as `region` for the application to connect and do the necessary upload or download operations. To be provided when `services.minio.local_setup=false` | +| env.aws_s3_endpoint_url | | | External `S3` (or compatible) storage service providers shares a `endpoint_url` for the integration purpose for the application to connect and do the necessary upload or download operations. To be provided when `services.minio.local_setup=false` | #### Web Deployment -| Setting | Default | Required | Description | -|---|:---:|:---:|---| -| services.web.replicas | 1 | Yes | Kubernetes helps you with scaling up or down the deployments. You can run 1 or more pods for each deployment. This key helps you set up the number of replicas you want to run for this deployment. It must be >=1 | -| services.web.memoryLimit | 1000Mi | | Every deployment in Kubernetes can be set to use the maximum memory they are allowed to use. This key sets the memory limit for this deployment to use.| -| services.web.cpuLimit | 500m | | Every deployment in Kubernetes can be set to use the maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use.| -| services.web.memoryRequest | 50Mi | | Every deployment in kubernetes can be set to use minimum memory they are allowed to use. This key sets the memory request for this deployment to use. | -| services.web.cpuRequest | 50m | | Every deployment in kubernetes can be set to use minimum cpu they are allowed to use. This key sets the cpu request for this deployment to use. | -| services.web.image| `artifacts.plane.so/makeplane/web-commercial` | | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment | -| services.web.pullPolicy | Always | | Using this key, user can set the pull policy for the deployment of web. | -| services.web.assign_cluster_ip | false | | Set it to `true` if you want to assign `ClusterIP` to the service | -| services.web.nodeSelector | {} | | This key allows you to set the node selector for the deployment of web. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | -| services.web.tolerations | [] | | This key allows you to set the tolerations for the deployment of web. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | -| services.web.affinity | {} | | This key allows you to set the affinity rules for the deployment of web. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | -| services.web.labels | {} | | Custom labels to add to the web deployment | -| services.web.annotations | {} | | Custom annotations to add to the web deployment | +| Setting | Default | Required | Description | +| ------------------------------ | :-------------------------------------------: | :------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| services.web.replicas | 1 | Yes | Kubernetes helps you with scaling up or down the deployments. You can run 1 or more pods for each deployment. This key helps you set up the number of replicas you want to run for this deployment. It must be >=1 | +| services.web.memoryLimit | 1000Mi | | Every deployment in Kubernetes can be set to use the maximum memory they are allowed to use. This key sets the memory limit for this deployment to use. | +| services.web.cpuLimit | 500m | | Every deployment in Kubernetes can be set to use the maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use. | +| services.web.memoryRequest | 50Mi | | Every deployment in kubernetes can be set to use minimum memory they are allowed to use. This key sets the memory request for this deployment to use. | +| services.web.cpuRequest | 50m | | Every deployment in kubernetes can be set to use minimum cpu they are allowed to use. This key sets the cpu request for this deployment to use. | +| services.web.image | `artifacts.plane.so/makeplane/web-commercial` | | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment | +| services.web.pullPolicy | Always | | Using this key, user can set the pull policy for the deployment of web. | +| services.web.assign_cluster_ip | false | | Set it to `true` if you want to assign `ClusterIP` to the service | +| services.web.nodeSelector | {} | | This key allows you to set the node selector for the deployment of web. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | +| services.web.tolerations | [] | | This key allows you to set the tolerations for the deployment of web. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | +| services.web.affinity | {} | | This key allows you to set the affinity rules for the deployment of web. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | +| services.web.labels | {} | | Custom labels to add to the web deployment | +| services.web.annotations | {} | | Custom annotations to add to the web deployment | #### Space Deployment -| Setting | Default | Required | Description | -|---|:---:|:---:|---| -| services.space.replicas | 1 | Yes | Kubernetes helps you with scaling up or down the deployments. You can run 1 or more pods for each deployment. This key helps you set up the number of replicas you want to run for this deployment. It must be >=1 | -| services.space.memoryLimit | 1000Mi | | Every deployment in kubernetes can be set to use the maximum memory they are allowed to use. This key sets the memory limit for this deployment to use.| -| services.space.cpuLimit | 500m | | Every deployment in kubernetes can be set to use the maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use.| -| services.space.memoryRequest | 50Mi | | Every deployment in kubernetes can be set to use minimum memory they are allowed to use. This key sets the memory request for this deployment to use. | -| services.space.cpuRequest | 50m | | Every deployment in kubernetes can be set to use minimum cpu they are allowed to use. This key sets the cpu request for this deployment to use. | -| services.space.image| `artifacts.plane.so/makeplane/space-commercial` | | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment | -| services.space.pullPolicy | Always | | Using this key, user can set the pull policy for the deployment of space. | -| services.space.assign_cluster_ip | false | | Set it to `true` if you want to assign `ClusterIP` to the service | -| services.space.nodeSelector | {} | | This key allows you to set the node selector for the deployment of space. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | -| services.space.tolerations | [] | | This key allows you to set the tolerations for the deployment of space. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | -| services.space.affinity | {} | | This key allows you to set the affinity rules for the deployment of space. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | -| services.space.labels | {} | | Custom labels to add to the space deployment | -| services.space.annotations | {} | | Custom annotations to add to the space deployment | +| Setting | Default | Required | Description | +| -------------------------------- | :---------------------------------------------: | :------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| services.space.replicas | 1 | Yes | Kubernetes helps you with scaling up or down the deployments. You can run 1 or more pods for each deployment. This key helps you set up the number of replicas you want to run for this deployment. It must be >=1 | +| services.space.memoryLimit | 1000Mi | | Every deployment in kubernetes can be set to use the maximum memory they are allowed to use. This key sets the memory limit for this deployment to use. | +| services.space.cpuLimit | 500m | | Every deployment in kubernetes can be set to use the maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use. | +| services.space.memoryRequest | 50Mi | | Every deployment in kubernetes can be set to use minimum memory they are allowed to use. This key sets the memory request for this deployment to use. | +| services.space.cpuRequest | 50m | | Every deployment in kubernetes can be set to use minimum cpu they are allowed to use. This key sets the cpu request for this deployment to use. | +| services.space.image | `artifacts.plane.so/makeplane/space-commercial` | | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment | +| services.space.pullPolicy | Always | | Using this key, user can set the pull policy for the deployment of space. | +| services.space.assign_cluster_ip | false | | Set it to `true` if you want to assign `ClusterIP` to the service | +| services.space.nodeSelector | {} | | This key allows you to set the node selector for the deployment of space. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | +| services.space.tolerations | [] | | This key allows you to set the tolerations for the deployment of space. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | +| services.space.affinity | {} | | This key allows you to set the affinity rules for the deployment of space. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | +| services.space.labels | {} | | Custom labels to add to the space deployment | +| services.space.annotations | {} | | Custom annotations to add to the space deployment | #### Admin Deployment -| Setting | Default | Required | Description | -|---|:---:|:---:|---| -| services.admin.replicas | 1 | Yes | Kubernetes helps you with scaling up or down the deployments. You can run 1 or more pods for each deployment. This key helps you set up the number of replicas you want to run for this deployment. It must be >=1 | -| services.admin.memoryLimit | 1000Mi | | Every deployment in kubernetes can be set to use the maximum memory they are allowed to use. This key sets the memory limit for this deployment to use.| -| services.admin.cpuLimit | 500m | | Every deployment in kubernetes can be set to use the maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use.| -| services.admin.memoryRequest | 50Mi | | Every deployment in kubernetes can be set to use minimum memory they are allowed to use. This key sets the memory request for this deployment to use. | -| services.admin.cpuRequest | 50m | | Every deployment in kubernetes can be set to use minimum cpu they are allowed to use. This key sets the cpu request for this deployment to use. | -| services.admin.image| `artifacts.plane.so/makeplane/admin-commercial` | | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment | -| services.admin.pullPolicy | Always | | Using this key, user can set the pull policy for the deployment of admin. | -| services.admin.assign_cluster_ip | false | | Set it to `true` if you want to assign `ClusterIP` to the service | -| services.admin.nodeSelector | {} | | This key allows you to set the node selector for the deployment of admin. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | -| services.admin.tolerations | [] | | This key allows you to set the tolerations for the deployment of admin. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | -| services.admin.affinity | {} | | This key allows you to set the affinity rules for the deployment of admin. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | -| services.admin.labels | {} | | Custom labels to add to the admin deployment. | -| services.admin.annotations | {} | | Custom annotations to add to the admin deployment. | +| Setting | Default | Required | Description | +| -------------------------------- | :---------------------------------------------: | :------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| services.admin.replicas | 1 | Yes | Kubernetes helps you with scaling up or down the deployments. You can run 1 or more pods for each deployment. This key helps you set up the number of replicas you want to run for this deployment. It must be >=1 | +| services.admin.memoryLimit | 1000Mi | | Every deployment in kubernetes can be set to use the maximum memory they are allowed to use. This key sets the memory limit for this deployment to use. | +| services.admin.cpuLimit | 500m | | Every deployment in kubernetes can be set to use the maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use. | +| services.admin.memoryRequest | 50Mi | | Every deployment in kubernetes can be set to use minimum memory they are allowed to use. This key sets the memory request for this deployment to use. | +| services.admin.cpuRequest | 50m | | Every deployment in kubernetes can be set to use minimum cpu they are allowed to use. This key sets the cpu request for this deployment to use. | +| services.admin.image | `artifacts.plane.so/makeplane/admin-commercial` | | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment | +| services.admin.pullPolicy | Always | | Using this key, user can set the pull policy for the deployment of admin. | +| services.admin.assign_cluster_ip | false | | Set it to `true` if you want to assign `ClusterIP` to the service | +| services.admin.nodeSelector | {} | | This key allows you to set the node selector for the deployment of admin. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | +| services.admin.tolerations | [] | | This key allows you to set the tolerations for the deployment of admin. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | +| services.admin.affinity | {} | | This key allows you to set the affinity rules for the deployment of admin. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | +| services.admin.labels | {} | | Custom labels to add to the admin deployment. | +| services.admin.annotations | {} | | Custom annotations to add to the admin deployment. | #### Live Service Deployment -| Setting | Default | Required | Description | -|---|:---:|:---:|---| -| services.live.replicas | 1 | Yes | Kubernetes helps you with scaling up\/down the deployments. You can run 1 or more pods for each deployment. This key helps you setting up number of replicas you want to run for this deployment. It must be >=1 | -| services.live.memoryLimit | 1000Mi | | Every deployment in kubernetes can be set to use maximum memory they are allowed to use. This key sets the memory limit for this deployment to use.| -| services.live.cpuLimit | 500m | | Every deployment in kubernetes can be set to use maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use.| -| services.live.memoryRequest | 50Mi | | Every deployment in kubernetes can be set to use minimum memory they are allowed to use. This key sets the memory request for this deployment to use. | -| services.live.cpuRequest | 50m | | Every deployment in kubernetes can be set to use minimum cpu they are allowed to use. This key sets the cpu request for this deployment to use. | -| services.live.image| `artifacts.plane.so/makeplane/live-commercial` | | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment | -| services.live.pullPolicy | Always | | Using this key, user can set the pull policy for the deployment of live. | -| env.live_sentry_dsn | | | (optional) Live service deployment comes with some of the preconfigured integration. Sentry is one among those. Here user can set the Sentry provided DSN for this integration.| -| env.live_sentry_environment | | | (optional) Live service deployment comes with some of the preconfigured integration. Sentry is one among those. Here user can set the Sentry environment name (as configured in Sentry) for this integration.| -| env.live_sentry_traces_sample_rate | | | (optional) Live service deployment comes with some of the preconfigured integration. Sentry is one among those. Here user can set the Sentry trace sample rate (as configured in Sentry) for this integration.| -| env.live_server_secret_key | htbqvBJAgpm9bzvf3r4urJer0ENReatceh | | Live Server Secret Key | -| env.external_iframely_url | "" | | External Iframely service URL. If provided, the local Iframely deployment will be skipped and the live service will use this external URL | -| services.live.assign_cluster_ip | false | | Set it to `true` if you want to assign `ClusterIP` to the service. | -| services.live.nodeSelector | {} | | This key allows you to set the node selector for the deployment of live. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | -| services.live.tolerations | [] | | This key allows you to set the tolerations for the deployment of live. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | -| services.live.affinity | {} | | This key allows you to set the affinity rules for the deployment of live. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | -| services.live.labels | {} | | Custom labels to add to the live deployment. | -| services.live.annotations | {} | | Custom annotations to add to the live deployment. | +| Setting | Default | Required | Description | +| ---------------------------------- | :--------------------------------------------: | :------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| services.live.replicas | 1 | Yes | Kubernetes helps you with scaling up\/down the deployments. You can run 1 or more pods for each deployment. This key helps you setting up number of replicas you want to run for this deployment. It must be >=1 | +| services.live.memoryLimit | 1000Mi | | Every deployment in kubernetes can be set to use maximum memory they are allowed to use. This key sets the memory limit for this deployment to use. | +| services.live.cpuLimit | 500m | | Every deployment in kubernetes can be set to use maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use. | +| services.live.memoryRequest | 50Mi | | Every deployment in kubernetes can be set to use minimum memory they are allowed to use. This key sets the memory request for this deployment to use. | +| services.live.cpuRequest | 50m | | Every deployment in kubernetes can be set to use minimum cpu they are allowed to use. This key sets the cpu request for this deployment to use. | +| services.live.image | `artifacts.plane.so/makeplane/live-commercial` | | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment | +| services.live.pullPolicy | Always | | Using this key, user can set the pull policy for the deployment of live. | +| env.live_sentry_dsn | | | (optional) Live service deployment comes with some of the preconfigured integration. Sentry is one among those. Here user can set the Sentry provided DSN for this integration. | +| env.live_sentry_environment | | | (optional) Live service deployment comes with some of the preconfigured integration. Sentry is one among those. Here user can set the Sentry environment name (as configured in Sentry) for this integration. | +| env.live_sentry_traces_sample_rate | | | (optional) Live service deployment comes with some of the preconfigured integration. Sentry is one among those. Here user can set the Sentry trace sample rate (as configured in Sentry) for this integration. | +| env.live_server_secret_key | htbqvBJAgpm9bzvf3r4urJer0ENReatceh | | Live Server Secret Key | +| env.external_iframely_url | "" | | External Iframely service URL. If provided, the local Iframely deployment will be skipped and the live service will use this external URL | +| services.live.assign_cluster_ip | false | | Set it to `true` if you want to assign `ClusterIP` to the service. | +| services.live.nodeSelector | {} | | This key allows you to set the node selector for the deployment of live. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | +| services.live.tolerations | [] | | This key allows you to set the tolerations for the deployment of live. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | +| services.live.affinity | {} | | This key allows you to set the affinity rules for the deployment of live. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | +| services.live.labels | {} | | Custom labels to add to the live deployment. | +| services.live.annotations | {} | | Custom annotations to add to the live deployment. | #### Monitor Deployment -| Setting | Default | Required | Description | -|---|:---:|:---:|---| -| services.monitor.memoryLimit | 1000Mi | | Every deployment in kubernetes can be set to use the maximum memory they are allowed to use. This key sets the memory limit for this deployment to use.| -| services.monitor.cpuLimit | 500m | | Every deployment in kubernetes can be set to use the maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use.| -| services.monitor.memoryRequest | 50Mi | | Every deployment in kubernetes can be set to use minimum memory they are allowed to use. This key sets the memory request for this deployment to use. | -| services.monitor.cpuRequest | 50m | | Every deployment in kubernetes can be set to use minimum cpu they are allowed to use. This key sets the cpu request for this deployment to use. | -| services.monitor.image| `artifacts.plane.so/makeplane/monitor-commercial` | | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment | -| services.monitor.pullPolicy | Always | | Using this key, user can set the pull policy for the deployment of monitor. | -| services.monitor.volumeSize | 100Mi | | While setting up the stateful deployment, while creating the persistant volume, volume allocation size need to be provided. This key helps you set the volume allocation size. Unit of this value must be in Mi (megabyte) or Gi (gigabyte) | -| services.monitor.assign_cluster_ip | false | | Set it to `true` if you want to assign `ClusterIP` to the service | -| services.monitor.nodeSelector | {} | | This key allows you to set the node selector for the stateful deployment of monitor. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | -| services.monitor.tolerations | [] | | This key allows you to set the tolerations for the stateful deployment of monitor. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | -| services.monitor.affinity | {} | | This key allows you to set the affinity rules for the stateful deployment of monitor. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | -| services.monitor.labels | {} | | Custom labels to add to the monitor deployment | -| services.monitor.annotations | {} | | Custom annotations to add to the monitor deployment| +| Setting | Default | Required | Description | +| ---------------------------------- | :-----------------------------------------------: | :------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| services.monitor.memoryLimit | 1000Mi | | Every deployment in kubernetes can be set to use the maximum memory they are allowed to use. This key sets the memory limit for this deployment to use. | +| services.monitor.cpuLimit | 500m | | Every deployment in kubernetes can be set to use the maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use. | +| services.monitor.memoryRequest | 50Mi | | Every deployment in kubernetes can be set to use minimum memory they are allowed to use. This key sets the memory request for this deployment to use. | +| services.monitor.cpuRequest | 50m | | Every deployment in kubernetes can be set to use minimum cpu they are allowed to use. This key sets the cpu request for this deployment to use. | +| services.monitor.image | `artifacts.plane.so/makeplane/monitor-commercial` | | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment | +| services.monitor.pullPolicy | Always | | Using this key, user can set the pull policy for the deployment of monitor. | +| services.monitor.volumeSize | 100Mi | | While setting up the stateful deployment, while creating the persistant volume, volume allocation size need to be provided. This key helps you set the volume allocation size. Unit of this value must be in Mi (megabyte) or Gi (gigabyte) | +| services.monitor.assign_cluster_ip | false | | Set it to `true` if you want to assign `ClusterIP` to the service | +| services.monitor.nodeSelector | {} | | This key allows you to set the node selector for the stateful deployment of monitor. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | +| services.monitor.tolerations | [] | | This key allows you to set the tolerations for the stateful deployment of monitor. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | +| services.monitor.affinity | {} | | This key allows you to set the affinity rules for the stateful deployment of monitor. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | +| services.monitor.labels | {} | | Custom labels to add to the monitor deployment | +| services.monitor.annotations | {} | | Custom annotations to add to the monitor deployment | #### API Deployment -| Setting | Default | Required | Description | -|---|:---:|:---:|---| -| services.api.replicas | 1 | Yes | Kubernetes helps you with scaling up/down the deployments. You can run 1 or more pods for each deployment. This key helps you set up the number of replicas you want to run for this deployment. It must be >=1 | -| services.api.memoryLimit | 1000Mi | | Every deployment in kubernetes can be set to use the maximum memory they are allowed to use. This key sets the memory limit for this deployment to use.| -| services.api.cpuLimit | 500m | | Every deployment in kubernetes can be set to use the maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use.| -| services.api.memoryRequest | 50Mi | | Every deployment in kubernetes can be set to use minimum memory they are allowed to use. This key sets the memory request for this deployment to use. | -| services.api.cpuRequest | 50m | | Every deployment in kubernetes can be set to use minimum cpu they are allowed to use. This key sets the cpu request for this deployment to use.| -| services.api.image| `artifacts.plane.so/makeplane/backend-commercial` | | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment | -| services.api.pullPolicy | Always | | Using this key, user can set the pull policy for the deployment of api. | -| env.sentry_dsn | | | (optional) API service deployment comes with some of the preconfigured integration. Sentry is one among those. Here user can set the Sentry-provided DSN for this integration.| -| env.sentry_environment | | | (optional) API service deployment comes with some of the preconfigured integration. Sentry is one among those. Here user can set the Sentry environment name (as configured in Sentry) for this integration.| -| env.api_key_rate_limit | 60/minute | | (optional) User can set the maximum number of requests the API can handle in a given time frame. | -| services.api.assign_cluster_ip | false | | Set it to `true` if you want to assign `ClusterIP` to the service | -| services.api.nodeSelector | {} | | This key allows you to set the node selector for the deployment of api. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | -| services.api.tolerations | [] | | This key allows you to set the tolerations for the deployment of api. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | -| services.api.affinity | {} | | This key allows you to set the affinity rules for the deployment of api. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | -| services.api.labels | {} | | Custom labels to add to the API deployment | -| services.api.annotations | {} | | Custom annotations to add to the API deployment | +| Setting | Default | Required | Description | +| ------------------------------ | :-----------------------------------------------: | :------: | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| services.api.replicas | 1 | Yes | Kubernetes helps you with scaling up/down the deployments. You can run 1 or more pods for each deployment. This key helps you set up the number of replicas you want to run for this deployment. It must be >=1 | +| services.api.memoryLimit | 1000Mi | | Every deployment in kubernetes can be set to use the maximum memory they are allowed to use. This key sets the memory limit for this deployment to use. | +| services.api.cpuLimit | 500m | | Every deployment in kubernetes can be set to use the maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use. | +| services.api.memoryRequest | 50Mi | | Every deployment in kubernetes can be set to use minimum memory they are allowed to use. This key sets the memory request for this deployment to use. | +| services.api.cpuRequest | 50m | | Every deployment in kubernetes can be set to use minimum cpu they are allowed to use. This key sets the cpu request for this deployment to use. | +| services.api.image | `artifacts.plane.so/makeplane/backend-commercial` | | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment | +| services.api.pullPolicy | Always | | Using this key, user can set the pull policy for the deployment of api. | +| env.sentry_dsn | | | (optional) API service deployment comes with some of the preconfigured integration. Sentry is one among those. Here user can set the Sentry-provided DSN for this integration. | +| env.sentry_environment | | | (optional) API service deployment comes with some of the preconfigured integration. Sentry is one among those. Here user can set the Sentry environment name (as configured in Sentry) for this integration. | +| env.api_key_rate_limit | 60/minute | | (optional) User can set the maximum number of requests the API can handle in a given time frame. | +| services.api.assign_cluster_ip | false | | Set it to `true` if you want to assign `ClusterIP` to the service | +| services.api.nodeSelector | {} | | This key allows you to set the node selector for the deployment of api. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | +| services.api.tolerations | [] | | This key allows you to set the tolerations for the deployment of api. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | +| services.api.affinity | {} | | This key allows you to set the affinity rules for the deployment of api. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | +| services.api.labels | {} | | Custom labels to add to the API deployment | +| services.api.annotations | {} | | Custom annotations to add to the API deployment | #### Silo Deployment -| Setting | Default | Required | Description | -|:---|:---|:---|---| -| services.silo.replicas | 1 | Yes | Kubernetes helps you with scaling up/down the deployments. You can run 1 or more pods for each deployment. This key helps you setting up number of replicas you want to run for this deployment. It must be >=1 | -| services.silo.memoryLimit | 1000Mi | | Every deployment in kubernetes can be set to use maximum memory they are allowed to use. This key sets the memory limit for this deployment to use.| -| services.silo.cpuLimit | 500m | | Every deployment in kubernetes can be set to use maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use.| -| services.silo.memoryRequest | 50Mi | | Every deployment in kubernetes can be set to use minimum memory they are allowed to use. This key sets the memory request for this deployment to use. | -| services.silo.cpuRequest | 50m | | Every deployment in kubernetes can be set to use minimum cpu they are allowed to use. This key sets the cpu request for this deployment to use. | -| services.silo.image| `artifacts.plane.so/makeplane/silo-commercial` | | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment | -| services.silo.pullPolicy | Always | | Using this key, user can set the pull policy for the deployment of `silo`. | -| services.silo.assign_cluster_ip | false | | Set it to `true` if you want to assign `ClusterIP` to the service | -| services.silo.nodeSelector | {} | | This key allows you to set the node selector for the deployment of silo. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | -| services.silo.tolerations | [] | | This key allows you to set the tolerations for the deployment of silo. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | -| services.silo.affinity | {} | | This key allows you to set the affinity rules for the deployment of silo. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | -| services.silo.labels | {} | | Custom labels to add to the silo deployment | -| services.silo.annotations | {} | | Custom annotations to add to the silo deployment | -| services.silo.connectors.slack.enabled | false | | Slack Integration | -| services.silo.connectors.slack.client_id | "" | required if `services.silo.connectors.slack.enabled` is `true` | Slack Client ID | -| services.silo.connectors.slack.client_secret | "" | required if `services.silo.connectors.slack.enabled` is `true` | Slack Client Secret | -| services.silo.connectors.github.enabled | false | | Github App Integration | -| services.silo.connectors.github.client_id | "" | required if `services.silo.connectors.github.enabled` is `true` | Github Client ID | -| services.silo.connectors.github.client_secret | "" | required if `services.silo.connectors.github.enabled` is `true` | Github Client Secret | -| services.silo.connectors.github.app_name | "" | required if `services.silo.connectors.github.enabled` is `true` | Github App Name | -| services.silo.connectors.github.app_id | "" | required if `services.silo.connectors.github.enabled` is `true` | Github App ID | -| services.silo.connectors.github.private_key | "" | required if `services.silo.connectors.github.enabled` is `true` | Github Private Key | -| services.silo.connectors.gitlab.enabled | false | | Gitlab App Integration | -| services.silo.connectors.gitlab.client_id | "" | required if `services.silo.connectors.gitlab.enabled` is `true` | Gitlab Client ID | -| services.silo.connectors.gitlab.client_secret | "" | required if `services.silo.connectors.gitlab.enabled` is `true` | Gitlab Client Secret | -| env.silo_envs.mq_prefetch_count | 10 | | Prefetch count for RabbitMQ | -| env.silo_envs.batch_size | 60 | | Batch size for Silo | -| env.silo_envs.request_interval | 400 | | Request interval for Silo | -| env.silo_envs.sentry_dsn | | | Sentry DSN | -| env.silo_envs.sentry_environment | | | Sentry Environment | -| env.silo_envs.sentry_traces_sample_rate | | | Sentry Traces Sample Rate | -| env.silo_envs.hmac_secret_key | <random-32-bit-string> | | HMAC Secret Key | -| env.silo_envs.aes_secret_key | "dsOdt7YrvxsTIFJ37pOaEVvLxN8KGBCr" | | AES Secret Key | - +| Setting | Default | Required | Description | +| :-------------------------------------------- | :--------------------------------------------- | :-------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| services.silo.replicas | 1 | Yes | Kubernetes helps you with scaling up/down the deployments. You can run 1 or more pods for each deployment. This key helps you setting up number of replicas you want to run for this deployment. It must be >=1 | +| services.silo.memoryLimit | 1000Mi | | Every deployment in kubernetes can be set to use maximum memory they are allowed to use. This key sets the memory limit for this deployment to use. | +| services.silo.cpuLimit | 500m | | Every deployment in kubernetes can be set to use maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use. | +| services.silo.memoryRequest | 50Mi | | Every deployment in kubernetes can be set to use minimum memory they are allowed to use. This key sets the memory request for this deployment to use. | +| services.silo.cpuRequest | 50m | | Every deployment in kubernetes can be set to use minimum cpu they are allowed to use. This key sets the cpu request for this deployment to use. | +| services.silo.image | `artifacts.plane.so/makeplane/silo-commercial` | | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment | +| services.silo.pullPolicy | Always | | Using this key, user can set the pull policy for the deployment of `silo`. | +| services.silo.assign_cluster_ip | false | | Set it to `true` if you want to assign `ClusterIP` to the service | +| services.silo.nodeSelector | {} | | This key allows you to set the node selector for the deployment of silo. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | +| services.silo.tolerations | [] | | This key allows you to set the tolerations for the deployment of silo. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | +| services.silo.affinity | {} | | This key allows you to set the affinity rules for the deployment of silo. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | +| services.silo.labels | {} | | Custom labels to add to the silo deployment | +| services.silo.annotations | {} | | Custom annotations to add to the silo deployment | +| services.silo.connectors.slack.enabled | false | | Slack Integration | +| services.silo.connectors.slack.client_id | "" | required if `services.silo.connectors.slack.enabled` is `true` | Slack Client ID | +| services.silo.connectors.slack.client_secret | "" | required if `services.silo.connectors.slack.enabled` is `true` | Slack Client Secret | +| services.silo.connectors.github.enabled | false | | Github App Integration | +| services.silo.connectors.github.client_id | "" | required if `services.silo.connectors.github.enabled` is `true` | Github Client ID | +| services.silo.connectors.github.client_secret | "" | required if `services.silo.connectors.github.enabled` is `true` | Github Client Secret | +| services.silo.connectors.github.app_name | "" | required if `services.silo.connectors.github.enabled` is `true` | Github App Name | +| services.silo.connectors.github.app_id | "" | required if `services.silo.connectors.github.enabled` is `true` | Github App ID | +| services.silo.connectors.github.private_key | "" | required if `services.silo.connectors.github.enabled` is `true` | Github Private Key | +| services.silo.connectors.gitlab.enabled | false | | Gitlab App Integration | +| services.silo.connectors.gitlab.client_id | "" | required if `services.silo.connectors.gitlab.enabled` is `true` | Gitlab Client ID | +| services.silo.connectors.gitlab.client_secret | "" | required if `services.silo.connectors.gitlab.enabled` is `true` | Gitlab Client Secret | +| env.silo_envs.mq_prefetch_count | 10 | | Prefetch count for RabbitMQ | +| env.silo_envs.batch_size | 60 | | Batch size for Silo | +| env.silo_envs.request_interval | 400 | | Request interval for Silo | +| env.silo_envs.sentry_dsn | | | Sentry DSN | +| env.silo_envs.sentry_environment | | | Sentry Environment | +| env.silo_envs.sentry_traces_sample_rate | | | Sentry Traces Sample Rate | +| env.silo_envs.hmac_secret_key | <random-32-bit-string> | | HMAC Secret Key | +| env.silo_envs.aes_secret_key | "dsOdt7YrvxsTIFJ37pOaEVvLxN8KGBCr" | | AES Secret Key | + #### Worker Deployment -| Setting | Default | Required | Description | -|---|:---:|:---:|---| -| services.worker.replicas | 1 | Yes | Kubernetes helps you with scaling up or down the deployments. You can run 1 or more pods for each deployment. This key helps you set up the number of replicas you want to run for this deployment. It must be >=1 | -| services.worker.memoryLimit | 1000Mi | | Every deployment in kubernetes can be set to use the maximum memory they are allowed to use. This key sets the memory limit for this deployment to use.| -| services.worker.cpuLimit | 500m | | Every deployment in kubernetes can be set to use the maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use.| -| services.worker.memoryRequest | 50Mi | | Every deployment in kubernetes can be set to use minimum memory they are allowed to use. This key sets the memory request for this deployment to use.| -| services.worker.cpuRequest | 50m | | Every deployment in kubernetes can be set to use minimum cpu they are allowed to use. This key sets the cpu request for this deployment to use.| -| services.worker.nodeSelector | {} | | This key allows you to set the node selector for the deployment of worker. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster.| -| services.worker.tolerations | [] | | This key allows you to set the tolerations for the deployment of worker. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster.| -| services.worker.affinity | {} | | This key allows you to set the affinity rules for the deployment of worker. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster.| -| services.worker.labels | {} | | Custom labels to add to the worker deployment | -| services.worker.annotations | {} | | Custom annotations to add to the worker deployment | +| Setting | Default | Required | Description | +| ----------------------------- | :-----: | :------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| services.worker.replicas | 1 | Yes | Kubernetes helps you with scaling up or down the deployments. You can run 1 or more pods for each deployment. This key helps you set up the number of replicas you want to run for this deployment. It must be >=1 | +| services.worker.memoryLimit | 1000Mi | | Every deployment in kubernetes can be set to use the maximum memory they are allowed to use. This key sets the memory limit for this deployment to use. | +| services.worker.cpuLimit | 500m | | Every deployment in kubernetes can be set to use the maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use. | +| services.worker.memoryRequest | 50Mi | | Every deployment in kubernetes can be set to use minimum memory they are allowed to use. This key sets the memory request for this deployment to use. | +| services.worker.cpuRequest | 50m | | Every deployment in kubernetes can be set to use minimum cpu they are allowed to use. This key sets the cpu request for this deployment to use. | +| services.worker.nodeSelector | {} | | This key allows you to set the node selector for the deployment of worker. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | +| services.worker.tolerations | [] | | This key allows you to set the tolerations for the deployment of worker. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | +| services.worker.affinity | {} | | This key allows you to set the affinity rules for the deployment of worker. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | +| services.worker.labels | {} | | Custom labels to add to the worker deployment | +| services.worker.annotations | {} | | Custom annotations to add to the worker deployment | #### Beat-Worker Deployment -| Setting | Default | Required | Description | -|---|:---:|:---:|---| -| services.beatworker.replicas | 1 | Yes | Kubernetes helps you with scaling up or down the deployments. You can run 1 or more pods for each deployment. This key helps you set up the number of replicas you want to run for this deployment. It must be >=1 | -| services.beatworker.memoryLimit | 1000Mi | | Every deployment in kubernetes can be set to use the maximum memory they are allowed to use. This key sets the memory limit for this deployment to use.| -| services.beatworker.cpuLimit | 500m | | Every deployment in kubernetes can be set to use the maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use.| -| services.beatworker.memoryRequest | 50Mi | | Every deployment in kubernetes can be set to use minimum memory they are allowed to use. This key sets the memory request for this deployment to use.| -| services.beatworker.cpuRequest | 50m | | Every deployment in kubernetes can be set to use minimum cpu they are allowed to use. This key sets the cpu request for this deployment to use. | -| services.beatworker.nodeSelector | {} | | This key allows you to set the node selector for the deployment of beatworker. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | -| services.beatworker.tolerations | [] | | This key allows you to set the tolerations for the deployment of beatworker. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | -| services.beatworker.affinity | {} | | This key allows you to set the affinity rules for the deployment of beatworker. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | -| services.beatworker.labels | {} | | Custom labels to add to the beat-worker deployment | -| services.beatworker.annotations | {} | | Custom annotations to add to the beat-worker deployment | +| Setting | Default | Required | Description | +| --------------------------------- | :-----: | :------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| services.beatworker.replicas | 1 | Yes | Kubernetes helps you with scaling up or down the deployments. You can run 1 or more pods for each deployment. This key helps you set up the number of replicas you want to run for this deployment. It must be >=1 | +| services.beatworker.memoryLimit | 1000Mi | | Every deployment in kubernetes can be set to use the maximum memory they are allowed to use. This key sets the memory limit for this deployment to use. | +| services.beatworker.cpuLimit | 500m | | Every deployment in kubernetes can be set to use the maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use. | +| services.beatworker.memoryRequest | 50Mi | | Every deployment in kubernetes can be set to use minimum memory they are allowed to use. This key sets the memory request for this deployment to use. | +| services.beatworker.cpuRequest | 50m | | Every deployment in kubernetes can be set to use minimum cpu they are allowed to use. This key sets the cpu request for this deployment to use. | +| services.beatworker.nodeSelector | {} | | This key allows you to set the node selector for the deployment of beatworker. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | +| services.beatworker.tolerations | [] | | This key allows you to set the tolerations for the deployment of beatworker. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | +| services.beatworker.affinity | {} | | This key allows you to set the affinity rules for the deployment of beatworker. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | +| services.beatworker.labels | {} | | Custom labels to add to the beat-worker deployment | +| services.beatworker.annotations | {} | | Custom annotations to add to the beat-worker deployment | #### Email Service Deployment -| Setting | Default | Required | Description | -|---------|---------|----------|-------------| -| services.email_service.enabled | false | | Set to `true` to enable the email service deployment | -| services.email_service.replicas | 1 | | Number of replicas for the email service deployment | -| services.email_service.memoryLimit | 1000Mi | | Memory limit for the email service deployment | -| services.email_service.cpuLimit | 500m | | CPU limit for the email service deployment | -| services.email_service.memoryRequest | 50Mi | | Memory request for the email service deployment | -| services.email_service.cpuRequest | 50m | | CPU request for the email service deployment | -| services.email_service.image | artifacts.plane.so/makeplane/email-commercial | | Docker image for the email service deployment | -| services.email_service.pullPolicy | Always | | Image pull policy for the email service deployment | -| services.email_service.nodeSelector | {} | | This key allows you to set the node selector for the deployment of `email_service`. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | -| services.email_service.tolerations | [] | | This key allows you to set the tolerations for the deployment of `email_service`. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | -| services.email_service.affinity | {} | | This key allows you to set the affinity rules for the deployment of `email_service`. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | -| services.email_service.labels | {} | | Custom labels to add to the email service deployment | -| services.email_service.annotations | {} | | Custom annotations to add to the email service deployment | -| env.email_service_envs.smtp_domain | | Yes | The SMTP Domain to be used with email service | | | | +| Setting | Default | Required | Description | +| ------------------------------------ | --------------------------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --- | --- | --- | +| services.email_service.enabled | false | | Set to `true` to enable the email service deployment | +| services.email_service.replicas | 1 | | Number of replicas for the email service deployment | +| services.email_service.memoryLimit | 1000Mi | | Memory limit for the email service deployment | +| services.email_service.cpuLimit | 500m | | CPU limit for the email service deployment | +| services.email_service.memoryRequest | 50Mi | | Memory request for the email service deployment | +| services.email_service.cpuRequest | 50m | | CPU request for the email service deployment | +| services.email_service.image | artifacts.plane.so/makeplane/email-commercial | | Docker image for the email service deployment | +| services.email_service.pullPolicy | Always | | Image pull policy for the email service deployment | +| services.email_service.nodeSelector | {} | | This key allows you to set the node selector for the deployment of `email_service`. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | +| services.email_service.tolerations | [] | | This key allows you to set the tolerations for the deployment of `email_service`. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | +| services.email_service.affinity | {} | | This key allows you to set the affinity rules for the deployment of `email_service`. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | +| services.email_service.labels | {} | | Custom labels to add to the email service deployment | +| services.email_service.annotations | {} | | Custom annotations to add to the email service deployment | +| env.email_service_envs.smtp_domain | | Yes | The SMTP Domain to be used with email service | | | | #### Outbox Poller Service Deployment -| Setting | Default | Required | Description | -|---------|---------|----------|-------------| -| services.outbox_poller.enabled | false | | Set to true to enable the outbox poller service deployment | -| services.outbox_poller.replicas | 1 | | Number of replicas for the outbox poller service deployment | -| services.outbox_poller.memoryLimit | 1000Mi | | Memory limit for the outbox poller service deployment | -| services.outbox_poller.cpuLimit | 500m | | CPU limit for the outbox poller service deployment | -| services.outbox_poller.memoryRequest | 50Mi | | Memory request for the outbox poller service deployment | -| services.outbox_poller.cpuRequest | 50m | | CPU request for the outbox poller service deployment | -| services.outbox_poller.pullPolicy | Always | | Image pull policy for the outbox poller service deployment | -| services.outbox_poller.assign_cluster_ip | false | | Set it to true if you want to assign ClusterIP to the service | -| services.outbox_poller.nodeSelector | {} | | This key allows you to set the node selector for the deployment of outbox_poller. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | -| services.outbox_poller.tolerations | [] | | This key allows you to set the tolerations for the deployment of outbox_poller. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | -| services.outbox_poller.affinity | {} | | This key allows you to set the affinity rules for the deployment of outbox_poller. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | -| services.outbox_poller.labels | {} | | Custom labels to add to the outbox poller deployment | -| services.outbox_poller.annotations | {} | | Custom annotations to add to the outbox poller deployment | -| env.outbox_poller_envs.memory_limit_mb | 400 | | Memory limit in MB for the outbox poller | -| env.outbox_poller_envs.interval_min | 0.25 | | Minimum interval in minutes for polling | -| env.outbox_poller_envs.interval_max | 2 | | Maximum interval in minutes for polling | -| env.outbox_poller_envs.batch_size | 250 | | Batch size for processing outbox messages | -| env.outbox_poller_envs.memory_check_interval | 30 | | Memory check interval in seconds | -| env.outbox_poller_envs.pool.size | 4 | | Pool size for database connections | -| env.outbox_poller_envs.pool.min_size | 2 | | Minimum pool size for database connections | -| env.outbox_poller_envs.pool.max_size | 10 | | Maximum pool size for database connections | -| env.outbox_poller_envs.pool.timeout | 30.0 | | Pool timeout in seconds | -| env.outbox_poller_envs.pool.max_idle | 300.0 | | Maximum idle time for connections in seconds | -| env.outbox_poller_envs.pool.max_lifetime | 3600 | | Maximum lifetime for connections in seconds | -| env.outbox_poller_envs.pool.reconnect_timeout | 5.0 | | Reconnect timeout in seconds | -| env.outbox_poller_envs.pool.health_check_interval | 60 | | Health check interval in seconds | +| Setting | Default | Required | Description | +| ------------------------------------------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| services.outbox_poller.enabled | false | | Set to true to enable the outbox poller service deployment | +| services.outbox_poller.replicas | 1 | | Number of replicas for the outbox poller service deployment | +| services.outbox_poller.memoryLimit | 1000Mi | | Memory limit for the outbox poller service deployment | +| services.outbox_poller.cpuLimit | 500m | | CPU limit for the outbox poller service deployment | +| services.outbox_poller.memoryRequest | 50Mi | | Memory request for the outbox poller service deployment | +| services.outbox_poller.cpuRequest | 50m | | CPU request for the outbox poller service deployment | +| services.outbox_poller.pullPolicy | Always | | Image pull policy for the outbox poller service deployment | +| services.outbox_poller.assign_cluster_ip | false | | Set it to true if you want to assign ClusterIP to the service | +| services.outbox_poller.nodeSelector | {} | | This key allows you to set the node selector for the deployment of outbox_poller. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | +| services.outbox_poller.tolerations | [] | | This key allows you to set the tolerations for the deployment of outbox_poller. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | +| services.outbox_poller.affinity | {} | | This key allows you to set the affinity rules for the deployment of outbox_poller. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | +| services.outbox_poller.labels | {} | | Custom labels to add to the outbox poller deployment | +| services.outbox_poller.annotations | {} | | Custom annotations to add to the outbox poller deployment | +| env.outbox_poller_envs.memory_limit_mb | 400 | | Memory limit in MB for the outbox poller | +| env.outbox_poller_envs.interval_min | 0.25 | | Minimum interval in minutes for polling | +| env.outbox_poller_envs.interval_max | 2 | | Maximum interval in minutes for polling | +| env.outbox_poller_envs.batch_size | 250 | | Batch size for processing outbox messages | +| env.outbox_poller_envs.memory_check_interval | 30 | | Memory check interval in seconds | +| env.outbox_poller_envs.pool.size | 4 | | Pool size for database connections | +| env.outbox_poller_envs.pool.min_size | 2 | | Minimum pool size for database connections | +| env.outbox_poller_envs.pool.max_size | 10 | | Maximum pool size for database connections | +| env.outbox_poller_envs.pool.timeout | 30.0 | | Pool timeout in seconds | +| env.outbox_poller_envs.pool.max_idle | 300.0 | | Maximum idle time for connections in seconds | +| env.outbox_poller_envs.pool.max_lifetime | 3600 | | Maximum lifetime for connections in seconds | +| env.outbox_poller_envs.pool.reconnect_timeout | 5.0 | | Reconnect timeout in seconds | +| env.outbox_poller_envs.pool.health_check_interval | 60 | | Health check interval in seconds | #### Automation Consumer Deployment -| Setting | Default | Required | Description | -|---------|---------|----------|-------------| -| services.automation_consumer.enabled | false | | Set to true to enable the automation consumer service deployment | -| services.automation_consumer.replicas | 1 | | Number of replicas for the automation consumer service deployment | -| services.automation_consumer.memoryLimit | 1000Mi | | Memory limit for the automation consumer service deployment | -| services.automation_consumer.cpuLimit | 500m | | CPU limit for the automation consumer service deployment | -| services.automation_consumer.memoryRequest | 50Mi | | Memory request for the automation consumer service deployment | -| services.automation_consumer.cpuRequest | 50m | | CPU request for the automation consumer service deployment | -| services.automation_consumer.pullPolicy | Always | | Image pull policy for the automation consumer service deployment | -| services.automation_consumer.assign_cluster_ip | false | | Set it to true if you want to assign ClusterIP to the service | -| services.automation_consumer.nodeSelector | {} | | This key allows you to set the node selector for the deployment of automation_consumer. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | -| services.automation_consumer.tolerations | [] | | This key allows you to set the tolerations for the deployment of automation_consumer. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | -| services.automation_consumer.affinity | {} | | This key allows you to set the affinity rules for the deployment of automation_consumer. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | -| services.automation_consumer.labels | {} | | Custom labels to add to the automation consumer deployment | -| services.automation_consumer.annotations | {} | | Custom annotations to add to the automation consumer deployment | -| env.automation_consumer_envs.event_stream_queue_name | "plane.event_stream.automations" | | Event stream queue name for automations | -| env.automation_consumer_envs.event_stream_prefetch | 10 | | Event stream prefetch count | -| env.automation_consumer_envs.exchange_name | "plane.event_stream" | | Exchange name for event stream | -| env.automation_consumer_envs.event_types | "issue" | | Event types to process | +| Setting | Default | Required | Description | +| ---------------------------------------------------- | -------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| services.automation_consumer.enabled | false | | Set to true to enable the automation consumer service deployment | +| services.automation_consumer.replicas | 1 | | Number of replicas for the automation consumer service deployment | +| services.automation_consumer.memoryLimit | 1000Mi | | Memory limit for the automation consumer service deployment | +| services.automation_consumer.cpuLimit | 500m | | CPU limit for the automation consumer service deployment | +| services.automation_consumer.memoryRequest | 50Mi | | Memory request for the automation consumer service deployment | +| services.automation_consumer.cpuRequest | 50m | | CPU request for the automation consumer service deployment | +| services.automation_consumer.pullPolicy | Always | | Image pull policy for the automation consumer service deployment | +| services.automation_consumer.assign_cluster_ip | false | | Set it to true if you want to assign ClusterIP to the service | +| services.automation_consumer.nodeSelector | {} | | This key allows you to set the node selector for the deployment of automation_consumer. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | +| services.automation_consumer.tolerations | [] | | This key allows you to set the tolerations for the deployment of automation_consumer. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | +| services.automation_consumer.affinity | {} | | This key allows you to set the affinity rules for the deployment of automation_consumer. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | +| services.automation_consumer.labels | {} | | Custom labels to add to the automation consumer deployment | +| services.automation_consumer.annotations | {} | | Custom annotations to add to the automation consumer deployment | +| env.automation_consumer_envs.event_stream_queue_name | "plane.event_stream.automations" | | Event stream queue name for automations | +| env.automation_consumer_envs.event_stream_prefetch | 10 | | Event stream prefetch count | +| env.automation_consumer_envs.exchange_name | "plane.event_stream" | | Exchange name for event stream | +| env.automation_consumer_envs.event_types | "issue" | | Event types to process | #### Iframely Deployment -| Setting | Default | Required | Description | -|---------|---------|----------|-------------| -| services.iframely.enabled | false | | Set to true to enable the Iframely service deployment | -| services.iframely.replicas | 1 | | Number of replicas for the Iframely service deployment | -| services.iframely.memoryLimit | 1000Mi | | Memory limit for the Iframely service deployment | -| services.iframely.cpuLimit | 500m | | CPU limit for the Iframely service deployment | -| services.iframely.memoryRequest | 50Mi | | Memory request for the Iframely service deployment | -| services.iframely.cpuRequest | 50m | | CPU request for the Iframely service deployment | -| services.iframely.image | artifacts.plane.so/makeplane/iframely:v1.2.0 | | Docker image for the Iframely service deployment | -| services.iframely.pullPolicy | Always | | Image pull policy for the Iframely service deployment | -| services.iframely.assign_cluster_ip | false | | Set it to true if you want to assign ClusterIP to the service | -| services.iframely.nodeSelector | {} | | This key allows you to set the node selector for the deployment of iframely. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | -| services.iframely.tolerations | [] | | This key allows you to set the tolerations for the deployment of iframely. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | -| services.iframely.affinity | {} | | This key allows you to set the affinity rules for the deployment of iframely. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | -| services.iframely.labels | {} | | Custom labels to add to the iframely deployment | -| services.iframely.annotations | {} | | Custom annotations to add to the iframely deployment | +| Setting | Default | Required | Description | +| ----------------------------------- | -------------------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| services.iframely.enabled | false | | Set to true to enable the Iframely service deployment | +| services.iframely.replicas | 1 | | Number of replicas for the Iframely service deployment | +| services.iframely.memoryLimit | 1000Mi | | Memory limit for the Iframely service deployment | +| services.iframely.cpuLimit | 500m | | CPU limit for the Iframely service deployment | +| services.iframely.memoryRequest | 50Mi | | Memory request for the Iframely service deployment | +| services.iframely.cpuRequest | 50m | | CPU request for the Iframely service deployment | +| services.iframely.image | artifacts.plane.so/makeplane/iframely:v1.2.0 | | Docker image for the Iframely service deployment | +| services.iframely.pullPolicy | Always | | Image pull policy for the Iframely service deployment | +| services.iframely.assign_cluster_ip | false | | Set it to true if you want to assign ClusterIP to the service | +| services.iframely.nodeSelector | {} | | This key allows you to set the node selector for the deployment of iframely. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | +| services.iframely.tolerations | [] | | This key allows you to set the tolerations for the deployment of iframely. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | +| services.iframely.affinity | {} | | This key allows you to set the affinity rules for the deployment of iframely. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | +| services.iframely.labels | {} | | Custom labels to add to the iframely deployment | +| services.iframely.annotations | {} | | Custom annotations to add to the 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. -| Secret Name | Env Var Name | Required | Description | Example Value | -|-------------|--------------|----------|-------------|---------------| -| rabbitmq_existingSecret | RABBITMQ_DEFAULT_USER | Required if `rabbitmq.local_setup=true` | The default RabbitMQ user | plane | -| | RABBITMQ_DEFAULT_PASS | Required if `rabbitmq.local_setup=true` | The default RabbitMQ password | plane | -| pgdb_existingSecret | POSTGRES_PASSWORD | Required if `postgres.local_setup=true` | Password for PostgreSQL database | plane | -| | POSTGRES_DB | Required if `postgres.local_setup=true` | Name of the PostgreSQL database | plane | -| | POSTGRES_USER | Required if `postgres.local_setup=true` | PostgreSQL user | plane | -| doc_store_existingSecret | USE_MINIO | Yes | Flag to enable MinIO as the storage backend | 1 | -| | MINIO_ROOT_USER | Yes | MinIO root user | admin | -| | MINIO_ROOT_PASSWORD | Yes | MinIO root password | password | -| | AWS_ACCESS_KEY_ID | Yes | AWS Access Key ID | your_aws_key | -| | AWS_SECRET_ACCESS_KEY | Yes | AWS Secret Access Key | your_aws_secret | -| | AWS_S3_BUCKET_NAME | Yes | AWS S3 Bucket Name | your_bucket_name | -| | AWS_S3_ENDPOINT_URL | Yes | Endpoint URL for AWS S3 or MinIO | `http://plane-minio.plane-ns.svc.cluster.local:9000` | -| | AWS_REGION | Optional | AWS region where your S3 bucket is located | your_aws_region | -| | FILE_SIZE_LIMIT | Yes | Limit for file uploads in your system | 5MB | -| app_env_existingSecret | SECRET_KEY | Yes | Random secret key | 60gp0byfz2dvffa45cxl20p1scy9xbpf6d8c5y0geejgkyp1b5 | -| | REDIS_URL | Yes | Redis URL | `redis://plane-redis.plane-ns.svc.cluster.local:6379/` | -| | DATABASE_URL | Yes | PostgreSQL connection URL | k8s service example: `postgresql://plane:plane@plane-pgdb.plane-ns.svc.cluster.local:5432/plane` external service example: `postgresql://username:password@your-db-host:5432/plane` | -| | AMQP_URL | Yes | RabbitMQ connection URL | k8s service example: `amqp://plane:plane@plane-rabbitmq.plane-ns.svc.cluster.local:5672/` external service example: `amqp://username:password@your-rabbitmq-host:5672/` | -| live_env_existingSecret | REDIS_URL | Yes | Redis URL | `redis://plane-redis.plane-ns.svc.cluster.local:6379/` | -| silo_env_existingSecret | SILO_HMAC_SECRET_KEY | Yes | Silo HMAC secret Key | `` | -| | REDIS_URL | Yes | Redis URL | redis://plane-redis.plane-ns.svc.cluster.local:6379/ | -| | DATABASE_URL | Yes | PostgreSQL connection URL | k8s service example: postgresql://plane:plane@plane-pgdb.plane-ns.svc.cluster.local:5432/plane external service example: postgresql://username:password@your-db-host:5432/plane | -| | AMQP_URL | Yes | RabbitMQ connection URL | k8s service example: amqp://plane:plane@plane-rabbitmq.plane-ns.svc.cluster.local:5672/ external service example: amqp://username:password@your-rabbitmq-host:5672/ | -| | GITHUB_APP_NAME | Required if services.silo.connectors.github.enabled is true | GitHub app name | your_github_app_name | -| | GITHUB_APP_ID | Required if services.silo.connectors.github.enabled is true | GitHub app ID | your_github_app_id | -| | GITHUB_CLIENT_ID | Required if services.silo.connectors.github.enabled is true | GitHub client ID | your_github_client_id | -| | GITHUB_CLIENT_SECRET | Required if services.silo.connectors.github.enabled is true | GitHub client secret key | your_github_client_secret_key | -| | GITHUB_PRIVATE_KEY | Required if services.silo.connectors.github.enabled is true | GitHub private key | your_github_private_key | -| | SLACK_CLIENT_ID | Required if services.silo.connectors.slack.enabled is true | Slack client ID | your_slack_client_id | -| | SLACK_CLIENT_SECRET | Required if services.silo.connectors.slack.enabled is true | Slack client secret key | your_slack_client_secret_key | -| | GITLAB_CLIENT_ID | Required if services.silo.connectors.gitlab.enabled is true | GitLab client ID | your_gitlab_client_id | -| | GITLAB_CLIENT_SECRET | Required if services.silo.connectors.gitlab.enabled is true | GitLab client secret key | your_gitlab_client_secret_key | +| Secret Name | Env Var Name | Required | Description | Example Value | +| ------------------------ | --------------------- | ----------------------------------------------------------- | ------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| rabbitmq_existingSecret | RABBITMQ_DEFAULT_USER | Required if `rabbitmq.local_setup=true` | The default RabbitMQ user | plane | +| | RABBITMQ_DEFAULT_PASS | Required if `rabbitmq.local_setup=true` | The default RabbitMQ password | plane | +| pgdb_existingSecret | POSTGRES_PASSWORD | Required if `postgres.local_setup=true` | Password for PostgreSQL database | plane | +| | POSTGRES_DB | Required if `postgres.local_setup=true` | Name of the PostgreSQL database | plane | +| | POSTGRES_USER | Required if `postgres.local_setup=true` | PostgreSQL user | plane | +| doc_store_existingSecret | USE_MINIO | Yes | Flag to enable MinIO as the storage backend | 1 | +| | MINIO_ROOT_USER | Yes | MinIO root user | admin | +| | MINIO_ROOT_PASSWORD | Yes | MinIO root password | password | +| | AWS_ACCESS_KEY_ID | Yes | AWS Access Key ID | your_aws_key | +| | AWS_SECRET_ACCESS_KEY | Yes | AWS Secret Access Key | your_aws_secret | +| | AWS_S3_BUCKET_NAME | Yes | AWS S3 Bucket Name | your_bucket_name | +| | AWS_S3_ENDPOINT_URL | Yes | Endpoint URL for AWS S3 or MinIO | `http://plane-minio.plane-ns.svc.cluster.local:9000` | +| | AWS_REGION | Optional | AWS region where your S3 bucket is located | your_aws_region | +| | FILE_SIZE_LIMIT | Yes | Limit for file uploads in your system | 5MB | +| app_env_existingSecret | SECRET_KEY | Yes | Random secret key | 60gp0byfz2dvffa45cxl20p1scy9xbpf6d8c5y0geejgkyp1b5 | +| | REDIS_URL | Yes | Redis URL | `redis://plane-redis.plane-ns.svc.cluster.local:6379/` | +| | DATABASE_URL | Yes | PostgreSQL connection URL | k8s service example: `postgresql://plane:plane@plane-pgdb.plane-ns.svc.cluster.local:5432/plane` external service example: `postgresql://username:password@your-db-host:5432/plane` | +| | AMQP_URL | Yes | RabbitMQ connection URL | k8s service example: `amqp://plane:plane@plane-rabbitmq.plane-ns.svc.cluster.local:5672/` external service example: `amqp://username:password@your-rabbitmq-host:5672/` | +| live_env_existingSecret | REDIS_URL | Yes | Redis URL | `redis://plane-redis.plane-ns.svc.cluster.local:6379/` | +| silo_env_existingSecret | SILO_HMAC_SECRET_KEY | Yes | Silo HMAC secret Key | `` | +| | REDIS_URL | Yes | Redis URL | redis://plane-redis.plane-ns.svc.cluster.local:6379/ | +| | DATABASE_URL | Yes | PostgreSQL connection URL | k8s service example: postgresql://plane:plane@plane-pgdb.plane-ns.svc.cluster.local:5432/plane external service example: postgresql://username:password@your-db-host:5432/plane | +| | AMQP_URL | Yes | RabbitMQ connection URL | k8s service example: amqp://plane:plane@plane-rabbitmq.plane-ns.svc.cluster.local:5672/ external service example: amqp://username:password@your-rabbitmq-host:5672/ | +| | GITHUB_APP_NAME | Required if services.silo.connectors.github.enabled is true | GitHub app name | your_github_app_name | +| | GITHUB_APP_ID | Required if services.silo.connectors.github.enabled is true | GitHub app ID | your_github_app_id | +| | GITHUB_CLIENT_ID | Required if services.silo.connectors.github.enabled is true | GitHub client ID | your_github_client_id | +| | GITHUB_CLIENT_SECRET | Required if services.silo.connectors.github.enabled is true | GitHub client secret key | your_github_client_secret_key | +| | GITHUB_PRIVATE_KEY | Required if services.silo.connectors.github.enabled is true | GitHub private key | your_github_private_key | +| | SLACK_CLIENT_ID | Required if services.silo.connectors.slack.enabled is true | Slack client ID | your_slack_client_id | +| | SLACK_CLIENT_SECRET | Required if services.silo.connectors.slack.enabled is true | Slack client secret key | your_slack_client_secret_key | +| | GITLAB_CLIENT_ID | Required if services.silo.connectors.gitlab.enabled is true | GitLab client ID | your_gitlab_client_id | +| | GITLAB_CLIENT_SECRET | Required if services.silo.connectors.gitlab.enabled is true | GitLab client secret key | your_gitlab_client_secret_key | #### Ingress and SSL Setup -| Setting | Default | Required | Description | -|---------|---------|----------|-------------| -| ingress.enabled | true | | Ingress setup in kubernetes is a common practice to expose application to the intended audience. Set it to false if you are using external ingress providers like Cloudflare | -| ingress.minioHost | | | Based on above configuration, if you want to expose the minio web console to set of users, use this key to set the host mapping or leave it as EMPTY to not expose interface. | -| ingress.rabbitmqHost | | | Based on above configuration, if you want to expose the rabbitmq web console to set of users, use this key to set the host mapping or leave it as EMPTY to not expose interface. | -| ingress.ingressClass | nginx | Yes | Kubernetes cluster setup comes with various options of ingressClass. Based on your setup, set this value to the right one (eg. nginx, traefik, etc). Leave it to default in case you are using external ingress provider. | -| ingress.ingress_annotations | { `"nginx.ingress.kubernetes.io/proxy-body-size": "5m"` } | | Ingress controllers comes with various configuration options which can be passed as annotations. Setting this value lets you change the default value to user required. | -| ssl.createIssuer | false | | Kubernets cluster setup supports creating issuer type resource. After deployment, this is step towards creating secure access to the ingress url. Issuer is required for you generate SSL certifiate. Kubernetes can be configured to use any of the certificate authority to generate SSL (depending on CertManager configuration). Set it to true to create the issuer. Applicable only when ingress.enabled=true | -| ssl.issuer | http | | CertManager configuration allows user to create issuers using http or any of the other DNS Providers like cloudflare, digitalocean, etc. As of now Plane supports http, cloudflare, digitalocean | -| ssl.token | | | To create issuers using DNS challenge, set the issuer api token of dns provider like cloudflare or digitalocean (not required for http) | -| ssl.server | | | Issuer creation configuration need the certificate generation authority server url. Default URL is the Let's Encrypt server | -| ssl.email | plane@example.com | | Certificate generation authority needs a valid email id before generating certificate. Required when ssl.createIssuer=true | -| ssl.generateCerts | false | | After creating the issuers, user can still not create the certificate untill sure of configuration. Setting this to true will try to generate SSL certificate and associate with ingress. Applicable only when ingress.enabled=true and ssl.createIssuer=true | -| ssl.tls_secret_name | | | If you have a custom TLS secret name, set this to the name of the secret. Applicable only when ingress.enabled=true and ssl.createIssuer=false | +| Setting | Default | Required | Description | +| --------------------------- | --------------------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| ingress.enabled | true | | Ingress setup in kubernetes is a common practice to expose application to the intended audience. Set it to false if you are using external ingress providers like Cloudflare | +| ingress.minioHost | | | Based on above configuration, if you want to expose the minio web console to set of users, use this key to set the host mapping or leave it as EMPTY to not expose interface. | +| ingress.rabbitmqHost | | | Based on above configuration, if you want to expose the rabbitmq web console to set of users, use this key to set the host mapping or leave it as EMPTY to not expose interface. | +| ingress.ingressClass | nginx | Yes | Kubernetes cluster setup comes with various options of ingressClass. Based on your setup, set this value to the right one (eg. nginx, traefik, etc). Leave it to default in case you are using external ingress provider. | +| ingress.ingress_annotations | { `"nginx.ingress.kubernetes.io/proxy-body-size": "5m"` } | | Ingress controllers comes with various configuration options which can be passed as annotations. Setting this value lets you change the default value to user required. | +| ssl.createIssuer | false | | Kubernets cluster setup supports creating issuer type resource. After deployment, this is step towards creating secure access to the ingress url. Issuer is required for you generate SSL certifiate. Kubernetes can be configured to use any of the certificate authority to generate SSL (depending on CertManager configuration). Set it to true to create the issuer. Applicable only when ingress.enabled=true | +| ssl.issuer | http | | CertManager configuration allows user to create issuers using http or any of the other DNS Providers like cloudflare, digitalocean, etc. As of now Plane supports http, cloudflare, digitalocean | +| ssl.token | | | To create issuers using DNS challenge, set the issuer api token of dns provider like cloudflare or digitalocean (not required for http) | +| ssl.server | | | Issuer creation configuration need the certificate generation authority server url. Default URL is the Let's Encrypt server | +| ssl.email | plane@example.com | | Certificate generation authority needs a valid email id before generating certificate. Required when ssl.createIssuer=true | +| ssl.generateCerts | false | | After creating the issuers, user can still not create the certificate untill sure of configuration. Setting this to true will try to generate SSL certificate and associate with ingress. Applicable only when ingress.enabled=true and ssl.createIssuer=true | +| ssl.tls_secret_name | | | If you have a custom TLS secret name, set this to the name of the secret. Applicable only when ingress.enabled=true and ssl.createIssuer=false | #### Common Environment Settings -| Setting | Default | Required | Description | -|---|:---:|:---:|---| -| env.storageClass | longhorn | | Creating the persitant volumes for the stateful deployments needs the `storageClass` name. Set the correct value as per your kubernetes cluster configuration. | -| env.secret_key | 60gp0byfz2dvffa45cxl20p1scy9xbpf6d8c5y0geejgkyp1b5 | Yes | This must be a random string which is used for hashing/encrypting the sensitive data within the application. Once set, changing this might impact the already hashed/encrypted data| +| Setting | Default | Required | Description | +| ---------------- | :------------------------------------------------: | :------: | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| env.storageClass | longhorn | | Creating the persitant volumes for the stateful deployments needs the `storageClass` name. Set the correct value as per your kubernetes cluster configuration. | +| env.secret_key | 60gp0byfz2dvffa45cxl20p1scy9xbpf6d8c5y0geejgkyp1b5 | Yes | This must be a random string which is used for hashing/encrypting the sensitive data within the application. Once set, changing this might impact the already hashed/encrypted data | #### Extra Environment Variables -| Setting | Default | Required | Description | -|---------|---------|----------|-------------| -| extraEnv | [] | No | Global extra environment variables that will be applied to all workloads. This allows you to add custom environment variables to all deployments (web, api, worker, etc.). Useful for proxy settings, custom configurations, or any environment-specific variables. Some example variables are HTTP_PROXY, HTTPS_PROXY, NO_PROXY. | +| Setting | Default | Required | Description | +| -------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| extraEnv | [] | No | Global extra environment variables that will be applied to all workloads. This allows you to add custom environment variables to all deployments (web, api, worker, etc.). Useful for proxy settings, custom configurations, or any environment-specific variables. Some example variables are HTTP_PROXY, HTTPS_PROXY, NO_PROXY. | ## Custom Ingress Routes If you are planning to use 3rd party ingress providers, here is the available route configuration -| Host | Path | Service | -|--- |:---:|---| -| plane.example.com | `/` | `` | -| plane.example.com | `/spaces/*` | `` | -| plane.example.com | `/god-mode/*` | `` | -| plane.example.com | `/live/*` | `` | -| plane.example.com | `/api/*` | `` | -| plane.example.com | `/auth/*` | `` | -| plane.example.com | `/uploads/*` | `` | -| plane-minio.example.com | `/` | `` | -| plane-mq.example.com | `/` | `` | (Optional) if using local setup, this will enable management console access | - -::: details Install Community Edition - 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: +| Host | Path | Service | +| ----------------------- | :-----------: | ----------------------------------------- | --------------------------------------------------------------------------- | +| plane.example.com | `/` | `` | +| plane.example.com | `/spaces/*` | `` | +| plane.example.com | `/god-mode/*` | `` | +| plane.example.com | `/live/*` | `` | +| plane.example.com | `/api/*` | `` | +| plane.example.com | `/auth/*` | `` | +| plane.example.com | `/uploads/*` | `` | +| plane-minio.example.com | `/` | `` | +| plane-mq.example.com | `/` | `` | (Optional) if using local setup, this will enable management console access | + +::: details Install Community Edition +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 @@ -581,295 +581,295 @@ If you are planning to use 3rd party ingress providers, here is the available ro #### 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 +1. Open Terminal or any other command-line app that has access to Kubernetes tools on your local system. +2. Add the Helm Repo ```bash helm repo add makeplane https://helm.plane.so/ helm repo update ``` -3. Use one of the following ways to deploy Plane: - - **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. +3. Use one of the following ways to deploy Plane: - **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. + + ::: tip + 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. + + ```bash + helm install plane-app makeplane/plane-ce \ + --create-namespace \ + --namespace plane-ce \ + --set planeVersion=stable \ + --set ingress.appHost="plane.example.com" \ + --set ingress.minioHost="plane-minio.example.com" \ + --set ingress.ingressClass=nginx \ + --set postgres.storageClass=longhorn \ + --set redis.storageClass=longhorn \ + --set minio.storageClass=longhorn \ + --timeout 10m \ + --wait \ + --wait-for-jobs + ``` + + ::: tip + 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. + + ```bash + helm show values makeplane/plane-ce > values.yaml + vi values.yaml + ``` + + ::: tip + See **Configuration settings** below 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. + + ```bash + helm install plane-app makeplane/plane-ce \ + --create-namespace \ + --namespace plane-ce \ + -f values.yaml \ + --timeout 10m \ + --wait \ + --wait-for-jobs + ``` + + #### Configuration settings + + ##### Plane Version + + | Setting | Default | Required | Description | + |---------|---------|----------|-------------| + | planeVersion | v1.1.0 | Yes | | + + ##### Postgres DB Setup + + | Setting | Default | Required | Description | + |---------|---------|----------|-------------| + | postgres.local_setup | true | | Plane uses postgres as the primary database to store all the transactional data. This database can be hosted within kubernetes as part of helm chart deployment or can be used as hosted service remotely (e.g. aws rds or similar services). Set this to true when you choose to setup stateful deployment of postgres. Mark it as false when using a remotely hosted database | + | postgres.image | postgres:15.7-alpine | | Using this key, user must provide the docker image name to setup the stateful deployment of postgres. (must be set when `postgres.local_setup=true`) | + | postgres.pullPolicy | IfNotPresent | | Using this key, user can set the pull policy for the stateful deployment of postgres. (must be set when `postgres.local_setup=true`) | + | postgres.servicePort | 5432 | | This key sets the default port number to be used while setting up stateful deployment of postgres. | + | postgres.volumeSize | 5Gi | | While setting up the stateful deployment, while creating the persistant volume, volume allocation size need to be provided. This key helps you set the volume allocation size. Unit of this value must be in Mi (megabyte) or Gi (gigabyte) | + | env.pgdb_username | plane | | Database credentials are requried to access the hosted stateful deployment of postgres. Use this key to set the username for the stateful deployment. | + | env.pgdb_password | plane | | Database credentials are requried to access the hosted stateful deployment of postgres. Use this key to set the password for the stateful deployment. | + | env.pgdb_name | plane | | Database name to be used while setting up stateful deployment of Postgres | + | env.pgdb_remote_url | | | Users can also decide to use the remote hosted database and link to Plane deployment. Ignoring all the above keys, set postgres.local_setup to false and set this key with remote connection url. | + | postgres.storageClass | `` | | Creating the persitant volumes for the stateful deployments needs the storageClass name. Set the correct value as per your kubernetes cluster configuration. | + | postgres.assign_cluster_ip | false | | Set it to true if you want to assign ClusterIP to the service | + | postgres.nodeSelector | {} | | This key allows you to set the node selector for the stateful deployment of postgres. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | + | postgres.tolerations | [] | | This key allows you to set the tolerations for the stateful deployment of postgres. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | + | postgres.affinity | {} | | This key allows you to set the affinity rules for the stateful deployment of postgres. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | + | postgres.labels | {} | | This key allows you to set custom labels for the stateful deployment of postgres. This is useful for organizing and selecting resources in your Kubernetes cluster. | + | postgres.annotations | {} | | This key allows you to set custom annotations for the stateful deployment of postgres. This is useful for adding metadata or configuration hints to your resources. | + + ##### Redis/Valkey Setup + + | Setting | Default | Required | Description | + |---------|---------|----------|-------------| + | redis.local_setup | true | | Plane uses redis to cache the session authentication and other static data. This database can be hosted within kubernetes as part of helm chart deployment or can be used as hosted service remotely (e.g. aws rds or similar services). Set this to true when you choose to setup stateful deployment of redis. Mark it as false when using a remotely hosted database | + | redis.image | `valkey/valkey:7.2.5-alpine` | | Using this key, user must provide the docker image name to setup the stateful deployment of redis. (must be set when redis.local_setup=true) | + | redis.pullPolicy | IfNotPresent | | Using this key, user can set the pull policy for the stateful deployment of redis. (must be set when `redis.local_setup=true`) | + | redis.servicePort | 6379 | | This key sets the default port number to be used while setting up stateful deployment of redis. | + | redis.volumeSize | 1Gi | | While setting up the stateful deployment, while creating the persistant volume, volume allocation size need to be provided. This key helps you set the volume allocation size. Unit of this value must be in Mi (megabyte) or Gi (gigabyte) | + | env.remote_redis_url | | | Users can also decide to use the remote hosted database and link to Plane deployment. Ignoring all the above keys, set redis.local_setup to false and set this key with remote connection url. | + | redis.storageClass | `` | | Creating the persitant volumes for the stateful deployments needs the storageClass name. Set the correct value as per your kubernetes cluster configuration. | + | redis.assign_cluster_ip | false | | Set it to true if you want to assign ClusterIP to the service | + | redis.nodeSelector | {} | | This key allows you to set the node selector for the stateful deployment of redis. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | + | redis.tolerations | [] | | This key allows you to set the tolerations for the stateful deployment of redis. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | + | redis.affinity | {} | | This key allows you to set the affinity rules for the stateful deployment of redis. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | + | redis.labels | {} | | This key allows you to set custom labels for the stateful deployment of redis. This is useful for organizing and selecting resources in your Kubernetes cluster. | + | redis.annotations | {} | | This key allows you to set custom annotations for the stateful deployment of redis. This is useful for adding metadata or configuration hints to your resources. | + + ##### RabbitMQ Setup + + | Setting | Default | Required | Description | + |---------|---------|----------|-------------| + | rabbitmq.local_setup | true | | Plane uses rabbitmq as message queuing system. This can be hosted within kubernetes as part of helm chart deployment or can be used as hosted service remotely (e.g. aws mq or similar services). Set this to true when you choose to setup stateful deployment of rabbitmq. Mark it as false when using a remotely hosted service | + | rabbitmq.image | rabbitmq:3.13.6-management-alpine | | Using this key, user must provide the docker image name to setup the stateful deployment of rabbitmq. (must be set when `rabbitmq.local_setup=true`) | + | rabbitmq.pullPolicy | IfNotPresent | | Using this key, user can set the pull policy for the stateful deployment of rabbitmq. (must be set when `rabbitmq.local_setup=true`) | + | rabbitmq.servicePort | 5672 | | This key sets the default port number to be used while setting up stateful deployment of rabbitmq. | + | rabbitmq.managementPort | 15672 | | This key sets the default management port number to be used while setting up stateful deployment of rabbitmq. | + | rabbitmq.volumeSize | 100Mi | | While setting up the stateful deployment, while creating the persistant volume, volume allocation size need to be provided. This key helps you set the volume allocation size. Unit of this value must be in Mi (megabyte) or Gi (gigabyte) | + | rabbitmq.storageClass | `` | | Creating the persitant volumes for the stateful deployments needs the storageClass name. Set the correct value as per your kubernetes cluster configuration. | + | rabbitmq.default_user | plane | | Credentials are requried to access the hosted stateful deployment of rabbitmq. Use this key to set the username for the stateful deployment. | + | rabbitmq.default_password | plane | | Credentials are requried to access the hosted stateful deployment of rabbitmq. Use this key to set the password for the stateful deployment. | + | rabbitmq.assign_cluster_ip | false | | Set it to true if you want to assign ClusterIP to the service | + | rabbitmq.external_rabbitmq_url | | | Users can also decide to use the remote hosted service and link to Plane deployment. Ignoring all the above keys, set rabbitmq.local_setup to false and set this key with remote connection url. | + | rabbitmq.nodeSelector | {} | | This key allows you to set the node selector for the stateful deployment of rabbitmq. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | + | rabbitmq.tolerations | [] | | This key allows you to set the tolerations for the stateful deployment of rabbitmq. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | + | rabbitmq.affinity | {} | | This key allows you to set the affinity rules for the stateful deployment of rabbitmq. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | + | rabbitmq.labels | {} | | This key allows you to set custom labels for the stateful deployment of rabbitmq. This is useful for organizing and selecting resources in your Kubernetes cluster. | + | rabbitmq.annotations | {} | | This key allows you to set custom annotations for the stateful deployment of rabbitmq. This is useful for adding metadata or configuration hints to your resources. | + + ##### Doc Store (Minio/S3) Setup + + | Setting | Default | Required | Description | + |---------|---------|----------|-------------| + | minio.local_setup | true | | Plane uses minio as the default file storage drive. This storage can be hosted within kubernetes as part of helm chart deployment or can be used as hosted service remotely (e.g. aws S3 or similar services). Set this to true when you choose to setup stateful deployment of postgres. Mark it as false when using a remotely hosted database | + | minio.image | minio/minio:latest | | Using this key, user must provide the docker image name to setup the stateful deployment of minio. (must be set when `minio.local_setup=true`) | + | minio.image_mc | minio/mc:latest | | Using this key, user must provide the docker image name to setup the job deployment of minio client. (must be set when `minio.local_setup=true`) | + | minio.pullPolicy | IfNotPresent | | Using this key, user can set the pull policy for the stateful deployment of minio. (must be set when `minio.local_setup=true`) | + | minio.volumeSize | 5Gi | | While setting up the stateful deployment, while creating the persistant volume, volume allocation size need to be provided. This key helps you set the volume allocation size. Unit of this value must be in Mi (megabyte) or Gi (gigabyte) | + | minio.root_user | admin | | Storage credentials are requried to access the hosted stateful deployment of minio. Use this key to set the username for the stateful deployment. | + | minio.root_password | password | | Storage credentials are requried to access the hosted stateful deployment of minio. Use this key to set the password for the stateful deployment. | + | minio.env.minio_endpoint_ssl | false | | (Optional) Env to enforce HTTPS when connecting to minio uploads bucket | + | env.docstore_bucket | uploads | Yes | Storage bucket name is required as part of configuration. This is where files will be uploaded irrespective of if you are using Minio or external S3 (or compatible) storage service | + | env.doc_upload_size_limit | 5242880 | Yes | Document Upload Size Limit (default to 5Mb) | + | env.aws_access_key | | | External S3 (or compatible) storage service provides access key for the application to connect and do the necessary upload/download operations. To be provided when `minio.local_setup=false` | + | env.aws_secret_access_key | | | External S3 (or compatible) storage service provides secret access key for the application to connect and do the necessary upload/download operations. To be provided when `minio.local_setup=false` | + | env.aws_region | | | External S3 (or compatible) storage service providers creates any buckets in user selected region. This is also shared with the user as region for the application to connect and do the necessary upload/download operations. To be provided when `minio.local_setup=false` | + | env.aws_s3_endpoint_url | | | External S3 (or compatible) storage service providers shares a endpoint_url for the integration purpose for the application to connect and do the necessary upload/download operations. To be provided when minio.`local_setup=false` | + | minio.storageClass | `` | | Creating the persitant volumes for the stateful deployments needs the storageClass name. Set the correct value as per your kubernetes cluster configuration. | + | minio.assign_cluster_ip | false | | Set it to true if you want to assign ClusterIP to the service | + | minio.nodeSelector | {} | | This key allows you to set the node selector for the stateful deployment of minio. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | + | minio.tolerations | [] | | This key allows you to set the tolerations for the stateful deployment of minio. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | + | minio.affinity | {} | | This key allows you to set the affinity rules for the stateful deployment of minio. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | + | minio.labels | {} | | This key allows you to set custom labels for the stateful deployment of minio. This is useful for organizing and selecting resources in your Kubernetes cluster. | + | minio.annotations | {} | | This key allows you to set custom annotations for the stateful deployment of minio. This is useful for adding metadata or configuration hints to your resources. | + + ##### Web Deployment + + | Setting | Default | Required | Description | + |---------|---------|----------|-------------| + | web.replicas | 1 | Yes | Kubernetes helps you with scaling up/down the deployments. You can run 1 or more pods for each deployment. This key helps you setting up number of replicas you want to run for this deployment. It must be `>=1` | + | web.memoryLimit | 1000Mi | | Every deployment in kubernetes can be set to use maximum memory they are allowed to use. This key sets the memory limit for this deployment to use. | + | web.cpuLimit | 500m | | Every deployment in kubernetes can be set to use maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use. | + | web.memoryRequest | 50Mi | | Every deployment in kubernetes can be set to use minimum memory they are allowed to use. This key sets the memory request for this deployment to use. | + | web.cpuRequest | 50m | | Every deployment in kubernetes can be set to use minimum cpu they are allowed to use. This key sets the cpu request for this deployment to use. | + | web.image | artifacts.plane.so/makeplane/plane-frontend | | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment | + | web.pullPolicy | Always | | Using this key, user can set the pull policy for the deployment of web. | + | web.assign_cluster_ip | false | | Set it to true if you want to assign ClusterIP to the service | + | web.nodeSelector | {} | | This key allows you to set the node selector for the deployment of web. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | + | web.tolerations | [] | | This key allows you to set the tolerations for the deployment of web. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | + | web.affinity | {} | | This key allows you to set the affinity rules for the deployment of web. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | + | web.labels | {} | | Custom labels to add to the web deployment | + | web.annotations | {} | | Custom annotations to add to the web deployment | + + ##### Space Deployment + + | Setting | Default | Required | Description | + |---------|---------|----------|-------------| + | space.replicas | 1 | Yes | Kubernetes helps you with scaling up/down the deployments. You can run 1 or more pods for each deployment. This key helps you setting up number of replicas you want to run for this deployment. It must be `>=1` | + | space.memoryLimit | 1000Mi | | Every deployment in kubernetes can be set to use maximum memory they are allowed to use. This key sets the memory limit for this deployment to use. | + | space.cpuLimit | 500m | | Every deployment in kubernetes can be set to use maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use. | + | space.memoryRequest | 50Mi | | Every deployment in kubernetes can be set to use minimum memory they are allowed to use. This key sets the memory request for this deployment to use. | + | space.cpuRequest | 50m | | Every deployment in kubernetes can be set to use minimum cpu they are allowed to use. This key sets the cpu request for this deployment to use. | + | space.image | artifacts.plane.so/makeplane/plane-space | | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment | + | space.pullPolicy | Always | | Using this key, user can set the pull policy for the deployment of space. | + | space.assign_cluster_ip | false | | Set it to true if you want to assign ClusterIP to the service | + | space.nodeSelector | {} | | This key allows you to set the node selector for the deployment of space. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | + | space.tolerations | [] | | This key allows you to set the tolerations for the deployment of space. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | + | space.affinity | {} | | This key allows you to set the affinity rules for the deployment of space. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | + | space.labels | {} | | Custom labels to add to the space deployment | + | space.annotations | {} | | Custom annotations to add to the space deployment | + + ##### Admin Deployment + + | Setting | Default | Required | Description | + |---------|---------|----------|-------------| + | admin.replicas | 1 | Yes | Kubernetes helps you with scaling up/down the deployments. You can run 1 or more pods for each deployment. This key helps you setting up number of replicas you want to run for this deployment. It must be `>=1` | + | admin.memoryLimit | 1000Mi | | Every deployment in kubernetes can be set to use maximum memory they are allowed to use. This key sets the memory limit for this deployment to use. | + | admin.cpuLimit | 500m | | Every deployment in kubernetes can be set to use maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use. | + | admin.memoryRequest | 50Mi | | Every deployment in kubernetes can be set to use minimum memory they are allowed to use. This key sets the memory request for this deployment to use. | + | admin.cpuRequest | 50m | | Every deployment in kubernetes can be set to use minimum cpu they are allowed to use. This key sets the cpu request for this deployment to use. | + | admin.image | artifacts.plane.so/makeplane/plane-admin | | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment | + | admin.pullPolicy | Always | | Using this key, user can set the pull policy for the deployment of admin. | + | admin.assign_cluster_ip | false | | Set it to true if you want to assign ClusterIP to the service | + | admin.nodeSelector | {} | | This key allows you to set the node selector for the deployment of admin. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | + | admin.tolerations | [] | | This key allows you to set the tolerations for the deployment of admin. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | + | admin.affinity | {} | | This key allows you to set the affinity rules for the deployment of admin. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | + | admin.labels | {} | | Custom labels to add to the admin deployment | + | admin.annotations | {} | | Custom annotations to add to the admin deployment | + + ##### Live Service Deployment + + | Setting | Default | Required | Description | + |---------|---------|----------|-------------| + | live.replicas | 1 | Yes | Kubernetes helps you with scaling up/down the deployments. You can run 1 or more pods for each deployment. This key helps you setting up number of replicas you want to run for this deployment. It must be `>=1` | + | live.memoryLimit | 1000Mi | | Every deployment in kubernetes can be set to use maximum memory they are allowed to use. This key sets the memory limit for this deployment to use. | + | live.cpuLimit | 500m | | Every deployment in kubernetes can be set to use maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use. | + | live.memoryRequest | 50Mi | | Every deployment in kubernetes can be set to use minimum memory they are allowed to use. This key sets the memory request for this deployment to use. | + | live.cpuRequest | 50m | | Every deployment in kubernetes can be set to use minimum cpu they are allowed to use. This key sets the cpu request for this deployment to use. | + | live.image | artifacts.plane.so/makeplane/plane-live | | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment | + | live.pullPolicy | Always | | Using this key, user can set the pull policy for the deployment of live. | + | live.assign_cluster_ip | false | | Set it to true if you want to assign ClusterIP to the service | + | live.nodeSelector | {} | | This key allows you to set the node selector for the deployment of live. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | + | live.tolerations | [] | | This key allows you to set the tolerations for the deployment of live. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | + | live.affinity | {} | | This key allows you to set the affinity rules for the deployment of live. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | + | live_server_secret_key | htbqvBJAgpm9bzvf3r4urJer0ENReatceh | Yes | This key sets the secret key for the live server. This is required for secure communication and authentication in the live server component. | + | live.labels | {} | | Custom labels to add to the live deployment | + | live.annotations | {} | | Custom annotations to add to the live deployment | + + ##### API Deployment + + | Setting | Default | Required | Description | + |---------|---------|----------|-------------| + | api.replicas | 1 | Yes | Kubernetes helps you with scaling up/down the deployments. You can run 1 or more pods for each deployment. This key helps you setting up number of replicas you want to run for this deployment. It must be `>=1` | + | api.memoryLimit | 1000Mi | | Every deployment in kubernetes can be set to use maximum memory they are allowed to use. This key sets the memory limit for this deployment to use. | + | api.cpuLimit | 500m | | Every deployment in kubernetes can be set to use maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use. | + | api.memoryRequest | 50Mi | | Every deployment in kubernetes can be set to use minimum memory they are allowed to use. This key sets the memory request for this deployment to use. | + | api.cpuRequest | 50m | | Every deployment in kubernetes can be set to use minimum cpu they are allowed to use. This key sets the cpu request for this deployment to use. | + | api.image | artifacts.plane.so/makeplane/plane-backend | | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment | + | api.pullPolicy | Always | | Using this key, user can set the pull policy for the deployment of api. | + | env.sentry_dsn | | | (optional) API service deployment comes with some of the preconfigured integration. Sentry is one among those. Here user can set the Sentry provided DSN for this integration. | + | env.sentry_environment | | | (optional) API service deployment comes with some of the preconfigured integration. Sentry is one among those. Here user can set the Sentry environment name (as configured in Sentry) for this integration. | + | env.api_key_rate_limit | 60/minute | | (optional) User can set the maximum number of requests the API can handle in a given time frame. | + | api.assign_cluster_ip | false | | Set it to true if you want to assign ClusterIP to the service | + | api.nodeSelector | {} | | This key allows you to set the node selector for the deployment of api. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | + | api.tolerations | [] | | This key allows you to set the tolerations for the deployment of api. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | + | api.affinity | {} | | This key allows you to set the affinity rules for the deployment of api. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | + | api.labels | {} | | Custom labels to add to the API deployment | + | api.annotations | {} | | Custom annotations to add to the API deployment | + + ##### Worker Deployment + + | Setting | Default | Required | Description | + |---------|---------|----------|-------------| + | worker.replicas | 1 | Yes | Kubernetes helps you with scaling up/down the deployments. You can run 1 or more pods for each deployment. This key helps you setting up number of replicas you want to run for this deployment. It must be `>=1` | + | worker.memoryLimit | 1000Mi | | Every deployment in kubernetes can be set to use maximum memory they are allowed to use. This key sets the memory limit for this deployment to use. | + | worker.cpuLimit | 500m | | Every deployment in kubernetes can be set to use maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use. | + | worker.memoryRequest | 50Mi | | Every deployment in kubernetes can be set to use minimum memory they are allowed to use. This key sets the memory request for this deployment to use. | + | worker.cpuRequest | 50m | | Every deployment in kubernetes can be set to use minimum cpu they are allowed to use. This key sets the cpu request for this deployment to use. | + | worker.image | artifacts.plane.so/makeplane/plane-backend | | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment | + | worker.nodeSelector | {} | | This key allows you to set the node selector for the deployment of worker. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | + | worker.tolerations | [] | | This key allows you to set the tolerations for the deployment of worker. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | + | worker.affinity | {} | | This key allows you to set the affinity rules for the deployment of worker. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | + | worker.labels | {} | | Custom labels to add to the worker deployment | + | worker.annotations | {} | | Custom annotations to add to the worker deployment | + + ##### Beat-Worker Deployment + + | Setting | Default | Required | Description | + |---------|---------|----------|-------------| + | beatworker.replicas | 1 | Yes | Kubernetes helps you with scaling up/down the deployments. You can run 1 or more pods for each deployment. This key helps you setting up number of replicas you want to run for this deployment. It must be `>=1` | + | beatworker.memoryLimit | 1000Mi | | Every deployment in kubernetes can be set to use maximum memory they are allowed to use. This key sets the memory limit for this deployment to use. | + | beatworker.cpuLimit | 500m | | Every deployment in kubernetes can be set to use maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use. | + | beatworker.memoryRequest | 50Mi | | Every deployment in kubernetes can be set to use minimum memory they are allowed to use. This key sets the memory request for this deployment to use. | + | beatworker.cpuRequest | 50m | | Every deployment in kubernetes can be set to use minimum cpu they are allowed to use. This key sets the cpu request for this deployment to use. | + | beatworker.image | artifacts.plane.so/makeplane/plane-backend | | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment | + | beatworker.nodeSelector | {} | | This key allows you to set the node selector for the deployment of beatworker. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | + | beatworker.tolerations | [] | | This key allows you to set the tolerations for the deployment of beatworker. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | + | beatworker.affinity | {} | | This key allows you to set the affinity rules for the deployment of beatworker. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | + | beatworker.labels | {} | | Custom labels to add to the beat-worker deployment | + | beatworker.annotations | {} | | Custom annotations to add to the beat-worker deployment | + + ##### Common Environment Settings + + | Setting | Default | Required | Description | + |---------|---------|----------|-------------| + | env.secret_key | 60gp0byfz2dvffa45cxl20p1scy9xbpf6d8c5y0geejgkyp1b5 | Yes | This must a random string which is used for hashing/encrypting the sensitive data within the application. Once set, changing this might impact the already hashed/encrypted data | + | env.default_cluster_domain | cluster.local | Yes | Set this value as configured in your kubernetes cluster. cluster.local is usally the default in most cases. | - ::: tip - 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. - - ```bash - helm install plane-app makeplane/plane-ce \ - --create-namespace \ - --namespace plane-ce \ - --set planeVersion=stable \ - --set ingress.appHost="plane.example.com" \ - --set ingress.minioHost="plane-minio.example.com" \ - --set ingress.ingressClass=nginx \ - --set postgres.storageClass=longhorn \ - --set redis.storageClass=longhorn \ - --set minio.storageClass=longhorn \ - --timeout 10m \ - --wait \ - --wait-for-jobs - ``` - - ::: tip - 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. - - ```bash - helm show values makeplane/plane-ce > values.yaml - vi values.yaml - ``` - - ::: tip - See **Configuration settings** below 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. - - ```bash - helm install plane-app makeplane/plane-ce \ - --create-namespace \ - --namespace plane-ce \ - -f values.yaml \ - --timeout 10m \ - --wait \ - --wait-for-jobs - ``` - - #### Configuration settings - - ##### Plane Version - - | Setting | Default | Required | Description | - |---------|---------|----------|-------------| - | planeVersion | v1.1.0 | Yes | | - - ##### Postgres DB Setup - - | Setting | Default | Required | Description | - |---------|---------|----------|-------------| - | postgres.local_setup | true | | Plane uses postgres as the primary database to store all the transactional data. This database can be hosted within kubernetes as part of helm chart deployment or can be used as hosted service remotely (e.g. aws rds or similar services). Set this to true when you choose to setup stateful deployment of postgres. Mark it as false when using a remotely hosted database | - | postgres.image | postgres:15.7-alpine | | Using this key, user must provide the docker image name to setup the stateful deployment of postgres. (must be set when `postgres.local_setup=true`) | - | postgres.pullPolicy | IfNotPresent | | Using this key, user can set the pull policy for the stateful deployment of postgres. (must be set when `postgres.local_setup=true`) | - | postgres.servicePort | 5432 | | This key sets the default port number to be used while setting up stateful deployment of postgres. | - | postgres.volumeSize | 5Gi | | While setting up the stateful deployment, while creating the persistant volume, volume allocation size need to be provided. This key helps you set the volume allocation size. Unit of this value must be in Mi (megabyte) or Gi (gigabyte) | - | env.pgdb_username | plane | | Database credentials are requried to access the hosted stateful deployment of postgres. Use this key to set the username for the stateful deployment. | - | env.pgdb_password | plane | | Database credentials are requried to access the hosted stateful deployment of postgres. Use this key to set the password for the stateful deployment. | - | env.pgdb_name | plane | | Database name to be used while setting up stateful deployment of Postgres | - | env.pgdb_remote_url | | | Users can also decide to use the remote hosted database and link to Plane deployment. Ignoring all the above keys, set postgres.local_setup to false and set this key with remote connection url. | - | postgres.storageClass | `` | | Creating the persitant volumes for the stateful deployments needs the storageClass name. Set the correct value as per your kubernetes cluster configuration. | - | postgres.assign_cluster_ip | false | | Set it to true if you want to assign ClusterIP to the service | - | postgres.nodeSelector | {} | | This key allows you to set the node selector for the stateful deployment of postgres. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | - | postgres.tolerations | [] | | This key allows you to set the tolerations for the stateful deployment of postgres. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | - | postgres.affinity | {} | | This key allows you to set the affinity rules for the stateful deployment of postgres. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | - | postgres.labels | {} | | This key allows you to set custom labels for the stateful deployment of postgres. This is useful for organizing and selecting resources in your Kubernetes cluster. | - | postgres.annotations | {} | | This key allows you to set custom annotations for the stateful deployment of postgres. This is useful for adding metadata or configuration hints to your resources. | - - ##### Redis/Valkey Setup - - | Setting | Default | Required | Description | - |---------|---------|----------|-------------| - | redis.local_setup | true | | Plane uses redis to cache the session authentication and other static data. This database can be hosted within kubernetes as part of helm chart deployment or can be used as hosted service remotely (e.g. aws rds or similar services). Set this to true when you choose to setup stateful deployment of redis. Mark it as false when using a remotely hosted database | - | redis.image | `valkey/valkey:7.2.5-alpine` | | Using this key, user must provide the docker image name to setup the stateful deployment of redis. (must be set when redis.local_setup=true) | - | redis.pullPolicy | IfNotPresent | | Using this key, user can set the pull policy for the stateful deployment of redis. (must be set when `redis.local_setup=true`) | - | redis.servicePort | 6379 | | This key sets the default port number to be used while setting up stateful deployment of redis. | - | redis.volumeSize | 1Gi | | While setting up the stateful deployment, while creating the persistant volume, volume allocation size need to be provided. This key helps you set the volume allocation size. Unit of this value must be in Mi (megabyte) or Gi (gigabyte) | - | env.remote_redis_url | | | Users can also decide to use the remote hosted database and link to Plane deployment. Ignoring all the above keys, set redis.local_setup to false and set this key with remote connection url. | - | redis.storageClass | `` | | Creating the persitant volumes for the stateful deployments needs the storageClass name. Set the correct value as per your kubernetes cluster configuration. | - | redis.assign_cluster_ip | false | | Set it to true if you want to assign ClusterIP to the service | - | redis.nodeSelector | {} | | This key allows you to set the node selector for the stateful deployment of redis. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | - | redis.tolerations | [] | | This key allows you to set the tolerations for the stateful deployment of redis. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | - | redis.affinity | {} | | This key allows you to set the affinity rules for the stateful deployment of redis. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | - | redis.labels | {} | | This key allows you to set custom labels for the stateful deployment of redis. This is useful for organizing and selecting resources in your Kubernetes cluster. | - | redis.annotations | {} | | This key allows you to set custom annotations for the stateful deployment of redis. This is useful for adding metadata or configuration hints to your resources. | - - ##### RabbitMQ Setup - - | Setting | Default | Required | Description | - |---------|---------|----------|-------------| - | rabbitmq.local_setup | true | | Plane uses rabbitmq as message queuing system. This can be hosted within kubernetes as part of helm chart deployment or can be used as hosted service remotely (e.g. aws mq or similar services). Set this to true when you choose to setup stateful deployment of rabbitmq. Mark it as false when using a remotely hosted service | - | rabbitmq.image | rabbitmq:3.13.6-management-alpine | | Using this key, user must provide the docker image name to setup the stateful deployment of rabbitmq. (must be set when `rabbitmq.local_setup=true`) | - | rabbitmq.pullPolicy | IfNotPresent | | Using this key, user can set the pull policy for the stateful deployment of rabbitmq. (must be set when `rabbitmq.local_setup=true`) | - | rabbitmq.servicePort | 5672 | | This key sets the default port number to be used while setting up stateful deployment of rabbitmq. | - | rabbitmq.managementPort | 15672 | | This key sets the default management port number to be used while setting up stateful deployment of rabbitmq. | - | rabbitmq.volumeSize | 100Mi | | While setting up the stateful deployment, while creating the persistant volume, volume allocation size need to be provided. This key helps you set the volume allocation size. Unit of this value must be in Mi (megabyte) or Gi (gigabyte) | - | rabbitmq.storageClass | `` | | Creating the persitant volumes for the stateful deployments needs the storageClass name. Set the correct value as per your kubernetes cluster configuration. | - | rabbitmq.default_user | plane | | Credentials are requried to access the hosted stateful deployment of rabbitmq. Use this key to set the username for the stateful deployment. | - | rabbitmq.default_password | plane | | Credentials are requried to access the hosted stateful deployment of rabbitmq. Use this key to set the password for the stateful deployment. | - | rabbitmq.assign_cluster_ip | false | | Set it to true if you want to assign ClusterIP to the service | - | rabbitmq.external_rabbitmq_url | | | Users can also decide to use the remote hosted service and link to Plane deployment. Ignoring all the above keys, set rabbitmq.local_setup to false and set this key with remote connection url. | - | rabbitmq.nodeSelector | {} | | This key allows you to set the node selector for the stateful deployment of rabbitmq. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | - | rabbitmq.tolerations | [] | | This key allows you to set the tolerations for the stateful deployment of rabbitmq. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | - | rabbitmq.affinity | {} | | This key allows you to set the affinity rules for the stateful deployment of rabbitmq. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | - | rabbitmq.labels | {} | | This key allows you to set custom labels for the stateful deployment of rabbitmq. This is useful for organizing and selecting resources in your Kubernetes cluster. | - | rabbitmq.annotations | {} | | This key allows you to set custom annotations for the stateful deployment of rabbitmq. This is useful for adding metadata or configuration hints to your resources. | - - ##### Doc Store (Minio/S3) Setup - - | Setting | Default | Required | Description | - |---------|---------|----------|-------------| - | minio.local_setup | true | | Plane uses minio as the default file storage drive. This storage can be hosted within kubernetes as part of helm chart deployment or can be used as hosted service remotely (e.g. aws S3 or similar services). Set this to true when you choose to setup stateful deployment of postgres. Mark it as false when using a remotely hosted database | - | minio.image | minio/minio:latest | | Using this key, user must provide the docker image name to setup the stateful deployment of minio. (must be set when `minio.local_setup=true`) | - | minio.image_mc | minio/mc:latest | | Using this key, user must provide the docker image name to setup the job deployment of minio client. (must be set when `minio.local_setup=true`) | - | minio.pullPolicy | IfNotPresent | | Using this key, user can set the pull policy for the stateful deployment of minio. (must be set when `minio.local_setup=true`) | - | minio.volumeSize | 5Gi | | While setting up the stateful deployment, while creating the persistant volume, volume allocation size need to be provided. This key helps you set the volume allocation size. Unit of this value must be in Mi (megabyte) or Gi (gigabyte) | - | minio.root_user | admin | | Storage credentials are requried to access the hosted stateful deployment of minio. Use this key to set the username for the stateful deployment. | - | minio.root_password | password | | Storage credentials are requried to access the hosted stateful deployment of minio. Use this key to set the password for the stateful deployment. | - | minio.env.minio_endpoint_ssl | false | | (Optional) Env to enforce HTTPS when connecting to minio uploads bucket | - | env.docstore_bucket | uploads | Yes | Storage bucket name is required as part of configuration. This is where files will be uploaded irrespective of if you are using Minio or external S3 (or compatible) storage service | - | env.doc_upload_size_limit | 5242880 | Yes | Document Upload Size Limit (default to 5Mb) | - | env.aws_access_key | | | External S3 (or compatible) storage service provides access key for the application to connect and do the necessary upload/download operations. To be provided when `minio.local_setup=false` | - | env.aws_secret_access_key | | | External S3 (or compatible) storage service provides secret access key for the application to connect and do the necessary upload/download operations. To be provided when `minio.local_setup=false` | - | env.aws_region | | | External S3 (or compatible) storage service providers creates any buckets in user selected region. This is also shared with the user as region for the application to connect and do the necessary upload/download operations. To be provided when `minio.local_setup=false` | - | env.aws_s3_endpoint_url | | | External S3 (or compatible) storage service providers shares a endpoint_url for the integration purpose for the application to connect and do the necessary upload/download operations. To be provided when minio.`local_setup=false` | - | minio.storageClass | `` | | Creating the persitant volumes for the stateful deployments needs the storageClass name. Set the correct value as per your kubernetes cluster configuration. | - | minio.assign_cluster_ip | false | | Set it to true if you want to assign ClusterIP to the service | - | minio.nodeSelector | {} | | This key allows you to set the node selector for the stateful deployment of minio. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | - | minio.tolerations | [] | | This key allows you to set the tolerations for the stateful deployment of minio. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | - | minio.affinity | {} | | This key allows you to set the affinity rules for the stateful deployment of minio. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | - | minio.labels | {} | | This key allows you to set custom labels for the stateful deployment of minio. This is useful for organizing and selecting resources in your Kubernetes cluster. | - | minio.annotations | {} | | This key allows you to set custom annotations for the stateful deployment of minio. This is useful for adding metadata or configuration hints to your resources. | - - ##### Web Deployment - - | Setting | Default | Required | Description | - |---------|---------|----------|-------------| - | web.replicas | 1 | Yes | Kubernetes helps you with scaling up/down the deployments. You can run 1 or more pods for each deployment. This key helps you setting up number of replicas you want to run for this deployment. It must be `>=1` | - | web.memoryLimit | 1000Mi | | Every deployment in kubernetes can be set to use maximum memory they are allowed to use. This key sets the memory limit for this deployment to use. | - | web.cpuLimit | 500m | | Every deployment in kubernetes can be set to use maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use. | - | web.memoryRequest | 50Mi | | Every deployment in kubernetes can be set to use minimum memory they are allowed to use. This key sets the memory request for this deployment to use. | - | web.cpuRequest | 50m | | Every deployment in kubernetes can be set to use minimum cpu they are allowed to use. This key sets the cpu request for this deployment to use. | - | web.image | artifacts.plane.so/makeplane/plane-frontend | | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment | - | web.pullPolicy | Always | | Using this key, user can set the pull policy for the deployment of web. | - | web.assign_cluster_ip | false | | Set it to true if you want to assign ClusterIP to the service | - | web.nodeSelector | {} | | This key allows you to set the node selector for the deployment of web. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | - | web.tolerations | [] | | This key allows you to set the tolerations for the deployment of web. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | - | web.affinity | {} | | This key allows you to set the affinity rules for the deployment of web. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | - | web.labels | {} | | Custom labels to add to the web deployment | - | web.annotations | {} | | Custom annotations to add to the web deployment | - - ##### Space Deployment - - | Setting | Default | Required | Description | - |---------|---------|----------|-------------| - | space.replicas | 1 | Yes | Kubernetes helps you with scaling up/down the deployments. You can run 1 or more pods for each deployment. This key helps you setting up number of replicas you want to run for this deployment. It must be `>=1` | - | space.memoryLimit | 1000Mi | | Every deployment in kubernetes can be set to use maximum memory they are allowed to use. This key sets the memory limit for this deployment to use. | - | space.cpuLimit | 500m | | Every deployment in kubernetes can be set to use maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use. | - | space.memoryRequest | 50Mi | | Every deployment in kubernetes can be set to use minimum memory they are allowed to use. This key sets the memory request for this deployment to use. | - | space.cpuRequest | 50m | | Every deployment in kubernetes can be set to use minimum cpu they are allowed to use. This key sets the cpu request for this deployment to use. | - | space.image | artifacts.plane.so/makeplane/plane-space | | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment | - | space.pullPolicy | Always | | Using this key, user can set the pull policy for the deployment of space. | - | space.assign_cluster_ip | false | | Set it to true if you want to assign ClusterIP to the service | - | space.nodeSelector | {} | | This key allows you to set the node selector for the deployment of space. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | - | space.tolerations | [] | | This key allows you to set the tolerations for the deployment of space. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | - | space.affinity | {} | | This key allows you to set the affinity rules for the deployment of space. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | - | space.labels | {} | | Custom labels to add to the space deployment | - | space.annotations | {} | | Custom annotations to add to the space deployment | - - ##### Admin Deployment - - | Setting | Default | Required | Description | - |---------|---------|----------|-------------| - | admin.replicas | 1 | Yes | Kubernetes helps you with scaling up/down the deployments. You can run 1 or more pods for each deployment. This key helps you setting up number of replicas you want to run for this deployment. It must be `>=1` | - | admin.memoryLimit | 1000Mi | | Every deployment in kubernetes can be set to use maximum memory they are allowed to use. This key sets the memory limit for this deployment to use. | - | admin.cpuLimit | 500m | | Every deployment in kubernetes can be set to use maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use. | - | admin.memoryRequest | 50Mi | | Every deployment in kubernetes can be set to use minimum memory they are allowed to use. This key sets the memory request for this deployment to use. | - | admin.cpuRequest | 50m | | Every deployment in kubernetes can be set to use minimum cpu they are allowed to use. This key sets the cpu request for this deployment to use. | - | admin.image | artifacts.plane.so/makeplane/plane-admin | | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment | - | admin.pullPolicy | Always | | Using this key, user can set the pull policy for the deployment of admin. | - | admin.assign_cluster_ip | false | | Set it to true if you want to assign ClusterIP to the service | - | admin.nodeSelector | {} | | This key allows you to set the node selector for the deployment of admin. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | - | admin.tolerations | [] | | This key allows you to set the tolerations for the deployment of admin. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | - | admin.affinity | {} | | This key allows you to set the affinity rules for the deployment of admin. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | - | admin.labels | {} | | Custom labels to add to the admin deployment | - | admin.annotations | {} | | Custom annotations to add to the admin deployment | - - ##### Live Service Deployment - - | Setting | Default | Required | Description | - |---------|---------|----------|-------------| - | live.replicas | 1 | Yes | Kubernetes helps you with scaling up/down the deployments. You can run 1 or more pods for each deployment. This key helps you setting up number of replicas you want to run for this deployment. It must be `>=1` | - | live.memoryLimit | 1000Mi | | Every deployment in kubernetes can be set to use maximum memory they are allowed to use. This key sets the memory limit for this deployment to use. | - | live.cpuLimit | 500m | | Every deployment in kubernetes can be set to use maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use. | - | live.memoryRequest | 50Mi | | Every deployment in kubernetes can be set to use minimum memory they are allowed to use. This key sets the memory request for this deployment to use. | - | live.cpuRequest | 50m | | Every deployment in kubernetes can be set to use minimum cpu they are allowed to use. This key sets the cpu request for this deployment to use. | - | live.image | artifacts.plane.so/makeplane/plane-live | | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment | - | live.pullPolicy | Always | | Using this key, user can set the pull policy for the deployment of live. | - | live.assign_cluster_ip | false | | Set it to true if you want to assign ClusterIP to the service | - | live.nodeSelector | {} | | This key allows you to set the node selector for the deployment of live. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | - | live.tolerations | [] | | This key allows you to set the tolerations for the deployment of live. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | - | live.affinity | {} | | This key allows you to set the affinity rules for the deployment of live. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | - | live_server_secret_key | htbqvBJAgpm9bzvf3r4urJer0ENReatceh | Yes | This key sets the secret key for the live server. This is required for secure communication and authentication in the live server component. | - | live.labels | {} | | Custom labels to add to the live deployment | - | live.annotations | {} | | Custom annotations to add to the live deployment | - - ##### API Deployment - - | Setting | Default | Required | Description | - |---------|---------|----------|-------------| - | api.replicas | 1 | Yes | Kubernetes helps you with scaling up/down the deployments. You can run 1 or more pods for each deployment. This key helps you setting up number of replicas you want to run for this deployment. It must be `>=1` | - | api.memoryLimit | 1000Mi | | Every deployment in kubernetes can be set to use maximum memory they are allowed to use. This key sets the memory limit for this deployment to use. | - | api.cpuLimit | 500m | | Every deployment in kubernetes can be set to use maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use. | - | api.memoryRequest | 50Mi | | Every deployment in kubernetes can be set to use minimum memory they are allowed to use. This key sets the memory request for this deployment to use. | - | api.cpuRequest | 50m | | Every deployment in kubernetes can be set to use minimum cpu they are allowed to use. This key sets the cpu request for this deployment to use. | - | api.image | artifacts.plane.so/makeplane/plane-backend | | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment | - | api.pullPolicy | Always | | Using this key, user can set the pull policy for the deployment of api. | - | env.sentry_dsn | | | (optional) API service deployment comes with some of the preconfigured integration. Sentry is one among those. Here user can set the Sentry provided DSN for this integration. | - | env.sentry_environment | | | (optional) API service deployment comes with some of the preconfigured integration. Sentry is one among those. Here user can set the Sentry environment name (as configured in Sentry) for this integration. | - | env.api_key_rate_limit | 60/minute | | (optional) User can set the maximum number of requests the API can handle in a given time frame. | - | api.assign_cluster_ip | false | | Set it to true if you want to assign ClusterIP to the service | - | api.nodeSelector | {} | | This key allows you to set the node selector for the deployment of api. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | - | api.tolerations | [] | | This key allows you to set the tolerations for the deployment of api. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | - | api.affinity | {} | | This key allows you to set the affinity rules for the deployment of api. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | - | api.labels | {} | | Custom labels to add to the API deployment | - | api.annotations | {} | | Custom annotations to add to the API deployment | - - ##### Worker Deployment - - | Setting | Default | Required | Description | - |---------|---------|----------|-------------| - | worker.replicas | 1 | Yes | Kubernetes helps you with scaling up/down the deployments. You can run 1 or more pods for each deployment. This key helps you setting up number of replicas you want to run for this deployment. It must be `>=1` | - | worker.memoryLimit | 1000Mi | | Every deployment in kubernetes can be set to use maximum memory they are allowed to use. This key sets the memory limit for this deployment to use. | - | worker.cpuLimit | 500m | | Every deployment in kubernetes can be set to use maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use. | - | worker.memoryRequest | 50Mi | | Every deployment in kubernetes can be set to use minimum memory they are allowed to use. This key sets the memory request for this deployment to use. | - | worker.cpuRequest | 50m | | Every deployment in kubernetes can be set to use minimum cpu they are allowed to use. This key sets the cpu request for this deployment to use. | - | worker.image | artifacts.plane.so/makeplane/plane-backend | | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment | - | worker.nodeSelector | {} | | This key allows you to set the node selector for the deployment of worker. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | - | worker.tolerations | [] | | This key allows you to set the tolerations for the deployment of worker. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | - | worker.affinity | {} | | This key allows you to set the affinity rules for the deployment of worker. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | - | worker.labels | {} | | Custom labels to add to the worker deployment | - | worker.annotations | {} | | Custom annotations to add to the worker deployment | - - ##### Beat-Worker Deployment - - | Setting | Default | Required | Description | - |---------|---------|----------|-------------| - | beatworker.replicas | 1 | Yes | Kubernetes helps you with scaling up/down the deployments. You can run 1 or more pods for each deployment. This key helps you setting up number of replicas you want to run for this deployment. It must be `>=1` | - | beatworker.memoryLimit | 1000Mi | | Every deployment in kubernetes can be set to use maximum memory they are allowed to use. This key sets the memory limit for this deployment to use. | - | beatworker.cpuLimit | 500m | | Every deployment in kubernetes can be set to use maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use. | - | beatworker.memoryRequest | 50Mi | | Every deployment in kubernetes can be set to use minimum memory they are allowed to use. This key sets the memory request for this deployment to use. | - | beatworker.cpuRequest | 50m | | Every deployment in kubernetes can be set to use minimum cpu they are allowed to use. This key sets the cpu request for this deployment to use. | - | beatworker.image | artifacts.plane.so/makeplane/plane-backend | | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment | - | beatworker.nodeSelector | {} | | This key allows you to set the node selector for the deployment of beatworker. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | - | beatworker.tolerations | [] | | This key allows you to set the tolerations for the deployment of beatworker. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | - | beatworker.affinity | {} | | This key allows you to set the affinity rules for the deployment of beatworker. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | - | beatworker.labels | {} | | Custom labels to add to the beat-worker deployment | - | beatworker.annotations | {} | | Custom annotations to add to the beat-worker deployment | - - ##### Common Environment Settings - - | Setting | Default | Required | Description | - |---------|---------|----------|-------------| - | env.secret_key | 60gp0byfz2dvffa45cxl20p1scy9xbpf6d8c5y0geejgkyp1b5 | Yes | This must a random string which is used for hashing/encrypting the sensitive data within the application. Once set, changing this might impact the already hashed/encrypted data | - | env.default_cluster_domain | cluster.local | Yes | Set this value as configured in your kubernetes cluster. cluster.local is usally the default in most cases. | -::: \ No newline at end of file diff --git a/docs/self-hosting/methods/portainer.md b/docs/self-hosting/methods/portainer.md index a0a2f589..2aea1229 100644 --- a/docs/self-hosting/methods/portainer.md +++ b/docs/self-hosting/methods/portainer.md @@ -4,7 +4,6 @@ description: Learn how to deploy plane with portainer for self-hosted Plane. Com keywords: plane, self-hosting, deployment, plane installation --- - # Deploy Plane with Portainer This guide shows you the steps to deploy a self-hosted instance of Plane using Portainer. @@ -12,23 +11,24 @@ This guide shows you the steps to deploy a self-hosted instance of Plane using P ## Install Plane ### Prerequisites - - Before you get started, make sure you have a Portainer environment set up and ready to go. - - Your setup should support either amd64 or arm64 architectures. + +- Before you get started, make sure you have a Portainer environment set up and ready to go. +- Your setup should support either amd64 or arm64 architectures. ### Procedure -1. **Download the required depoyment files** - - `portainer-compose.yml` – Defines Plane's services and dependencies. - ```bash - curl -fsSL https://prime.plane.so/releases//portainer-compose.yml -o portainer-compose.yml - ``` - - `variables.env` – Stores environment variables for your deployment. - ```bash - curl -fsSL https://prime.plane.so/releases//variables.env -o plane.env - ``` - ::: warning - The `` value should be v1.8.2 or higher. - ::: +1. **Download the required depoyment files** + - `portainer-compose.yml` – Defines Plane's services and dependencies. + ```bash + curl -fsSL https://prime.plane.so/releases//portainer-compose.yml -o portainer-compose.yml + ``` + - `variables.env` – Stores environment variables for your deployment. + ```bash + curl -fsSL https://prime.plane.so/releases//variables.env -o plane.env + ``` + ::: warning + The `` value should be v1.8.2 or higher. + ::: 2. Click **+ Add stack** on Portainer. @@ -37,25 +37,24 @@ This guide shows you the steps to deploy a self-hosted instance of Plane using P 4. Load environment variables from the `variables.env` file. 5. **Configure environment variables** - Before deploying, edit the following variables: - - - `DOMAIN_NAME` – (required) Your application's domain name. - - `SITE_ADDRESS` – (required) The full domain name (FQDN) of your instance. - - `MACHINE_SIGNATURE` – (required) A unique identifier for your machine. You can generate this by running below code in terminal: - ```sh - sed -i 's/MACHINE_SIGNATURE=.*/MACHINE_SIGNATURE='$(openssl rand -hex 16)'/' plane.env - ``` - - `CERT_EMAIL` – (optional) Email address for SSL certificate generation (only needed if you're setting up HTTPS). + Before deploying, edit the following variables: + - `DOMAIN_NAME` – (required) Your application's domain name. + - `SITE_ADDRESS` – (required) The full domain name (FQDN) of your instance. + - `MACHINE_SIGNATURE` – (required) A unique identifier for your machine. You can generate this by running below code in terminal: + ```sh + sed -i 's/MACHINE_SIGNATURE=.*/MACHINE_SIGNATURE='$(openssl rand -hex 16)'/' plane.env + ``` + - `CERT_EMAIL` – (optional) Email address for SSL certificate generation (only needed if you're setting up HTTPS). 6. **Configure external DB, Redis, and RabbitMQ** - ::: warning - 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. - ::: + ::: warning + 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. + ::: - `DATABASE_URL` – Connection string for your external database. - `REDIS_URL` – Connection string for your external Redis instance. - `AMQP_URL` – Connection string for your external RabbitMQ server. 7. Click **Deploy the stack**. - That's it! Once the deployment is complete, Plane should be up and running on your configured domain. + That's it! Once the deployment is complete, Plane should be up and running on your configured domain. -8. If you've purchased a paid plan, [activate your license key](/self-hosting/manage/manage-licenses/activate-pro-and-business#activate-your-license) to unlock premium features. \ No newline at end of file +8. If you've purchased a paid plan, [activate your license key](/self-hosting/manage/manage-licenses/activate-pro-and-business#activate-your-license) to unlock premium features. diff --git a/docs/self-hosting/upgrade-from-community.md b/docs/self-hosting/upgrade-from-community.md index 54bde2bb..9863590e 100644 --- a/docs/self-hosting/upgrade-from-community.md +++ b/docs/self-hosting/upgrade-from-community.md @@ -4,7 +4,6 @@ description: Upgrade self-hosted Plane to the latest version. Step-by-step guide keywords: plane, self-hosting, deployment, plane installation, upgrade, migration, update --- - # Upgrade from Community to Commercial Edition The Commercial edition comes with the free plan and the flexibility to upgrade to a paid plan at any point. @@ -13,61 +12,66 @@ The Commercial edition comes with the free plan and the flexibility to upgrade t > The instructions provided on this page are specific to installations using Docker. If you are running Plane on Kubernetes, you'll need to manually create a database dump and back up your file storage by copying the relevant volumes or storage paths. ## Prerequisites + - Install the [Commercial Edition](/self-hosting/methods/docker-compose#install-plane) on a fresh machine, not the one running the Plane Community Edition. - Be sure to log in as the root user or as a user with sudo access. The `/opt` folder requires sudo or root privileges. - :::tabs key:upgrade-options == Standard setup (built-in DB & storage) {#standard-setup} This upgrade path is for installations using Plane's default PostgreSQL database and MinIO object storage. - ## Back up data on Community instance + 1. Download the latest version of `setup.sh`. - ```bash - curl -fsSL https://github.com/makeplane/plane/releases/latest/download/setup.sh -o setup.sh - ``` + + ```bash + curl -fsSL https://github.com/makeplane/plane/releases/latest/download/setup.sh -o setup.sh + ``` 2. Run the setup.sh backup script to take the backup of the Community Edition instance. - ```bash - ./setup.sh backup - ``` + + ```bash + ./setup.sh backup + ``` 3. When done, your data will be backed up to the folder shown on the screen. e.g., `/plane-selfhost/plane-app/backup/20240522-1027` - This folder will contain 3 `tar.gz` files. - - `pgdata.tar.gz` - - `redisdata.tar.gz` - - `uploads.tar.gz` + This folder will contain 3 `tar.gz` files. + - `pgdata.tar.gz` + - `redisdata.tar.gz` + - `uploads.tar.gz` 4. Copy all the three files from the server running the Community Edition to any folder on the server running the Commercial Edition. - e.g., `~/ce-backup` + e.g., `~/ce-backup` ## Restore data on Commercial instance + 1. Start any command-line interface like Terminal and go into the folder with the back-up files. - ``` - cd ~/ce-backup - ``` + ``` + cd ~/ce-backup + ``` 2. Copy and paste the script below on Terminal and hit Enter. - ``` - TARGET_DIR=/opt/plane/data - sudo mkdir -p $TARGET_DIR - for FILE in *.tar.gz; do - if [ -e "$FILE" ]; then - tar -xzvf "$FILE" -C "$TARGET_DIR" - else - echo "No .tar.gz files found in the current directory." - exit 1 - fi - done - - mv $TARGET_DIR/pgdata/ $TARGET_DIR/db - mv $TARGET_DIR/redisdata/ $TARGET_DIR/redis - mkdir -p $TARGET_DIR/minio - mv $TARGET_DIR/uploads/ $TARGET_DIR/minio/uploads/ - ``` + + ``` + TARGET_DIR=/opt/plane/data + sudo mkdir -p $TARGET_DIR + for FILE in *.tar.gz; do + if [ -e "$FILE" ]; then + tar -xzvf "$FILE" -C "$TARGET_DIR" + else + echo "No .tar.gz files found in the current directory." + exit 1 + fi + done + + mv $TARGET_DIR/pgdata/ $TARGET_DIR/db + mv $TARGET_DIR/redisdata/ $TARGET_DIR/redis + mkdir -p $TARGET_DIR/minio + mv $TARGET_DIR/uploads/ $TARGET_DIR/minio/uploads/ + ``` + 3. This script will extract your Community Edition data and restore it to `/opt/plane/data`. == Managed services (external DB and storage) {#managed-services} @@ -76,39 +80,36 @@ This upgrade path is for installations using external or managed database and ob ## Update configuration for Commercial Edition -1. Open the `plane.env` file located at `/opt/plane/plane.env`. - -2. Configure database connection. +1. Open the `plane.env` file located at `/opt/plane/plane.env`. +2. Configure database connection. 1. Find the `DATABASE_URL` environment variable. 2. Verify it points to your external database: - ```env - DATABASE_URL=postgresql://user:password@your-db-host:5432/plane - ``` - - If you need to change it, update the value with your managed database connection string. - -3. Configure object storage - - 1. Find the `#DATASTORE SETTINGS` section in `plane.env` - 2. Update these environment variables for your external storage: - ```env - USE_MINIO=0 - AWS_REGION=us-east-1 - AWS_ACCESS_KEY_ID= - AWS_SECRET_ACCESS_KEY= - AWS_S3_ENDPOINT_URL=https://s3.amazonaws.com - AWS_S3_BUCKET_NAME=plane-uploads - ``` - - :::info - Setting `USE_MINIO=0` disables the local MinIO service and enables external object storage (S3 or S3-compatible services). - ::: - 3. Restart Plane services to apply the configuration: - ```bash - prime-cli restart - ``` + ```ini + DATABASE_URL=postgresql://user:password@your-db-host:5432/plane + ``` + + If you need to change it, update the value with your managed database connection string. + +3. Configure object storage 1. Find the `#DATASTORE SETTINGS` section in `plane.env` 2. Update these environment variables for your external storage: + `env +USE_MINIO=0 +AWS_REGION=us-east-1 +AWS_ACCESS_KEY_ID= +AWS_SECRET_ACCESS_KEY= +AWS_S3_ENDPOINT_URL=https://s3.amazonaws.com +AWS_S3_BUCKET_NAME=plane-uploads +` + + :::info + Setting `USE_MINIO=0` disables the local MinIO service and enables external object storage (S3 or S3-compatible services). + ::: + + 3. Restart Plane services to apply the configuration: + ```bash + prime-cli restart + ``` Your Commercial Edition instance is now connected to your existing external database and storage. @@ -116,4 +117,4 @@ Your Commercial Edition instance is now connected to your existing external data ## What's next -- [Activate a paid plan license](/self-hosting/manage/manage-licenses/activate-pro-and-business). \ No newline at end of file +- [Activate a paid plan license](/self-hosting/manage/manage-licenses/activate-pro-and-business). From 94b905d129f8a7ba89b25f7c0d0854d56f0dc24a Mon Sep 17 00:00:00 2001 From: sriramveeraghanta Date: Thu, 5 Feb 2026 20:28:19 +0530 Subject: [PATCH 12/12] fix: formatting --- .../govern/configure-dns-email-service.md | 114 +++++++++--------- docs/self-hosting/govern/custom-domain.md | 9 +- docs/self-hosting/methods/coolify.md | 12 +- docs/self-hosting/upgrade-from-community.md | 87 +++++++------ 4 files changed, 112 insertions(+), 110 deletions(-) diff --git a/docs/self-hosting/govern/configure-dns-email-service.md b/docs/self-hosting/govern/configure-dns-email-service.md index 801afcfd..0d306b5b 100644 --- a/docs/self-hosting/govern/configure-dns-email-service.md +++ b/docs/self-hosting/govern/configure-dns-email-service.md @@ -47,90 +47,94 @@ Before configuring DNS records for Intake Email, secure your email domain with a 2. **Generate SSL Certificate** Choose the method that matches your web server setup: - For NGINX: - ```bash - sudo certbot --nginx -d - ``` + For NGINX: + + ```bash + sudo certbot --nginx -d + ``` + + For Apache: - For Apache: - ```bash - sudo certbot --apache -d - ``` + ```bash + sudo certbot --apache -d + ``` + + For standalone (no web server): - For standalone (no web server): - ```bash - sudo certbot certonly --standalone -d - ``` + ```bash + sudo certbot certonly --standalone -d + ``` 3. **Copy Certificate Files** Copy the generated certificate files to Plane's expected directory: - ```bash - sudo cp /etc/letsencrypt/live//fullchain.pem /opt/plane/data/email/tls/cert.pem - sudo cp /etc/letsencrypt/live//privkey.pem /opt/plane/data/email/tls/key.pem - ``` + ```bash + sudo cp /etc/letsencrypt/live//fullchain.pem /opt/plane/data/email/tls/cert.pem + sudo cp /etc/letsencrypt/live//privkey.pem /opt/plane/data/email/tls/key.pem + ``` 4. **Configure Environment Variables** Add the following settings to your plane.env file: - ```bash - # If using SMTP_DOMAIN as FQDN (e.g., intake.example.com), - # generate a valid SSL certificate and set these paths accordingly. - SMTP_DOMAIN=intake.example.com - TLS_CERT_PATH=tls/cert.pem - TLS_PRIV_KEY_PATH=tls/key.pem - INTAKE_EMAIL_DOMAIN=intake.example.com - ``` + ```bash + # If using SMTP_DOMAIN as FQDN (e.g., intake.example.com), + # generate a valid SSL certificate and set these paths accordingly. + SMTP_DOMAIN=intake.example.com + TLS_CERT_PATH=tls/cert.pem + TLS_PRIV_KEY_PATH=tls/key.pem + INTAKE_EMAIL_DOMAIN=intake.example.com + ``` - ::: warning - Important: `SMTP_DOMAIN` and `INTAKE_EMAIL_DOMAIN` must be identical. - ::: + ::: warning + Important: `SMTP_DOMAIN` and `INTAKE_EMAIL_DOMAIN` must be identical. + ::: ## Configure DNS records 1. **Create an A Record** This record points to the server running your email service. - ```bash - Type: A - Host: # Example: plane.example.com - Value: # Your server's public IP address - TTL: Auto | 3600 - ``` + ```bash + Type: A + Host: # Example: plane.example.com + Value: # Your server's public IP address + TTL: Auto | 3600 + ``` - ::: tip - You can alternatively use a CNAME record if you're using a cloud load balancer. - ::: + ::: tip + You can alternatively use a CNAME record if you're using a cloud load balancer. + ::: 2. **Add an MX Record** This record directs email traffic to your mail server. - `bash -Type: MX -Host: # Example: intake.example.com -Value: # Same as your A record host -Priority: 10 -TTL: Auto | 3600 -` + + ```bash + Type: MX + Host: # Example: intake.example.com + Value: # Same as your A record host + Priority: 10 + TTL: Auto | 3600 + ``` 3. **Configure an SPF Record** This record helps prevent email spoofing. - ```bash - Type: TXT - Host: # Example: intake.example.com - Value: "v=spf1 ip4: -all" - TTL: Auto | 3600 - ``` + ```bash + Type: TXT + Host: # Example: intake.example.com + Value: "v=spf1 ip4: -all" + TTL: Auto | 3600 + ``` 4. **Set Up a DMARC record** This record specifies how receiving mail servers should handle authentication failures. - ```bash - Type: TXT - Host: _dmarc. # Example: _dmarc.intake.example.com - Value: "v=DMARC1; p=reject; rua=mailto:" - TTL: Auto | 3600 - ``` + ```bash + Type: TXT + Host: _dmarc. # Example: _dmarc.intake.example.com + Value: "v=DMARC1; p=reject; rua=mailto:" + TTL: Auto | 3600 + ``` ## Verify your configuration diff --git a/docs/self-hosting/govern/custom-domain.md b/docs/self-hosting/govern/custom-domain.md index 3f2b9e2a..812e570e 100644 --- a/docs/self-hosting/govern/custom-domain.md +++ b/docs/self-hosting/govern/custom-domain.md @@ -88,9 +88,10 @@ This shows you all the variables that contain your current domain. You'll update ## Restart Plane services Apply your configuration changes by restarting Plane: -`bash - sudo prime-cli restart - ` + +```bash +sudo prime-cli restart +``` This process typically takes a few minutes. You'll see output indicating the status of each service as it restarts. @@ -139,5 +140,3 @@ If your server is behind a firewall or router and has an internal IP address, yo - Once the reverse proxy is properly configured, ensure that your firewall/router allows incoming traffic on the necessary ports to reach your server. By following these steps, you will be able to access your self-hosted instance of Plane using your custom domain name, whether your server has a public IP address or is behind a firewall with an internal IP address. - -::: diff --git a/docs/self-hosting/methods/coolify.md b/docs/self-hosting/methods/coolify.md index 53023dc3..f8f28034 100644 --- a/docs/self-hosting/methods/coolify.md +++ b/docs/self-hosting/methods/coolify.md @@ -20,13 +20,13 @@ This guide shows you the steps to deploy a self-hosted instance of Plane using C 1. **Download the required depoyment files** - `coolify-compose.yml` – Defines Plane's services and dependencies. - ```bash - curl -fsSL https://prime.plane.so/releases//coolify-compose.yml -o coolify-compose.yml - ``` + ```bash + curl -fsSL https://prime.plane.so/releases//coolify-compose.yml -o coolify-compose.yml + ``` - ::: warning - The `` value should be v1.8.2 or higher. - ::: + ::: warning + The `` value should be v1.8.2 or higher. + ::: 2. Create a new project in Coolify. diff --git a/docs/self-hosting/upgrade-from-community.md b/docs/self-hosting/upgrade-from-community.md index 9863590e..310652be 100644 --- a/docs/self-hosting/upgrade-from-community.md +++ b/docs/self-hosting/upgrade-from-community.md @@ -55,21 +55,21 @@ This upgrade path is for installations using Plane's default PostgreSQL database 2. Copy and paste the script below on Terminal and hit Enter. ``` - TARGET_DIR=/opt/plane/data - sudo mkdir -p $TARGET_DIR - for FILE in *.tar.gz; do - if [ -e "$FILE" ]; then - tar -xzvf "$FILE" -C "$TARGET_DIR" - else - echo "No .tar.gz files found in the current directory." - exit 1 - fi - done - - mv $TARGET_DIR/pgdata/ $TARGET_DIR/db - mv $TARGET_DIR/redisdata/ $TARGET_DIR/redis - mkdir -p $TARGET_DIR/minio - mv $TARGET_DIR/uploads/ $TARGET_DIR/minio/uploads/ + TARGET_DIR=/opt/plane/data + sudo mkdir -p $TARGET_DIR + for FILE in *.tar.gz; do + if [ -e "$FILE" ]; then + tar -xzvf "$FILE" -C "$TARGET_DIR" + else + echo "No .tar.gz files found in the current directory." + exit 1 + fi + done + + mv $TARGET_DIR/pgdata/ $TARGET_DIR/db + mv $TARGET_DIR/redisdata/ $TARGET_DIR/redis + mkdir -p $TARGET_DIR/minio + mv $TARGET_DIR/uploads/ $TARGET_DIR/minio/uploads/ ``` 3. This script will extract your Community Edition data and restore it to `/opt/plane/data`. @@ -83,37 +83,36 @@ This upgrade path is for installations using external or managed database and ob 1. Open the `plane.env` file located at `/opt/plane/plane.env`. 2. Configure database connection. - 1. Find the `DATABASE_URL` environment variable. - 2. Verify it points to your external database: - - ```ini - DATABASE_URL=postgresql://user:password@your-db-host:5432/plane - ``` - - If you need to change it, update the value with your managed database connection string. - -3. Configure object storage 1. Find the `#DATASTORE SETTINGS` section in `plane.env` 2. Update these environment variables for your external storage: - `env -USE_MINIO=0 -AWS_REGION=us-east-1 -AWS_ACCESS_KEY_ID= -AWS_SECRET_ACCESS_KEY= -AWS_S3_ENDPOINT_URL=https://s3.amazonaws.com -AWS_S3_BUCKET_NAME=plane-uploads -` - - :::info - Setting `USE_MINIO=0` disables the local MinIO service and enables external object storage (S3 or S3-compatible services). - ::: - - 3. Restart Plane services to apply the configuration: - ```bash - prime-cli restart - ``` + 1. Find the `DATABASE_URL` environment variable. + 2. Verify it points to your external database: -Your Commercial Edition instance is now connected to your existing external database and storage. + ```ini + DATABASE_URL=postgresql://user:password@your-db-host:5432/plane + ``` + + If you need to change it, update the value with your managed database connection string. + + 3. Configure object storage 1. Find the `#DATASTORE SETTINGS` section in `plane.env` 2. Update these environment variables for your external storage: + + ```env + USE_MINIO=0 + AWS_REGION=us-east-1 + AWS_ACCESS_KEY_ID= + AWS_SECRET_ACCESS_KEY= + AWS_S3_ENDPOINT_URL=https://s3.amazonaws.com + AWS_S3_BUCKET_NAME=plane-uploads + ``` -::: + :::info + Setting `USE_MINIO=0` disables the local MinIO service and enables external object storage (S3 or S3-compatible services). + ::: + +3. Restart Plane services to apply the configuration: + ```bash + prime-cli restart + ``` + +Your Commercial Edition instance is now connected to your existing external database and storage. ## What's next