una app que recopila noticias de todo el munndo, las traduce y las convierte a vectorial para busquedas semanticas
Find a file
2026-01-23 02:00:40 +01:00
docs Preparar repositorio para despliegue: código fuente limpio 2026-01-23 02:00:40 +01:00
init-db Preparar repositorio para despliegue: código fuente limpio 2026-01-23 02:00:40 +01:00
init-replica Initial clean commit 2026-01-13 13:39:51 +01:00
migrations Preparar repositorio para despliegue: código fuente limpio 2026-01-23 02:00:40 +01:00
models Preparar repositorio para despliegue: código fuente limpio 2026-01-23 02:00:40 +01:00
monitoring Initial clean commit 2026-01-13 13:39:51 +01:00
routers Preparar repositorio para despliegue: código fuente limpio 2026-01-23 02:00:40 +01:00
rss-ingestor-go Initial clean commit 2026-01-13 13:39:51 +01:00
scripts Preparar repositorio para despliegue: código fuente limpio 2026-01-23 02:00:40 +01:00
static Preparar repositorio para despliegue: código fuente limpio 2026-01-23 02:00:40 +01:00
templates Preparar repositorio para despliegue: código fuente limpio 2026-01-23 02:00:40 +01:00
utils Preparar repositorio para despliegue: código fuente limpio 2026-01-23 02:00:40 +01:00
workers Preparar repositorio para despliegue: código fuente limpio 2026-01-23 02:00:40 +01:00
.dockerignore Preparar repositorio para despliegue: código fuente limpio 2026-01-23 02:00:40 +01:00
.env.example Initial clean commit 2026-01-13 13:39:51 +01:00
.env.secure.example Initial clean commit 2026-01-13 13:39:51 +01:00
.gitignore Preparar repositorio para despliegue: código fuente limpio 2026-01-23 02:00:40 +01:00
app.py Preparar repositorio para despliegue: código fuente limpio 2026-01-23 02:00:40 +01:00
cache.py Preparar repositorio para despliegue: código fuente limpio 2026-01-23 02:00:40 +01:00
config.py Initial clean commit 2026-01-13 13:39:51 +01:00
db.py Initial clean commit 2026-01-13 13:39:51 +01:00
DEPLOY.md Initial clean commit 2026-01-13 13:39:51 +01:00
docker-compose.yml Preparar repositorio para despliegue: código fuente limpio 2026-01-23 02:00:40 +01:00
Dockerfile Initial clean commit 2026-01-13 13:39:51 +01:00
Dockerfile.llm_worker Preparar repositorio para despliegue: código fuente limpio 2026-01-23 02:00:40 +01:00
Dockerfile.replica Initial clean commit 2026-01-13 13:39:51 +01:00
Dockerfile.url_worker Initial clean commit 2026-01-13 13:39:51 +01:00
entity_config.json Initial clean commit 2026-01-13 13:39:51 +01:00
FUNCIONES_DE_ARCHIVOS.md Preparar repositorio para despliegue: código fuente limpio 2026-01-23 02:00:40 +01:00
generate_secure_credentials.sh Initial clean commit 2026-01-13 13:39:51 +01:00
gunicorn_config.py Initial clean commit 2026-01-13 13:39:51 +01:00
IMPLEMENTACION_LLM_RESUMEN.md Preparar repositorio para despliegue: código fuente limpio 2026-01-23 02:00:40 +01:00
migrate_to_secure.sh Initial clean commit 2026-01-13 13:39:51 +01:00
NEWSPAPER_STYLE_GUIDE.md Preparar repositorio para despliegue: código fuente limpio 2026-01-23 02:00:40 +01:00
nginx.conf Preparar repositorio para despliegue: código fuente limpio 2026-01-23 02:00:40 +01:00
QDRANT_SETUP.md Initial clean commit 2026-01-13 13:39:51 +01:00
QUICKSTART_LLM.md Preparar repositorio para despliegue: código fuente limpio 2026-01-23 02:00:40 +01:00
README.md Preparar repositorio para despliegue: código fuente limpio 2026-01-23 02:00:40 +01:00
requirements.txt Initial clean commit 2026-01-13 13:39:51 +01:00
reset_and_deploy.sh Initial clean commit 2026-01-13 13:39:51 +01:00
scheduler.py Initial clean commit 2026-01-13 13:39:51 +01:00
SECURITY_AUDIT.md Initial clean commit 2026-01-13 13:39:51 +01:00
SECURITY_GUIDE.md Initial clean commit 2026-01-13 13:39:51 +01:00
start_docker.sh limpieza 2026-01-13 13:55:44 +01:00
translation_ops.py Initial clean commit 2026-01-13 13:39:51 +01:00
verify_security.sh Initial clean commit 2026-01-13 13:39:51 +01:00

RSS2 - Plataforma de Inteligencia de Noticias con IA

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


🏗️ Arquitectura de Servicios (Docker)

El sistema está orquestado mediante Docker Compose y se divide en 3 redes aisladas (frontend, backend, monitoring) para garantizar la seguridad y el rendimiento.

🌐 Core & Acceso (Red Frontend)

Servicio Tecnología Puerto Ext. Descripción
nginx Nginx Alpine 8001 Gateway Público. Proxy inverso que sirve la aplicación y archivos estáticos.
rss2_web Python (Flask+Gunicorn) - Servidor de aplicación principal. Gestiona la API, interfaz web y lógica de negocio.

📥 Ingesta y Descubrimiento (Red Backend)

