From 7a286a57033cad1e5509d680818502a12f3c1ca0 Mon Sep 17 00:00:00 2001 From: Dancia Date: Thu, 18 Sep 2025 20:40:37 +0530 Subject: [PATCH 1/7] Merge changes to master (#147) * Fixes from support threads * minor fixes --- self-hosting/govern/reverse-proxy.mdx | 5 +++++ self-hosting/manage/backup-restore.mdx | 2 +- self-hosting/methods/kubernetes.mdx | 2 +- self-hosting/methods/podman-quadlets.mdx | 1 + self-hosting/upgrade-from-community.mdx | 2 +- 5 files changed, 9 insertions(+), 3 deletions(-) diff --git a/self-hosting/govern/reverse-proxy.mdx b/self-hosting/govern/reverse-proxy.mdx index 0199820..33c17a2 100644 --- a/self-hosting/govern/reverse-proxy.mdx +++ b/self-hosting/govern/reverse-proxy.mdx @@ -21,6 +21,11 @@ Make sure to update the following environment variables in your plane.env file. ``` This is required so that generated links and redirects work correctly behind the proxy: +3. After editing plane.env, restart your instance so the changes take effect: + ```bash + sudo prime-cli restart + ``` + ## Proxy setup 1. Choose the appropriate [configuration template](#configuration-templates) for your reverse proxy. diff --git a/self-hosting/manage/backup-restore.mdx b/self-hosting/manage/backup-restore.mdx index 7c5ecc6..91b7563 100644 --- a/self-hosting/manage/backup-restore.mdx +++ b/self-hosting/manage/backup-restore.mdx @@ -86,7 +86,7 @@ Follow these steps to restore data from a backup: 2. Use the command ↓ to download the restore script. It’s easiest to save it in the same directory as `setup.sh`. ```bash - curl -fsSL -o restore.sh https://raw.githubusercontent.com/makeplane/plane/master/deploy/selfhost/restore.sh + curl -fsSL -o restore.sh https://raw.githubusercontent.com/makeplane/plane/refs/heads/preview/deployments/cli/community/restore.sh chmod +x restore.sh ``` diff --git a/self-hosting/methods/kubernetes.mdx b/self-hosting/methods/kubernetes.mdx index fff8ac0..a80ac82 100644 --- a/self-hosting/methods/kubernetes.mdx +++ b/self-hosting/methods/kubernetes.mdx @@ -17,7 +17,7 @@ Plane Pro and Plane Business are enabled on this edition, so the Free plan on th - `kubectl` and `helm` on the client system that you will use to install our Helm charts -Ensure you're using use **Helm chart v1.3.0**. +Ensure you use use the latest Helm chart version. diff --git a/self-hosting/methods/podman-quadlets.mdx b/self-hosting/methods/podman-quadlets.mdx index 4c41a9c..32a4366 100644 --- a/self-hosting/methods/podman-quadlets.mdx +++ b/self-hosting/methods/podman-quadlets.mdx @@ -36,6 +36,7 @@ Before we start, make sure you've got these covered: 5. Download and extract Podman Quadlets. ```bash + curl -fsSL https://prime.plane.so/releases//podman-quadlets.tar.gz -o podman-quadlets.tar.gz tar -xzf podman-quadlets.tar.gz cd podman-quadlets ``` diff --git a/self-hosting/upgrade-from-community.mdx b/self-hosting/upgrade-from-community.mdx index 7c17428..a95b593 100644 --- a/self-hosting/upgrade-from-community.mdx +++ b/self-hosting/upgrade-from-community.mdx @@ -33,7 +33,7 @@ The instructions provided on this page are specific to installations using Docke - `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 the Commercial Edition on any folder of your choice. +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` From df2eb0c7a0df917ac3024a9fe805b6a1c9aec58a Mon Sep 17 00:00:00 2001 From: akshat5302 Date: Tue, 20 Jan 2026 14:02:38 +0530 Subject: [PATCH 2/7] Enhance airgapped edition documentation: update prerequisites, clarify Docker image preparation, and add OpenSearch as an alternative service. Streamline installation steps and improve environment variable configuration instructions. --- .../methods/airgapped-edition-kubernetes.mdx | 22 +- self-hosting/methods/airgapped-edition.mdx | 216 +++++++++--------- 2 files changed, 107 insertions(+), 131 deletions(-) diff --git a/self-hosting/methods/airgapped-edition-kubernetes.mdx b/self-hosting/methods/airgapped-edition-kubernetes.mdx index d7374ba..25bb8df 100644 --- a/self-hosting/methods/airgapped-edition-kubernetes.mdx +++ b/self-hosting/methods/airgapped-edition-kubernetes.mdx @@ -30,6 +30,7 @@ Consider these alternatives: - **Redis**: Replace with Valkey or a managed Redis service - **PostgreSQL**: Use a managed PostgreSQL service - **RabbitMQ**: Use a managed message queue service +- **OpenSearch**: Use a managed OpenSearch or Elasticsearch service ## Install Plane @@ -46,23 +47,6 @@ Consider these alternatives: curl -L -O https://github.com/makeplane/helm-charts/releases/download/plane-enterprise-1.6.4/plane-enterprise-1.6.4.tgz ``` -2. **Prepare Docker images for airgapped environment** - - Refer to [this document](/self-hosting/methods/clone-docker-images) to download the Docker images from the public repository to your internal repository. - - - **Important** - This process will NOT download or clone these infrastructure images: - - `valkey:7.2.5-alpine` - - `postgres:15.7-alpine` - - `rabbitmq:3.13.6-management-alpine` - - `minio/minio:latest` - - `minio/mc:latest` - - If you're using `local_setup: true` for any of these services, you'll need to pull and transfer these images separately. - - - 3. **Configure custom values file** a. Extract the default values from the Helm chart. @@ -145,6 +129,10 @@ Consider these alternatives: local_setup: true # Set to false if using external service image: minio/minio:latest image_mc: minio/mc:latest + + opensearch: + local_setup: true # Set to false if using external service + image: opensearchproject/opensearch:3.3.2 ``` **Environment variables:** diff --git a/self-hosting/methods/airgapped-edition.mdx b/self-hosting/methods/airgapped-edition.mdx index 77913d0..daa4b8a 100644 --- a/self-hosting/methods/airgapped-edition.mdx +++ b/self-hosting/methods/airgapped-edition.mdx @@ -8,139 +8,123 @@ sidebarTitle: For Docker Airgapped deployments are available exclusively for Business plan customers. Contact our [sales team](mailto:sales@plane.so) for pricing and licensing information. -This guide walks you through setting up the Commercial Airgapped Edition in an offline environment using our pre-packaged installation bundle. +This guide walks you through deploying Plane Commercial in an airgapped Docker environment using Docker Compose and pre-configured images from your private registry. ## Prerequisites -Before we get started, make sure your air-gapped machine has: -- Docker (version 24 or later) up and running +Before starting, ensure you have: + +- Docker (version 24 or later) installed and running - Docker Compose Plugin installed (you should be able to run `docker compose` or `docker-compose`) -- The Plane air-gapped package we provide includes: - - Docker image files (`.tar` format) - - Configuration files (`docker-compose.yml` and `plane.env`) - - Installation script (`install.sh`) - -### Required files - -- `docker-compose.yml` - Docker Compose configuration for service orchestration -- `plane.env` - Default configuration file containing environment variables -- `admin-commercial-.tar` - Docker image for admin service -- `backend-commercial-.tar` - Docker image for api/worker/beat-worker/migrator service -- `email-commercial-.tar` - Docker image for email service -- `live-commercial-.tar` - Docker image for live service -- `monitor-commercial-.tar` - Docker image for monitor service -- `proxy-commercial-.tar` - Docker image for plane-proxy service -- `silo-commercial-.tar` - Docker image for silo service -- `space-commercial-.tar` - Docker image for space service -- `web-commercial-.tar` - Docker image for web service -- `minio-latest.tar` - Docker image for plane-minio service -- `postgres-15.7-alpine.tar` - Docker image for plane-db service -- `rabbitmq-3.13.6-management-alpine.tar` - Docker image for plane-mq service -- `valkey-7.2.5-alpine.tar` - Docker image for plane-redis service +- Access to a private Docker registry containing Plane images +- Required ports opened to access the application (80, 443) + + +While Docker can run stateful services with persistent volumes, we strongly recommend using external managed services for better reliability in backup/restore operations and disaster recovery. + +Consider these alternatives: +- **MinIO**: Replace with AWS S3, Google Cloud Storage, or any S3-compatible service +- **Redis**: Replace with Valkey or a managed Redis service +- **PostgreSQL**: Use a managed PostgreSQL service +- **RabbitMQ**: Use a managed message queue service +- **OpenSearch**: Use a managed OpenSearch or Elasticsearch service + ## Install Plane -1. Get in touch with sales@plane.so to get your installation download URL and the license file. -2. On a machine that has internet access, download the installation package: +1. **Contact sales for license** - ```bash - curl -LO - ``` - - The download may take 15 minutes. Once the file is downloaded you no longer need internet access. + Get in touch with sales@plane.so to get your license file and access to the Plane artifact registry. -3. Transfer the `airgapped-{arch}.tar.gz` file to your air-gapped machine. +2. **Prepare Docker images for airgapped environment** -4. Once you have the file on your air-gapped machine, extract the package. + Refer to [this document](/self-hosting/methods/clone-docker-images) to download the Docker images from the Plane artifact registry to your internal registry. - ```bash - mkdir -p airgapped - tar -xvzf airgapped-amd64.tar.gz -C airgapped - cd airgapped - ``` + + **Important** + This process will NOT download or clone these infrastructure images: + - `valkey/valkey:7.2.11-alpine` + - `postgres:15.7-alpine` + - `rabbitmq:3.13.6-management-alpine` + - `minio/minio:latest` + - `minio/mc:latest` + - `opensearchproject/opensearch:3.3.2` + + If you're using local infrastructure services, you'll need to pull and transfer these images separately. + - The airgapped directory contains your `plane.env`, `docker-compose.yml`, and `install.sh` files which are used in the following steps. +3. **Download Docker Compose configuration** + + Download the Docker Compose configuration files from the official release. -5. Run the installation script: ```bash - bash install.sh + # Download docker-compose.yml + curl -fsSL https://prime.plane.so/releases//docker-compose.yml -o docker-compose.yml + + # Download environment template + curl -fsSL https://prime.plane.so/releases//variables.env -o plane.env ``` - The script will guide you through the process step by step. Here's what to expect: - - ```bash - ********************************************************** - You are about to install/upgrade Plane as airgapped setup - - Pre-requisites: - - - Docker installed and running - - Docker version 24 or higher - - docker-compose or docker compose installed - - A tarball of all the images - - A docker-compose.yml file (docker-compose.yml) - - A plane.env file (plane.env) - ********************************************************** - - Enter the directory to install Plane (default: /home/ubuntu/planeairgapped): - - Enter the domain or ip address to access Plane (default: 127.0.0.1): plane.mycompany.com - - ********************************************************** - Verify the final configuration: - - Setup Directory: /home/ubuntu/planeairgapped - - App Domain: plane.mycompany.com - - Installation Type: New - ********************************************************** - ``` - - Once you confirm your settings, the installer will: - - Copy the `docker-compose.yml` and `plane.env` files to your chosen installation directory. - - Create the necessary folders for data and logs. - - Load all the Docker images into your local Docker registry. - - You'll see something like this when the installation completes: - ```bash - ********************************************************** - Plane Setup is ready to configure and start - - Use below commands to configure and start Plane - Switch to the setup directory - cd /home/ubuntu/planeairgapped - Start the services - docker compose -f docker-compose.yml --env-file plane.env up -d - Check logs of migrator service and wait for it to finish using below command - docker compose logs -f migrator - Check logs of api service and wait for it to start using below command - docker compose logs -f api - Once the api service is started, you can access Plane at http://plane.mycompany.com - ********************************************************** - Installation completed successfully - You can access Plane at http://plane.mycompany.com - ``` - - After installation, your directory structure will look like this: +4. **Configure environment variables** + + Edit the `plane.env` file to configure your deployment: + ```bash - ~/planeairgapped/ - ├── docker-compose.yml - ├── plane.env - ├── data/ - └── logs/ - ``` + # Generate a unique machine signature + export MACHINE_SIGNATURE=$(uuidgen) -## Environment variables + # Set your domain + export DOMAIN_NAME=plane.yourcompany.com + export WEB_URL=https://plane.yourcompany.com + export CORS_ALLOWED_ORIGINS=https://plane.yourcompany.com + ``` -The following key environment variables are automatically configured during installation: + **Update image references** in `docker-compose.yml` to point to your private registry: + + ```yaml + services: + web: + image: your-registry.io/plane/web-commercial:${APP_RELEASE_VERSION} + + api: + image: your-registry.io/plane/backend-commercial:${APP_RELEASE_VERSION} + + space: + image: your-registry.io/plane/space-commercial:${APP_RELEASE_VERSION} + + admin: + image: your-registry.io/plane/admin-commercial:${APP_RELEASE_VERSION} + + live: + image: your-registry.io/plane/live-commercial:${APP_RELEASE_VERSION} + + monitor: + image: your-registry.io/plane/monitor-commercial:${APP_RELEASE_VERSION} + + silo: + image: your-registry.io/plane/silo-commercial:${APP_RELEASE_VERSION} + ``` -- `MACHINE_SIGNATURE` - A unique UUID generated for your installation -- `DOMAIN_NAME` - The domain or IP address where Plane will be accessible -- `WEB_URL` - The full URL where Plane will be accessible (e.g., `http://your-domain`) -- `CORS_ALLOWED_ORIGINS` - Allowed origins for CORS (Cross-Origin Resource Sharing) + **Infrastructure services** (if using local setup): + ```yaml + services: + redis: + image: valkey/valkey:7.2.11-alpine + + postgres: + image: postgres:15.7-alpine + + rabbitmq: + image: rabbitmq:3.13.6-management-alpine + + minio: + image: minio/minio:latest + ``` ## Start Plane -1. To get Plane up and running, navigate to your installation directory and start the services: + +1. Start the services: ```bash - cd ~/planeairgapped docker compose --env-file plane.env up -d ``` @@ -155,9 +139,9 @@ The following key environment variables are automatically configured during inst docker compose logs -f api ``` - The api is healthy when you see`: api-1 listening at` + The API is healthy when you see: `api-1 listening at` -Once both services are running smoothly, you can access Plane by opening your browser and going to the domain or IP address you configured during installation. +Once all services are running smoothly, you can access Plane by opening your browser and going to the domain you configured. ## Activate your license @@ -168,9 +152,13 @@ Once your air-gapped installation is running, you'll need to activate your works 3. Click **Download license** to download the license file for your Plane version. ![Download license file](/images/activate-license/download-license.webp) 4. Navigate to the [Workspace Settings](https://docs.plane.so/core-concepts/workspaces/overview#workspace-settings) in the Plane application. -6. Select **Billing and plans** on the right pane. +5. Select **Billing and plans** on the right pane. 6. Click the **Activate this workspace** button. ![Upload license file](/images/activate-license/upload-airgapped-license-file.webp) 7. Upload the license file to activate your workspace. -You now have Plane running in your air-gapped environment. If you run into any issues, check the logs using the commands above, or reach out to our support team for assistance. \ No newline at end of file +You now have Plane running in your air-gapped environment. If you run into any issues, check the logs using the commands above, or reach out to our support team for assistance. + +## Additional configuration + +For more advanced Plane configuration options, refer to the [Docker documentation](https://developers.plane.so/self-hosting/methods/docker-compose). From 7c08e8e7d856981378449367123b2c3bc9ea4027 Mon Sep 17 00:00:00 2001 From: akshat5302 Date: Tue, 20 Jan 2026 14:08:47 +0530 Subject: [PATCH 3/7] Update airgapped edition documentation: add instructions for preparing Docker images, highlight important infrastructure images that require separate handling, and clarify configuration steps for services. --- .../methods/airgapped-edition-kubernetes.mdx | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/self-hosting/methods/airgapped-edition-kubernetes.mdx b/self-hosting/methods/airgapped-edition-kubernetes.mdx index 25bb8df..1273659 100644 --- a/self-hosting/methods/airgapped-edition-kubernetes.mdx +++ b/self-hosting/methods/airgapped-edition-kubernetes.mdx @@ -47,6 +47,24 @@ Consider these alternatives: curl -L -O https://github.com/makeplane/helm-charts/releases/download/plane-enterprise-1.6.4/plane-enterprise-1.6.4.tgz ``` +2. **Prepare Docker images for airgapped environment** + + Refer to [this document](/self-hosting/methods/clone-docker-images) to download the Docker images from the public repository to your internal repository. + + + **Important** + This process will NOT download or clone these infrastructure images: + - `valkey:7.2.5-alpine` + - `postgres:15.7-alpine` + - `rabbitmq:3.13.6-management-alpine` + - `minio/minio:latest` + - `minio/mc:latest` + - `opensearchproject/opensearch:3.3.2` + + If you're using `local_setup: true` for any of these services, you'll need to pull and transfer these images separately. + + + 3. **Configure custom values file** a. Extract the default values from the Helm chart. @@ -129,10 +147,6 @@ Consider these alternatives: local_setup: true # Set to false if using external service image: minio/minio:latest image_mc: minio/mc:latest - - opensearch: - local_setup: true # Set to false if using external service - image: opensearchproject/opensearch:3.3.2 ``` **Environment variables:** From 481a040ac15c1ad6a196baf6a78faaacba9b7625 Mon Sep 17 00:00:00 2001 From: akshat5302 Date: Wed, 21 Jan 2026 15:58:20 +0530 Subject: [PATCH 4/7] Refactor airgapped edition installation steps: renumbered instructions for clarity, removing redundant contact information for license acquisition. --- self-hosting/methods/airgapped-edition.mdx | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/self-hosting/methods/airgapped-edition.mdx b/self-hosting/methods/airgapped-edition.mdx index daa4b8a..68df844 100644 --- a/self-hosting/methods/airgapped-edition.mdx +++ b/self-hosting/methods/airgapped-edition.mdx @@ -32,11 +32,7 @@ Consider these alternatives: ## Install Plane -1. **Contact sales for license** - - Get in touch with sales@plane.so to get your license file and access to the Plane artifact registry. - -2. **Prepare Docker images for airgapped environment** +1. **Prepare Docker images for airgapped environment** Refer to [this document](/self-hosting/methods/clone-docker-images) to download the Docker images from the Plane artifact registry to your internal registry. @@ -53,7 +49,7 @@ Consider these alternatives: If you're using local infrastructure services, you'll need to pull and transfer these images separately. -3. **Download Docker Compose configuration** +2. **Download Docker Compose configuration** Download the Docker Compose configuration files from the official release. @@ -65,7 +61,7 @@ Consider these alternatives: curl -fsSL https://prime.plane.so/releases//variables.env -o plane.env ``` -4. **Configure environment variables** +3. **Configure environment variables** Edit the `plane.env` file to configure your deployment: From 53f489ad7cfaff5ae7177a051a238a52627c6b72 Mon Sep 17 00:00:00 2001 From: danciaclara Date: Wed, 21 Jan 2026 22:00:44 +0530 Subject: [PATCH 5/7] review fixes --- images/activate-license/download-license.webp | Bin 36182 -> 28516 bytes mint.json | 3 ++- .../manage-licenses/activate-airgapped.mdx | 18 +++++++++++++ .../methods/airgapped-edition-kubernetes.mdx | 19 +++----------- self-hosting/methods/airgapped-edition.mdx | 24 +++--------------- 5 files changed, 27 insertions(+), 37 deletions(-) create mode 100644 self-hosting/manage/manage-licenses/activate-airgapped.mdx diff --git a/images/activate-license/download-license.webp b/images/activate-license/download-license.webp index 27ffdcee308578632cc13ddbfb4ef8e49619fed0..a9b4598b542ffd429327793d8ed458149ec09f9e 100644 GIT binary patch literal 28516 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 iVag^>q;$go00000000000000000000000000000$P9p^X literal 36182 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 V(SOu$_y7O^0000000000001OtU)cZv diff --git a/mint.json b/mint.json index bf367dc..e382871 100644 --- a/mint.json +++ b/mint.json @@ -153,7 +153,8 @@ "group": "Manage licenses", "pages": [ "self-hosting/manage/manage-licenses/activate-pro-and-business", - "self-hosting/manage/manage-licenses/activate-enterprise" + "self-hosting/manage/manage-licenses/activate-enterprise", + "self-hosting/manage/manage-licenses/activate-airgapped" ] }, "self-hosting/manage/view-logs", diff --git a/self-hosting/manage/manage-licenses/activate-airgapped.mdx b/self-hosting/manage/manage-licenses/activate-airgapped.mdx new file mode 100644 index 0000000..3793843 --- /dev/null +++ b/self-hosting/manage/manage-licenses/activate-airgapped.mdx @@ -0,0 +1,18 @@ +--- +title: Activate Airgapped Edition license +sidebarTitle: Activate Airgapped +--- + +Once your air-gapped installation is running, you'll need to activate your workspace with the license file. + +1. Login to the [Prime portal](https://prime.plane.so/licenses) with the same email address you used to purchase the paid plan. +2. Go to [Manage licenses](https://prime.plane.so/licenses). +3. Click **Download license** to download the license file for your Plane version. + ![Download license file](/images/activate-license/download-license.webp) +4. Navigate to the [Workspace Settings](https://docs.plane.so/core-concepts/workspaces/overview#workspace-settings) in the Plane application. +6. Select **Billing and plans** on the right pane. +7. Click the **Activate this workspace** button. + ![Upload license file](/images/activate-license/upload-airgapped-license-file.webp) +8. Upload the license file to activate your workspace. + +You now have Plane running in your air-gapped environment. If you run into any issues, check the logs using the commands above, or reach out to our support team for assistance. diff --git a/self-hosting/methods/airgapped-edition-kubernetes.mdx b/self-hosting/methods/airgapped-edition-kubernetes.mdx index 1273659..c4bb46b 100644 --- a/self-hosting/methods/airgapped-edition-kubernetes.mdx +++ b/self-hosting/methods/airgapped-edition-kubernetes.mdx @@ -8,7 +8,7 @@ sidebarTitle: For Kubernetes Airgapped deployments are available exclusively for Business plan customers. Contact our [sales team](mailto:sales@plane.so) for pricing and licensing information. -This guide walks you through deploying Plane Enterprise in an airgapped Kubernetes environment using Helm charts and pre-packaged Docker images. +This guide walks you through deploying Plane Commercial in an airgapped Kubernetes environment using Helm charts and pre-packaged Docker images. ## What you'll need @@ -271,22 +271,9 @@ Consider these alternatives: kubectl get ingress -n plane -o wide ``` -## Activate your license - -Once your air-gapped installation is running, you'll need to activate your workspace with the license file. - -1. Login to the [Prime portal](https://prime.plane.so/licenses) with the same email address you used to purchase the paid plan. -2. Go to [Manage licenses](https://prime.plane.so/licenses). -3. Click **Download license** to download the license file for your Plane version. - ![Download license file](/images/activate-license/download-license.webp) -4. Navigate to the [Workspace Settings](https://docs.plane.so/core-concepts/workspaces/overview#workspace-settings) in the Plane application. -6. Select **Billing and plans** on the right pane. -7. Click the **Activate this workspace** button. - ![Upload license file](/images/activate-license/upload-airgapped-license-file.webp) -8. Upload the license file to activate your workspace. - -You now have Plane running in your air-gapped environment. If you run into any issues, check the logs using the commands above, or reach out to our support team for assistance. + You now have Plane running in your air-gapped environment. If you run into any issues, check the logs using the commands above, or reach out to our support team for assistance. +6. [Activate your license key](/self-hosting/manage/manage-licenses/activate-airgapped). ## Additional configuration diff --git a/self-hosting/methods/airgapped-edition.mdx b/self-hosting/methods/airgapped-edition.mdx index 68df844..38a20be 100644 --- a/self-hosting/methods/airgapped-edition.mdx +++ b/self-hosting/methods/airgapped-edition.mdx @@ -137,24 +137,8 @@ Consider these alternatives: The API is healthy when you see: `api-1 listening at` -Once all services are running smoothly, you can access Plane by opening your browser and going to the domain you configured. + Once all services are running smoothly, you can access Plane by opening your browser and going to the domain you configured. + + You now have Plane running in your air-gapped environment. If you run into any issues, check the logs using the commands above, or reach out to our support team for assistance. -## Activate your license - -Once your air-gapped installation is running, you'll need to activate your workspace with the license file. - -1. Login to the [Prime portal](https://prime.plane.so/licenses) with the same email address you used to purchase the paid plan. -2. Go to [Manage licenses](https://prime.plane.so/licenses). -3. Click **Download license** to download the license file for your Plane version. - ![Download license file](/images/activate-license/download-license.webp) -4. Navigate to the [Workspace Settings](https://docs.plane.so/core-concepts/workspaces/overview#workspace-settings) in the Plane application. -5. Select **Billing and plans** on the right pane. -6. Click the **Activate this workspace** button. - ![Upload license file](/images/activate-license/upload-airgapped-license-file.webp) -7. Upload the license file to activate your workspace. - -You now have Plane running in your air-gapped environment. If you run into any issues, check the logs using the commands above, or reach out to our support team for assistance. - -## Additional configuration - -For more advanced Plane configuration options, refer to the [Docker documentation](https://developers.plane.so/self-hosting/methods/docker-compose). +3. [Activate your license key](/self-hosting/manage/manage-licenses/activate-airgapped) \ No newline at end of file From e687aaad67d64a99a9f074ccd7938bdd79d0554a Mon Sep 17 00:00:00 2001 From: danciaclara Date: Wed, 21 Jan 2026 22:05:22 +0530 Subject: [PATCH 6/7] coderabbit fixes --- self-hosting/manage/manage-licenses/activate-airgapped.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/self-hosting/manage/manage-licenses/activate-airgapped.mdx b/self-hosting/manage/manage-licenses/activate-airgapped.mdx index 3793843..503dfc0 100644 --- a/self-hosting/manage/manage-licenses/activate-airgapped.mdx +++ b/self-hosting/manage/manage-licenses/activate-airgapped.mdx @@ -10,9 +10,9 @@ Once your air-gapped installation is running, you'll need to activate your works 3. Click **Download license** to download the license file for your Plane version. ![Download license file](/images/activate-license/download-license.webp) 4. Navigate to the [Workspace Settings](https://docs.plane.so/core-concepts/workspaces/overview#workspace-settings) in the Plane application. -6. Select **Billing and plans** on the right pane. -7. Click the **Activate this workspace** button. +5. Select **Billing and plans** on the right pane. +6. Click the **Activate this workspace** button. ![Upload license file](/images/activate-license/upload-airgapped-license-file.webp) -8. Upload the license file to activate your workspace. +7. Upload the license file to activate your workspace. You now have Plane running in your air-gapped environment. If you run into any issues, check the logs using the commands above, or reach out to our support team for assistance. From 0332b71f88a42b77ff8bb02313a84a57af7f46fd Mon Sep 17 00:00:00 2001 From: danciaclara Date: Wed, 21 Jan 2026 22:06:43 +0530 Subject: [PATCH 7/7] coderabbit fixes --- self-hosting/manage/manage-licenses/activate-airgapped.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/self-hosting/manage/manage-licenses/activate-airgapped.mdx b/self-hosting/manage/manage-licenses/activate-airgapped.mdx index 503dfc0..adbff68 100644 --- a/self-hosting/manage/manage-licenses/activate-airgapped.mdx +++ b/self-hosting/manage/manage-licenses/activate-airgapped.mdx @@ -15,4 +15,4 @@ Once your air-gapped installation is running, you'll need to activate your works ![Upload license file](/images/activate-license/upload-airgapped-license-file.webp) 7. Upload the license file to activate your workspace. -You now have Plane running in your air-gapped environment. If you run into any issues, check the logs using the commands above, or reach out to our support team for assistance. +You now have Plane running in your air-gapped environment. If you run into any issues, check the logs, or reach out to our support team for assistance.