> For the complete documentation index, see [llms.txt](https://docs.sonarsource.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.sonarsource.com/sonarqube-server/server-update-and-maintenance/update/update.md).

# Performing the update

Once you have determined your update path and tested your update, you can perform your SonarQube Server update. This page is for SonarQube Server 2026.5.

Now that you have determined your update path and performed the pre-update steps, you can proceed with your update.

{% hint style="warning" %}
To use the Sandbox feature after updating your SonarQube Server from a version prior to 2025.5, it is recommended to enable it by configuring system properties during the update process. This ensures that the feature is enabled before any project analysis. See [Quality standards](/sonarqube-server/instance-administration/analysis-functions/quality-standards.md#setting-up-the-sandbox-feature-through-system-properties).
{% endhint %}

## Updating a ZIP file instance (deprecated) <a href="#zip-instance" id="zip-instance"></a>

{% hint style="warning" %}
Installing SonarQube Server from the ZIP file is deprecated. It's still supported, but support will be removed in a future release, so if you run a ZIP installation, consider moving to the [Docker image](https://hub.docker.com/_/sonarqube) or the [Helm chart](https://artifacthub.io/packages/helm/sonarqube/sonarqube) as part of your next update. See the [deprecation policy](/sonarqube-server/server-update-and-maintenance/maintenance/deprecations/deprecation-policy.md) for details, and [Moving from a ZIP file installation to a Docker installation](/sonarqube-server/server-update-and-maintenance/update/other-procedures.md#from-zip-to-docker) for the procedure.

The agentic features run as containers, so they have no ZIP equivalent. You can keep SonarQube Server on the ZIP file and deploy their containers alongside it. See [Deploying AI agents](/sonarqube-server/server-installation/ai-agents.md).
{% endhint %}

Before you update, make sure you know how to install the server from the ZIP file, see [Installation overview](/sonarqube-server/server-installation/from-zip-file/overview.md), and check that your environment meets the requirements of the version you’re updating to, see [Server host requirements](/sonarqube-server/server-installation/server-host-requirements.md).

To update from the ZIP file:

1. Download and unzip the [SonarQube Server distribution](https://www.sonarsource.com/products/sonarqube/downloads/) of your edition in a fresh directory, let’s say `<newSonarqubeHome>`.
2. If you’re using third-party plugins, manually install plugins that are compatible with your version of SonarQube Server. Use the [Plugin version matrix](/sonarqube-server/server-installation/plugins/plugin-version-matrix.md) to ensure that the versions you install are compatible with your server version. Simply copying plugins from the old server to the new is not recommended; incompatible or duplicate plugins could cause startup errors. Analysis of all languages provided by your edition is available by default without plugins.
3. Update the contents of `sonar.properties` file (in `<newSonarqubeHome>/conf`) with the settings in the `<oldSonarqubeHome>/conf` directory (web server URL, database, ldap settings, etc.). Do not copy-paste the old files. If you are using the Oracle DB, copy its JDBC driver into `<newSonarqubeHome>/extensions/jdbc-driver/oracle`.
4. Stop your old SonarQube Server.
5. Start your new SonarQube Server.
6. Browse to `http://yourSonarQubeServerURL/setup` and follow the setup instructions.
7. Reanalyze your projects for a better experience.

## Updating a Docker image instance <a href="#docker-instance" id="docker-instance"></a>

To update SonarQube Server using the Docker image:

1. Stop and remove the existing SonarQube Server container:

```css-79elbk
$ docker stop <container_id>
$ docker rm <container_id>
```

2\. [Set up and start your container](/sonarqube-server/server-installation/from-docker-image/set-up-and-start-container.md).

```css-79elbk
$> docker run -d --name sonarqube \
    -p 9000:9000 \
    -e SONAR_JDBC_URL=... \
    -e SONAR_JDBC_USERNAME=... \
    -e SONAR_JDBC_PASSWORD=... \
    -v sonarqube_data:/opt/sonarqube/data \
    -v sonarqube_extensions:/opt/sonarqube/extensions \
    -v sonarqube_logs:/opt/sonarqube/logs \
    <image_name>
```

where `<image_name>` depends on the update target:

* for SonarQube Community Build: `sonarqube`
* for SonarQube Server Editions: check the tags currently available on the [DockerHub page](https://hub.docker.com/_/sonarqube).

3\. Go to `http://yourSonarQubeServerURL/setup` and follow the setup instructions.

4\. Reanalyze your projects for a better experience.

{% hint style="info" %}

* If you’re updating with an Oracle database or you’re using plugins, you can reuse your extensions volume from the previous version to avoid moving plugins or drivers. Use the [Plugin version matrix](/sonarqube-server/server-installation/plugins/plugin-version-matrix.md) to ensure that your plugins are compatible with your version. Analysis of all languages provided by your edition is available by default without plugins.
* If updating from 8.9.x LTA to 9.9.x LTA ([Release cycle model](/sonarqube-server/server-update-and-maintenance/update/release-cycle-model.md): Please note that the `lts` tag on Docker images is replaced with every new LTA release. If you want to avoid an automatic major update, we recommend using the corresponding `9.9-<edition>` tag instead of relying on the `lts-<edition>` tag.
* Unless you intend to delete the database and start new when running your image, be careful not to use `-v` to `docker-compose down` and, be careful when running commands like `docker system prune` or `docker volume prune`; regardless if you use an `external: true` parameter, your database volumes will not persist beyond the initial startup and shutdown of SonarQube Server.
  {% endhint %}

## Updating a Helm chart instance <a href="#helm-chart-instance" id="helm-chart-instance"></a>

{% hint style="info" %}

* We highly recommend to disable autoscaling on Kubernetes during long-running updates. See [Setting up autoscaling](/sonarqube-server/server-installation/data-center-edition/on-kubernetes-or-openshift/setting-up-autoscaling.md) for more details.
* If you’re updating with an Oracle database or you’re using plugins, you can reuse your extensions Persistent Volume Claims from the previous version to avoid moving plugins or drivers. Use the [Plugin version matrix](/sonarqube-server/server-installation/plugins/plugin-version-matrix.md) to ensure that your plugins are compatible with your version. Analysis of all languages provided by your edition is available by default without plugins.
  {% endhint %}

{% hint style="warning" %}
Please verify that any custom configurations or custom `values.yaml` files contain *only parameters that are still compatible with the targeted chart*, and adjust them if needed. Some default values assigned to parameters may have changed between versions of the chart,or other parameters could have been removed.
{% endhint %}

<details>

<summary>Standard procedure</summary>

1. Change the SonarQube Server version parameter on your `values.yaml`:
   * Developer and Enterprise Editions: `image.tag`
   * Data Center Edition: `searchNodes.image.tag` and `applicationNodes.image.tag`
2. Redeploy SonarQube Server with the same helm chart:

```css-79elbk
helm upgrade --install -f values.yaml -n <yourNamespace> <yourReleaseName> <pathToSonarqubeHelmChart>
```

3\. If you’re updating a Data Center Edition: after SonarQube Server’s search pods are running and ready, only one application (app) replica will be running and ready. You can confirm that it’s because of the ongoing update by inspecting the logs of the pod for this text: `The database must be manually upgraded. Please backup the database and browse /setup`.

4\. Go to `http://yourSonarQubeServerURL/setup` and follow the setup instructions.

5\. Reanalyze your projects to get fresh data.

</details>

<details>

<summary>If updating from 8.9.x LTA to 9.9.x LTA</summary>

**Update from 8.9.x LTA to 9.9.x LTA**

To install SonarQube 9.9 LTA, use the [sonarqube](https://artifacthub.io/packages/helm/sonarqube/sonarqube) Helm chart. The [sonarqube-lts](https://artifacthub.io/packages/helm/sonarqube/sonarqube-lts) Helm chart is no longer maintained and cannot be used to install the new LTS.

* For SonarQube 9.9 LTA Community, Developer, and Enterprise Editions, the [Helm chart ](https://artifacthub.io/packages/helm/sonarqube/sonarqube)version to use is `8.x.x` . See [`sonarqube` ArtifactHub](https://artifacthub.io/packages/helm/sonarqube/sonarqube#installing-the-sonarqube-9-9-lts-chart) for more information.
* For SonarQube 9.9 LTA Data Center Edition, the [Helm chart ](https://artifacthub.io/packages/helm/sonarqube/sonarqube)version to use is `7.x.x` . See [`sonarqube-dce` ArtifactHub](https://artifacthub.io/packages/helm/sonarqube/sonarqube-dce#installing-the-sonarqube-9-9-lts-chart) for more information.

As SonarQube only requires to persist the database, the general update process will consist of uninstalling your instance before installing the new LTA.

If you are using an external database, you don’t have any persistent data inside kubernetes. Therefore, there is no action required.

Instead, if you rely on the embedded PostgreSQL chart (**not recommended**), uninstalling the chart will keep the PVC alive. The PVC can then be reused either:

* by specifying `postgresql.existingClaim` in the `values.yaml` file
* by not changing parameter values, but making sure you install the new chart in the same namespace (auto-generated name will be the same).

</details>

<details>

<summary>If updating from 2026.1 LTA to 2026.5 LTA (Data Center Edition)</summary>

**Update from 2026.1 LTA to 2026.5 LTA — Data Center Edition**

This update bumps the bundled Elasticsearch version from 8.x to 9.x. The search StatefulSet rolls one pod at a time, and an 8.x search node cannot join a cluster whose other members are already on 9.x, so a standard rolling update cannot complete this transition. The chart fails fast if you try to upgrade while the search pods are still running on the previous major.

Plan a maintenance window, and back up the database before you start.

1. Scale the search tier to `0` with your **current** chart, and wait until the search pods are gone. Do not change the image tag in this step:

```css-79elbk
helm upgrade -n <yourNamespace> <yourReleaseName> <yourCurrentChart> --reuse-values --set searchNodes.replicaCount=0
```

2\. Update the SonarQube Server version parameters in your `values.yaml` (`searchNodes.image.tag` and `applicationNodes.image.tag`), then upgrade to the new chart and restore the search replica count in the same operation:

```css-79elbk
helm upgrade -f values.yaml -n <yourNamespace> <yourReleaseName> <yourNewChart> --set searchNodes.replicaCount=<yourReplicaCount>
```

3\. Once the search pods are ready, go to `http://yourSonarQubeServerURL/setup` and follow the setup instructions.

{% hint style="warning" %}
This move is one-way. Indexes are rebuilt into the `es9` data format, and rolling back to 2026.1 LTA in place is not supported. To roll back, discard the search volumes, reinstall the previous chart, and reindex from the database.
{% endhint %}

</details>

## Related pages <a href="#related-pages" id="related-pages"></a>

* [Release cycle model](/sonarqube-server/server-update-and-maintenance/update/release-cycle-model.md)
* [Determining the update path](/sonarqube-server/server-update-and-maintenance/update/determine-path.md)
* [Pre-update steps](/sonarqube-server/server-update-and-maintenance/update/pre-update-steps.md)
* [Post-update steps](/sonarqube-server/server-update-and-maintenance/update/post-update-steps.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.sonarsource.com/sonarqube-server/server-update-and-maintenance/update/update.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