Servicio Tecnología Descripción
rss-ingestor-go Go Crawler de ultra-alto rendimiento. Monitoriza y descarga cientos de feeds RSS por minuto.
url-worker Python Scraper profundo. Descarga el contenido completo (HTML limpio via newspaper3k) de cada noticia.
url-discovery-worker Python Agente autónomo que descubre y sugiere nuevos feeds RSS basándose en el tráfico actual.

<EFBFBD> Procesamiento de IA (Red Backend)

Estos workers procesan asíncronamente la información utilizando modelos locales (GPU/CPU).

Servicio Función Modelo / Tecnología
translator (x3) Traducción Neural NLLB-200. Traduce noticias de cualquier idioma al Español. Escalado horizontalmente (3 réplicas).
embeddings Vectorización Sentence-Transformers. Convierte texto en vectores matemáticos para búsqueda semántica.
ner Entidades Modelos SpaCy/Bert. Extrae Personas, Organizaciones y Lugares.
topics Clasificación Clasifica noticias en temas (Política, Economía, Tecnología, etc.).
llm-categorizer Categorización Inteligente ExLlamaV2 + Mistral-7B. Categoriza noticias usando LLM local. Procesa 10 noticias por lote.
cluster Agrupación Agrupa noticias sobre el mismo evento de diferentes fuentes.
related Relaciones Calcula y enlaza noticias relacionadas temporal y contextualmente.

💾 Almacenamiento y Búsqueda (Red Backend)

Servicio Rol Descripción
db Base de Datos Relacional PostgreSQL 18. Almacenamiento principal de noticias, usuarios y configuración.
qdrant Base de Datos Vectorial Qdrant. Motor de búsqueda semántica de alta velocidad.
qdrant-worker Sincronización Worker dedicado a mantener sincronizados PostgreSQL y Qdrant.
redis Caché y Colas Redis 7. Gestiona las colas de tareas para los workers y caché de sesión.

⚙️ Orquestación y Mantenimiento

Servicio Descripción
rss-tasks Scheduler (Cron) que ejecuta tareas periódicas de limpieza, mantenimiento y optimización de índices.

📊 Observabilidad (Red Monitoring)

Acceso exclusivo vía localhost o túnel SSH.

Servicio Puerto Local Descripción
grafana 3001 Dashboard visual para monitorizar CPU/RAM, colas de Redis y estado de ingesta.
prometheus - Recolección de métricas de todos los contenedores.
cadvisor - Monitor de recursos del kernel de Linux para Docker.

🚀 Guía de Inicio Rápido

Requisitos Previos

  • Docker y Docker Compose V2.
  • Drivers de NVIDIA (Opcional, pero recomendado para inferencia rápida de IA).

1. Instalación

git clone <repo>
cd rss2

2. Configuración de Seguridad

Genera contraseñas robustas automáticamente para todos los servicios:

./generate_secure_credentials.sh

Esto creará un archivo .env configurado y seguro.

3. Iniciar la Plataforma

Utiliza el script de arranque que verifica dependencias y levanta el stack:

./start_docker.sh

Alternativamente: docker compose up -d

4. Acceder a la Aplicación


🔒 Seguridad y Credenciales (¡IMPORTANTE!)

El sistema viene protegido por defecto. No existen contraseñas "hardcodeadas"; todas se generan dinámicamente o se leen del entorno.

🔑 Generación de Claves

Al ejecutar ./generate_secure_credentials.sh, el sistema crea un archivo .env que contiene:

  1. GRAFANA_PASSWORD: Contraseña para el usuario admin en Grafana.
  2. POSTGRES_PASSWORD: Contraseña maestra para la base de datos rss.
  3. REDIS_PASSWORD: Clave de autenticación para Redis.
  4. SECRET_KEY: Llave criptográfica para sesiones y tokens de seguridad.

⚠️ Atención: Si no ejecutas el script, el sistema intentará usar valores por defecto inseguros (ej. change_this_password) definidos en .env.example. No uses esto en producción.

🛡️ Niveles de Acceso

  1. Red Pública (Internet) -> Puerto 8001:
    • Solo acceso a Nginx (Frontend).
    • Protegido por las reglas de firewall de tu servidor.
  2. Red Local (Localhost) -> Puerto 3001:
    • Acceso a Grafana.
    • Login: Usuario admin / Password: Ver GRAFANA_PASSWORD en tu archivo .env.
  3. Red Interna (Docker Backend):
    • Base de datos, Redis y Qdrant NO están expuestos fuera de Docker.
    • Acceso a DB: Solo posible vía docker exec (ver abajo).

📋 Auditoría

El repositorio incluye herramientas para verificar la seguridad:

  • ./verify_security.sh: Ejecuta un escaneo de puertos y configuraciones.
  • SECURITY_GUIDE.md: Manual avanzado de administración segura.

<EFBFBD> Operaciones Comunes

Ver logs en tiempo real

# Ver todo el sistema
docker compose logs -f

# Ver un servicio específico (ej. traductor o web)
docker compose logs -f translator
docker compose logs -f rss2_web

Generación de Videos (Nuevo)

El sistema incluye un script para convertir noticias en videos narrados automáticamente:

# Ejecutar generador manual
python3 scripts/generar_videos_noticias.py

Copias de Seguridad (Backup)

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

# Backup de Qdrant (Vectores)
tar -czf vector_backup.tar.gz qdrant_storage/

Reinicio Completo (con reconstrucción)

Si modificas código o configuración:

docker compose down
docker compose up -d --build