Viele von uns verwenden Nextcloud als freie und souveräne Alternative zu den grossen kommerziellen Cloud-Diensten. Das ist gut so und darf sich gerne weiter verbreiten. Damit einher geht auch eine grössere Verantwortung für selbst gehostete oder beim Provider des Vertrauens betriebene Dienste.
Wer eine Nextcloud-Installation betreibt, hatte vermutlich schon einmal Probleme mit dem Updater. Die Nextcloud informiert per E-Mail (falls man das eingerichtet hat) oder über eine Benachrichtigung auf der eigenen NC-Webseite, wenn neue Versionen für Apps oder die Nextcloud selbst zur Verfügung stehen. Dann kann man den Updater starten:
Im oben gezeigten Beispiel steht ein Update von Version 30.0.6 auf 30.0.7 bereit. Nach einem Klick auf Updater öffnen, sieht man die einzelnen Schritte, die der Updater durchläuft:
In der Regel funktioniert das reibungslos, doch manchmal bleibt der Updater hängen. Neulich hatte ein Freund an der Stelle Check for expected files ein Problem. Dies konnte gelöst werden, indem ich die fraglichen Dateien gelöscht und den Update-Prozess erneut angestossen habe. Im obigen Screenshot seht ihr ein Problem beim Herunterladen der ZIP-Datei für die neue Version. Der Prozess stoppt bei Punkt 4, dem Downloading. Die Fehlermeldung "Parsing response failed" ist wenig hilfreich. Tatsächlich handelt es sich um ein Timeout; das Herunterladen der Datei nextcloud-30.0.7.zip dauert zu lange, weshalb Nextcloud oder PHP (weiss ich nicht genau) den Vorgang abbricht.
Nun befindet sich der Updater in einem Zwischenstadium, das einem nicht weiterhilft. Startet man den Updater erneut, bekommt man diese Meldung angezeigt:
Step 4 is currently in process. Please reload this page later or remove the following file to start from scratch:
.../httpdocs/nextcloud/data/updater-oc2mc967xw5o/.step
Möchte man dieses Zwischenstadium beenden, muss die besagte Datei über den Dateimanager im Hosting-Backend gelöscht werden. Der Inhalt dieser .step-Datei sieht so aus:
{"state":"start","step":4}
Nach dem Löschen der Datei startet der Updater wieder mit Schritt 1. Leider nützt das nichts, weil er bei Schritt 4 wieder in den Timeout läuft.
Lösungsvorschläge
Am Zwischentitel könnt ihr erkennen, dass ich Zweifel daran habe, eine Lösung zu finden. Folgende Überlegungen habe ich angestellt: Die Datei nextcloud-30.0.7.zip ist knapp 230 MB gross. Der manuelle Download dauerte bei mir 30 Minuten. Das lässt auf eine Überlastung der Nextcloud-Server schliessen und wäre ein Grund für das Timeout bei Schritt 4. Im Download-Verzeichnis auf dem Server befindet sich eine halb fertige Datei:
Wenn die Million Nextcloud-Anwender:innen zeitnah eine Benachrichtigung über ein neues Update erhalten, wäre das ein Grund für die Überlastung des Downloads. Na gut, dann warte ich ein paar Tage ab und versuche es danach erneut. Dieser Gedanke ist naheliegend, aber unbefriedigend, weil man Dinge sofort erledigen möchte.
Meine zweite Idee war, den Updater zu überlisten. Deshalb habe ich die nextcloud-30.0.7.zip manuell heruntergeladen und in das Download-Verzeichnis geschoben. Ausserdem habe ich die Datei .step modifiziert, um dem Updater vorzugaukeln, dass Schritt 4 erfolgreich abgeschlossen wurde:
{"state":"start","step":5}
Leider hat das nicht funktioniert. Der Updater meldet:
Step 5 is currently in process. Please reload this page later or remove the following file to start from scratch:
.../httpdocs/nextcloud/data/updater-oc2mc967xw5o/.step
Dann habe ich die vollständige ZIP-Datei erneut hochgeladen und die Datei .step so geändert:
{"state":"end","step":4}
Damit wollte ich dem Update-Prozess vorgaukeln, dass Schritt 4 (Download) erfolgreich abgeschlossen wurde. Dann habe ich den Updater erneut gestartet. Und der meldete sich so:
Das sieht vielversprechend aus. Der Download wird als abgeschlossen angezeigt und es gibt die Möglichkeit "Continue update". Und siehe da, der Updater läuft problemlos bis zum Ende durch. Ich bin jetzt auf Version 30.0.7
Aber was ist das? Es steht bereits das nächste Update auf Version 31.0.1 an. Dafür habe ich jetzt keine Nerven mehr. Oder doch? Bei diesem Update ergibt sich dasselbe Problem und die Lösung ist auch dieselbe.
Titelbild: https://pixabay.com/vectors/cloud-reload-to-update-2044820/
Quelle: keine
Ja, die Nextcloud-Updates… Wenn man einen Root-Server hat, ist es von Vorteil, die Updates über eine Konsole zu machen. Ich gehe dazu in das updater-Unterverzeichnis und starte die Prozedur mit
sudo -u www-data php updater.phar
. Auf diesem Weg ist das Update etwas geduldiger und man läuft nicht so schnell in einen Timeout rein. Aber je nach Hostingvariante geht dieser Weg halt leider nicht immer.Ich mach das Update immer über die Konsole - dadurch können solche Timeouts verhindert werden
sudo -u www-data php --define apc.enable_cli=1 /pfad/zur/cloud/updater/updater.phar
Bislang immer ohne Probleme
Sehr schön, so ähnlich war das Problem bei mir letzte Woche auch. Nur dass ich nicht mit dem Nextcloud-internen Updater arbeite, sondern ein eigenes Tooling drumherum gebaut habe. Weil ich auch andere Apps selbst hoste und der NC-Updater es bei mir irgendwie eh noch nie getan hat.
Jedenfalls war mein Tooling auch nicht darauf vorbereitet, dass der Download des ZIPs nicht in normaler Zeit abgeschlossen werden kann.
Mein Workaround war derselbe: manuell herunterladen und an die richtige Stelle legen.
Generell scheint der Nextcloud-Server letzte Woche wohl extrem unter Strom gestanden zu haben, denn bisher habe ich in den letzten Jahren ein solches Problem nicht beobachten können. Die x-hundert MB waren immer recht schnell heruntergeladen.
Das Download Problem liest sich so, als könnte man es mit Torrenting anpacken. Das scheint mir doch ein bereits gelöstes Problem zu sein.
genau aus diesem grund sind wir von nextcloud zu cryptpad umgestiegen. das upgrade hat dort noch immer funktioniert und bei nextcloud gefühlt nie.
Bei mir läuft (aus Faulheit) seit Jahren eine nextCloud-Installation, die ich einfach per pkgsrc (ist ein illumos-Server) aktuell halte. Da gab es bisher nie Probleme:
pfexec pkgin up ; pfexec pkgin fug
Das Datenbankupdate beim Aufruf der neuen Version ist bei mir bisher nur einmal fehlgeschlagen. (Das war echt nervig.) Den eingebauten Downloader-Updater habe ich nie gebraucht.
Ah gut, ich hab mich schon gewundert, dass die letzten paar updates beim Download gestockt haben. Da ich auch überall einen eigenen Server nutze, kann ich auch die updater.phar Variante nutzen und hab dann Ruhe.
Uiuiui, Nextcloud-Update, ein ganz heikles Thema! 😁 Da gibt es so viel das schiefgehen kann und nach gefühlt jedem Update gibt es irgendwelche "Probleme" die vorher nicht da waren. Meist "nur" irgendwelche Datenbank-Einträge die nicht stimmen, oder irgend eine Landesvorwahl die man noch zusätzlich in die config.php eintragen muss, oder Apps die mit der neuen Version nicht mehr laufen. Gerade vor kurzem habe ich wieder zwei Instanzen zerschossen beim Update von 30.0.0.6 -> 31.0.0. Grund war, dass das 2FA-App nicht kompatibel war und ich mich selber ausgesperrt habe (das ist die Kurzform, natürlich war das ganze einiges komplexer). Aber hey, dafür weiss ich jetzt wie man direkt in der Datenbank herum pfuscht. 😜 Ganz ehrlich: Ich würde NC niemandem empfehlen. Ausser es ist im Langweilig und er ist auf der Suche nach einer Herausforderung. 😉 Auch wenn ich es nicht gerne sage: NC ist ein "Gefrickel" das einiges an Nerven braucht. 🙄 Aktuell betreibe ich übrigens sechs Instanzen.
Weiß jemand wieso Nextcloud verschiedene Versionen 29, 30 und 31 mit jeweils eigenen Updates am leben hält? Gibt es irgendeinen vernünftigen Grund dafür?
Keine Ahnung. 🤷 Ich weiss auch nicht warum ständig eine neue Version kommt und wieso 31.x.x auch als Hub10 gehandelt wird. 🤔 Alles recht kompliziert wie ich finde. Auch für die App-Entwickler die ständig ihre Apps anpassen müssen.
Nehmt Docker. :)
Seit dem viel weniger Probleme beim Updaten von solchen LAMP-Kolossen wie Nextcloud.
Ich bin ein Boomer. Ich nutze noch immer USB-Festplatten und USB-Sticks.
Ich nutze schon seit mehreren Jahren Nextcloud über Docker und war bisher immer zufrieden. Einmal hat es mir die Datenbank verhauen, aber das war wohl meine Schuld und lief sonst aber ohne Probleme. Und für mich war immer wichtig: aktuelle Version (30) [testing], vorherige Version (29) [stable] und mit Nextcloud 29 fahre ich aktuell auch echt gut.
Nextcloud ... eigentlich eine gute Idee, Cloud unter der eigenen Regie zu haben. Aber: mit 'nem "normalen" Hosting-Paket kann ich alle handvoll updates den ganzen Kram löschen und neu aufsetzen, weil in der Anleitung immer von "Kommandozeile" die Rede ist, um die ständigen Quirks zu beheben. Also: um mal ein paar große Dateien auszutauschen: ok. Aber als dauerhaften Speicher mit vielen Nutzern (Familie, Bekanntenkreis) ... lieber nicht. Oder aber viel mehr Geld in die Hand nehmen für'n großes Paket beim Hoster und viel mehr Zeit, um in den Eingeweiden rumzudoktorn ...
In diesem Fall waren wohl „nur“ die Download-Server gnadenlos überlastet. Selbst der manuelle Download zum Erscheinungstermin war eine Geduldsprobe.
Unabhängig davon kann ich es nur wiederholen: das Tempo, in dem Nextcloud neue Hauptversionen raushaut, ohne zunächst mal die unendlichen Fehler in der aktuellen Version zu beheben, ist einfach ungesund. Beispiel: mit dem Update 30.0.6 zerlegte man erfolgreich den Login für die iOS-App. Nebenbei war auch die App „Passwords“ betroffen, die nun ebenfalls komplett die Dienst versagte. Auf eine Korrektur diese Fehlers mit der 30.0.7RC1 musste man mehrere Wochen warten, auf die finale 30.0.7 noch länger. Das kann nicht akzeptabel sein, wenn man bei jedem Update Gefahr läuft, dass grundlegende Dinge hinterher kaputt sind.
Und wieder ein Update (30.0.7 - > 30.0.8) und wieder hat es nicht geklappt. Diesmal wegen dem Download-Problem bez. weil die Server wohl überlastet sind. Habe nun die ".step" Datei gelöscht und versuche nochmal. So viele Updates in so kurzer Zeit. Da hat man schon fast etwas "Beta-Feeling". 🤪
Super Zusammenfassung, die ich ohne Weiteres nachvollziehen konnte. Vielen Dank dafür!
Danke, hat mir sehr geholfen!