Indexation Baie Synology : Installation de SynoIndex Watcher

Troisième article et troisième solution pour l’indexation des fichiers sur la baie Synology ! En effet, si l’on passe par NFS pour y copier nos fichiers multimédia, les fichiers ne sont pas indexés automatiquement, et certaines applications risquent de ne pas les voir… Ce qui peut être gênant.

La dernière solution que j’avais documentée, à savoir Synology-mediamon, pose problème à son tour : le process ne se lance pas au démarrage (bug), et de plus crash régulièrement, sans doute à cause d’un problème de caractère dans le nom du fichier indexé… Ce script n’a pas l’air d’être suivi, et n’a pas bougé depuis 4 ans, on ne peut plus vraiment compter sur lui.

J’ai donc regardé à nouveau la situation de ce côté, et de site en site je suis tombé sur un nouveau script appelé Synoindex Watcher, qui a l’air plus récent et semble maintenu.

L’installation est facile, on peut même générer un fichier de configuration si l’on a des besoins spécifiques, ça m’a donc l’air pas mal du tout ! Voilà les infos pour l’installer, sinon tout est expliqué et documenté (en anglais) sur la page du projet github.

Les caractéristiques du script sont répertoriées comme suit :

  • Léger : pas besoin d’installer de packages Synology supplémentaires. On verra qu’il faut tout de même installer pip.
  • Intelligent : Ne s’exécute que si un fichier a été ajouté/supprimé/renommé.
  • Compatible avec Python 2 comme Python 3 (version minimum testée 2.7).

Installation

Pour l’installation, il faut se connecter en SSH à la baie Synology. Il est recommandé d’utiliser pip pour l’installation. Pip n’est pas installé par défaut, mais il s’installe avec la commande suivante :

$ wget https://bootstrap.pypa.io/get-pip.py -qO - | sudo python

Ce qui donne à l’écran :

Vous remarquerez l’avertissement concernant la version de Python 2.7 qui ne sera plus supportée par pip en janvier 2021. C’est un problème Synology, car sur ma machine, les deux versions de Python (2.7 et 3) sont installées : mais si je tape python --version dans un terminal, j’obtiens la version 2.7 en réponse.

Il semble que ce soit parce que beaucoup de scripts système Synology dépendent encore de la version 2.7… Il y aura toujours moyen de contourner ce problème, il y a des pistes sur cette page, mais inutile de s’en préoccuper pour l’instant (on va pouvoir installer Synoindex Watcher, donc tout va bien). Synology devrait logiquement mettre à jour son système pour ne dépendre que de Python 3 ? Wait & See…

L’installation du module Synoindex Watcher se fait alors par cette commande :

$ sudo python -m pip install --upgrade synoindexwatcher

NOTE : Cette même commande peut être utilisée pour mettre à jour le script si une nouvelle version est disponible.

Par défaut, les dossiers suivants sont surveillés : /volume1/music, /volume1/photo et /volume1/video. Cela peut être modifié soit en ajoutant des arguments à la ligne de commande, soit en créant un fichier de configuration (voir plus bas). Voilà, il ne reste plus qu’à lancer le script pour vérifier son fonctionnement.

pascal@DiskStation:~$ python -m synoindexwatcher 
2020-05-22 10:18:53,487 INFO Adding watch for path: /volume1/music
2020-05-22 10:18:54,624 INFO Adding watch for path: /volume1/photo
2020-05-22 10:18:54,642 INFO Adding watch for path: /volume1/video
2020-05-22 10:18:55,561 INFO Waiting for media file changes...

Ici, on voit que le script démarre bien (c’est déjà ça!), active le monitoring des fichiers indexés, mais ce serait mieux de tester si l’indexation fonctionne comme attendu. On va le faire en ajoutant le mode DEBUG :

pascal@DiskStation:~$ python -m synoindexwatcher --loglevel=DEBUG
...
2020-05-22 10:16:06,258 INFO Waiting for media file changes...
2020-05-22 10:16:28,212 DEBUG Calling 'synoindex -d /volume1/video/Films/Docu1.mkv'
2020-05-22 10:16:28,339 DEBUG Calling 'synoindex -a /volume1/video/Docus/Docu1.mkv'

Une fois le mode DEBUG lancé (très verbeux), on voit bien que j’ai effacé (-d) le fichier Docu1.mkv du répertoire « Films » et que je l’ai ajouté (-a) au répertoire « Docus ». Tout fonctionne donc à merveille.

