Skip to content

Commit f11c1a8

Browse files
authored
Merge pull request #105 from makeplane/air-gapped-edition
Airgapped Commercial Edition
2 parents ce597ed + ca3eb9f commit f11c1a8

File tree

5 files changed

+271
-21
lines changed

5 files changed

+271
-21
lines changed
34.9 KB
Binary file not shown.

mint.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,8 @@
7171
"self-hosting/methods/docker-swarm",
7272
"self-hosting/methods/kubernetes",
7373
"self-hosting/methods/coolify",
74-
"self-hosting/methods/portainer"
74+
"self-hosting/methods/portainer",
75+
"self-hosting/methods/airgapped-edition"
7576
]
7677
},
7778
{
@@ -112,6 +113,7 @@
112113
"group": "Manage",
113114
"pages": [
114115
"self-hosting/upgrade-from-community",
116+
"self-hosting/manage/community-to-airgapped",
115117
"self-hosting/manage/backup-restore",
116118
{
117119
"group": "Update Plane",
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
---
2+
title: Upgrade from Community to Airgapped Edition
3+
sidebarTitle: Upgrade to Airgapped Edition
4+
---
5+
6+
This guide walks you through migrating your existing Plane Community Edition data to an air-gapped environment. You'll backup your current installation, transfer the data, and restore it in your air-gapped setup.
7+
8+
<Warning>
9+
**Important**
10+
Make sure you already have Commercial Airgapped Edition installed on a fresh machine before starting this migration. If you haven't installed it yet, follow our [airgapped installation guide](/self-hosting/methods/airgapped-edition) first.
11+
</Warning>
12+
13+
## Prerequisites
14+
15+
- Install the [Commercial Airgapped Edition](/self-hosting/methods/airgapped-edition) on a fresh machine, not the one running the Community Edition.
16+
- Be sure to log in as the root user or as a user with sudo access. The `/opt` folder requires sudo or root privileges.
17+
18+
## Backup data on Community instance
19+
20+
1. Download the latest version of `setup.sh`.
21+
```bash
22+
curl -fsSL https://github.com/makeplane/plane/releases/latest/download/setup.sh -o setup.sh
23+
```
24+
25+
2. Run the setup.sh backup script to take the backup of the Community Edition instance.
26+
```bash
27+
./setup.sh backup
28+
```
29+
This will create a backup of the plane community instance in the `backup/` folder with the timestamp as the folder name.
30+
```bash
31+
backup/
32+
└── 20250605-0938
33+
├── pgdata.tar.gz
34+
├── rabbitmq_data.tar.gz
35+
├── redisdata.tar.gz
36+
└── uploads.tar.gz
37+
```
38+
39+
## Restore data on Airgapped instance
40+
41+
1. Download the latest version of `restore-airgapped.sh`
42+
```bash
43+
curl -fsSL https://github.com/makeplane/plane/releases/latest/download/restore-airgapped.sh -o restore-airgapped.sh
44+
chmod +x restore-airgapped.sh
45+
```
46+
This allows you to restore the Community Edition data to the Commercial Airgapped instance.
47+
48+
2. Copy the `restore-airgapped.sh` script into your backup folder.
49+
50+
3. Move your entire backup folder to the server running the Commercial Airgapped Edition.
51+
52+
4. Open terminal, and execute the following command:
53+
```bash
54+
sudo bash restore-airgapped.sh ./20250605-0938
55+
```
56+
This will prompt you to enter the Commercial Airgapped Edition installation folder using whatever secure method works in your environment.
57+
58+
5. After the data restore is finished, start the instance.
59+
```bash
60+
cd <airgapped-instance-folder>
61+
sudo docker compose -f docker-compose.yml --env-file plane.env up -d
62+
```
63+
64+
You can now access the Commercial Airgapped instance at `http://<ip-address|domain-name>`
65+
66+
Once your migration is complete, verify that all your projects, issues, and team data have been successfully transferred to your air-gapped environment.
Lines changed: 180 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,180 @@
1+
---
2+
title: Deploy Plane Commercial Airgapped Edition
3+
sidebarTitle: Airgapped Edition
4+
---
5+
6+
This guide walks you through setting up the Commercial Airgapped Edition in an offline environment using our pre-packaged installation bundle.
7+
8+
<Warning>
9+
**IMPORTANT**
10+
These instructions are for new installations only. If you're migrating from an existing Community Edition to an air-gapped setup, follow [this guide](/self-hosting/manage/community-to-airgapped).
11+
</Warning>
12+
13+
## Prerequisites
14+
Before we get started, make sure your air-gapped machine has:
15+
16+
- Docker (version 24 or later) up and running
17+
- 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
40+
41+
## Install Plane
42+
1. Get in touch with [email protected] to get your installation download URL and the license file.
43+
44+
2. On a machine that has internet access, download the installation package:
45+
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.
51+
52+
3. Transfer the `airgapped-{arch}.tar.gz` file to your air-gapped machine.
53+
54+
4. Once you have the file on your air-gapped machine, extract the package.
55+
56+
```bash
57+
mkdir -p airgapped
58+
tar -xvzf airgapped-amd64.tar.gz -C airgapped
59+
cd airgapped
60+
```
61+
62+
The airgapped directory contains your `plane.env`, `docker-compose.yml`, and `install.sh` files which are used in the following steps.
63+
64+
5. Run the installation script:
65+
```bash
66+
bash install.sh
67+
```
68+
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:
123+
```bash
124+
~/planeairgapped/
125+
├── docker-compose.yml
126+
├── plane.env
127+
├── data/
128+
└── logs/
129+
```
130+
131+
## Environment variables
132+
133+
The following key environment variables are automatically configured during installation:
134+
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)
139+
140+
## Start Plane
141+
1. To get Plane up and running, navigate to your installation directory and start the services:
142+
```bash
143+
cd ~/planeairgapped
144+
docker compose --env-file plane.env up -d
145+
```
146+
147+
2. Watch the logs to make sure everything starts properly.
148+
- To monitor the database migration process:
149+
```bash
150+
docker compose logs -f migrator
151+
```
152+
153+
- To monitor the API service startup:
154+
```bash
155+
docker compose logs -f api
156+
```
157+
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
163+
164+
Once your air-gapped installation is running, you'll need to activate your workspace with the provided license file.
165+
<Note>
166+
You should have received the `license_key.json` file as part of your air-gapped package. If you don't have this file, contact our support team.
167+
</Note>
168+
169+
1. Go to your [Workspace Settings](/core-concepts/workspaces/overview#workspace-settings) in the Plane application.
170+
2. Select **Billing and plans** on the right pane.
171+
3. Click the **Activate this workspace** button.
172+
![Upload license file](/images/activate-license/upload-license-file.webp)
173+
4. Upload the license file `license_key.json` to activate your workspace.
174+
175+
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.
176+
177+
<Tip>
178+
*Optional*
179+
Once everything is working, you can safely delete the `airgapped` folder that contains the installation script and image files to free up space.
180+
</Tip>

self-hosting/upgrade-from-community.mdx

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -5,40 +5,45 @@ sidebarTitle: Upgrade to Commercial Edition
55
The Commercial edition comes with the free plan and the flexibility to upgrade to a paid plan at any point.
66

77
<Warning>
8-
Follow the instructions below first all the way to the end of the section **Restore data**.
8+
**IMPORTANT**
99

10-
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.
10+
Make sure you already have Commercial Edition installed on a fresh machine before starting this migration. If you haven’t installed it yet, follow our [Commercial Edition](/self-hosting/methods/docker-compose#recommended-edition) installation guide first.
11+
12+
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.
1113
</Warning>
1214

1315
## Prerequisites
14-
15-
- Install on a fresh machine, not the one running the Plane Community Edition.
16+
- Install the [Commercial Edition](/self-hosting/methods/docker-compose#recommended-edition) on a fresh machine, not the one running the Plane Community Edition.
1617
- Be sure to log in as the root user or as a user with sudo access. The `/opt` folder requires sudo or root privileges.
1718

19+
## Back up data on Community instance
20+
1. Download the latest version of `setup.sh`.
21+
```bash
22+
curl -fsSL https://github.com/makeplane/plane/releases/latest/download/setup.sh -o setup.sh
23+
```
1824

19-
## Back up data on Community Edition
20-
21-
`setup.sh` in the Community Edition now comes with an option to back up your data.
22-
23-
1. Use `./setup.sh` to open the operator menu and select `7` to backup your Plane data.
24-
2. When done, your data will be backed up to the folder shown on the screen.
25-
e.g., `/plane-selfhost/plane-app/backup/20240522-1027`
26-
3. This folder will contain 3 `tar.gz` files.
25+
2. Run the setup.sh backup script to take the backup of the Community Edition instance.
26+
```bash
27+
./setup.sh backup
28+
```
29+
3. When done, your data will be backed up to the folder shown on the screen.
30+
e.g., `/plane-selfhost/plane-app/backup/20240522-1027`
31+
This folder will contain 3 `tar.gz` files.
2732
- `pgdata.tar.gz`
2833
- `redisdata.tar.gz`
2934
- `uploads.tar.gz`
30-
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.
3135

32-
e.g., `~/ce-backup`
36+
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.
37+
38+
e.g., `~/ce-backup`
3339

34-
## Restore data and install Commercial Edition
40+
## Restore data on Commercial instance
3541
1. Start any command-line interface like Terminal and go into the folder with the back-up files.
3642
```
3743
cd ~/ce-backup
3844
```
3945
2. Copy and paste the script below on Terminal and hit Enter.
4046
```
41-
4247
TARGET_DIR=/opt/plane/data
4348
sudo mkdir -p $TARGET_DIR
4449
for FILE in *.tar.gz; do
@@ -55,7 +60,4 @@ e.g., `~/ce-backup`
5560
mkdir -p $TARGET_DIR/minio
5661
mv $TARGET_DIR/uploads/ $TARGET_DIR/minio/uploads/
5762
```
58-
3. This script will extract your Community Edition data and restore it to /opt/plane/data.
59-
4. Install the **Commercial** Edition.
60-
- Using [Docker](/self-hosting/methods/docker-compose#recommended-edition)
61-
- Using [Kubernetes](/self-hosting/methods/kubernetes#recommended-edition)
63+
3. This script will extract your Community Edition data and restore it to `/opt/plane/data`.

0 commit comments

Comments
 (0)