Nextcloud upgrades verlopen meestal zonder problemen, maar niet elke keer. Krap vier jaar terug had ik problemen met de upgrade van NC18 naar NC19: de database was gegroeid tot 440 GB, wat moeite gaf (timeout) bij de backup. In dat geval bleek het gros van de database te bestaan uit cache van externe bestanden; na truncate (truncate oc_filecache;
) van de tabel verliep de upgrade zonder problemen.
Nu een aantal versies later: de upgrade van Nextcloud 27 naar Nextcloud 28 wil niet. Aan het begin van het jaar heb ik het eens geprobeerd, zonder succes, en een rollback gedaan naar het snapshot van juist daarvoor.
Ondertussen is Nextcloud 29 al een tijdje beschikbaar en raakt NC27 ‘unsupported’. In de hoop dat mogelijke bugs gevonden zijn, heb ik opnieuw een upgrade gestart. Helaas weer zonder succes.
Tweede poging
Deze stappen heb ik genomen:
- Alle systeemcomponenten bijwerken :
apt upgrade && apt update -y
- Alle NC-apps bijwerken naar de laatste versie via admin login –> gezichts-menu –> Apps –> Your apps en dan “Upgrade all”
- Controleren welke apps nog geen ondersteuning hebben in de nieuwe Nextcloud. Er is zo’n lijstje voor unsupported apps in NC29, maar voor NC28 heb ik dat niet kunnen vinden. Er zijn geen apps actief die in dat lijstje voorkomen
- Shutdown container in Proxmox ; voor snapshots is dat niet nodig, maar om een consistente staat van de databases de garanderen lijkt het me een goed idee
- Create snapshot in Proxmox en start de container
- Log in in Yunohost en start de upgrade van Nextcloud
- Yunohost creeert eerst een backup
- Voert de upgrade uit
- Klapt op “App ‘Text file editor’ not supported in NC28”, of iets in die geest
- Probeert een restore van de backup uit te voeren
- Restore hangt op “Restoring the MySQL database”
- Shutdown container in Proxmox
- Restore container snapshot in Proxmox
- Start container
Anders dan de ‘unsupported app’-melding heb ik de specifieke fout niet kunnen herleiden; door de restore van het snapshot is de logging niet meer beschikbaar.
Derde poging
Nadat het snapshot teruggezet is:
- Applicatie “Edit text files” verwijderen
- De nu beschikbare MariaDB-updates installeren
- Shutdown container, snapshot maken, boot container
- Nextcloud upgraden vanaf de command line voor wat meer live-inzicht:
yunohost app upgrade nextcloud
- De upgrade loopt weer fout, ik laat het proces verder lopen in de achtergrond om te zien wat de restore van de backup doet
- Na geruime tijd te blijven hangen op ‘Restoring the MySQL database’, wordt het script vervolgd
- Restore van de backup klapt uiteindelijk op ontbrekende cachebestanden of previews,
Info: WARNING - chown: cannot access '/home/yunohost.app/nextcloud/data/appdata_ocjk9xv5jzs5/preview/f/8/6/8/e/8': Structure needs cleaning
- Logging is via de Yunohost-logpublicatieservice te vinden op:
Omdat de restore mislukt, is er geen Nexctloud beschikbaar. Het is aantrekkelijk om het snapshot van voor de mislukte upgrade terug te zetten, maar daarmee vervallen tussentijdse wijzigingen: conceptversies van deze blogpost bijvoorbeeld, of tussentijds binnengekomen emails.
Logging doorzoeken
In willekeurige volgorde valt op in de logging, om verder uit te zoeken:
- Bij de upgrade:
DEBUG - An unhandled exception has been thrown:
DEBUG - Error: Undefined constant OCA\Keeweb\Migration\RegisterMimeType::CUSTOM_MIMETYPEALIASES in /var/www/nextcloud/apps/keeweb/lib/Migration/RegisterMimeType.php:25
- Bij de restore:
DEBUG - Checking smb.conf with testparm
WARNING - Load smb config files from /etc/samba/smb.conf
WARNING - Loaded services file OK.
WARNING - Weak crypto is allowed
WARNING - Server role: ROLE_STANDALONEWARNING - chown: cannot access '/home/yunohost.app/nextcloud/data/appdata_ocjk9xv5jzs5/preview/1/d/c/6/2': Structure needs cleaning
Gezien het beperkte aantal emails en m’n offline kopie van deze tekst, is restore van het snapshot de snelste weg naar een nieuwe poging. Ik verwijder daarvoor eerst de Keeweb-app. De Keeweb-app heeft nooit gewerkt, maar ook nooit in de weg gezeten; het is de enige foutmelding in het upgrade-log.
Er zou een werkende versie van de app moeten zijn, hoewel er nu bij de app vermeld staat dat er upstream, bij Keeweb zelf, geen updates zijn sinds 2021. Na disable+remove van Keeweb sla ik het concept op en maak ik een nieuw snapshot, klaar voor een vierde poging.
Vierde poging
De vierde poging komt verder; de upgrade naar Nextcloud 28 (meer specifiek: 28.0.8 blijkt uit het log) lijkt voltooid: er wordt gemeld dat de upgrade naar Nextcloud 29.0.5 start.
Die upgrade slaagt niet; het log meldt:
InvalidArgumentException: Index name "sa" for table "oc_social_3_stream_act" collides with the constraint on table "oc_social_stream_act".
Update failed
Maintenance mode is kept active
Resetting log level
Ik wacht de restore van de backup niet af; ik controleer of er mail ontvangen is gedurende de update en ga meteen door met een rollback van het snapshot.
Er zijn een paar aanwijzingen te vinden op ’t Net: op de Nextcloud-fora en op de Gitub-pagina van Nextcloud. De oc_social_3_*
-tabellen zijn in de loop van de tijd hernoemd naar oc_social_*
, zonder “3” in de naam. De social app was al disabled wegens niet compatibel na een eerdere upgrade; ik heb de tabellen meteen verwijderd zoals gesuggereerd in een van de threads:
drop table oc_social_3_action; drop table oc_social_3_actor; drop table oc_social_3_cache_actor; drop table oc_social_3_cache_doc; drop table oc_social_3_client; drop table oc_social_3_follow; drop table oc_social_3_hashtag; drop table oc_social_3_instance; drop table oc_social_3_req_queue; drop table oc_social_3_stream; drop table oc_social_3_stream_act ; drop table oc_social_3_stream_dest; drop table oc_social_3_stream_queue; drop table oc_social_3_stream_tag;
Concept opslaan, snapshot maken en nog eens proberen.
Vijfde poging
Geslaagd! De upgrade van NC27 via NC28 naar NC29 besloeg een kwartier, waarvan het grootste deel voor rekening van de backup van de database kwam.
Er is een niet-fatale waarschuwing,
Warning: File /var/www/nextcloud/config/config.php has been manually modified since the installation or last upgrade. So it has been duplicated in /var/cache/yunohost/appconfbackup//var/www/nextcloud/config/config.php.backup.20240917.184213
Ik meen dat ik de configuratie als read-only gemarkeerd heb; voor de rest moet ik de verschillen erop naslaan.
Bij het oproepen van de site en bij het inloggen heeft Nextcloud geen vervelende verrassingen. Een nieuw jasje en onder de motorkap vast veel gewijzigd, maar aan de buitenkant ‘gewoon’ de bestanden die er altijd al stonden. Fijn.