Upgrade via built-in updater

The built-in updater automates many of the steps of upgrading a Nextcloud installation. It is useful for installations that do not have root access, such as shared hosting, for installations with a smaller number of users and data, and it automates updating :doc:`manual installations <../installation/source_installation>`.

What does the updater do?

The built-in updater performs these operations:

Using the command line based updater

  1. You should see a notification at the top of any Nextcloud page when there is a new update available. Go to the admin settings page and scroll to the section "Version". This section has a button to open the updater. This section as well as the update notification is only available if the update notification app is enabled in the apps management.

Nextcloud admin settings Version section showing an update available notification
  1. Instead of clicking that button you can now invoke the command line based updater by going into the updater/ directory in the Nextcloud directory and executing the updater.phar as the web server user. (i.e. sudo -E -u www-data php /var/www/nextcloud/updater/updater.phar)

Terminal showing Nextcloud command line updater starting and displaying update information
  1. Verify the information that is shown and enter "Y" to start the update.

Terminal showing Nextcloud command line updater executing update steps Terminal showing Nextcloud command line updater with a failed step and error feedback
  1. In case an error happens or the check failed the updater stops processing and gives feedback. You can now try to solve the problem and re-run the updater command. This will continue the update and re-run the failed step. It will not re-run the previous succeeded steps.

Terminal showing Nextcloud command line updater ready to continue after resolving an error
  1. Once all steps are executed the updater will ask you a final question: "Should the "occ upgrade" command be executed?". This allows you to directly execute the command line based upgrade procedure (occ upgrade). If you select "No" then it will finish with Please now execute "./occ upgrade" to finish the upgrade..

Terminal showing Nextcloud command line updater asking whether to run the occ upgrade command
  1. Once the occ upgrade is done you get asked if the maintenance mode should be kept active.

Terminal showing Nextcloud command line updater asking whether to keep maintenance mode active

Batch mode for command line based updater

It is possible to run the command line based updater in a non-interactive mode. The updater then doesn't ask any interactive questions. It is assumed that if an update is available it should be installed and the occ upgrade command is executed as well. After finishing the maintenance mode will be turned off except an error occurred during the occ upgrade or the replacement of the code.

To execute this, run the command with the --no-interaction option. (i.e. sudo -E -u www-data php /var/www/nextcloud/updater/updater.phar --no-interaction)

Terminal showing Nextcloud command line updater running in non-interactive batch mode

Using a custom download URL

The --url option lets you override the archive the updater downloads. Common use cases:

Point the updater at any HTTP/HTTPS URL:

sudo -u www-data php /var/www/nextcloud/updater/updater.phar \
    --url https://download.nextcloud.com/server/releases/nextcloud-33.0.0.zip

For a locally staged archive, use a file:// URL:

sudo -u www-data php /var/www/nextcloud/updater/updater.phar \
    --url file:///tmp/nextcloud-33.0.0.zip

Signature verification

When --url is used the updater cannot look up the official signature automatically. You have two options:

  • Provide the signature — pass the base64-encoded signature with --signature. You can get the signature from https://nextcloud.com/changelog/ or from the same mirror that hosts the archive:

    sudo -u www-data php /var/www/nextcloud/updater/updater.phar \
        --url file:///tmp/nextcloud-33.0.0.zip \
        --signature "BASE64_SIGNATURE_HERE"
  • Skip verification — pass --no-verify to disable integrity checking entirely. Only do this if you fully trust the source and transfer channel, or if you have already verified the archive yourself (e.g. by checking the SHA-512 checksum):

    sha512sum -c nextcloud-33.0.0.zip.sha512

    Then run the updater without signature checking:

    sudo -u www-data php /var/www/nextcloud/updater/updater.phar \
        --url file:///tmp/nextcloud-33.0.0.zip \
        --no-verify

These options can be combined with --no-interaction for fully automated runs:

sudo -u www-data php /var/www/nextcloud/updater/updater.phar \
    --url file:///tmp/nextcloud-33.0.0.zip \
    --signature "BASE64_SIGNATURE_HERE" \
    --no-interaction

Using the web based updater

The web based updater performs the same steps and checks as the command line based updater.

Using the built-in updater to update your Nextcloud installation is just a few steps:

  1. You should see a notification at the top of any Nextcloud page when there is a new update available. Go to the admin settings page and scroll to the section "Version". This section has a button to open the updater. This section as well as the update notification is only available if the update notification app is enabled in the apps management.

images/updater-1-update-available.png
  1. Click the button "Open updater".

images/updater-2-open-updater.png
  1. Verify the information that is shown and click the button "Start update" to start the update.

images/updater-3-running-step.png
  1. In case an error happens or the check failed the updater stops processing and gives feedback. You can now try to solve the problem and click the "Retry update" button. This will continue the update and re-run the failed step. It will not re-run the previous succeeded steps.

images/updater-4-failed-step.png
  1. In case you close the updater, before it finished you can just open the updater page again and proceed at the last succeeded step. Closing the web page will still execute the running step but will not continue with the next one, because this is triggered by the open updater page.

images/updater-5-continue-update.png
  1. Once all steps are executed the updater will ask you a final question: "Keep maintenance mode active?". This allows you to use either the web based upgrade page or the command line based upgrade procedure (occ upgrade). Command line access is required if the maintenance mode is kept active.

images/updater-6-maintenance-mode.png
  1. Done. You now can continue either to the web based upgrade page or run occ upgrade. The two examples "Web based upgrade" and "Command line based upgrade" shows how the screens then look like.

Web based upgrade

This is how the web based update would continue:

Nextcloud web updater showing option to disable maintenance mode after upgrade Nextcloud upgrade page displayed after the web updater completes

Command line based upgrade

This is how the command line based update would continue:

Nextcloud command line updater asking whether to keep maintenance mode active
$ sudo -u www-data php ./occ upgrade
Nextcloud or one of the apps require upgrade - only a limited number of commands are available
You may use your browser or the occ upgrade command to do the upgrade
Set log level to debug
Updating database schema
Updated database
Updating <files_pdfviewer> ...
Updated <files_pdfviewer> to 1.1.1
Updating <gallery> ...
Updated <gallery> to 17.0.0
Updating <activity> ...
Updated <activity> to 2.5.2
Updating <comments> ...
Updated <comments> to 1.2.0
Updating <theming> ...
Updated <theming> to 1.3.0
Starting code integrity check...
Finished code integrity check
Update successful
Maintenance mode is kept active
Reset log level

Troubleshooting