# Performing the update

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

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

Before you update, make sure you know how to install the server from the ZIP file, see [Installation overview](/sonarqube-community-build/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-community-build/server-installation/server-host-requirements.md).

To update from the ZIP file:

1. Download and unzip the SonarQube Community Build distribution 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 Community Build. Use the [Plugin version matrix](/sonarqube-community-build/server-installation/plugins/plugin-version-matrix.md) to ensure that the versions you install are compatible with your SonarQube version. Simply copying plugins from the old instance to the new is not recommended; incompatible or duplicate plugins could cause startup errors.
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 Community Build.
5. Start your new SonarQube Community Build.
6. Browse to `http://yourSonarQubeURL/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 Community Build using the Docker image:

1. Stop and remove the existing SonarQube Community Build container:

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

2\. [Set up and start your container](/sonarqube-community-build/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://yourSonarQubeURL/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-community-build/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.
* 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 Community Build.
  {% endhint %}

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

{% hint style="info" %}
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-community-build/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 Community Build version parameter (`image.tag`) on your `values.yaml`.\
   Example: `image: sonarqube:25.2.0.102705-community`
2. Redeploy SonarQube Community Build with the same helm chart:

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

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

5\. Reanalyze your projects to get fresh data.

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

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

</details>


---

# Agent Instructions: Querying This Documentation

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

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

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

The question should be specific, self-contained, and written in natural language.
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.
