## ¿Qué es Elasticsearch?

![Logo de Elasticsearch](/api/help/media/d5101738-1a79-4416-9bd1-4c58cb64036e)

**Elasticsearch** es un motor de búsquedas que destaca por su gran rendimiento. Se integra en múltiples entornos y es especialmente usado en páginas web, por ejemplo tiendas online construidas con PrestaShop o Magento.

Se instala a nivel de sistema operativo, tiene Java como dependencia y requiere permisos de ejecución en el directorio `/tmp`. Esto hace muy compleja su integración segura en un entorno de alojamiento compartido.

En definitiva: Elasticsearch necesita un [servidor VPS](https://ginernet.com/es/vps/). Pero no te asustes, es muy fácil de instalar y **cuesta menos de 10 €/mes**. Además, **no** tienes que cambiar tu web de hosting: basta con un VPS adicional para correr el motor de búsqueda.

## Instalar Elasticsearch en un VPS con Debian

:::info
Tu VPS debe tener **2 GB de RAM como mínimo**. Necesitarás más recursos según la cantidad de datos que indexes y el volumen de búsquedas que tenga que procesar.
:::

Cuando tengas tu VPS contratado, instálalo con **Debian** (es el sistema operativo por defecto). Recibirás un mail con los datos de conexión: la IP dedicada del VPS y la contraseña de root.

Conecta por SSH a tu servidor y ejecuta los siguientes comandos:

```bash
apt update; apt dist-upgrade -y; apt install gnupg curl nano wget sudo apt-transport-https -y;
```

```bash
timedatectl set-timezone Europe/Madrid
```

```bash
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -; apt update;
```

Si quieres instalar **Elasticsearch v7**, ejecuta:

```bash
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | tee /etc/apt/sources.list.d/elastic-7.x.list; apt install elasticsearch -y;
```

En cambio, si quieres instalar **Elasticsearch v8**, ejecuta:

```bash
echo "deb https://artifacts.elastic.co/packages/8.x/apt stable main" | tee /etc/apt/sources.list.d/elastic-8.x.list; apt install elasticsearch -y;
```

Después edita el fichero `/etc/elasticsearch/elasticsearch.yml` y pon la variable `xpack.security.enabled` a `false`:

```bash
nano /etc/elasticsearch/elasticsearch.yml
```

```yaml
xpack.security.enabled: false
```

Finalmente, arranca el servicio y configúralo para que se inicie automáticamente al reiniciar el VPS:

```bash
systemctl restart elasticsearch
systemctl enable elasticsearch
```

Comprueba que el servicio está levantado:

```bash
systemctl status elasticsearch
```

Y que responde correctamente a las peticiones:

```bash
curl -X GET localhost:9200
```

¡Listo, ya tienes Elasticsearch instalado!

## Proteger el servidor Elasticsearch

Para evitar que cualquiera pueda conectar a tu Elasticsearch, protégelo con reglas de firewall. Instala UFW y establece la política por defecto:

```bash
apt install ufw -y
ufw default deny incoming
ufw default allow outgoing
ufw allow 22
ufw allow 80
ufw allow 443
ufw enable
```

Permite las conexiones al puerto 9200 **solo** desde la IP de tu hosting (sustituye `x.x.x.x` por la IP del hosting donde está alojada tu web):

```bash
ufw allow from x.x.x.x to any port 9200
```

Activa el firewall y revisa las reglas:

```bash
ufw enable
ufw status numbered
```

:::tip
¿Tienes alguna duda? [Contacta con nuestro soporte técnico](https://ginernet.com/es/contacto/), estaremos encantados de ayudarte.
:::