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
- Web Pública: http://localhost:8001
- Grafana (Monitorización): http://localhost:3001
- Usuario:
admin - Password: (Ver archivo
.envvariableGRAFANA_PASSWORDo el output del generador)
- Usuario:
🔒 Seguridad
El sistema ha sido auditado y fortificado (Enero 2026):
-
Redes Segmentadas:
rss2_frontend: Solo Nginx y Web App.rss2_backend: Base de datos y Workers (sin acceso externo).rss2_monitoring: Stack de observabilidad.
-
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.
-
Autenticación:
- Redis requiere contraseña (
requirepass). - PostgreSQL usa autenticación estricta.
- Redis requiere contraseña (
-
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.