-
Notifications
You must be signed in to change notification settings - Fork 8
Added manual upgrade steps (CE to EE) and backup for other deployment methods #220
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -115,6 +115,122 @@ This upgrade path is for installations using external or managed database and ob | |
| ``` | ||
|
|
||
| Your Commercial Edition instance is now connected to your existing external database and storage. | ||
| ::: | ||
|
|
||
| :::details Manual backup and restore without CLI | ||
|
|
||
| Use this method if you prefer to back up data manually or if the setup.sh script isn't working for your environment. | ||
|
|
||
| ### What gets migrated | ||
|
|
||
| - PostgreSQL database (all Plane data) | ||
| - MinIO uploads (attachments, images, files) | ||
|
|
||
| ### Prerequisites | ||
|
|
||
| - Plane CE and Commercial versions should be compatible | ||
| - Shell access to both servers | ||
| - Docker installed on both servers | ||
|
|
||
| ### Back up data on Community instance | ||
|
|
||
| 1. Create backup folders: | ||
|
|
||
| ```bash | ||
| mkdir -p ~/ce-backups/db | ||
| mkdir -p ~/ce-backups/minio/uploads | ||
| cd ~/ce-backups | ||
| ``` | ||
|
|
||
| 2. Back up PostgreSQL data: | ||
|
|
||
| ```bash | ||
| docker cp plane-app-plane-db-1:/var/lib/postgresql/data/. db/ | ||
| ``` | ||
|
|
||
| 3. Back up MinIO uploads: | ||
|
|
||
| ```bash | ||
| docker cp plane-app-plane-minio-1:/export/uploads minio/uploads/ | ||
|
Comment on lines
+148
to
+154
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🏁 Script executed: # Find docker-compose files
fd -e yml -e yaml . | grep -i docker-composeRepository: makeplane/developer-docs Length of output: 50 🏁 Script executed: # Check the markdown file frontmatter and content
head -50 docs/self-hosting/upgrade-from-community.mdRepository: makeplane/developer-docs Length of output: 2080 🏁 Script executed: # Search for container names in docker-compose files
rg "plane-app|services:" --type yaml -A 5 | head -100Repository: makeplane/developer-docs Length of output: 50 🏁 Script executed: # Check if there's a docker-compose file in the repo root or docs
find . -maxdepth 3 -name "*docker-compose*" -type fRepository: makeplane/developer-docs Length of output: 50 🏁 Script executed: # Get lines 148-154 of the markdown file
sed -n '148,154p' docs/self-hosting/upgrade-from-community.mdRepository: makeplane/developer-docs Length of output: 248 🏁 Script executed: # Get more context around those lines
sed -n '140,160p' docs/self-hosting/upgrade-from-community.mdRepository: makeplane/developer-docs Length of output: 453 🏁 Script executed: # Search for container name references in docs
rg "docker cp|plane-app-plane" docs/ -A 2 -B 2Repository: makeplane/developer-docs Length of output: 1294 🏁 Script executed: # Search for docker ps or container discovery guidance in docs
rg "docker ps|container name|project.name|PROJECT_NAME" docs/ -iRepository: makeplane/developer-docs Length of output: 6818 🏁 Script executed: # Check if there are other self-hosting docs that address container naming
fd -e md . docs/self-hosting/ | head -20Repository: makeplane/developer-docs Length of output: 952 🏁 Script executed: # Check the documentation style - look for existing tip/warning boxes
rg ":::tip|:::warning|:::info|:::note" docs/self-hosting/ -A 2Repository: makeplane/developer-docs Length of output: 2143 🏁 Script executed: # Check the reset-password.md file to see how it handles container discovery
cat docs/self-hosting/govern/reset-password.md | grep -A 10 -B 5 "docker ps"Repository: makeplane/developer-docs Length of output: 437 🏁 Script executed: # Check storage-errors.md to see the container guidance
sed -n '1,50p' docs/self-hosting/troubleshoot/storage-errors.mdRepository: makeplane/developer-docs Length of output: 1963 🏁 Script executed: # Check the setup.sh approach mentioned in the upgrade doc
sed -n '1,200p' docs/self-hosting/upgrade-from-community.md | grep -A 20 "setup.sh backup"Repository: makeplane/developer-docs Length of output: 837 🏁 Script executed: # Check if there's a methods doc that explains container naming
cat docs/self-hosting/methods/docker-compose.md 2>/dev/null | head -100Repository: makeplane/developer-docs Length of output: 4407 🏁 Script executed: # Search for how other docs reference containers
rg "container.*name|<container" docs/self-hosting/ -B 2 -A 2Repository: makeplane/developer-docs Length of output: 1533 Add guidance for discovering actual database and MinIO container names The hardcoded container names Add container discovery tips 2. Back up PostgreSQL data:
+ :::tip
+ If the command below fails, run `docker ps --filter "name=db"` to find your actual database container name.
+ Replace `plane-app-plane-db-1` with your container name.
+ :::
+
```bash
docker cp plane-app-plane-db-1:/var/lib/postgresql/data/. db/
```
3. Back up MinIO uploads:
+ :::tip
+ If the command below fails, run `docker ps --filter "name=minio"` to find your actual MinIO container name.
+ Replace `plane-app-plane-minio-1` with your container name.
+ :::
+
```bash
docker cp plane-app-plane-minio-1:/export/uploads minio/uploads/
```🤖 Prompt for AI Agents |
||
| ``` | ||
|
|
||
| 4. Verify backup sizes: | ||
|
|
||
| ```bash | ||
| du -sh db minio/uploads | ||
| ``` | ||
|
|
||
| Make sure sizes look reasonable (not just a few KB). | ||
|
|
||
| 5. Transfer backup to Commercial server: | ||
|
|
||
| ```bash | ||
| scp -r ~/ce-backups user@commercial-server:/tmp/ | ||
| ``` | ||
|
|
||
| ### Restore data on Commercial instance | ||
|
|
||
| 1. Stop Plane: | ||
|
|
||
| ```bash | ||
| prime-cli stop | ||
| ``` | ||
|
|
||
| Verify all containers are down: | ||
|
|
||
| ```bash | ||
| docker ps | ||
| ``` | ||
|
|
||
| 2. Back up existing Commercial data (safety precaution): | ||
|
|
||
| ```bash | ||
| mv /opt/plane/data/db /opt/plane/data/db.bak | ||
| mv /opt/plane/data/minio/uploads /opt/plane/data/minio/uploads.bak | ||
| ``` | ||
|
|
||
| 3. Restore PostgreSQL: | ||
|
|
||
| ```bash | ||
| mv /tmp/ce-backups/db /opt/plane/data/db | ||
| ``` | ||
|
|
||
| 4. Restore MinIO uploads: | ||
|
|
||
| ```bash | ||
| mv /tmp/ce-backups/minio/uploads /opt/plane/data/minio/uploads | ||
| ``` | ||
|
|
||
| 5. Start Plane: | ||
|
|
||
| ```bash | ||
| prime-cli restart | ||
| ``` | ||
|
|
||
| ### Validate the migration | ||
|
|
||
| - Login works | ||
| - Projects are visible | ||
| - Attachments open correctly | ||
|
|
||
| ### Rollback | ||
|
|
||
| If something fails, restore from the backup you created in step 2: | ||
|
|
||
| ```bash | ||
| prime-cli stop | ||
|
|
||
| rm -rf /opt/plane/data/db | ||
| mv /opt/plane/data/db.bak /opt/plane/data/db | ||
|
|
||
| rm -rf /opt/plane/data/minio/uploads | ||
| mv /opt/plane/data/minio/uploads.bak /opt/plane/data/minio/uploads | ||
|
|
||
| prime-cli restart | ||
| ``` | ||
|
|
||
| ::: | ||
|
|
||
|
|
||
| ## What's next | ||
|
|
||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Line exceeds 120 character limit.
Line 158 contains 161 characters, exceeding the 120 character line width requirement.
📏 Proposed fix to wrap the line
As per coding guidelines, files should maintain a 120 character line width.
📝 Committable suggestion
🤖 Prompt for AI Agents