mejora en el modelo de traduccion
This commit is contained in:
parent
be56de7dd4
commit
ecd7a3cdf8
21 changed files with 3708 additions and 322 deletions
385
DEPLOY.md
385
DEPLOY.md
|
|
@ -1,54 +1,353 @@
|
|||
# Deployment Guide
|
||||
# 🚀 Guía de Despliegue RSS2
|
||||
|
||||
This guide describes how to deploy the application to a new server.
|
||||
## ⚡ Despliegue Rápido (5 minutos)
|
||||
|
||||
## Prerequisites
|
||||
### Paso 1: Clonar el Proyecto
|
||||
|
||||
* **Linux Server** (Ubuntu 22.04+ recommended)
|
||||
* **NVIDIA GPU**: Required for translation, embeddings, and NER services.
|
||||
* **NVIDIA Container Toolkit**: Must be installed to allow Docker to access the GPU.
|
||||
* **Docker** & **Docker Compose**: Latest versions.
|
||||
* **Git**: To clone the repository.
|
||||
* **External Service**: An instance of [AllTalk](https://github.com/erew123/alltalk_tts) running externally or on the host (port 7851 by default).
|
||||
```bash
|
||||
git clone https://github.com/tu-usuario/rss2.git
|
||||
cd rss2
|
||||
```
|
||||
|
||||
## Deployment Steps
|
||||
### Paso 2: Generar Credenciales Seguras
|
||||
|
||||
1. **Clone the Repository**
|
||||
```bash
|
||||
git clone <your-repo-url>
|
||||
cd <your-repo-name>
|
||||
```
|
||||
```bash
|
||||
./pre-deploy.sh --generate
|
||||
```
|
||||
|
||||
2. **Configure Environment Variables**
|
||||
Copy the example configuration file:
|
||||
```bash
|
||||
cp .env.example .env
|
||||
```
|
||||
Edit `.env` and set secure passwords and configuration:
|
||||
```bash
|
||||
nano .env
|
||||
```
|
||||
* Change `POSTGRES_PASSWORD` and `DB_PASS` to a strong unique password.
|
||||
* Change `SECRET_KEY` to a long random string.
|
||||
* Verify `ALLTALK_URL` points to your AllTalk instance (default assumes host machine access).
|
||||
**Salida esperada:**
|
||||
```
|
||||
🔑 Generando credenciales seguras...
|
||||
|
||||
3. **Start the Services**
|
||||
Run the following command to build and start the application:
|
||||
```bash
|
||||
docker compose up -d --build
|
||||
```
|
||||
⚠️ IMPORTANTE: Guarda estas credenciales en un lugar seguro
|
||||
|
||||
4. **Database Initialization**
|
||||
The database will automatically initialize on the first run using the scripts in `init-db/`. This may take a few minutes. Check logs with:
|
||||
```bash
|
||||
docker compose logs -f db
|
||||
```
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
POSTGRES_PASSWORD: S5xwsI9HKjdaBWLpCkqp0mA0DJYZerpD
|
||||
REDIS_PASSWORD: cVF79QuJulPO5auEhA2nNqv7mqAruzYh
|
||||
SECRET_KEY: 2eb7c221245bb8d896f83255188de614e59fae6b8dfbf16eee8a23c60dde4ffa
|
||||
GRAFANA_PASSWORD: R4J61V6OGLTCesrITwEvUPTm
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
```
|
||||
|
||||
5. **Verify Deployment**
|
||||
Access the application at `http://<your-server-ip>:8001`.
|
||||
**⚠️ IMPORTANTE:** Copia estas contraseñas y guárdalas en un gestor de contraseñas. ¡Nunca se volverán a mostrar!
|
||||
|
||||
## Important Notes
|
||||
### Paso 3: Validar y Desplegar
|
||||
|
||||
* **Models**: The application mounts `./models` and `./hf_cache` to persist AI models. On the first run, it will attempt to download necessary models (NLLB, BERT, etc.), which requires significant bandwidth and time.
|
||||
* **Data Persistence**: Database data is stored in `./pgdata` (mapped in docker-compose). Ensure this directory is backed up.
|
||||
* **Security**: Ensure port 5432 (Postgres) and 6379 (Redis) are firewall-protected and not exposed to the public internet unless intended (Docker maps them to the host network).
|
||||
```bash
|
||||
./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 `1` para 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 `2` para validar solo
|
||||
- Luego ejecuta manualmente:
|
||||
```bash
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
### Paso 4: Verificar Despliegue
|
||||
|
||||
```bash
|
||||
# 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
|
||||
|
||||
```bash
|
||||
# Aplicación web
|
||||
http://localhost:8888
|
||||
|
||||
# API (prueba con curl)
|
||||
curl http://localhost:8888/api/feeds
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔐 Seguridad
|
||||
|
||||
### ¿Por qué es importante?
|
||||
|
||||
**Sin seguridad (❌ MAL):**
|
||||
```bash
|
||||
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):**
|
||||
```bash
|
||||
./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)**
|
||||
```bash
|
||||
# Copia las credenciales y guárdalas en:
|
||||
# - LastPass
|
||||
# - 1Password
|
||||
# - KeePass
|
||||
# - Bitwarden
|
||||
```
|
||||
|
||||
**Opción 2: Archivo seguro local**
|
||||
```bash
|
||||
# Crea un archivo seguro fuera del proyecto
|
||||
echo "POSTGRES_PASSWORD=..." > ~/rss2-credentials.txt
|
||||
echo "REDIS_PASSWORD=..." >> ~/rss2-credentials.txt
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🛠️ Comandos Útiles
|
||||
|
||||
### Verificar Credenciales
|
||||
```bash
|
||||
# Ver que las contraseñas están definidas
|
||||
grep -E "^(POSTGRES_PASSWORD|REDIS_PASSWORD|DB_PASS)=" .env
|
||||
```
|
||||
|
||||
### Reiniciar Servicios
|
||||
```bash
|
||||
# Reiniciar todos los servicios
|
||||
docker compose restart
|
||||
|
||||
# Reiniciar solo base de datos
|
||||
docker compose restart db
|
||||
```
|
||||
|
||||
### Escalar Workers
|
||||
```bash
|
||||
# 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
|
||||
```bash
|
||||
# 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
|
||||
```bash
|
||||
# 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:**
|
||||
```bash
|
||||
# Ejecutar pre-deploy para generar credenciales
|
||||
./pre-deploy.sh --generate
|
||||
```
|
||||
|
||||
### Problema: Contraseña vacía en healthcheck
|
||||
|
||||
```
|
||||
redis-cli: Authentication failed
|
||||
```
|
||||
|
||||
**Solución:**
|
||||
```bash
|
||||
# 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:**
|
||||
```bash
|
||||
# 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:**
|
||||
```bash
|
||||
# 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
|
||||
|
||||
```bash
|
||||
# 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:
|
||||
```bash
|
||||
# 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:
|
||||
|
||||
- [ ] `.env` tiene credenciales generadas (no por defecto)
|
||||
- [ ] `.env` está en `.gitignore`
|
||||
- [ ] Puedes acceder a http://localhost:8888
|
||||
- [ ] `docker compose ps` muestra 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](./README.md) - Documentación general
|
||||
- [SECURITY_GUIDE.md](./SECURITY_GUIDE.md) - Guía de seguridad
|
||||
- [DOCKER.md](./DOCKER.md) - Configuración avanzada de Docker
|
||||
|
||||
---
|
||||
|
||||
**RSS2** - *Transformando noticias en inteligencia con IA.*
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue