7.7 KiB
7.7 KiB
🚀 Guía de Despliegue RSS2
⚡ Despliegue Rápido (5 minutos)
Paso 1: Clonar el Proyecto
git clone https://github.com/tu-usuario/rss2.git
cd rss2
Paso 2: Generar Credenciales Seguras
./pre-deploy.sh --generate
Salida esperada:
🔑 Generando credenciales seguras...
⚠️ IMPORTANTE: Guarda estas credenciales en un lugar seguro
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
POSTGRES_PASSWORD: S5xwsI9HKjdaBWLpCkqp0mA0DJYZerpD
REDIS_PASSWORD: cVF79QuJulPO5auEhA2nNqv7mqAruzYh
SECRET_KEY: 2eb7c221245bb8d896f83255188de614e59fae6b8dfbf16eee8a23c60dde4ffa
GRAFANA_PASSWORD: R4J61V6OGLTCesrITwEvUPTm
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⚠️ IMPORTANTE: Copia estas contraseñas y guárdalas en un gestor de contraseñas. ¡Nunca se volverán a mostrar!
Paso 3: Validar y Desplegar
./pre-deploy.sh
El script te preguntará:
¿Deseas desplegar ahora?
1) Desplegar automáticamente (recomendado)
2) Solo validar y salir (modo manual)
Elige una opción:
Opción A: Despliegue automático (Opción 1)
- Elige
1para que el script haga todo automáticamente - Espera a que termine la construcción de las imágenes
- Espera a que inicien los servicios
Opción B: Despliegue manual (Opción 2)
- Elige
2para validar solo - Luego ejecuta manualmente:
docker compose up -d
Paso 4: Verificar Despliegue
# Verificar estado de los servicios
docker compose ps
# Deberías ver algo como:
# Name Status
# rss2_db Up (healthy)
# rss2_redis Up (healthy)
# rss2_backend_go Up (running)
# ...
Paso 5: Acceder a la Aplicación
# Aplicación web
http://localhost:8888
# API (prueba con curl)
curl http://localhost:8888/api/feeds
🔐 Seguridad
¿Por qué es importante?
Sin seguridad (❌ MAL):
docker compose up -d
WARN: The "DB_PASS" variable is not set. Defaulting to a blank string.
# Las contraseñas están vacías ¡PELIGRO!
Con seguridad (✅ BIEN):
./pre-deploy.sh --generate
./pre-deploy.sh
docker compose up -d
# ✅ Todo funciona correctamente
Variables Críticas
| Variable | Qué es | Por qué es importante |
|---|---|---|
POSTGRES_PASSWORD |
Contraseña de PostgreSQL | Base de datos principal |
REDIS_PASSWORD |
Contraseña de Redis | Cache y colas |
DB_PASS |
Contraseña para workers | Conexiones de workers |
SECRET_KEY |
Key secreta de la app | JWT, encriptación |
GRAFANA_PASSWORD |
Contraseña de Grafana | Dashboard de monitoring |
Guardar tus Credenciales
Opción 1: Gestor de contraseñas (Recomendado)
# Copia las credenciales y guárdalas en:
# - LastPass
# - 1Password
# - KeePass
# - Bitwarden
Opción 2: Archivo seguro local
# Crea un archivo seguro fuera del proyecto
echo "POSTGRES_PASSWORD=..." > ~/rss2-credentials.txt
echo "REDIS_PASSWORD=..." >> ~/rss2-credentials.txt
🛠️ Comandos Útiles
Verificar Credenciales
# Ver que las contraseñas están definidas
grep -E "^(POSTGRES_PASSWORD|REDIS_PASSWORD|DB_PASS)=" .env
Reiniciar Servicios
# Reiniciar todos los servicios
docker compose restart
# Reiniciar solo base de datos
docker compose restart db
Escalar Workers
# Añadir más traductores (CPU)
docker compose up -d --scale translator=3
# Añadir más traductores (GPU)
docker compose up -d --scale translator-gpu=2
Ver Logs
# Ver logs en tiempo real
docker compose logs -f
# Ver logs específicos
docker compose logs -f db
docker compose logs -f redis
docker compose logs -f backend-go
Limpiar y Reiniciar
# Detener y eliminar todo (incluye datos)
docker compose down -v
# Eliminar solo contenedores (mantiene datos)
docker compose down
# Eliminar volumen específico
docker volume rm rss2_db
docker volume rm rss2_redis
🐛 Solución de Problemas
Problema: WARN sobre variables no definidas
WARN: The "DB_PASS" variable is not set. Defaulting to a blank string.
Solución:
# Ejecutar pre-deploy para generar credenciales
./pre-deploy.sh --generate
Problema: Contraseña vacía en healthcheck
redis-cli: Authentication failed
Solución:
# Verificar REDIS_PASSWORD
grep REDIS_PASSWORD .env
# Si está vacío, regenerar
./pre-deploy.sh --generate
Problema: Port 8888 en uso
ERROR: failed to start service: port 8888 already in use
Solución:
# Cambiar puerto en docker-compose.yml
# O matar el proceso que usa el puerto
lsof -ti:8888 | xargs kill
# O usar otro puerto
docker compose up -d --scale nginx=1
Problema: Base de datos no inicia
postgres: cannot connect to database
Solución:
# Ver logs de la base de datos
docker compose logs db
# Reiniciar base de datos
docker compose restart db
# Si persiste, eliminar y recrear (¡PERDERÁS DATOS!)
docker compose down -v
docker compose up -d db
📊 Estado de los Servicios
Servicios Críticos
| Servicio | Puerto | Descripción |
|---|---|---|
nginx |
8888 | Aplicación web |
backend-go |
8080 | API interna |
db |
5432 | PostgreSQL |
redis |
6379 | Redis cache |
qdrant |
6333 | Vector database |
Dashboard de Monitorización
| Herramienta | Puerto | Acceso |
|---|---|---|
| Grafana | 3001 | http://127.0.0.1:3001 |
| Prometheus | 9090 | http://127.0.0.1:9090 |
Nota: Accede a Grafana desde 127.0.0.1 (localhost) por seguridad.
🔄 Actualización (Upgrade)
Actualizar a Nueva Versión
# 1. Pull las nuevas imágenes
docker compose pull
# 2. Backup de la base de datos
docker compose exec db pg_dump -U rss rss > backup.sql
# 3. Parar servicios
docker compose down
# 4. Actualizar código
git pull
# 5. Reiniciar
docker compose up -d
# 6. Verificar
curl http://localhost:8888/api/health
Migrar Contraseñas
Si tienes credenciales existentes y quieres mantenerlas:
# 1. Verificar .env existente
grep POSTGRES_PASSWORD .env
# 2. Si quieres nuevas credenciales
./pre-deploy.sh --generate
# 3. Si quieres mantener las existentes
# No hagas nada, las credenciales seguirán funcionando
📝 Archivos Importantes
| Archivo | Propósito |
|---|---|
.env |
Contraseñas y configuración (NO subir a Git) |
.env.example |
Plantilla (SÍ subir a Git) |
pre-deploy.sh |
Script de validación (SÍ subir a Git) |
generate_secure_credentials.sh |
Script de generación (SÍ subir a Git) |
docker-compose.yml |
Configuración de Docker (SÍ subir a Git) |
✅ Checklist Final
Antes de considerar tu despliegue como "listo", verifica:
.envtiene credenciales generadas (no por defecto).envestá en.gitignore- Puedes acceder a http://localhost:8888
docker compose psmuestra todos los servicios "Up"- La base de datos muestra "healthy"
- Los logs de la base de datos no tienen errores
- Redis responde a ping
- Qdrant está funcionando
¡Listo! Tu RSS2 está desplegado y funcionando. 🎉
📚 Documentación Adicional
- README.md - Documentación general
- SECURITY_GUIDE.md - Guía de seguridad
- DOCKER.md - Configuración avanzada de Docker
RSS2 - Transformando noticias en inteligencia con IA.