URL: https://linuxfr.org/users/julieng-2/journaux/activer-elasticsearch-pour-son-instance-mastodon Title: Activer Elasticsearch pour son instance Mastodon Authors: JulienG Date: 2023年08月27日T16:48:50+02:00 License: CC By-SA Tags: mastodon, auto-hébergement, elasticsearch, docker et docker-compose Score: 9 _Cet article est la suite de [l'article pour héberger une instance Mastodon](https://linuxfr.org/users/julieng-2/journaux/heberger-son-instance-mastodon-seulement-en-profil-individuel)._ --- Mastodon (<3) évolue encore avec une belle nouveautée dans sa version stable de rentrée, comme l'indique [par un _toot_ d'Eric F.](https://mastodon.nothus.fr/@ericfreyss@mastodon.social/110961140969134182) :> La #recherche plein texte (contenu des toots) est disponible sur la toute dernière version du logiciel #mastodon (en version bêta, déploiement dans la branche stable prévue en septembre selon @renchap) Encore faut-il avoir un Elasticsearch (ou son _fork_ à licence bien plus permissive, [Opensearch](https://opensearch.org/)) d'actif à disposition. Et comme [le rappelle Renaud C.](https://mastodon.nothus.fr/@renchap@oisaur.com/110961306515686903), _Mastodon core team member_ (et MERCI à toute votre équipe !) : > "(...) la fonctionnalité requiert ElasticSearch (comme les fonctionnalités de recherche hors hashtag des versions précédentes).> On va clarifier la doc et indiquer plus clairement que __ElasticSearch n'est plus vraiment considéré comme optionnel, vu que pas mal de fonctionnalités vont dépendre dessus.__" Car, peut-être comme moi, vous vous êtes dits qu'Elasticsearch est (1) consommateur (pour mon NUC) ; (2) parfois un peu "subtil" (pénible) à administrer, pour assez peu d’intérêts lorsque vous êtes sur de très petites instances comme la mienne (mono-usager). Vous auriez volontairement zappé ce point... Hélas il faut désormais se mettre à la page ! Voici les modifications à apporter afin de préparer l'environnement de cette nouvelle version. D'abord avec l'ajout du service concerné dans `docker-compose.yml` : `` es01: container_name: es01 image: elasticsearch:8.9.1 volumes: - ./elasticsearch8:/usr/share/elasticsearch/data environment: - "node.name=es01" - "discovery.type=single-node" - "ES_JAVA_OPTS=-Xms512m -Xmx512m" # à adapter - "ELASTIC_PASSWORD=mon_super_mot_de_passe" # à changer ``` N'hésitez pas à ajouter un _healthcheck_ si vous le souhaitez. Attention pour le point de montage du dossier dans le conteneur, Elasticsearch écrit en _root_ par défaut. Puis on charge la modification : ```bash docker compose up -d ``` Ce qui lancera la récupération de l'image et son instanciation. Si vous avez plusieurs réseaux Docker voire plusieurs _stacks_, il est possible que vous ayez des redémarrages plus larges à prévoir. Alors on regardera que l'instance va bien : ```bash capp@nothusserv1:~/mastodon$ docker compose ps NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS db postgres:14.6 "docker-entrypoint.s..." db 8 months ago Up 27 minutes (healthy) es01 elasticsearch:8.9.1 "/bin/tini -- /usr/l..." es01 24 minutes ago Up 24 minutes mastodon-sidekiq-1 tootsuite/mastodon:v4.1.4 "/usr/bin/tini -- bu..." sidekiq 23 minutes ago Up 23 minutes (healthy) 3000/tcp, 4000/tcp mastodon-streaming-1 tootsuite/mastodon:v4.1.4 "/usr/bin/tini -- no..." streaming 23 minutes ago Up 23 minutes (healthy) 3000/tcp, 127.0.0.1:4000->4000/tcp mastodon-web-1 tootsuite/mastodon:v4.1.4 "/usr/bin/tini -- ba..." web 23 minutes ago Up 23 minutes (healthy) 3000/tcp, 4000/tcp redis redis:7-alpine "docker-entrypoint.s..." redis 58 minutes ago Up 27 minutes (healthy) ``` Je vous conseille aussi de surveiller les journaux d'Elasticsearch (attention les yeux) : ```bash docker compose logs es01 ``` Vous pouvez également vérifier que l'instance ES tourne correctement en demandant le statut (comme pour un _healthcheck_), directement dans le conteneur visé : ```bash julien@julien-Vostro-7580:~/Developpement/mastodon/article$ docker compose exec -it -u root es01 bash root@a0276a607959:/usr/share/elasticsearch# curl -u elastic:mon_super_mot_de_passe http://es01:9200 { "name" : "es01", "cluster_name" : "docker-cluster", "cluster_uuid" : "***-***", "version" : { "number" : "8.9.1", "build_flavor" : "default", "build_type" : "docker", "build_hash" : "***", "build_date" : "***", "build_snapshot" : false, "lucene_version" : "9.7.0", "minimum_wire_compatibility_version" : "7.17.0", "minimum_index_compatibility_version" : "7.0.0" }, "tagline" : "You Know, for Search" } ``` Parfait ! On modifiera alors le fichier `.env.production` pour que l'instance la prenne en compte, en prenant garde à ce que le nom résolvable de votre conteneur soit bien déclaré dans `ES_HOST` (ici c'est "es01") : ```text # Elasticsearch (optional) # ------------------------ ES_ENABLED=true ES_HOST=es01 ES_PORT=9200 # Authentication for ES (optional) ES_USER=elastic ES_PASS=mon_super_mot_de_passe ``` Ce qui va nous obligé à redémarrer (pas la peine de recréer) le conteneur Mastodon, ici s'appelant "web" : ```bash docker compose restart web ``` Enfin vous pouvez rentrer dedans pour demander la création de l'index. Cela prend un peu de temps, soyez patient : ```bash julien@julien-Vostro-7580:~/Developpement/mastodon/article$ docker compose exec -it -u root web bash root@21a0039cfad6:/opt/mastodon# RAILS_ENV=production bin/tootctl search deploy Done! 100529/100529 |=========================================================================================================================================================================================| Time: 00:00:17 (5913 docs/s) Indexed 74684 records, de-indexed 0 ``` Voilà, votre instance a sa propre indexation, comme une grande. Dans mon cas, les index nouvellement créés représentent 17 Mo au démarrage sur le disque, 4% de mon CPU et près d'1 Go de RAM - mais garder à l'esprit que mon instance est _mono-utilisateur_ : cela peut être considérablement plus ! Laissez toujours Elasticsearch "souffler" et avoir du rab', il peut vite être erratique en cas de stress de ressources. Évidemment on n'expose __jamais__ son instance Elasticsearch au reste du monde, particulièrement avec aussi peu de sécurité que je viens de le décrire. Si vous avez un doute, n'hésitez jamais à demander dans un forum : mieux vaut s’embêter une heure avant, que tout perdre après ! Vivement la rentrée...

AltStyle によって変換されたページ (->オリジナル) /