Nachdem der Nexcloud Client mich in letzter Zeit recht impertinent auf ein Upgrade zu Version 19.0.2 hingewiesen hat, werde ich ihm diesen Gefallen tun, um wieder Ruhe zu haben…
Kleine Anpassungen im Dockerfile sind nötig und nach dem Upgrade müssen wir noch manuell das Wartungs-Tool laufen lassen. Aber alles in allem ist dieses Upgrade nicht aus der Welt.
Packen wir’s an!
Upgrades NUR in direkter Linie!
Nextcloud kann man nur in einer Linie upgraden. Also von v18 auf v19. v17 kannst Du NICHT auf v19 upgraden! Da schießt Du die Installation ab und musst viel manuell pfuschen, bis das wieder läuft.
Safety first, Sir!
IMMER erst ein Vollbackup ziehen, bevor wir irgendwas an der Konfiguration der Maschine oder einzelner Dienste ändern…!
What’s the difference?
Das Upgrade packen wir wie an?
Richtig! Mit einem Besuch der offiziellen Projektseite auf Github…
https://github.com/nextcloud/docker
Hier finden wir nämlich die Verzeichnisse für v18 und die neue v19.
Davon nehmen wir jeweils das „Dockerfile“ und werfen es in ein Vergleichs-Tool. Das Ergebnis ist zum Glück überschaubar.

Zu wenig Kaffee… Fällt mir gerade auf, dass ich das „neue“ mit dem „alten“ vertauscht habe. Rot und Grün ist in dem Fall umgekehrt. Ohje. Sollte so was nicht in aller Früh machen. Egal. Tun wir so, als wären wir rot/grün blind.
Also, was hat sich geändert?
- Es entfallen die beiden Zeilen, welche die GMP-Bibliothek mit Parametern versorgt haben. Scheint so, als wäre das im php-Image jetzt schon mit drin. Oder man benutzt wieder Standard-Werte. Einerlei – wir brauchen jedenfalls nichts mehr konfigurieren an dieser Stelle.
- Neu hinzugekommen ist das „bcmath“ Modul.
- „redis“ wird in einer neuen Version installiert. Das tangiert uns aber nicht, weil wir die PHP Module ohne Version, also immer aktuell, verwenden.
- Offensichtlich ändert sich natürlich auch die Versionsnummer von Nextcloud. 19.0.2 ist Stand Heute aktuell.
Wir öffnen unser Dockerfile und ändern die entsprechenden Zeilen:
nano ~/docker/nextcloud-php74-apache/Dockerfile ### Der neue Config-Block in v19: ... debMultiarch="$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"; \ # docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp; \ # docker-php-ext-configure ldap --with-libdir="lib/$debMultiarch"; \ docker-php-ext-install -j "$(nproc)" \ bcmath \ exif \ gd \ ... ENV NEXTCLOUD_VERSION 19.0.2 ...
Als nächstes holen wir uns die aktuellen Config-Dateien zur v19:
wget -qNP ~/docker/nextcloud-php74-apache/config https://raw.githubusercontent.com/nextcloud/docker/master/19.0/apache/config/apache-pretty-urls.config.php https://raw.githubusercontent.com/nextcloud/docker/master/19.0/apache/config/apcu.config.php https://raw.githubusercontent.com/nextcloud/docker/master/19.0/apache/config/apps.config.php https://raw.githubusercontent.com/nextcloud/docker/master/19.0/apache/config/autoconfig.php https://raw.githubusercontent.com/nextcloud/docker/master/19.0/apache/config/redis.config.php https://raw.githubusercontent.com/nextcloud/docker/master/19.0/apache/config/smtp.config.php wget -qNP ~/docker/nextcloud-php74-apache https://raw.githubusercontent.com/nextcloud/docker/master/19.0/apache/cron.sh https://raw.githubusercontent.com/nextcloud/docker/master/19.0/apache/entrypoint.sh https://raw.githubusercontent.com/nextcloud/docker/master/19.0/apache/upgrade.exclude chmod +x ~/docker/nextcloud-php74-apache/*.sh
Nun passen wir das „update-docker.sh“-Script an und stellen die Version von Nextcloud auf 19.0.2 um:
nano ~/update-docker.sh ### Build NEXTCLOUD time docker build -t nextcloud-php74-apache:19.0.2 ~/docker/nextcloud-php74-apache docker tag nextcloud-php74-apache:19.0.2 nextcloud-php74-apache:latest
Im Anschluss lassen wir das Script laufen. Dies erstellt unser neues Nextcloud-Image.
~/update-docker.sh
Container umziehen
Ist der Build-Prozess fehlerfrei durchgelaufen, bauen wir uns einen neuen Container.
Das macht unser „upup-docker.sh“-Script, das wir jetzt ausführen:
~/upup-docker.sh
Geben wir der Maschine eine gute Minute, um unsere Installation zu finalisieren und das Upgrade auszuführen. Dann können wir uns in das neue Nextcloud v19 einloggen…
Anpassungen im Container
Wechseln wir im Browser zu unserer Nextcloud-Installation und melden uns an.
Gehen wir auf „Menü – Einstellungen – Übersicht“, mault uns der Server unter dem Punkt „Sicherheits- & Einrichtungswarnungen“ an, dass einige Datenbank-Optionen nicht passen. Diese müssen wir per Hand im Container richten. Aber dazu hat Nextcloud glücklicherweise ein Wartungs-Tool (occ) am Start…
Wir teleportieren als User „www-data“ in den Container „nextcloud“:
docker exec -u www-data -it nextcloud /bin/bash ### Ausführen des Wartungs-Scripts direkt im Container: php occ db:convert-filecache-bigint php occ db:add-missing-indices php occ db:add-missing-columns ### Auftrag ausgeführt - wir verlassen den Container: exit
Im Browser laden wir die Seite neu. Und siehe da: Die Fehlermeldungen sind verschwunden :)
Die Küche aufräumen
Auch das sollte uns mittlerweile geläufig sein…
- Nachsehen, ob bei Docker alles läuft
- docker system prune
- altes Image manuell löschen
### Nachsehen, ob alles läuft: docker ps -a ### "Status" ist "Up" docker system prune ### mit "y" bestätigen. Killt die temporären Build-Images docker images ### Listet alle Docker-Images auf, die wir auf dem Server haben. Hier suchen wir unser altes Nextcloud-Image mit dem Tag 18.x.x. Davon kopieren wir die ID. docker rmi <id> ### Löscht das Image mit der angegebenen ID.
Fazit
Keine 10 Minuten später haben wir die Mission erfüllt und unser neues Nextcloud v19 im Einsatz.
Jetzt überprüfe ich an der Stelle, ob wirklich alles läuft…
Wenn alles gut aussieht, mache ich noch mal ein Vollbackup und logge mich dann glücklich aus dem Server aus.
Dieses Upgrade lief hier auf allen Maschinen reibungslos.
Wie hat es bei Dir geklappt?
Wenn was schief läuft…
Im Artikel „Nextcloud Server updaten“ ganz unten bei „Murphy’s Law“ sind ein paar Hinweise, falls wir im Wartungsmodus hängen bleiben oder direkt im Container etwas anpassen müssen.
Perfekt geklappt danke! Hoffe bald auf neue Inhalte hier.
Bleib gesund.
Super, freut mich :)
Du auch ^^
Hi, danke für die hilfreichen Hinweise. Nach etwas einlesen hat es einwandfrei geklappt :-) Danke
Super! Freut mich, wenn’s geklappt hat, Jan :)