Nextcloud: Update auf einem Shared Webspace

Nextcloud ist eigentlich nicht für Webhosting-Pakete sondern komplette Server gedacht, weswegen Updates etwas aufwendiger sind. Ursache des Problems ist meist die Laufzeitbegrenzung von PHP-Skripten, die dazu führt das große Updates in der Laufzeit abgebrochen werden. Bei Nextcloud betrifft das nicht nur das Hauptsystem, sondern auch große Apps, wie beispielsweise der Community Document Server.

Schritte zum Update:

  1. Anmeldung als Admin auf der Nextcloud-Installation und Browserfenster offen lassen.
  2. Backup erstellen
  3. Wartungsmodus aktivieren, um bestehende Synchronisationen zu pausieren
    Datei: config/config.php -> maintenance=>true
  4. Upload der nächst höheren Hauptversion (keine Hauptversion überspringen!) und in den Ordner nextcloud_new entpacken
  5. Verschiebe aller alten Dateien außer den Ordner data und nextcloud_new in den Ordner nextcloud_old.
  6. Verschiebe alle Dateien aus dem Ordner nextcloud_new auf die Hauptebene.
  7. Kopiere die Datei config.php und data.config.php aus nextcloud_old/config in den Ordner config
  8. Deaktiviere den Wartungsmodus
    Datei: config/config.php -> maintenance=>false
  9. Aktualisiere den Browsertab

SSH-Zugriff / OCC comands

Über einen SSH-Zugriff können sogranannte occ-Befehle (owncloud comands) ausgeführt werden. Das sind nextcloud-interne Skripte die Ausgaben ausführen. Dazu muss z.B. mit der Software MobaXterm eine SSH-Verbindung hergestellt werden und folgender Code auf der Hauptebene ausgeführt werden:

php cloud.example.de/occ db:add-missing-primary-keys

Damit occ korrekt arbeitet muss in der data.config.php der Dateipfad folgendermaßen angegeben werden:

<?php
$CONFIG =
[
     'datadirectory' => realpath(__dir__ . '/../data'),
];

Je nach Hoster können die Dateipfade variieren.

Datenbanken ohne SHH-Zugriff aktualisieren

Ein einfacher Weg über eine einfache PHP-Seite wird hier beschrieben: https://www.ich-war-hier.de/2020/09/21/nextcloud-occ-kommando-auf-webhoster-ohne-ssh-ausfuehren/

Alternativ kann wer Cronjobs nutzt auch ohne SSH-Zugriff auskommen, da er die Kommandos einmalig als Cronjob ausgeführt werden können. Der Befehl kann in etwa so aussehen:

/usr/local/bin/php /home/kunde1/cloud.example.de/nextcloud/occ db:add-missing-primary-keys