Nextcloud et Elasticsearch sur VirtualBox – Partie 3 – Elasticsearch

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:

ExtensionDescription
Full text searchRecherche plein texte de base
Full text search – FilesRecherche dans les fichiers
Full text search – Elasticsearch PlatformMoteur 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.