Saltar al contenido principal

🔎 Typesense

📂 Resumen

Esta documentación describe la implementación de Typesense v27.1 en el servidor gaia-headless-prod usando un contenedor Docker.
La configuración permite exponer el servicio en el puerto 8108, con un límite de memoria de 2 GB, almacenamiento persistente y autenticación mediante API Key.


🚀 Proceso de Despliegue

El despliegue se gestiona con un script bash ubicado en:

/apps/typesense/start-typesense.sh

📜 Contenido del script

#!/bin/bash

# Variables
CONTAINER_NAME="typesense"
IMAGE="typesense/typesense:27.1"
DATA_DIR="/apps/typesense/data"
API_KEY=claveMaestra
RAM_LIMIT="2g"

# Detener y eliminar el contenedor si ya existe
if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
echo "Deteniendo y eliminando el contenedor existente..."
docker stop $CONTAINER_NAME
docker rm $CONTAINER_NAME
fi

# Crear y ejecutar el contenedor
echo "Creando y ejecutando el contenedor $CONTAINER_NAME..."
docker run -d --name $CONTAINER_NAME --restart unless-stopped --memory $RAM_LIMIT -p 8108:8108 -v "$DATA_DIR:/data" $IMAGE --data-dir /data --api-key=$API_KEY --enable-cors

echo "El contenedor $CONTAINER_NAME ha sido creado y está en ejecución."

⚙️ Configuración de Contenedor

  • Imagen: typesense/typesense:27.1
  • Nombre del contenedor: typesense
  • Puerto expuesto: 8108
  • Directorio de datos: /apps/typesense/data (persistente en el host)
  • API Key: claveMaestra
  • Límite de memoria: 2 GB
  • CORS habilitado

🌐 Exposición a Headless

Este servicio no se expone directamente hacia la página de ventas headless.
En su lugar, se utiliza un Worker de Cloudflare, el cual proporciona varias ventajas:

  • Seguridad SSL: garantiza que toda la comunicación entre clientes y el servicio se realice de forma segura.
  • Métricas de uso: permite visualizar métricas y estadísticas de consumo del API para monitoreo y análisis.
  • Protección de infraestructura: evita exponer directamente la dirección IP y el puerto de Typesense, agregando una capa de anonimización y seguridad.

Este Worker actúa como intermediario, recibiendo las solicitudes de la página de ventas y redirigiéndolas hacia Typesense, aplicando las reglas de seguridad y registro necesarias.


📌 Notas

  1. El contenedor está configurado con --restart unless-stopped, por lo que se reiniciará automáticamente tras reinicios del servidor.
  2. La clave de acceso (API Key) debe protegerse y compartirse solo con los servicios autorizados.
  3. Los datos persisten en el directorio /apps/typesense/data del servidor.
  4. La documentación ofical se encuentra en https://typesense.org/docs/guide/install-typesense.html

✅ Estado

Una vez ejecutado el script, el servicio queda disponible en:

http://xx.xxx.x.xx:8108

Con autenticación mediante el API Key configurado.