# Update a Development Instance of FusionAuth

Learn how to update an instance of FusionAuth that isn't used for production purposes.

> For the index of this section of the site, see [llms.txt](https://fusionauth.io/docs/llms.txt)

This page explains how to update FusionAuth to a newer version.

## Update

To update an instance of FusionAuth configured with a container management tool such as Docker Desktop, OrbStack, or Podman:

1.  Stop the instance:
    
    ```shell-session
    $ docker compose down
    ```
    
2.  Modify the `docker-compose.yml` file to point to the version of FusionAuth you want. The following command will update you to the latest version:
    
    ```shell-session
    $ docker pull fusionauth/fusionauth-app:latest
    ```
    
    For a full list of available tags, see [fusionauth-app on Docker Hub](https://hub.docker.com/r/fusionauth/fusionauth-app).
    
3.  Start your instance:
    
    ```shell-session
    $ docker compose up -d
    ```
    
4.  Open the [System -> About page in the Admin UI](http://localhost:9011/admin/system/about/) to check your instance's version of FusionAuth.
    

1.  Configure a `FUSIONAUTH_HOME` environment variable (typically `/usr/local/fusionauth`).
    
2.  Navigate to `FUSIONAUTH_HOME`. You should see the following contents:
    
    ```tree
    $FUSIONAUTH_HOME
    ├── bin
    ├── config
    │   ├── fusionauth.properties
    │   └── keystore
    ├── data
    ├── fusionauth-app
    ├── fusionauth-search
    └── java
    ```
    
3.  Shut down the FusionAuth services. During an update, most everything is saved in the database, so it is safe to delete these directories.
    
    ```shell-session
    $ "$FUSIONAUTH_HOME/bin/shutdown.sh"
    ```
    
4.  Delete or move the existing install:
    
    ```shell-session
    $ rm -rf "$FUSIONAUTH_HOME/fusionauth-app" "$FUSIONAUTH_HOME/fusionauth-search" "$FUSIONAUTH_HOME/bin"
    ```
    
    Tip
    
    To preserve your configuration and Elasticsearch index, preserve the following directories:
    
    ```tree
    $FUSIONAUTH_HOME
    ├── config
    ├── data
    ├── java
    └── logs
    ```
    
5.  Extract the new ZIP files and place them in `FUSIONAUTH_HOME` (the `-n` flag prevents accidental overwrites):
    
    Unzip the new packages with a no-overwrite flag
    
    ```shell-session
    $ unzip -nq new-fusionauth-app.zip -d "$FUSIONAUTH_HOME" && unzip -nq new-fusionauth-search.zip -d "$FUSIONAUTH_HOME"
    ```
    
6.  Restart FusionAuth:
    
    ```shell-session
    $ "$FUSIONAUTH_HOME/bin/startup.sh"
    ```
    

If you initially installed FusionAuth using Homebrew, you can also use Homebrew to update to the latest version of FusionAuth.

To update FusionAuth using `brew`, follow the steps below:

1.  Stop `fusionauth-app` using Homebrew services:
    
    ```shell-session
    $ brew services stop fusionauth-app
    ```
    
2.  Update the version of `fusionauth-app`:
    
    ```shell-session
    $ brew upgrade fusionauth-app
    ```
    
3.  Start `fusionauth-app` with Homebrew services:
    
    ```shell-session
    $ brew services start fusionauth-app
    ```
    

1.  Configure a `$env:FUSIONAUTH_HOME` environment variable (typically `\fusionauth`).
    
2.  Navigate to `$env:FUSIONAUTH_HOME`. You should see the following contents:
    
    ```tree
    $env:FUSIONAUTH_HOME (\fusionauth)
    ├── bin
    ├── config
    │   ├── fusionauth.properties
    │   └── keystore
    ├── data
    ├── fusionauth-app
    ├── fusionauth-search
    └── java
    ```
    
3.  Shut down the FusionAuth services. During an update, most everything is saved in the database, so it is safe to delete these directories.
    
    ```powershell
    Stop-Service -Name FusionAuthApp
    ```
    
    ```powershell
    Stop-Service -Name FusionAuthSearch
    ```
    
4.  Delete or move the existing install:
    
    ```powershell
    & "$env:FUSIONAUTH_HOME\fusionauth-app\bin\FusionAuthApp.exe" /uninstall
    ```
    
    Note
    
    Prior to version `1.37.0`, you can find `FusionAuthApp.exe` at:
    
    `& "\$env:FUSIONAUTH_HOME\fusionauth-app\apache-tomcat\bin\FusionAuthApp.exe"`
    
    Versions `1.37.0` through `1.39.0` do not support native Windows installation.
    
    ```powershell
    & "$env:FUSIONAUTH_HOME\fusionauth-search\elasticsearch\bin\FusionAuthSearch.exe" /uninstall
    ```
    
    Tip
    
    To preserve your configuration and Elasticsearch index, preserve the following directories:
    
    ```tree
    $env:FUSIONAUTH_HOME
    ├── config
    ├── data
    ├── java
    └── logs
    ```
    
5.  Extract the new ZIP files and place them in `$env:FUSIONAUTH_HOME`. You may do this using Windows File Explorer or PowerShell's `Expand-Archive` cmdlet. Ensure you delete or move the existing directories to prevent unzipping the new version on top of the existing version. If the new version is unzipped on top of the existing version, you will end up with duplicate libraries in the classpath that will lead to runtime errors.
    
6.  Reinstall the Windows services:
    
    ```powershell
    & "$env:FUSIONAUTH_HOME\fusionauth-app\bin\FusionAuthApp.exe" /install
    ```
    
    ```powershell
    & "$env:FUSIONAUTH_HOME\fusionauth-search\elasticsearch\bin\FusionAuthSearch.exe" /install
    ```
    
7.  Start the Windows services:
    
    ```powershell
    Start-Service -Name FusionAuthSearch
    Start-Service -Name FusionAuthApp
    ```
    

If you installed using the RPM or Debian packages, issue an update command to `dpkg` or your RPM program and specify the new package file:

1.  Shut down FusionAuth:
    
    ```shell-session
    $ sudo service fusionauth-app stop && sudo service fusionauth-search stop
    ```
    
2.  Update FusionAuth to a specific version, replacing the `<version>` placeholder with your version number:
    
    ```shell-session
    $ sudo dpkg -i fusionauth-search-<version>.deb && sudo dpkg -i fusionauth-app-<version>.deb
    ```
    
    ```shell-session
    $ sudo rpm -U fusionauth-search-<version>.rpm && sudo rpm -U fusionauth-app-<version>.rpm
    ```
    
3.  Start FusionAuth:
    
    ```shell-session
    $ sudo systemctl start fusionauth-search && sudo systemctl start fusionauth-app
    ```
    

## Troubleshoot RPM installs

Please review the procedure outlined below if attempting to perform a clean install or update using RPM's and have experienced a failure that you have been unable to resolve. Please only consider these steps after other attempts have been unsuccessful.

Caution

This will completely remove FusionAuth App and FusionAuth Search from your server. Proceed with caution.

It is always recommended you back up the database before performing an update or troubleshooting steps outlined here.

The following steps will produce a clean installation preserving:

*   The FusionAuth config file found in `/usr/local/fusionauth/config/fusionauth.properties`
*   The Elasticsearch index found in `/usr/local/fusionauth/data`

Below assumes both `fusionauth-app` and `fusionauth-search` will be uninstalled and reinstalled together. If you are not using `fusionauth-search`, you may ignore the steps related to this service.

### Manual Removal Steps

1.  Remove the RPM package for `fusionauth-search` and `fusionauth-app`:
    
    ```shell-session
    $ sudo rpm -e fusionauth-search && sudo rpm -e fusionauth-app
    ```
    
2.  Manually delete anything leftover from RPM:
    
    ```shell-session
    $ sudo rm -rf /usr/local/fusionauth/fusionauth-search/ /usr/local/fusionauth/fusionauth-app/ /usr/local/fusionauth/bin/
    ```
    
3.  After removal, the following directories will remain:
    
    *   `/usr/local/fusionauth/config/`
    *   `/usr/local/fusionauth/data/` (does not always exist)
    *   `/usr/local/fusionauth/java/` (safe to delete)
4.  Download your desired version of `fusionauth-app` and `fusionauth-search` from our [direct download page](https://fusionauth.io/direct-download.md).
    
5.  Reinstall `fusionauth-app` and `fusionauth-search`:
    
    ```shell-session
    $ sudo rpm -i <file_to_be_installed>.rpm
    ```
    

Related

[Update Update to a Newer Version of FusionAuth Learn how to update FusionAuth instances, FusionAuth Cloud deployments, and client libraries to a newer version. upgrade fusionauthversion upgrademigration](https://fusionauth.io/docs/update.md)

[Update Roll Back a FusionAuth Update Learn how to roll back FusionAuth to a previous version. upgrade fusionauthversion upgrademigration](https://fusionauth.io/docs/update/rollback.md)

[Update Update a Production Instance of FusionAuth Learn how to plan, perform, and verify an update of a FusionAuth instance in a production environment. upgrade fusionauthversion upgradeupdate fusionauth](https://fusionauth.io/docs/update/prod-instance.md)

[Cloud Update a Deployment Learn how to update a deployment to a newer version of FusionAuth. update fusionauthversion upgradeversion update](https://fusionauth.io/docs/cloud/update-a-deployment.md)
---

## Other pages in Update

> For the full index of this section, see [Update](https://fusionauth.io/docs/llms-update.txt).

- [FusionAuth Database Migrations](https://fusionauth.io/docs/update/database-migrations.md): Learn how FusionAuth migrates your database schema during an update, and how to run the migrations yourself.
- [Deprecation Policy](https://fusionauth.io/docs/update/deprecation-policy.md): Learn more about the FusionAuth deprecation policy.
- [Early Access Program](https://fusionauth.io/docs/update/early-access-program.md): Learn about how to get your hands on new versions of FusionAuth before the official release.
- [Update a Production Instance of FusionAuth](https://fusionauth.io/docs/update/prod-instance.md): Learn how to plan, perform, and verify an update of a FusionAuth instance in a production environment.
- [Roadmap](https://fusionauth.io/docs/update/roadmap.md): Learn more about the FusionAuth roadmap and planning process.
- [Roll Back a FusionAuth Update](https://fusionauth.io/docs/update/rollback.md): Learn how to roll back FusionAuth to a previous version.
