Concernant Nextcloud (il faudrait bien passer sur tous les articles concernant owncloud pour renommer ce dernier 😀 ), ce qui me fruste en utilisation multimédia, c’est la lenteur de génération des aperçus miniatures.

Autant sur un pc avec toutes ses photos synchronisées on s’en passe… Mais sur un smartphone ou tablette on va principalement prendre que les photos qui nous intéressent. Attendre la génération des aperçus miniatures est vraiment long si vous hébergez sur une minimachine ou un VPS pas cher.

C’est pour cela qu’il est préférable d’avoir générés tous ces aperçus juste après la mise en place de votre nextcloud et vos données. Cette première étape va prendre du temps, il va falloir que vos CPU travaillent un peu. Pour votre installation perso ce n’est pas grave, mais pour une mise en prod pensez à le faire avant.

Selon la quantité de CPU et de photos à traiter, une tâche de nuit ne suffira peut-être pas 😉 Vous ne voudriez pas que vos utilisateurs vous tapent dessus parce que votre nouveau système de gestion de documents est lent.

Dans mon utilisation personnelle, sur un Atom x5-z8350 (4×1.44Ghz), cela à pris 12h pour générer les miniatures de presque 11.000 photos pour 120Go. Pour chacune de ces photos, il y a 13 fichiers aperçus, on atteint presque les 150.000 fichiers et 20Go d’aperçu. Pensez-y au moment de choisir le nombre d’inodes de votre système de fichiers ext4!

Dans un second temps, vous allez mettre une tâche cron afin de générer les aperçus miniatures automatiquement pour les nouvelles images. S’il n’y en a pas, le cron prend 2 secondes d’exécution. Cette tâche peut très bien tourner tous les soirs, voir toutes les heures si vous en avez le besoin.

Rassurez vous, si vous voulez générer les miniatures sur une installation existante, c’est possible de lancer la tâche en plusieurs fois, sans repasser sur les répertoires déjà scannés, afin d’étaler le travaille sur plusieurs nuits 🙂

Je vous explique donc les différentes étapes nécessaires…

Installation des composants Nextcloud des miniatures

Par le passé, un module était inclu de base pour générer les miniatures, mais ce n’est plus le cas si vous disposez de la version Nextcloud 12 ou supérieur. La documentation fournie sur le wiki est obsolète et n’est valable que pour les anciennes versions.

Vous devez vous rendre sur la page suivante pour disposer de la dernière version de previewgenerator, sinon voici le lien direct de la version 1.0.7 pour Nextcloud v12.

Téléchargez et installez le module :

wget https://github.com/rullzer/previewgenerator/releases/download/v1.0.7/previewgenerator.tar.gz
cd /var/www/nextcloud/apps/
tar -xf /root/previewgenerator.tar.gz
chown -R www-data:www-data previewgenerator/

Listez ensuite les applications via le CLi OCC, toujours dans le répertoire racine de votre Nextcloud : /var/www/nextcloud/

php occ app:list
Enabled:
  - admin_audit: 1.2.0
  - bruteforcesettings: 1.0.2
  - comments: 1.2.0
  - dav: 1.3.0
  - federatedfilesharing: 1.2.0
  - federation: 1.2.0
  - files: 1.7.2
  - files_external: 1.3.0
  - files_pdfviewer: 1.1.1
  - files_sharing: 1.4.0
  - files_texteditor: 2.4.1
  - files_trashbin: 1.2.0
  - files_versions: 1.5.0
  - files_videoplayer: 1.1.0
  - gallery: 17.0.0
  - logreader: 2.0.0
  - lookup_server_connector: 1.0.0
  - nextcloud_announcements: 1.1
  - notifications: 2.0.0
  - oauth2: 1.0.5
  - password_policy: 1.2.2
  - provisioning_api: 1.2.0
  - serverinfo: 1.2.0
  - sharebymail: 1.2.0
  - survey_client: 1.0.0
  - systemtags: 1.2.0
  - theming: 1.3.0
  - twofactor_backupcodes: 1.1.1
  - updatenotification: 1.2.0
  - workflowengine: 1.2.0
Disabled:
  - activity
  - encryption
  - firstrunwizard
  - previewgenerator
  - richdocuments
  - user_external
  - user_ldap

Si vous voyez « previewgenerator », c’est correct. Il ne reste qu’à l’activer :

php occ app:enable previewgenerator

Première génération des miniatures

Voici donc la première étape pour générer toutes les miniatures. Il est possible de le faire également pour un utilisateur défini :

php occ preview:generate-all [user-id]

Loop over all files and try to generate previews for them. If `user-id` is supplied just loop over the files for that user.

Génération automatique pour les nouvelles images

Tester la commande de génération de thumbnails pour les nouveaux fichiers en utilisateur www-data :

su -c 'php /var/www/nextcloud/occ preview:pre-generate' www-data

Do the actual pregeneration. This means only for new or modified files (since the app was enabled or the last pregeneration was done).

Exemple de cron journalier en utilisateur www-data pour créer les miniatures des nouveaux fichiers : /etc/cron.d/nextcloud

0 1 * * * www-data php /var/www/nextcloud/occ preview:pre-generate

Voilà vos miniatures seront créées automatiquement dorénavant 🙂