Skip to content

About

Redis endurecido de SmartPot

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

SmartPot-Cache (Redis)

Estado del Proyecto

Cache Image CI Publish Docker Images

Descripción

SmartPot-Cache es el Redis de SmartPot. SmartPot-API lo usa para datos cortos y compartidos entre peticiones:

Uso Llaves Vida
Límite de peticiones por IP smartpot:rate:* 1 minuto
Frecuencia mínima de telemetría por cultivo smartpot:reading:* 5 segundos
Enfriamiento del agente y de las alertas smartpot:agent:*, smartpot:notify:*, smartpot:ai-eval:* Minutos u horas
Perfiles de cultivo del servicio de IA smartpot:ai:crop-profiles 1 hora
Resumen de lo aprendido por la IA smartpot:ai:learning-status 1 minuto
Códigos de un solo uso para vincular Telegram smartpot:channel-link:telegram:* 10 minutos (se borran al usarse)
Enlaces de un solo uso para compartir un cultivo smartpot:crop-share:telegram:* 10 minutos (se borran al usarse)
Clima del lugar de cada cultivo smartpot:weather:{lat}:{lon} 10 minutos (2 si el clima no respondió)

Es una caché sin persistencia: si se reinicia, la API reconstruye todo. Si Redis no responde, la API sigue funcionando con memoria local durante 30 segundos y vuelve a intentar.

Seguridad

  • Contraseña obligatoria de al menos 16 caracteres (REDIS_PASSWORD); sin ella el contenedor no arranca.
  • La configuración se genera en /tmp al arrancar y nunca se imprime en los logs.
  • FLUSHALL, FLUSHDB, CONFIG, DEBUG y SHUTDOWN están deshabilitados.
  • Corre como el usuario 999, con sistema de archivos de solo lectura y sin capacidades de Linux.
  • En producción no publica puertos: solo la API lo alcanza por la red interna de Docker.

Estructura del Proyecto

SmartPot-Cache/
├── .github/
│   ├── dependabot.yml
│   └── workflows/
│       ├── ci.yml              # Construye la imagen y corre la prueba de seguridad
│       ├── packaging.yml       # Publica la imagen en GHCR con SBOM y procedencia (y en Docker Hub con credenciales)
│       └── deploy.yml          # Pide el despliegue al workflow central de SmartPotTech/.github
├── tests/
│   └── smoke.sh                # Autenticación, comandos bloqueados y logs sin secretos
├── compose.yaml
├── Dockerfile                  # redis:8.8-alpine sin privilegios
├── entrypoint.sh               # Genera la configuración con la contraseña del entorno
└── .env.example

Guía de Instalación

Despliegue en un comando

La imagen es pública: ghcr.io/smartpottech/smartpot-cache. La plataforma completa, con este servicio incluido, se levanta con un solo comando y sin descargar el código:

curl -fsSL https://raw.githubusercontent.com/SmartPotTech/.github/main/docker/demo/compose.yaml | docker compose -f - up -d --wait

Abre http://localhost:5173 e ingresa con demo@smartpot.app / SmartPot2026. Se detiene con docker compose -p smartpot-demo down (con -v borra también los datos). Más detalle en la demo.

Solo este servicio, con la imagen publicada:

docker run -d --name smartpot-cache --read-only --tmpfs /tmp --cap-drop ALL \
  -p 127.0.0.1:6379:6379 -e REDIS_PASSWORD=<mínimo-16-caracteres> \
  ghcr.io/smartpottech/smartpot-cache:latest

Desde el código con Docker Compose

cp .env.example .env    # define REDIS_PASSWORD
docker compose up -d
Variable Por defecto Descripción
REDIS_PASSWORD — Obligatoria, mínimo 16 caracteres
REDIS_MAXMEMORY 128mb Memoria máxima; se descartan las llaves menos usadas (LRU)
REDIS_DATABASES 4 Bases lógicas disponibles

Prueba de humo

docker build -t smartpot-cache:ci .
sh tests/smoke.sh smartpot-cache:ci

Imagen publicada

docker pull ghcr.io/smartpottech/smartpot-cache:latest

Cada cambio en main pasa por el CI, publica la imagen en GHCR (y en Docker Hub como réplica cuando el repositorio tiene credenciales) y pide el despliegue al workflow central de SmartPotTech/.github, que actualiza producción de a uno y verifica /health.

Documentación

Redis guarda solo datos efímeros: si se pierde, la plataforma sigue. Su documentación propia está en docs/ (también en DOCX y PDF), con sus diagramas en docs/diagrams: el general de la imagen y el de las llaves. La documentación técnica explica para qué usa la API cada llave y cómo actúa si Redis no responde. Los diagramas generales muestran la plataforma completa en una sola imagen ampliable:

Licencia

Este proyecto está bajo la licencia MIT. Consulta el archivo LICENSE para más detalles.

About

Redis endurecido de SmartPot

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages