Beispielhaft am Webhoster Netcup

Gerade bei kleinen Webhostingangeboten scheitert das Update von Nextcloud über das Webupdate an Zeitüberschreitungen. In solchen Fällen bietet sich das Update über das CLI (via SSH) an.
Folgende Schritte wurden beim Webhosting bei Netcup erfolgreich durchgeführt. [nextcloud] steht für den individuellen Pfad auf dem Server.

Da man mittels ssh nur auf eine chroot-Umgebung zugreifen kann, empfiehlt es sich die [nextcloud]/config/config.php wie folgt zu modifizieren:

'datadirectory' => ((php_sapi_name() != 'cli') ? '/var/www/vhosts/hostingxxxx.yyyyy.netcup.net':'').'/[nextcloud]/data',

Danach den Wartungsmodus aktivieren:
php [nextcloud]/occ maintenance:mode --on

Anschließend das Update durchführen.
php [nextcloud]/updater/updater.phar

Ggf. kann man dabei das üblich PHP-Limit des Webhostings für das Update umgehen.
php -dmax_execution_time=0 -dmemory_limit=-1 [nextcloud]/updater/updater.phar

Dabei werden die gleichen Schritte wie beim Webupdate durchgeführt.

Falls das Update vorher gescheitert ist (z.B. beim Backup) sind noch temporäre Dateien vorhanden, die ein neues Updates scheitern lassen. Diese befinden sich unter [nextcloud]/data/updater-<zufallsstring> und müssen gelöscht werden.

Zum Abschluss des Updates kann automatisch der Wartungsmodus deaktiviert werden.
Bevor man jetzt auf die Website geht, sollte man den o.g. Eintrag noch einmal in der (neuen) Config einsetzen.
'datadirectory' => ((php_sapi_name() != 'cli') ? '/var/www/vhosts/hostingxxxx.yyyyy.netcup.net':'').'/[nextcloud]/data',

Meist sind noch Aufräumarbeiten nötig:
php [nextcloud]/occ db:add-missing-indices
php [nextcloud]/occ db:add-missing-primary-keys
php [nextcloud]/occ db:convert-filecache-bigint