Configurar Elasticsearch en Mastodon es una de las mejoras más potentes que puedes aplicar a tu instancia si quieres ofrecer una experiencia de búsqueda realmente útil. Por defecto, Mastodon solo permite búsquedas muy limitadas (usuarios, hashtags…), pero al integrar Elasticsearch, desbloqueas la posibilidad de buscar publicaciones completas, tanto tuyas como de los usuarios que sigues.
En este artículo explicaremos paso a paso para habilitar Elasticsearch en tu instancia de Mastodon, desde la instalación y configuración del servicio hasta su integración con Mastodon y la indexación de contenido. Si estás listo para llevar tu nodo al siguiente nivel, sigue leyendo.
Instalación de ElasticSearch
Añadimos el repositorio de elasticsearch:
wget -O /usr/share/keyrings/elasticsearch.asc https://artifacts.elastic.co/GPG-KEY-elasticsearch
echo "deb [signed-by=/usr/share/keyrings/elasticsearch.asc] https://artifacts.elastic.co/packages/7.x/apt stable main" > /etc/apt/sources.list.d/elastic-7.x.listActualizamos el repositorio e instalamos los paquetes necesarios:
apt update
apt install elasticsearch
Configuración de ElasticSearch
Antes de iniciar Elasticsearch, es posible que quieras limitar su consumo de RAM. Puedes establecer un límite de RAM creando un nuevo archivo en /etc/elasticsearch/jvm.options.d/limit-ram.options con el siguiente contenido:
touch /etc/elasticsearch/jvm.options.d/limit-ram.options
nano /etc/elasticsearch/jvm.options.d/limit-ram.optionsEn el siguiente fichero debes de asignar cuanta RAM se puede asignar a ElasticSearch, para ello si por ejemplo tu servidor tiene 16GB de RAM, no deberías asignar más de 8 GB a Elasticsearch, y lo recomendable es dejar la mitad o menos para que el sistema operativo y otros procesos tengan memoria suficiente para funcionar correctamente.
# Limit RAM size to 8 GB
-Xms8g
-Xmx8gExplicación:
-Xms: tamaño mínimo de heap que usará la JVM (memoria reservada al arrancar).-Xmx: tamaño máximo de heap que puede usar la JVM.
Tras este cambio, ejecutamos los siguientes comandos para iniciar elasticsearch:
systemctl daemon-reload
systemctl enable --now elasticsearchSeguridad de ElasticSearch
Por defecto, Elasticsearch no gestiona ningún tipo de autenticación y todas las solicitudes se realizan con permisos de administrador completos. Por eso es recomendable configurar las funciones de seguridad para nuestros clúster. Lo primero será configurar lo siguiente en /etc/elasticsearch/elasticsearch.yml.
xpack.security.enabled: trueReiniciamos elasticsearch:
systemctl reload elasticsearchLuego ejecutaremos este script para modificar las contraseñas de los usuarios que usa ElasticSearch:
/usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactiveUna vez esto, adaptaremos lo siguiente con la contraseña seleccionada para cada usuario:
curl -X POST -u elastic:admin_password "localhost:9200/_security/role/mastodon_full_access?pretty" -H 'Content-Type: application/json' -d'
{
"cluster": ["monitor"],
"indices": [{
"names": ["*"],
"privileges": ["read", "monitor", "write", "manage"]
}]
}
'admin_password por tu contraseña.curl -X POST -u elastic:admin_password "localhost:9200/_security/user/mastodon?pretty" -H 'Content-Type: application/json' -d'
{
"password" : "l0ng-r4nd0m-p@ssw0rd",
"roles" : ["mastodon_full_access"]
}
'admin_password por tu contraseña. Y luego también en cambiar l0ng-r4nd0m-p@ssw0rd por la contraseña que queremos configurar para el acceso de elasticsearch.Configuración de Mastodon
Ahora iniciamos sesión con nuestro usuario que gestiona Mastodon y editamos el fichero .env.production y añadimos lo siguiente:
ES_ENABLED=true
ES_HOST=localhost
ES_PORT=9200
ES_PRESET=single_node_cluster
ES_USER=mastodon
ES_PASS=l0ng-r4nd0m-p@ssw0rdTras este cambio, reiniciamos los servicios de Mastodon:
systemctl restart mastodon-web.service
systemctl restart mastodon-sidekiq.serviceAhora es el momento de crear los índices de Elasticsearch y llenarlos con datos:
RAILS_ENV=production bin/tootctl search deployEste proceso puede tardar varias horas en completarse, por lo que te recomiendo usar screen para lanzarlo en una ventana separada y dejar que se ejecute en segundo plano en el servidor sin interrupciones.
Si necesitas saber como funciona el comando screen, te dejo este artículo que explica todo lo importante:

Más sobre ./voidNull
- 📖 Aprende todos sobre los comandos de GNU/Linux en nuestro Diccionario "De la A a la Z: Los comandos de GNU/Linux"
- 💪 ¡Forma parte de la Comunidad de ./voidNull!
- 🤖 Disfruta de todos nuestros Cursos sobre Ansible, Proxmox, Home Assistant entre otros.
- 📩 Mantente actualizado con lo último en GNU/Linux y Software Libre. Recibe nuestra Newsletter mensual.

Comentarios