Il y a pas mal d’options disponibles indiquées sur la page du projet. Je ne vais pas les détailler ici, celles par défaut me conviennent, les trois répertoires par défaut (music, photo, video) sont bien monitorés.

À noter tout de même que l’on peut générer un fichier de configuration de manière à faciliter la configuration que l’on souhaite. Cela se fait par la commande suivante :

$ python -m synoindexwatcher --generate-config | sudo tee /usr/local/etc/synoindexwatcher.conf

On obtient donc un fichier synoindexwatcher.conf qu’il suffira d’éditer pour configurer aux petits oignons notre configuration. Il faudra néanmoins le préciser au démarrage du script par l’option suivante :

$ python -m synoindexwatcher --config=/usr/local/etc/synoindexwatcher.conf

Reste à automatiser le démarrage. Cela se fait très facilement par les deux commandes suivantes :

$ python -m synoindexwatcher --generate-init | sudo tee /usr/local/etc/rc.d/S99synoindexwatcher.sh
$ sudo chmod a+x /usr/local/etc/rc.d/S99synoindexwatcher.sh

NOTE : Si vous avez créé un fichier de configuration particulier, il faudra modifier ce script pour y ajouter le paramètre --config et le chemin d’accès au fichier de configuration.

Voilà, tout doit fonctionner. J’ai testé un redémarrage de la baie Synology, le script est bien lancé au redémarrage. 😎

Il y a un message d’erreur connu, pas vraiment lié au script d’ailleurs, mais plutôt à une limitation système de Synology :

OSError: [Errno 28] No space left on device

Si vous obtenez ce message, cela ne signifie pas qu’il n’y a plus de place sur le périphérique, mais qu’il n’y a pas assez de « inode-watchers » pour surveiller vos fichiers media.

Pour le corriger temporairement, taper ceci en étant root ::

# echo 204800 > /proc/sys/fs/inotify/max_user_watches

Mais cela ne règle le problème que jusqu’au prochain reboot. Pour corriger définitivement le problème, il faut ajouter la ligne fs.inotify.max_user_watches = 204800 au fichier /etc/sysctl.conf.

Voilà, les premières impressions sont bonnes, ça fonctionne nettement mieux que la solution précédente, pourvu que cela dure ! 😉

5 réflexions sur « Indexation Baie Synology : Installation de SynoIndex Watcher »

    1. Salut, écoute je n’en sais rien, je dirai que non.

      Déjà je ne vois d’option dans le Panneau de Configuration pour arrêter ce service facilement. On trouve des choses sur le net à ce sujet, que tu peux toujours tester : les commandes sont « sudo synoservice –status synoindexd » (pour voir le status), « sudo synoservice –disable synoindexd » (pour le dévalider) et « sudo synoservice –enable synoindexd » (pour le réactiver) ou encore « sudo synoservice –restart synoindexd » (redémarrage). Il est mentionné que c’est à utiliser « at your own peril » sans pour autant avoir observé de problèmes particuliers ! 🙂

      Mais « Synoindex watcher » est justement basé sur synoindex: « Synoindex Watcher is a media index updater for Synology DiskStations based on inotify and synoindex. ». Donc il est probable que « Synoindex watcher » ne fonctionne plus après avoir dévalidé le service.

      Si tu fais l’essai, n’hésite pas à revenir ici donner le résultat…

  1. Bonjour Pascal,

    Depuis les dernières versions de DSM (et en particulier celle que j’ai actuellement la version DSM 7.2-64570),
    on arrive plus à gérer les services comme autrefois avec la commande synoservice !
    Par exemple comme il est spécifié dans le github cité, il est conseillé d’arrêter/redémarrer le service d’indexation
    $ sudo synoservice --hard-stop synoindexd
    $ #.....
    $ sudo synoservice --start synoindexd"

    Auriez-vous un palliatif pour ce problème ?

    Merci,
    Didier
    Linux seveur_maison 4.4.302+ #64570 SMP Tue Jun 13 21:39:55 CST 2023 x86_64 GNU/Linux synology_geminilake_920+

    1. Bonjour Didier,
      Hélas, je n’ai plus de baie Syno depuis longtemps (je suis passé à OpenMediaVault sur un SBC Odroid), je ne peux donc pas t’aider.
      Une recherche sur le net devrait t’aider (genre « DSM7 how to stop/restart service)… On dirait qu’ils utilisent maintenant une commande /usr/syno/bin/synosystemctl ou même la commande classique systemctl d’un système linux utilisant systemd.

Répondre à Marcotwin34 Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *