---
updatedAt: 2026-05-21T09:14:56.000Z
agentTools:
  siteIndex: https://docs.jfrog.com/llms.txt
  projectIndex: https://docs.jfrog.com/installation/llms.txt
---

# Distribution Upgrade from Version 2.x to 2.x

Upgrade Distribution within 2.x versions using Helm, Docker Compose, RPM, Debian, or Linux Archive.

<Callout icon="⚠️" theme="warning">
  **Warning**

  Before you upgrade, verify that the operating system version you use is supported. See System Requirements for details on operating system support.
</Callout>

The following upgrade methods are supported:

* [Interactive Script (recommended)](#interactive-script-upgrade-recommended)
* [Manual RPM / Debian](#manual-rpmdeb-upgrade)
* [Linux Archive Upgrade](#linux-archive-upgrade)
* [Helm](#helm-upgrade)

## Interactive Script Upgrade (recommended)

<Callout icon="📘" theme="info">
  Distribution 2.37.0 and later:

  Redis has been removed from the Distribution installer and replaced by an internal in-memory system. For more details, see the [Distribution 2.37.0 release notes](/releases/docs/distribution-release-notes#distribution-237).
</Callout>

The installer script works with all supported upgrade methods (RPM, Debian, and Docker Compose). It provides you an interactive way to install Distribution and its dependencies.

1. <a href="https://jfrog.com/download-jfrog-platform" target="_blank">Download Distribution</a> (RPM, Debian, or Docker Compose).

2. Stop the service.

   **systemd**

   ```bash
   sudo systemctl stop distribution.service
   ```

   **systemv**

   ```bash
   sudo service distribution stop
   ```

   **Docker Compose**

   Navigate to the directory containing your `docker-compose.yaml` and run:

   ```bash
   docker-compose down
   ```

3. Extract the contents of the compressed archive and go to the extracted folder. The installer script is located in the extracted folder.

   **Note**: For Docker Compose upgrades, merge your customizations from the current `docker-compose.yaml` file into the newly extracted `docker-compose.yaml`.

<Callout icon="📘" theme="info">
  **Note**

  Copy the contents of the `.env` file in the previous installation to the newly created `.env` file in this archive **without copying the versions**, as this will affect the upgrade.
</Callout>

4. Run the installer script.

   **Note**: If required, the script prompts for mandatory inputs, including the `jfrogURL` (custom base URL) and `joinKey`.

   **RPM/DEB**

   ```bash
   sudo ./install.sh
   ```

   **Docker Compose**

   ```bash
   sudo ./config.sh
   ```

5. Start and manage the Distribution service.

   **systemd**

   ```bash
   sudo systemctl start distribution.service
   ```

   **systemv**

   ```bash
   sudo service distribution start
   ```

   **Docker Compose**

   Navigate to the directory containing your new `docker-compose.yaml` and run:

   ```bash
   docker-compose up -d
   ```

6. Access Distribution from your browser at: `http://<jfrogUrl>/ui/`, click the **Distribution** tab in the **Platform** module in the UI.

7. Check the Distribution log.

   ```bash
   tail -f $JFROG_HOME/distribution/var/log/console.log
   ```

## Manual RPM/Debian Upgrade

1. <a href="https://jfrog.com/download-jfrog-platform" target="_blank">Download Distribution</a> (RPM or Debian).
2. Stop the current server.

   **systemd**

   ```bash
   sudo systemctl stop distribution.service
   ```

   **systemv**

   ```bash
   sudo service distribution stop
   ```
3. Extract the contents of the compressed archive and go to the extracted folder.
4. Install Distribution using the package from the extracted archive.

   **RPM**

   ```bash
   sudo rpm -Uvh distribution/distribution.rpm
   ```

   **Debian**

   ```bash
   sudo dpkg -i distribution/distribution.deb
   ```
5. Start and manage Distribution.

   **systemd**

   ```bash
   sudo systemctl start distribution.service
   ```

   **systemv**

   ```bash
   sudo service distribution start
   ```
6. Access Distribution from your browser at: `http://<jfrogUrl>/ui/`, click the **Distribution** tab in the **Platform** module in the UI.
7. Check the Distribution log.

   ```bash
   tail -f $JFROG_HOME/distribution/var/log/console.log
   ```

## Linux Archive Upgrade

<Callout icon="📘" theme="info">
  Distribution 2.37.0 and later:

  Redis has been removed from the Distribution installer and replaced by an internal in-memory system. For more details, see the [Distribution 2.37.0 release notes](/releases/docs/distribution-release-notes#distribution-237).
</Callout>

1. Stop the current server.

   ```bash
   $JFROG_HOME/distribution/app/bin/distribution.sh stop
   ```
2. Extract the contents of the compressed archive and go to the extracted folder.

   ```bash
   tar -xvf jfrog-distribution-<version>-linux.tar.gz
   ```
3. Set the path to the extracted directory.

   ```bash
   export JF_NEW_VERSION=<path to extracted folder, e.g., jfrog-distribution-<version>-linux>
   ```
4. Replace the existing `$JFROG_HOME/distribution/app` with the new `app` folder.

   ```bash
   rm -rf $JFROG_HOME/distribution/app
   cp -r $JF_NEW_VERSION/app $JFROG_HOME/distribution/
   rm -rf $JF_NEW_VERSION
   chown -R distribution:distribution $JFROG_HOME/distribution/app
   ```

<Callout icon="📘" theme="info">
  **Note**

  Verify that the password specified in the `requirepass` field in `$JFROG_HOME/distribution/var/etc/redis/redis.conf` (for more information, see <a href="https://redis.io/docs/latest/" target="_blank">Redis documentation</a>) and the `redis.password` field in `$JFROG_HOME/distribution/var/etc/system.yaml` are the same.
</Callout>

5. Start the Distribution service.

   Run the following command as the distribution user.

   ```bash
   $JFROG_HOME/distribution/app/bin/distribution.sh start
   ```
6. Access Distribution from your browser at: `http://<jfrogUrl>/ui/`, click the **Distribution** tab in the **Platform** module in the UI.
7. Check the Distribution log.

   ```bash
   tail -f $JFROG_HOME/distribution/var/log/console.log
   ```

## Helm Upgrade

## Upgrading to Distribution 2.37.0 or Later

<Callout icon="📘" theme="info">
  Distribution 2.37.0 and later:

  Redis has been removed from the Distribution installer and replaced by an internal in-memory system. For more details, see the [Distribution 2.37.0 release notes](/releases/docs/distribution-release-notes#distribution-237).
</Callout>

When upgrading from a version prior to 2.37.0, a pre-upgrade webhook ([`distribution-upgrade-hook`](https://github.com/jfrog/charts/blob/master/stable/distribution/templates/distribution-upgrade-hook.yaml)) is automatically executed. This webhook handles the migration by deleting the existing StatefulSet with `--cascade=orphan` (preserving running pods) to allow the updated spec — which no longer includes Redis — to be applied cleanly.

In most cases, no manual intervention is required. However, if the hook job fails (for example, due to RBAC permissions or image pull issues), you may need to manually delete the StatefulSet before retrying the upgrade:

```bash
kubectl delete statefulset <release-name>-distribution --cascade=orphan -n <namespace>
```

<Callout icon="📘" theme="info">
  **Note**

  Because of breaking changes in the **PostgreSQL** Helm chart, migrate the database from the old to the new database.
</Callout>

<Callout icon="📘" theme="info">
  **Note**

  Downtime is required to perform an upgrade.
</Callout>

<Callout icon="📘" theme="info">
  **Note**

  Before upgrading Distribution, complete the following.

  1. Upgrade JFrog Artifactory to v7.x.
  2. If you use the default PostgreSQL (`postgresql.enabled=true`), pass the previous 9.x or 10.x `postgresql.image.tag` and `databaseUpgradeReady=true`. Also delete the existing PostgreSQL subchart statefulset before the Helm upgrade, because the 9.x chart version of PostgreSQL has breaking changes.

     Run `helm upgrade` with the following values set.
</Callout>

1. Update the existing deployed version to the updated version.
2. If Distribution was installed without providing a value to `postgresql.postgresqlPassword` (the password was autogenerated), follow these instructions.

   1. Get the current password by running the following.
   2. Upgrade the release by passing the previously auto-generated secret.
3. If Distribution was installed without providing a value to `rabbitmq.rabbitmqPassword/rabbitmq-ha.rabbitmqPassword` (the password was autogenerated), follow these instructions.

   1. Get the current password by running the following.
   2. Upgrade the release by passing the previously auto-generated secret.
4. If Distribution was installed with all of the default values (e.g., with no user-provided values for Rabbit/Postgres), follow these steps.

   1. Retrieve all current passwords (RabbitMQ/PostgreSQL) as explained in the above section.
   2. Upgrade the release by passing the previously auto-generated secrets.

   ## Migration Process

The recommended migration process is a full database export and import of PostgreSQL.

1. Block user access to Distribution (but do not shut down).
2. Get the service name `OLD_PG_SERVICE_NAME` using the command below. For example: `OLD_PG_SERVICE_NAME` as `<OLD_RELEASE_NAME>-postgresql`.
3. Save the previous password `OLD_PG_SERVICE_NAME` or extract it from the secret of the existing PostgreSQL pod.
4. Install the new Distribution version with 0 replicas.

   A new PostgreSQL pod will be deployed and started. The Distribution pod will be deployed but not started, since the replica count is 0.

   For example.
5. Connect to the new PostgreSQL pod (you can obtain the name by running `kubectl get pods`).
6. Once logged in, create a dump file from the previous database using `pg_dump`, and connect to the previous PostgreSQL chart.

   After running the command above, you should be prompted for a password; this password is the previous chart password (`OLD_PASSWORD`). This operation could take some time depending on the database size.
7. Once you have the backup file, you can restore it with a command like the one below.
8. After running the command above, you will be prompted for a password; this is the current chart password. This operation could take some time depending on the database size.
9. Run the command `helm upgrade` to bring up Distribution.
10. Run the following command to remove the old Distribution deployment and Helm release.
11. Access Distribution from your browser at: `http://<jfrogUrl>/ui/`, then go to the **Security & Compliance** tab in the **Platform** module in the UI.
12. Check the status of your deployed Helm releases.

    Distribution should now be ready for use.

## Related Topics

* [Distribution Upgrade](upgrading-distribution)
* [Products Upgrade](upgrade)
* [Installing Distribution](installing-distribution)
* [System Requirements](system-requirements)

## Frequently Asked Questions

This section provides answers to frequently asked questions.

<Accordion title="FAQs" icon="plus">

##### Q: Is there downtime during the Helm upgrade?

**A:** Yes. The page states that downtime is required to perform a Helm upgrade of Distribution.

##### Q: What must I do before upgrading Distribution via Helm?

**A:** Before upgrading, you must first upgrade JFrog Artifactory to v7.x. If you use the default bundled PostgreSQL, you must also pass the previous PostgreSQL image tag and set `databaseUpgradeReady=true`, and delete the existing PostgreSQL subchart StatefulSet before running `helm upgrade`.

##### Q: What happens if the pre-upgrade hook job fails during a Helm upgrade to Distribution 2.37.0 or later?

**A:** If the `distribution-upgrade-hook` job fails (for example, due to RBAC permissions or image pull issues), you must manually delete the StatefulSet before retrying the upgrade by running `kubectl delete statefulset <release-name>-distribution --cascade=orphan -n <namespace>`.

##### Q: How do I verify Distribution is running after the upgrade?

**A:** Access Distribution from your browser at `http://<jfrogUrl>/ui/` and click the **Distribution** tab in the **Platform** module. You can also check the Distribution log by running `tail -f $JFROG_HOME/distribution/var/log/console.log`.

##### Q: How do I upgrade from a Distribution version that includes the operating system version restriction?

**A:** Before upgrading, verify that the operating system version you use is supported. See the System Requirements page for details on supported operating system versions. For the recommended upgrade path, use the [interactive script method](upgrading-from-distribution-version-2-x-to-2-x), which works with RPM, Debian, and Docker Compose.

</Accordion>