Dieses Tutorial ist VALID.

Bitte lies Dir den Disclaimer durch, bevor Du eine Anleitung umsetzt...

Haftungsausschluss / Disclaimer

Nextcloud Server updaten

Das Update des Nextcloud Servers funktioniert anders, als unsere anderen Apps: Dieses Update führen wir nicht im Internet in der App sondern lokal auf dem Server aus. Wir werden das Image updaten und dann den Nextcloud Container mit dem neuen Image durchstarten.

Im Beispiel updaten wir von Nextcloud v18.0.3 auf v18.0.4

Dazu führen wir folgende Schritte aus:

Dockerfile und Update-Skript anpassen

Im Dockerfile des Nextcloud Images und in unserem Update-Skript passen wir die Versionsnummer auf 18.0.4 an:

nano ~/docker/nextcloud-php74-apache/Dockerfile
ENV NEXTCLOUD_VERSION 18.0.4
nano ~/update-docker.sh
### Build NEXTCLOUD
time docker build -t nextcloud-php74-apache:18.0.4 ~/docker/nextcloud-php74-apache
docker tag nextcloud-php74-apache:18.0.4 nextcloud-php74-apache:latest

Image updaten

Jetzt lassen wir das Update-Skript laufen, um das Image in der neuen Version zu bauen:

~/update-docker.sh
...
 ---> 9ea219ff8fd6
Successfully built 9ea219ff8fd6
Successfully tagged nextcloud-php74-apache:18.0.4

Container durchstarten

Ist das erfolgreich durchgelaufen, starten wir den Container mit dem neuen Image durch:

~/upup-docker.sh
Recreating nextcloud ... done

Einloggen und nachsehen

Nun kommt die Stunde der Wahrheit: Wir loggen uns im Internet ein und überprüfen, ob es das schon war, oder wir noch nacharbeiten müssen. Bei diesem Update hat alles gleich auf Anhieb geklappt…

Aufräumen

Machen wir die Küche sauber…

docker ps -a
### Überprüfen, ob alle Container sauber laufen. Wenn ja:
docker system prune
### Nach Bestätigung mittels "y" werden alle temporären Container und Images jetzt entfernt.
docker images
### Prüfen, ob nicht mehr benötigte Images mit einer alten Versionsnummer vorhanden sind
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
nextcloud-php74-apache   18.0.3              7b7444a00881        6 days ago          797MB
php                      <none>              470476c8d529        7 days ago          414MB
### Diese Images können wir entfernen (mittels "docker rmi <id1> <id2> <id3> ...")
docker rmi 7b7444a00881 470476c8d529

Fazit

Auch ein Nextcloud-Update ist normalerweise schnell erledigt. Allerdings halt nicht über die App, sondern mit Docker.

Murphys Law: Was schief gehen kann…

… geht auch schief :/
Troubleshooting, wenn’s mal klemmen sollte.

Achtung!
Bevor wir jetzt an den Innereien von Nextcloud herumpfuschen, sollten wir immer ein Backup der Daten (Nextcloud selbst UND unsere Benutzerdateien UND der Datenbank!) vornehmen…

Der Nextcloud Wartungsmodus wird nicht beendet

Das ist ein gemeiner Fehler…
Wir haben auf „Aktualisieren“ gedrückt.
Nextcloud macht hinter den Kulissen seine Magie.
Er schreibt „alles fertig, hier klicken“.
Wir klicken.
Und dann kommt das:

Unsere Nextcloud ist im Wartungsmodus. Wir können jetzt auf „F5“ oder sogar „Strg+F5“ hauen, wie wir wollen – Nextcloud steckt im Wartungsmodus fest. Und uns selbst eine E-Mail schreiben wird das Problem wohl nicht lösen, hab ich so ein Gefühl. Also was tun?

Glücklicherweise ist das gar nicht so schlimm. Falls wir wissen, wo wir hinlagen müssen.

Loggen wir uns auf unserem Server ein. Dann wechseln wir ins Nextcloud-Verzeichnis und dort in das Web-Root. Hier liegen alle Dateien, die Nextcloud zum Arbeiten braucht. Da finden wir auch das „config“-Verzeichnis. Und in dem Config-Verzeichnis ist die „config.php“ – die Haupt-Konfigurationsdatei von Nextcloud. Die öffnen wir mit einem Editor und ändern die „maintenance“-Zeile:

ls /var/www/nextcloud/wwwdata/
ls /var/www/nextcloud/wwwdata/config
nano /var/www/nextcloud/wwwdata/config/config.php
### ziemlich weit unten finden wir folgende Zeile:
  'maintenance' => true,
### wir ändern "true" zu "false" und speichern die Änderungen... [Das 'Komma' am Schluss nicht aus Versehen löschen!]
  'maintenance' => false,

Wenn wir im Browser jetzt F5 drücken oder die Seite anderweitig neu laden, sollte uns Nextcloud wieder bedienen…

Sachen, die wir im Container richten müssen

Als Anlaufstelle #1 sollten wir uns nach einem Update immer in unsere Nextcloud einloggen. Dann klicken wir auf „Menü“ / „Einstellungen“ und dort „Verwaltung / Übersicht“ . Hier schreibt uns Nextcloud, wenn ihm etwas an seiner (unserer) Installation nicht passt. Und glücklicherweise meistens gleich noch dazu, wie wir das lösen sollen. Meistens geht es um Aufrufe der „occ“ Funktion. Und das machen wir am Besten im Nextcloud Container als „Web-Benutzer“.

