Skip to content

Commit ae66270

Browse files
authored
Merge pull request #182 from makeplane/chore-update-airgapped-docker
[DOCSW-552] Enhance airgapped edition documentation for docker compose deployments
2 parents ef02272 + 0332b71 commit ae66270

5 files changed

Lines changed: 120 additions & 144 deletions

File tree

-7.49 KB
Loading

mint.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,8 @@
153153
"group": "Manage licenses",
154154
"pages": [
155155
"self-hosting/manage/manage-licenses/activate-pro-and-business",
156-
"self-hosting/manage/manage-licenses/activate-enterprise"
156+
"self-hosting/manage/manage-licenses/activate-enterprise",
157+
"self-hosting/manage/manage-licenses/activate-airgapped"
157158
]
158159
},
159160
"self-hosting/manage/view-logs",
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
---
2+
title: Activate Airgapped Edition license
3+
sidebarTitle: Activate Airgapped
4+
---
5+
6+
Once your air-gapped installation is running, you'll need to activate your workspace with the license file.
7+
8+
1. Login to the [Prime portal](https://prime.plane.so/licenses) with the same email address you used to purchase the paid plan.
9+
2. Go to [Manage licenses](https://prime.plane.so/licenses).
10+
3. Click **Download license** to download the license file for your Plane version.
11+
![Download license file](/images/activate-license/download-license.webp)
12+
4. Navigate to the [Workspace Settings](https://docs.plane.so/core-concepts/workspaces/overview#workspace-settings) in the Plane application.
13+
5. Select **Billing and plans** on the right pane.
14+
6. Click the **Activate this workspace** button.
15+
![Upload license file](/images/activate-license/upload-airgapped-license-file.webp)
16+
7. Upload the license file to activate your workspace.
17+
18+
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.

self-hosting/methods/airgapped-edition-kubernetes.mdx

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ sidebarTitle: For Kubernetes
88
Airgapped deployments are available exclusively for Business plan customers. Contact our [sales team](mailto:sales@plane.so) for pricing and licensing information.
99
</Note>
1010

11-
This guide walks you through deploying Plane Enterprise in an airgapped Kubernetes environment using Helm charts and pre-packaged Docker images.
11+
This guide walks you through deploying Plane Commercial in an airgapped Kubernetes environment using Helm charts and pre-packaged Docker images.
1212

1313
## What you'll need
1414

@@ -30,6 +30,7 @@ Consider these alternatives:
3030
- **Redis**: Replace with Valkey or a managed Redis service
3131
- **PostgreSQL**: Use a managed PostgreSQL service
3232
- **RabbitMQ**: Use a managed message queue service
33+
- **OpenSearch**: Use a managed OpenSearch or Elasticsearch service
3334
</Warning>
3435

3536
## Install Plane
@@ -58,6 +59,7 @@ Consider these alternatives:
5859
- `rabbitmq:3.13.6-management-alpine`
5960
- `minio/minio:latest`
6061
- `minio/mc:latest`
62+
- `opensearchproject/opensearch:3.3.2`
6163

6264
If you're using `local_setup: true` for any of these services, you'll need to pull and transfer these images separately.
6365
</Note>
@@ -269,22 +271,9 @@ Consider these alternatives:
269271
kubectl get ingress -n plane -o wide
270272
```
271273

272-
## Activate your license
273-
274-
Once your air-gapped installation is running, you'll need to activate your workspace with the license file.
275-
276-
1. Login to the [Prime portal](https://prime.plane.so/licenses) with the same email address you used to purchase the paid plan.
277-
2. Go to [Manage licenses](https://prime.plane.so/licenses).
278-
3. Click **Download license** to download the license file for your Plane version.
279-
![Download license file](/images/activate-license/download-license.webp)
280-
4. Navigate to the [Workspace Settings](https://docs.plane.so/core-concepts/workspaces/overview#workspace-settings) in the Plane application.
281-
6. Select **Billing and plans** on the right pane.
282-
7. Click the **Activate this workspace** button.
283-
![Upload license file](/images/activate-license/upload-airgapped-license-file.webp)
284-
8. Upload the license file to activate your workspace.
285-
286-
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.
274+
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.
287275

276+
6. [Activate your license key](/self-hosting/manage/manage-licenses/activate-airgapped).
288277

289278
## Additional configuration
290279

self-hosting/methods/airgapped-edition.mdx

Lines changed: 95 additions & 127 deletions
Original file line numberDiff line numberDiff line change
@@ -8,139 +8,119 @@ sidebarTitle: For Docker
88
Airgapped deployments are available exclusively for Business plan customers. Contact our [sales team](mailto:sales@plane.so) for pricing and licensing information.
99
</Note>
1010

11-
This guide walks you through setting up the Commercial Airgapped Edition in an offline environment using our pre-packaged installation bundle.
11+
This guide walks you through deploying Plane Commercial in an airgapped Docker environment using Docker Compose and pre-configured images from your private registry.
1212

1313
## Prerequisites
14-
Before we get started, make sure your air-gapped machine has:
1514

16-
- Docker (version 24 or later) up and running
15+
Before starting, ensure you have:
16+
17+
- Docker (version 24 or later) installed and running
1718
- Docker Compose Plugin installed (you should be able to run `docker compose` or `docker-compose`)
18-
- The Plane air-gapped package we provide includes:
19-
- Docker image files (`.tar` format)
20-
- Configuration files (`docker-compose.yml` and `plane.env`)
21-
- Installation script (`install.sh`)
22-
23-
### Required files
24-
25-
- `docker-compose.yml` - Docker Compose configuration for service orchestration
26-
- `plane.env` - Default configuration file containing environment variables
27-
- `admin-commercial-<version>.tar` - Docker image for admin service
28-
- `backend-commercial-<version>.tar` - Docker image for api/worker/beat-worker/migrator service
29-
- `email-commercial-<version>.tar` - Docker image for email service
30-
- `live-commercial-<version>.tar` - Docker image for live service
31-
- `monitor-commercial-<version>.tar` - Docker image for monitor service
32-
- `proxy-commercial-<version>.tar` - Docker image for plane-proxy service
33-
- `silo-commercial-<version>.tar` - Docker image for silo service
34-
- `space-commercial-<version>.tar` - Docker image for space service
35-
- `web-commercial-<version>.tar` - Docker image for web service
36-
- `minio-latest.tar` - Docker image for plane-minio service
37-
- `postgres-15.7-alpine.tar` - Docker image for plane-db service
38-
- `rabbitmq-3.13.6-management-alpine.tar` - Docker image for plane-mq service
39-
- `valkey-7.2.5-alpine.tar` - Docker image for plane-redis service
19+
- Access to a private Docker registry containing Plane images
20+
- Required ports opened to access the application (80, 443)
21+
22+
<Warning>
23+
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.
24+
25+
Consider these alternatives:
26+
- **MinIO**: Replace with AWS S3, Google Cloud Storage, or any S3-compatible service
27+
- **Redis**: Replace with Valkey or a managed Redis service
28+
- **PostgreSQL**: Use a managed PostgreSQL service
29+
- **RabbitMQ**: Use a managed message queue service
30+
- **OpenSearch**: Use a managed OpenSearch or Elasticsearch service
31+
</Warning>
4032

4133
## Install Plane
42-
1. Get in touch with sales@plane.so to get your installation download URL and the license file.
4334

44-
2. On a machine that has internet access, download the installation package:
35+
1. **Prepare Docker images for airgapped environment**
4536

46-
```bash
47-
curl -LO <asset-download-url>
48-
```
49-
50-
The download may take 15 minutes. Once the file is downloaded you no longer need internet access.
37+
Refer to [this document](/self-hosting/methods/clone-docker-images) to download the Docker images from the Plane artifact registry to your internal registry.
5138

52-
3. Transfer the `airgapped-{arch}.tar.gz` file to your air-gapped machine.
39+
<Note>
40+
**Important**
41+
This process will NOT download or clone these infrastructure images:
42+
- `valkey/valkey:7.2.11-alpine`
43+
- `postgres:15.7-alpine`
44+
- `rabbitmq:3.13.6-management-alpine`
45+
- `minio/minio:latest`
46+
- `minio/mc:latest`
47+
- `opensearchproject/opensearch:3.3.2`
5348

54-
4. Once you have the file on your air-gapped machine, extract the package.
49+
If you're using local infrastructure services, you'll need to pull and transfer these images separately.
50+
</Note>
5551

56-
```bash
57-
mkdir -p airgapped
58-
tar -xvzf airgapped-amd64.tar.gz -C airgapped
59-
cd airgapped
60-
```
52+
2. **Download Docker Compose configuration**
6153

62-
The airgapped directory contains your `plane.env`, `docker-compose.yml`, and `install.sh` files which are used in the following steps.
54+
Download the Docker Compose configuration files from the official release.
6355

64-
5. Run the installation script:
6556
```bash
66-
bash install.sh
57+
# Download docker-compose.yml
58+
curl -fsSL https://prime.plane.so/releases/<plane-version>/docker-compose.yml -o docker-compose.yml
59+
60+
# Download environment template
61+
curl -fsSL https://prime.plane.so/releases/<plane-version>/variables.env -o plane.env
6762
```
6863

69-
The script will guide you through the process step by step. Here's what to expect:
70-
71-
```bash
72-
**********************************************************
73-
You are about to install/upgrade Plane as airgapped setup
74-
75-
Pre-requisites:
76-
77-
- Docker installed and running
78-
- Docker version 24 or higher
79-
- docker-compose or docker compose installed
80-
- A tarball of all the images
81-
- A docker-compose.yml file (docker-compose.yml)
82-
- A plane.env file (plane.env)
83-
**********************************************************
84-
85-
Enter the directory to install Plane (default: /home/ubuntu/planeairgapped):
86-
87-
Enter the domain or ip address to access Plane (default: 127.0.0.1): plane.mycompany.com
88-
89-
**********************************************************
90-
Verify the final configuration:
91-
- Setup Directory: /home/ubuntu/planeairgapped
92-
- App Domain: plane.mycompany.com
93-
- Installation Type: New
94-
**********************************************************
95-
```
96-
97-
Once you confirm your settings, the installer will:
98-
- Copy the `docker-compose.yml` and `plane.env` files to your chosen installation directory.
99-
- Create the necessary folders for data and logs.
100-
- Load all the Docker images into your local Docker registry.
101-
102-
You'll see something like this when the installation completes:
103-
```bash
104-
**********************************************************
105-
Plane Setup is ready to configure and start
106-
107-
Use below commands to configure and start Plane
108-
Switch to the setup directory
109-
cd /home/ubuntu/planeairgapped
110-
Start the services
111-
docker compose -f docker-compose.yml --env-file plane.env up -d
112-
Check logs of migrator service and wait for it to finish using below command
113-
docker compose logs -f migrator
114-
Check logs of api service and wait for it to start using below command
115-
docker compose logs -f api
116-
Once the api service is started, you can access Plane at http://plane.mycompany.com
117-
**********************************************************
118-
Installation completed successfully
119-
You can access Plane at http://plane.mycompany.com
120-
```
121-
122-
After installation, your directory structure will look like this:
64+
3. **Configure environment variables**
65+
66+
Edit the `plane.env` file to configure your deployment:
67+
12368
```bash
124-
~/planeairgapped/
125-
├── docker-compose.yml
126-
├── plane.env
127-
├── data/
128-
└── logs/
129-
```
69+
# Generate a unique machine signature
70+
export MACHINE_SIGNATURE=$(uuidgen)
13071

131-
## Environment variables
72+
# Set your domain
73+
export DOMAIN_NAME=plane.yourcompany.com
74+
export WEB_URL=https://plane.yourcompany.com
75+
export CORS_ALLOWED_ORIGINS=https://plane.yourcompany.com
76+
```
13277

133-
The following key environment variables are automatically configured during installation:
78+
**Update image references** in `docker-compose.yml` to point to your private registry:
79+
80+
```yaml
81+
services:
82+
web:
83+
image: your-registry.io/plane/web-commercial:${APP_RELEASE_VERSION}
84+
85+
api:
86+
image: your-registry.io/plane/backend-commercial:${APP_RELEASE_VERSION}
87+
88+
space:
89+
image: your-registry.io/plane/space-commercial:${APP_RELEASE_VERSION}
90+
91+
admin:
92+
image: your-registry.io/plane/admin-commercial:${APP_RELEASE_VERSION}
93+
94+
live:
95+
image: your-registry.io/plane/live-commercial:${APP_RELEASE_VERSION}
96+
97+
monitor:
98+
image: your-registry.io/plane/monitor-commercial:${APP_RELEASE_VERSION}
99+
100+
silo:
101+
image: your-registry.io/plane/silo-commercial:${APP_RELEASE_VERSION}
102+
```
134103
135-
- `MACHINE_SIGNATURE` - A unique UUID generated for your installation
136-
- `DOMAIN_NAME` - The domain or IP address where Plane will be accessible
137-
- `WEB_URL` - The full URL where Plane will be accessible (e.g., `http://your-domain`)
138-
- `CORS_ALLOWED_ORIGINS` - Allowed origins for CORS (Cross-Origin Resource Sharing)
104+
**Infrastructure services** (if using local setup):
105+
```yaml
106+
services:
107+
redis:
108+
image: valkey/valkey:7.2.11-alpine
109+
110+
postgres:
111+
image: postgres:15.7-alpine
112+
113+
rabbitmq:
114+
image: rabbitmq:3.13.6-management-alpine
115+
116+
minio:
117+
image: minio/minio:latest
118+
```
139119
140120
## Start Plane
141-
1. To get Plane up and running, navigate to your installation directory and start the services:
121+
122+
1. Start the services:
142123
```bash
143-
cd ~/planeairgapped
144124
docker compose --env-file plane.env up -d
145125
```
146126

@@ -155,22 +135,10 @@ The following key environment variables are automatically configured during inst
155135
docker compose logs -f api
156136
```
157137

158-
The api is healthy when you see`: api-1 listening at`
159-
160-
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.
161-
162-
## Activate your license
138+
The API is healthy when you see: `api-1 listening at`
163139

164-
Once your air-gapped installation is running, you'll need to activate your workspace with the license file.
165-
166-
1. Login to the [Prime portal](https://prime.plane.so/licenses) with the same email address you used to purchase the paid plan.
167-
2. Go to [Manage licenses](https://prime.plane.so/licenses).
168-
3. Click **Download license** to download the license file for your Plane version.
169-
![Download license file](/images/activate-license/download-license.webp)
170-
4. Navigate to the [Workspace Settings](https://docs.plane.so/core-concepts/workspaces/overview#workspace-settings) in the Plane application.
171-
6. Select **Billing and plans** on the right pane.
172-
6. Click the **Activate this workspace** button.
173-
![Upload license file](/images/activate-license/upload-airgapped-license-file.webp)
174-
7. Upload the license file to activate your workspace.
140+
Once all services are running smoothly, you can access Plane by opening your browser and going to the domain you configured.
141+
142+
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.
175143

176-
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.
144+
3. [Activate your license key](/self-hosting/manage/manage-licenses/activate-airgapped)

0 commit comments

Comments
 (0)