🔎 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
- El contenedor está configurado con
--restart unless-stopped, por lo que se reiniciará automáticamente tras reinicios del servidor. - La clave de acceso (API Key) debe protegerse y compartirse solo con los servicios autorizados.
- Los datos persisten en el directorio
/apps/typesense/datadel servidor. - 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.