So loggen wir uns als Web-Benutzer im Nextcloud Container ein, wenn wir den Container (wie im Tutorial beschrieben) „nextcloud“ genannt haben:

docker exec -u www-data -it nextcloud /bin/bash

Der Eingabepromt ändert sich, damit wir erkennen, dass wir jetzt als User „www-data“ im Container drin sind:

root@xp-server:/var/www/nextcloud/#
www-data@d2b88284d954:~/html$

Mit einem „ls“ lassen wir uns den Inhalt des Verzeichnisses ausgeben. Und hier finden wir auch die ominöse „occ“-Datei. Praktisch, wir sind gleich an der richtigen Stelle im Container raus gekommen…

Führen wir das Script einfach mal aus:

./occ

Den „Punkt Slash“ stellen wir vorne an, weil Linux das beim Ausführen eines Scripts gerne so hätte, das im gleichen Verzeichnis ausgeführt wird, in dem wir uns befinden.

Es wird eine komplette Liste an Befehlen ausgespuckt, die mit dem „occ“-Script möglich sind.

OCC Maintenance Repair

Was man im Falle von Fehlern immer erst mal versuchen sollte, ist ein „maintenance repair“. Das lösen wir mit folgendem Kommando aus:

./occ maintenance:repair
 - Repair MySQL collation
     - All tables already have the correct collation -> nothing to do
 - Repair mime types
 - Clean tags and favorites
     - 0 tags of deleted users have been removed.
     - 0 tags for delete files have been removed.
     - 0 tag entries for deleted tags have been removed.
     - 0 tags with no entries have been removed.
 - Repair invalid shares
 - Move .step file of updater to backup location
 - Fix potential broken mount points
     - No mounts updated
 - Add log rotate job
 - Clear frontend caches
     - Image cache cleared
     - SCSS cache cleared
     - JS cache cleared
 - Clear every generated avatar on major updates
 - Add preview background cleanup job
 - Queue a one-time job to cleanup old backups of the updater
 - Cleanup invalid photocache files for carddav
 - Add background job to cleanup login flow v2 tokens
 - Remove potentially over exposing share links
     - No need to remove link shares.
 - Clear access cache of projects
 - Switches from deprecated "production" to "stable" update channel
 - Sets the enterprise logo
     - Repair step already executed
 - Reset generated avatar flag
 - Fix component of birthday calendars
     - 1 birthday calendars updated.
 - Regenerating birthday calendars to use new icons and fix old birthday events without year
     - Adding background jobs to regenerate birthday calendar
 - Fix broken values of calendar objects
    0 [>---------------------------]
 - Registering building of calendar search index as background job
     - Add background job
 - Registering background jobs to update cache for webcal calendars
     - Added 0 background jobs to update webcal calendars
 - Registering building of calendar reminder index as background job
     - Add background job
 - Clean up orphan event and contact data
     - 0 events without a calendar have been cleaned up
     - 0 properties without an events have been cleaned up
     - 0 changes without a calendar have been cleaned up
     - 0 cached events without a calendar subscription have been cleaned up
     - 0 changes without a calendar subscription have been cleaned up
     - 0 contacts without an addressbook have been cleaned up
     - 0 properties without a contact have been cleaned up
     - 0 changes without an addressbook have been cleaned up
 - Remove activity entries of private events
     - Removed 0 activity entries
 - Fix the share type of guest shares when migrating from ownCloud
 - Copy the share password into the dedicated column
 - Set existing shares as accepted
 - Update OAuth token expiration times
 - Add background job to check for backup codes
 - Populating added database structures for workflows

Das Script führt eine Menge an Cleanups und möglichen „Entflechtungen“ durch.
Das löst den einen oder anderen Standard-Fehler…

Spezifische OCC-Anweisungen von Nextcloud

Diese beiden Anweisungen hat mir Nextcloud mal unter die Nase gehalten, die ich doch bitte ausführen soll, um die Datenbank anzupassen. Das war glaub ich beim Upgrade von v17 auf v18 der Fall:

./occ db:convert-filecache-bigint
./occ db:add-missing-indices

Beide Befehle liefen klaglos innerhalb weniger Sekunden durch, obwohl bei der „bigint“ Konversion darauf hingewiesen wurde, dass der Vorgang mehrere Stunden dauern kann…

Danach sind die Hinweise aus „Verwaltung / Übersicht“ verschwunden und ich gehe mal davon aus, dass diese Änderungen damit zufriedenstellend eingepflegt worden sind.

Haben wir die Änderungen durchgeführt, verlassen wir den Container mit dem Befehl „exit“.
Jetzt befinden uns wieder auf dem Host-System. Ein geänderter Eingabepromt zeigt uns den erneuten Wechsel der Arbeitsumgebung an.

Anzeige *

2 Kommentare zu „Nextcloud Server updaten“

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Verwendung
von Cookies

Um unsere Webseite für Sie optimal zu gestalten und fortlaufend verbessern zu können, verwenden wir Cookies. Durch die weitere Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu. Weitere Informationen zu Cookies erhalten Sie in unserer Datenschutzerklärung.

Scroll to Top