Skip to content

Upgrade from Community to Commercial Edition

The Commercial edition comes with the free plan and the flexibility to upgrade to a paid plan at any point.

WARNING

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.

Prerequisites

  • Install the Commercial Edition on a fresh machine, not the one running the Plane Community Edition.
  • Be sure to log in as the root user or as a user with sudo access. The /opt folder requires sudo or root privileges.

This upgrade path is for installations using Plane's default PostgreSQL database and MinIO object storage.

Back up data on Community instance

  1. Download the latest version of setup.sh.

    bash
    curl -fsSL https://github.com/makeplane/plane/releases/latest/download/setup.sh -o setup.sh
  2. Run the setup.sh backup script to take the backup of the Community Edition instance.

    bash
    ./setup.sh backup
  3. When done, your data will be backed up to the folder shown on the screen. e.g., /plane-selfhost/plane-app/backup/20240522-1027 This folder will contain 3 tar.gz files.

    • pgdata.tar.gz
    • redisdata.tar.gz
    • uploads.tar.gz
  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

Restore data on Commercial instance

  1. Start any command-line interface like Terminal and go into the folder with the back-up files.

    cd ~/ce-backup
  2. Copy and paste the script below on Terminal and hit Enter.

     TARGET_DIR=/opt/plane/data
     sudo mkdir -p $TARGET_DIR
     for FILE in *.tar.gz; do
         if [ -e "$FILE" ]; then
             tar -xzvf "$FILE" -C "$TARGET_DIR"
         else
             echo "No .tar.gz files found in the current directory."
             exit 1
         fi
     done
    
     mv $TARGET_DIR/pgdata/ $TARGET_DIR/db
     mv $TARGET_DIR/redisdata/ $TARGET_DIR/redis
     mkdir -p $TARGET_DIR/minio
     mv $TARGET_DIR/uploads/ $TARGET_DIR/minio/uploads/
  3. This script will extract your Community Edition data and restore it to /opt/plane/data.

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/
  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