Skip to content

Added manual upgrade steps (CE to EE) and backup for other deployment methods#220

Merged
sriramveeraghanta merged 1 commit intomasterfrom
manual-backup-restore
Feb 26, 2026
Merged

Added manual upgrade steps (CE to EE) and backup for other deployment methods#220
sriramveeraghanta merged 1 commit intomasterfrom
manual-backup-restore

Conversation

@danciaclara
Copy link
Collaborator

@danciaclara danciaclara commented Feb 26, 2026

Summary by CodeRabbit

  • Documentation
    • Reorganized backup and restore documentation with improved structure and command examples
    • Added manual backup/restore workflow for migrating data from Community to Commercial Edition without CLI
    • Enhanced guidance for multiple deployment methods with platform-specific backup considerations
    • Added recommendations for offsite backup storage

@vercel
Copy link

vercel bot commented Feb 26, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
developer-docs Building Building Preview, Comment Feb 26, 2026 6:39pm

Request Review

@danciaclara danciaclara changed the title Added manual upgrade steps and backup for other deployment methods Added manual upgrade steps (CE to EE) and backup for other deployment methods Feb 26, 2026
@coderabbitai
Copy link

coderabbitai bot commented Feb 26, 2026

📝 Walkthrough

Walkthrough

Documentation restructuring for backup and restore procedures across Plane deployments. Reorganizes Docker Compose guidance with new subsections, introduces manual backup/restore workflows for community-to-commercial migration without CLI dependencies, and adds consolidated deployment-method guidance with platform-specific considerations.

Changes

Cohort / File(s) Summary
Backup/Restore Documentation
docs/self-hosting/manage/backup-restore.md
Reorganizes structure with Docker Compose priority, adds "Backup data" and "Restore data" subsections, introduces "Other deployment methods" section with PostgreSQL/object storage guidance, adds configuration file backup notes, and includes portable offsite backup tips.
Community to Commercial Migration
docs/self-hosting/upgrade-from-community.md
Introduces detailed manual backup/restore workflow without CLI for migrating PostgreSQL data and MinIO uploads, covering prerequisites, backup steps, restoration steps, validation checks, and rollback procedures across both Managed Services and External DB/Storage paths.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Poem

🐰 A rabbit hops through backup plans so clear,
Docker Compose first—no confusion here!
From Community to Commercial we migrate with care,
Manual workflows guide us everywhere,
Offsite backups stored with a hoppy flair! 🌟

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the main changes: adding manual upgrade steps from Community to Enterprise Edition and backup documentation for non-Docker Compose deployment methods.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch manual-backup-restore

Tip

Try Coding Plans. Let us write the prompt for your AI agent so you can ship faster (with fewer bugs).
Share your feedback on Discord.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
docs/self-hosting/manage/backup-restore.md (1)

1-174: ⚠️ Potential issue | 🔴 Critical

Run Prettier formatting to fix multiple line length violations.

The file has multiple lines exceeding the 120 character limit required by the coding guidelines:

  • Line 4 (keywords): 128 characters
  • Line 9 (description): 220 characters
  • Lines 15, 48, 86, 107, 111, 158, 167: also exceed 120 characters

