Mises à jour multiples de Nextcloud

Sur une installation standard basée sur :

  • Debian/GNU Linux
  • Apache HTTPD
  • MariaDB

Mises à jours concernées :

  • de Nextcloud 12 à 18
  • de Debian/Stretch à Debian/Buster

Remarques :

Pour les étapes de mise à jour manuelle, j'ai fais un script basiqueupdate script» ci dessous) intégrant le mode maintenance et la sauvegarde.

Les choix des versions suivantes de Nextcloud ont été celles suggérée par l'admin Nextcloud.

La mise à jour Stretch > Buster c'est faite le plus tard possible : lors de la fin de support de php7.0 pour Nextcloud v16.0.8

Les messages d'erreurs ont été laissés tel quels, et donc en Français pour ceux qui ont été traduits.


Check-list suivie :

(Les emoji ajoutent du context, détails sur gitmoji )

  1. ☑ 📢 Prevent users by mail
  2. ☑ 🚧 Activate maintenance mode
  3. ☑ ⬆️ Upgrade Debian/Stretch
  4. ☑ 🚧 Deactivate maintenance mode
  5. ☑ Reboot
  6. ☑ ⬆️ Upgrade Nextcloud : v12.0.4.3 > v13.0.12 (docs)
  7. ☑ web/DAV/desktop/android tests
  8. ☑ ⬆️ Upgrade Nextcloud : v13.0.12 > v14.0.14 - (docs)
  9. ☑ web/DAV/desktop/logging tests
    • 🚑 Error PHP : You are using a fallback implementation of the intl extension. Installing the native one is highly recommended instead. at /srv/freezed.me/nextcloud/3rdparty/patchwork/utf8/src/Patchwork/Utf8/Bootup/intl.php#18
      • apt install php-intl
      • phpenmod intl
    • Set cron to AJAX
    • Set SMTP config
    • Set cron to local crontab
    • 🚑 La configuration du serveur web ne permet pas d'atteindre "/.well-known/caldav"
    • 🚑 La configuration du serveur web ne permet pas d'atteindre "/.well-known/carddav"
      • a2enmod rewrite
      • docs
    • 🚑 Info cli Memcache \OC\Memcache\APCu not available for distributed|local cache
      • 🔧 set the apc.enable_cli = 1 in /etc/php/7.0/cli/php.ini (just before last line, see docs)
    • indice warnings, see migration from Nextcloud 13 in docs.
      • 🔧 sudo -u www-data php occ db:add-missing-indices
    • ⚡ see migration from Nextcloud 13 in docs.
      • 🔧 sudo -u www-data php occ db:convert-filecache-bigint
  10. ☑ upgrade Nextcloud : v14.0.14 > v15.0.11 - (docs)
  11. ☑ web/DAV/desktop/android tests
  12. ☑ web admin overview/logging
    • 🚑 `La base de données a quelques index manquant. L'ajout d'index dans de grandes tables peut prendre un certain temps. Elles ne sont donc pas ajoutées automatiquement. En exécutant "occ db:add-missing-indices", ces index manquants pourront être ajoutés manuellement pendant que l'instance continue de tourner. Une fois les index ajoutés, les requêtes sur ces tables sont généralement beaucoup plus rapides.
      • Index "owner_index" manquant dans la table "oc_share".
      • Index "initiator_index" manquant dans la table "oc_share".
        • 🔧 occ db:add-missing-indices
    • ⚠️ Error PHP Undefined index: changelogURL at /srv/freezed.me/nextcloud/core/Controller/WhatsNewController.php#91
    • ⚠️ MySQL est utilisée comme base de données mais ne supporte pas les caractères codés sur 4 octets. Pour pouvoir manipuler les caractères sur 4 octets (comme les émoticônes) sans problème dans les noms de fichiers ou les commentaires par exemple, il est recommandé d'activer le support 4 octets dans MySQL. Pour plus de détails, lisez la page de documentation à ce sujet
      • Wait after step «Upgrade Nextcloud : v17.0.5 > v18.0.3»
    • ⚠️ Vous utilisez actuellement PHP 7.0.33-0+deb9u7. Mettez à jour votre version de PHP afin de tirer avantage des améliorations liées à la performance et la sécurité fournies par le PHP Group dès que votre distribution le supportera.
      • Wait after dist-upgrade Debian/Stretch > Buster
  13. ☑ ⬆️ Upgrade Nextcloud : v15.0.11 > v15.0.14 - (docs)
  14. ☑ web/DAV/desktop/android tests
  15. ☑ Web/DAV/desktop/settings
    • ⚠️ MySQL est utilisée comme base de données mais ne supporte pas les caractères codés sur 4 octets. Pour pouvoir manipuler les caractères sur 4 octets (comme les émoticônes) sans problème dans les noms de fichiers ou les commentaires par exemple, il est recommandé d'activer le support 4 octets dans MySQL. Pour plus de détails, lisez la page de documentation à ce sujet
      • see up
    • ⚠️ Vous utilisez actuellement PHP 7.0.33-0+deb9u7. Mettez à jour votre version de PHP afin de tirer avantage des améliorations liées à la performance et la sécurité fournies par le PHP Group dès que votre distribution le supportera.
      • see up
    • Certaines colonnes de la base de données n'ont pas été converties en big int. Changer le type de colonne dans de grandes tables peu prendre beaucoup de temps, elles n'ont donc pas été converties automatiquement. En exécutant 'occ db:convert-filecache-bigint' ces changements en suspens peuvent être déclenchés manuellement. Cette opération doit être exécutée pendant que l'instance est hors ligne. Pour plus d'information, consulter la page de la documentation.
      • mounts.storage_id
      • mounts.root_id
      • mounts.mount_id
        • 🔧 sudo -u www-data php occ db:add-missing-indices
  16. ☑ ⬆️ Upgrade Nextcloud : v15.0.14 > v16.0.8 - (docs)
    • «update script»
      • 💥 This version of Nextcloud requires at least PHP 7.1<br/>You are currently running 7.0.33-0+deb9u7. Please update your PHP version.zsh: exit 255 sudo -u www-data php occ upgrade
    • ⏪ stash 16.0.9 : mv nextcloud next-nextcloud-16.0.8
    • ⏪ rollback to 15.0.14 : mv old-nextcloud-15.0.14 nextcloud
  17. ☑ ⬆️ dist-upgrade Debian/Stretch > Buster
    • apt autoremove
    • 📸 update again to 16.0.9 : mv nextcloud next-nextcloud-16.0.8
    • 📸 backup 15.0.14 : mv old-nextcloud-15.0.14 nextcloud
    • ⬆️ apt install php7.3-mysql (see)
    • ⬆️ a2enmod php7.3
  18. ☑ ⬆️ Upgrade Nextcloud : v16.0.8 > v16.0.9
  19. ☑ ⬆️ Upgrade Nextcloud : v16.0.9 > v17.0.5
  20. ☑ web/DAV/desktop/android tests
  21. ☑ web admin overview/logging
    • 🚑 Info cli Memcache \OC\Memcache\APCu not available for distributed|local cache
      • 🔧 set apc.enable_cli = 1 in /etc/php/7.3/cli/php.ini (just before last line) (docs)
    • La base de données a quelques index manquant. L'ajout d'index dans de grandes tables peut prendre un certain temps. Elles ne sont donc pas ajoutées automatiquement. En exécutant "occ db:add-missing-indices", ces index manquants pourront être ajoutés manuellement pendant que l'instance continue de tourner. Une fois les index ajoutés, les requêtes sur ces tables sont généralement beaucoup plus rapides.
      • Index "twofactor_providers_uid" manquant dans la table "oc_twofactor_providers".
      • Index "version" manquant dans la table "oc_whats_new".
      • Index "cards_abid" manquant dans la table "oc_cards".
      • Index "cards_prop_abid" manquant dans la table "oc_cards_properties".
        • 🔧 sudo -u www-data php occ db:add-missing-indices
    • ⚠️ La limite de mémoire PHP est inférieure à la valeur recommandée de 512 Mo.
      • Wait after step «Upgrade Nextcloud : v17.0.5 > v18.0.3»
    • ⚠️ MySQL est utilisée comme base de données mais ne supporte pas les caractères codés sur 4 octets. Pour pouvoir manipuler les caractères sur 4 octets (comme les émoticônes) sans problème dans les noms de fichiers ou les commentaires par exemple, il est recommandé d'activer le support 4 octets dans MySQL. Pour plus de détails, lisez la page de documentation à ce sujet
      • Wait after step «Upgrade Nextcloud : v17.0.5 > v18.0.3»
  22. ☑ ⬆️ Upgrade Nextcloud : v17.0.5 > v18.0.3
  23. ☑ web/DAV/desktop/android tests
  24. ☑ web admin overview/logging
    • 🚑 La limite de mémoire PHP est inférieure à la valeur recommandée de 512 Mo.
      • 🔧 set memory_limit = 512M in /etc/php/7.3/apache2/php.ini
    • La base de données a quelques index manquant. L'ajout d'index dans de grandes tables peut prendre un certain temps. Elles ne sont donc pas ajoutées automatiquement. En exécutant "occ db:add-missing-indices", ces index manquants pourront être ajoutés manuellement pendant que l'instance continue de tourner. Une fois les index ajoutés, les requêtes sur ces tables sont généralement beaucoup plus rapides.
      • Index "calendarobject_calid_index" manquant dans la table "oc_calendarobjects_props".
      • Index "schedulobj_principuri_index" manquant dans la table "oc_schedulingobjects".
      • 🔧 sudo -u www-data php occ db:add-missing-indices
    • ⚠️ MySQL est utilisée comme base de données mais ne supporte pas les caractères codés sur 4 octets. Pour pouvoir manipuler les caractères sur 4 octets (comme les émoticônes) sans problème dans les noms de fichiers ou les commentaires par exemple, il est recommandé d'activer le support 4 octets dans MySQL. Pour plus de détails, lisez la page de documentation à ce sujet
      • 🔧 Enabling MySQL 4-byte support : see docs