rss2/README.md
2026-01-13 13:39:51 +01:00

5.6 KiB

RSS2 - Plataforma de Inteligencia de Noticias con IA

RSS2 es una plataforma avanzada de agregación, traducción y análisis de noticias diseñada para procesar grandes volúmenes de información en tiempo real. Utiliza una arquitectura de microservicios híbrida (Go + Python/FastAPI) y modelos de Inteligencia Artificial locales para transformar flujos RSS crudos en inteligencia accionable.


🏗️ Arquitectura y Servicios

El sistema se compone de múltiples contenedores Docker orquestados, divididos en 3 redes aisladas (frontend, backend, monitoring) para máxima seguridad.

🌐 Core & Frontend

Servicio Tecnología Puerto Descripción
nginx Nginx Alpine 8001 Único punto de entrada público. Reverse proxy, SSL, estáticos.
rss2_web Python/FastAPI - Backend principal. API REST, Jinja2, lógica de negocio.
rss-web-go Go/Gin - (Opcional) Microservicio web de alto rendimiento.

🤖 Inteligencia Artificial & Workers

Servicio Descripción Recursos
translator (x3) Traducción Neural (NLLB-200) de cualquier idioma a Español. GPU/CPU
embeddings Generación de vectores semánticos para búsqueda inteligente. GPU/CPU
ner Reconocimiento de Entidades (Personas, Org, Lugares). CPU
cluster Agrupación de noticias por eventos similares. CPU
topics Clasificación temática de noticias. CPU
qdrant-worker Sincronización de vectores con Qdrant. CPU

📥 Ingesta de Datos

Servicio Descripción
rss-ingestor-go Crawler de alto rendimiento en Go. Descarga cientos de RSS/min.
url-worker Scraper que descarga y limpia el contenido completo (HTML) de las noticias.
url-discovery Descubrimiento automático de nuevos feeds RSS.

💾 Almacenamiento de Datos

Servicio Tecnología Descripción
db PostgreSQL 18 Base de datos principal (Escritura). Contraseñas fuertes.
db-replica PostgreSQL 18 Réplica de lectura (Actualmente en standby).
qdrant Qdrant Base de datos vectorial. Almacena embeddings para búsqueda semántica.
redis Redis 7 Broker de mensajes y caché. Autenticado.

📊 Monitorización (Stack de Observabilidad)

Servicio Acceso Descripción
grafana localhost:3001 Dashboard visual de métricas del sistema y contenedores.
prometheus Interno Recolección de métricas de todos los servicios.
cadvisor Interno Métricas de uso de recursos de Docker (CPU, RAM).

🚀 Instalación y Despliegue

1. Clonar y Configurar

git clone <repo>
cd rss2

2. Generación de Credenciales Seguras (IMPORTANTE)

El sistema incluye un script para generar contraseñas fuertes automáticamente:

./generate_secure_credentials.sh

Esto creará un archivo .env con contraseñas aleatorias para DB, Redis y Grafana.

3. Iniciar Servicios

El despliegue se gestiona con el script maestro seguro:

./migrate_to_secure.sh

O manualmente:

docker-compose up -d

4. Acceso


🔒 Seguridad

El sistema ha sido auditado y fortificado (Enero 2026):

  1. Redes Segmentadas:

    • rss2_frontend: Solo Nginx y Web App.
    • rss2_backend: Base de datos y Workers (sin acceso externo).
    • rss2_monitoring: Stack de observabilidad.
  2. Puertos Cerrados:

    • Qdrant (6333), Prometheus (9090), Redis (6379) NO están expuestos al host.
    • Solo puerto 8001 (Web) y 3001 (Grafana/Local) están abiertos.
  3. Autenticación:

    • Redis requiere contraseña (requirepass).
    • PostgreSQL usa autenticación estricta.
  4. Scripts de Seguridad:

    • verify_security.sh: Ejecuta un test completo de la configuración de seguridad.
    • SECURITY_GUIDE.md: Guía detallada de administración segura.

🛠️ Comandos de Mantenimiento

Verificar estado del sistema

docker-compose ps

Ver logs

docker-compose logs -f rss2_web    # Web App
docker-compose logs -f translator  # Traductor

Copia de Seguridad (Backup)

# Backup de Base de Datos
docker exec rss2_db pg_dump -U rss rss > backup_$(date +%Y%m%d).sql

# Backup de Vectores (Qdrant)
# (Detener servicio antes recomendado)
tar -czf qdrant_backup.tar.gz qdrant_storage/

Actualización

git pull
docker-compose up -d --build

🧠 Características de IA

  • Búsqueda Semántica: Encuentra noticias por significado ("conflictos en oriente medio") incluso si no contienen las palabras exactas, gracias a los embeddings vectoriales en Qdrant.
  • Detección de Idioma: Automática para dirigir al traductor correcto.
  • Entidades: Explorador visual de quién y dónde en las noticias.

📂 Estructura de Directorios

  • /routers: API Endpoints (Python).
  • /workers: Lógica de fondo (Traducción, Ingesta, IA).
  • /rss-ingestor-go: Código del crawler en Go.
  • /monitoring: Configuración de Prometheus y Grafana.
  • /templates: Vistas HTML (Jinja2).
  • /static: Assets frontend.
  • docker-compose.yml: Definición de infraestructura.