Run prettier --write docs/self-hosting/manage/backup-restore.md to fix these formatting violations before merging. Prettier formatting checks must pass in CI.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/self-hosting/manage/backup-restore.md` around lines 1 - 174, The file
has multiple lines exceeding the 120-char limit; run Prettier to reflow long
lines and fix formatting by executing "prettier --write
docs/self-hosting/manage/backup-restore.md" (or your repo's configured prettier
command), ensure Prettier's printWidth is 120, review and commit the updated
file; specifically address long frontmatter fields (title, description,
keywords) and long content under headings like "Backup and restore data", "For
Docker Compose", "Backup data", and "Restore data" so CI formatting checks pass.
docs/self-hosting/upgrade-from-community.md (1)

1-232: ⚠️ Potential issue | 🔴 Critical

Remove extra blank line before "What's next" section to fix Prettier formatting.

The file has an extra blank line at line 233 (after the ::: closing tag and before the ## What's next heading) that violates Prettier formatting rules. Run prettier --write to fix it.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/self-hosting/upgrade-from-community.md` around lines 1 - 232, There is
an extra blank line between the closing "::: " block and the "## What's next"
heading causing Prettier formatting errors; remove the stray blank line right
after the final "::: " closing tag so the "## What's next" heading immediately
follows it, then run prettier --write (or your project's formatting task) to
reformat the file; locate the section by searching for the closing "::: " token
and the "## What's next" header to make the fix.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@docs/self-hosting/manage/backup-restore.md`:
- Line 158: The line "For Kubernetes, or other deployment methods, use your
platform's native backup tools. Plane stores data in two places that need to be
backed up:" exceeds the 120-character limit; split or wrap this sentence in
docs/self-hosting/manage/backup-restore.md so no resulting line is longer than
120 characters (e.g., break into two sentences or wrap after "backup tools." or
"Plane stores data..."), keeping the original wording and punctuation intact and
ensuring each new line stays ≤120 chars.

In `@docs/self-hosting/upgrade-from-community.md`:
- Around line 148-154: The doc uses hardcoded container names
(plane-app-plane-db-1 and plane-app-plane-minio-1) which can differ if the
user’s parent directory isn’t "plane-app"; add a short tip near both docker cp
examples explaining the container-name pattern
({directory-name}-{service-name}-{replica}) and instruct users to discover their
actual container names with docker ps --filter "name=minio" for MinIO and docker
ps --filter "name=db" or docker ps --filter "name=postgres" for the database,
then replace the example container names accordingly so the docker cp commands
succeed.

---

Outside diff comments:
In `@docs/self-hosting/manage/backup-restore.md`:
- Around line 1-174: The file has multiple lines exceeding the 120-char limit;
run Prettier to reflow long lines and fix formatting by executing "prettier
--write docs/self-hosting/manage/backup-restore.md" (or your repo's configured
prettier command), ensure Prettier's printWidth is 120, review and commit the
updated file; specifically address long frontmatter fields (title, description,
keywords) and long content under headings like "Backup and restore data", "For
Docker Compose", "Backup data", and "Restore data" so CI formatting checks pass.

In `@docs/self-hosting/upgrade-from-community.md`:
- Around line 1-232: There is an extra blank line between the closing "::: "
block and the "## What's next" heading causing Prettier formatting errors;
remove the stray blank line right after the final "::: " closing tag so the "##
What's next" heading immediately follows it, then run prettier --write (or your
project's formatting task) to reformat the file; locate the section by searching
for the closing "::: " token and the "## What's next" header to make the fix.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 7d399c6 and f765f0b.

📒 Files selected for processing (2)
  • docs/self-hosting/manage/backup-restore.md
  • docs/self-hosting/upgrade-from-community.md


## Other deployment methods

For Kubernetes, or other deployment methods, use your platform's native backup tools. Plane stores data in two places that need to be backed up:
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Line exceeds 120 character limit.

Line 158 contains 161 characters, exceeding the 120 character line width requirement.

📏 Proposed fix to wrap the line
-For Kubernetes, or other deployment methods, use your platform's native backup tools. Plane stores data in two places that need to be backed up:
+For Kubernetes, or other deployment methods, use your platform's native backup tools. Plane stores data in two
+places that need to be backed up:

As per coding guidelines, files should maintain a 120 character line width.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
For Kubernetes, or other deployment methods, use your platform's native backup tools. Plane stores data in two places that need to be backed up:
For Kubernetes, or other deployment methods, use your platform's native backup tools. Plane stores data in two
places that need to be backed up:
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/self-hosting/manage/backup-restore.md` at line 158, The line "For
Kubernetes, or other deployment methods, use your platform's native backup
tools. Plane stores data in two places that need to be backed up:" exceeds the
120-character limit; split or wrap this sentence in
docs/self-hosting/manage/backup-restore.md so no resulting line is longer than
120 characters (e.g., break into two sentences or wrap after "backup tools." or
"Plane stores data..."), keeping the original wording and punctuation intact and
ensuring each new line stays ≤120 chars.

Comment on lines +148 to +154
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/
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

# Find docker-compose files
fd -e yml -e yaml . | grep -i docker-compose

Repository: makeplane/developer-docs

Length of output: 50


🏁 Script executed:

# Check the markdown file frontmatter and content
head -50 docs/self-hosting/upgrade-from-community.md

Repository: 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 -100

Repository: 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 f

Repository: 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.md

Repository: 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.md

Repository: 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 2

Repository: 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/ -i

Repository: 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 -20

Repository: 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 2

Repository: 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.md

Repository: 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 -100

Repository: 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 2

Repository: makeplane/developer-docs

Length of output: 1533


Add guidance for discovering actual database and MinIO container names

The hardcoded container names plane-app-plane-db-1 and plane-app-plane-minio-1 assume the installation was performed in a directory named "plane-app". Container names are generated from the parent directory name following the pattern {directory-name}-{service-name}-{replica}. Users who installed Plane in a differently named directory will have different container names and these commands will fail.

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
Verify each finding against the current code and only fix it if needed.

In `@docs/self-hosting/upgrade-from-community.md` around lines 148 - 154, The doc
uses hardcoded container names (plane-app-plane-db-1 and
plane-app-plane-minio-1) which can differ if the user’s parent directory isn’t
"plane-app"; add a short tip near both docker cp examples explaining the
container-name pattern ({directory-name}-{service-name}-{replica}) and instruct
users to discover their actual container names with docker ps --filter
"name=minio" for MinIO and docker ps --filter "name=db" or docker ps --filter
"name=postgres" for the database, then replace the example container names
accordingly so the docker cp commands succeed.

@sriramveeraghanta sriramveeraghanta merged commit 0af57c1 into master Feb 26, 2026
4 of 5 checks passed
@sriramveeraghanta sriramveeraghanta deleted the manual-backup-restore branch February 26, 2026 18:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants