Installation d’Elasticsearch
On installe Elasticsearch comme moteur de recherche en plein texte pour l’ensemble du contenu qui sera hébergé dans Nextcloud.
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - sudo apt-get install apt-transport-https openjdk-11-jre-headless echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list sudo apt-get update && sudo apt-get install elasticsearch
Il faut maintenant mettre en place et activer le service pour qu’Elasticsearch roule en arrière-plan.
sudo systemctl enable elasticsearch.service
Enfin, il faut installer et activer le plug-in d’indexations de documents pour Elasticsearch
/usr/share/elasticsearch/bin/elasticsearch-plugin install --batch ingest-attachment
Pour terminer, on redémarre le service
sudo systemctl restart elasticsearch.service
Installation du moteur de recherche plein texte de Nextcloud
Depuis le navigateur web, ouvrir l’URL suivante: https://nextcloud.local/nextcloud/settings/apps
Dans la section Rechercher, cliquez sur télécharger et activer pour les trois applications suivantes:
Extension | Description |
Full text search | Recherche plein texte de base |
Full text search – Files | Recherche dans les fichiers |
Full text search – Elasticsearch Platform | Moteur d’indexation |
Maintenant, allons dans la section Paramètres de Nextcloud pour configurer ces applications. Sélectionner Elasticsearch
comme plateforme de recherche.
Indiquer http://localhost:9200
comme adresse du Servlet et nc_index
comme index
Initialiser l’index Elasticsearch
Depuis la session SSH, idéalement dans un screen, on initialise l’index. Exécuter en tant que root.
cd /var/www/nextcloud chmod a+x occ sudo -u nextcloud php ./occ fulltextsearch:index
Activer l’indexation en continu de Nextcloud
Tous les nouveaux documents ajoutés devraient être indexés. Pour ce faire, on crée un service dans systemd qui permet l’indexation en continu.
Avec un éditeur de texte, ouvrir et modifier le fichier « unit » du service.
sudo nano /etc/systemd/system/nextcloud-fulltext-elasticsearch-worker.service
Insérer le contenu suivant:
[Unit] Description=Elasticsearch Worker for Nextcloud Fulltext Search After=network.target [Service] User=nextcloud Group=nextcloud WorkingDirectory=/var/www/nextcloud ExecStart=/usr/bin/php /var/www/nextcloud/occ fulltextsearch:live -q ExecStop=/usr/bin/php /var/www/nextcloud/occ fulltextsearch:stop Nice=19 Restart=always [Install] WantedBy=multi-user.target
Après avoir modifié un fichier « unit » il faut recharger systemd avant d’activer et de démarrer le service.
systemctl daemon-reload systemctl enable nextcloud-fulltext-elasticsearch-worker.service systemctl start nextcloud-fulltext-elasticsearch-worker.service
Vérifier ensuite que le service est bien activé:
systemctl status nextcloud-fulltext-elasticsearch-worker.service
On peut utiliser la recherche en plein texte depuis l’URL suivante: https://nextcloud.local/nextcloud/apps/fulltextsearch/
Notez qu’il faut laisser le temps à la première indexation de compléter son travail avant de faire des requêtes. Sinon, il y a un risque de surcharger le serveur et les requêtes ne répondront pas.
Conclusion
Ceci complète notre installation des logiciels requis pour avoir un écosystème Nextcloud pour le stockage et l’indexation de documents. Ces logiciels évoluent constamment et je vais tenter de mettre à jour ce guide autant que possible, alors n’hésitez pas à revenir le consulter dans le futur pour faire vos installations. À la date de création, ce guide fonctionne sur Nextcloud 19 et plus.