diff --git a/README.md b/README.md index 885d4be..a779e6c 100644 --- a/README.md +++ b/README.md @@ -1 +1,183 @@ -Pruebas con docker +# OneDrive Engine + +Sistema automatizado para la renovación de Microsoft E5 usando Docker, compuesto por dos servicios principales que trabajan en conjunto. + +## 📋 Descripción + +Este proyecto implementa un sistema de dos contenedores Docker: + +- **odengin**: Motor principal que gestiona la renovación automática de Microsoft E5 +- **odcron**: Servicio de tareas programadas que se comunica con el motor principal + +## 🏗️ Arquitectura + +``` +┌─────────────────┐ ┌─────────────────┐ +│ odcron │────────>│ odengin │ +│ (Scheduler) │ HTTP │ (Engine) │ +│ Port: N/A │ │ Port: 8080 │ +└─────────────────┘ └─────────────────┘ +``` + +Los servicios se comunican a través de una red Docker privada (`odeng-net`). + +## 🚀 Inicio Rápido + +### Prerrequisitos + +- Docker +- Docker Compose +- Credenciales de Microsoft E5: + - Client ID + - Client Secret + - Refresh Token + +### Instalación + +1. Clona el repositorio: + +```bash +git clone +cd onedrive +``` + +2. Configura las variables de entorno en `docker-compose.yml`: + +```yaml +E5_CLIENT_ID=tu_client_id +E5_CLIENT_SECRET=tu_client_secret +E5_REFRESH_TOKEN=tu_refresh_token +WEB_APP_PASSWORD=tu_password_segura +``` + +3. Inicia los servicios: + +```bash +docker-compose up -d +``` + +4. Verifica el estado: + +```bash +docker-compose ps +docker-compose logs -f +``` + +## ⚙️ Configuración + +### Variables de Entorno + +#### Servicio `odengin` + +| Variable | Descripción | Requerida | +| --------------------- | ------------------------------- | --------- | +| `E5_CLIENT_ID` | Client ID de Microsoft Azure | ✅ | +| `E5_CLIENT_SECRET` | Client Secret de Azure | ✅ | +| `E5_REFRESH_TOKEN` | Token de renovación | ✅ | +| `WEB_APP_PASSWORD` | Contraseña de la aplicación web | ✅ | +| `E5_WEB_APP_PASSWORD` | Contraseña adicional E5 | ✅ | + +#### Servicio `odcron` + +| Variable | Descripción | Requerida | +| --------------- | -------------------------------------------- | --------- | +| `IP` | Dirección del motor (formato: `host:puerto`) | ✅ | +| `PASSWORD` | Contraseña de autenticación | ✅ | +| `REFRESH_TOKEN` | Token de renovación | ✅ | + +### Puertos + +- **8089**: Puerto expuesto del servicio odengin (mapea al 8080 interno) + +## 📁 Estructura del Proyecto + +``` +onedrive/ +├── docker-compose.yml # Orquestación de servicios +├── README.md # Este archivo +├── cron/ # Servicio de tareas programadas +│ ├── Dockerfile +│ ├── docker-compose.yml +│ ├── requirements.txt +│ ├── script.py +│ └── README.md +└── engine/ # Motor principal + ├── Dockerfile + ├── docker-compose.yml + └── README.md +``` + +## 🔧 Comandos Útiles + +### Gestión de Contenedores + +```bash +# Iniciar servicios +docker-compose up -d + +# Detener servicios +docker-compose down + +# Ver logs en tiempo real +docker-compose logs -f + +# Ver logs de un servicio específico +docker-compose logs -f odengin +docker-compose logs -f odcron + +# Reiniciar servicios +docker-compose restart + +# Reconstruir imágenes +docker-compose build --no-cache +docker-compose up -d +``` + +### Monitoreo + +```bash +# Estado de los contenedores +docker-compose ps + +# Inspeccionar un contenedor +docker inspect odengin + +# Acceder al shell de un contenedor +docker exec -it odengin /bin/bash +docker exec -it odcron /bin/bash +``` + +## 🔍 Troubleshooting + +### El servicio odengin no inicia + +- Verifica que las credenciales de E5 sean correctas +- Revisa los logs: `docker-compose logs odengin` +- Asegúrate de que el puerto 8089 no esté en uso + +### El servicio odcron no se conecta + +- Verifica que odengin esté corriendo: `docker-compose ps` +- Confirma que la variable `IP` apunte a `odengin:8080` +- Revisa la configuración de la red: `docker network inspect onedrive_odeng-net` + +### Problemas de red entre contenedores + +```bash +# Verificar conectividad +docker exec -it odcron ping odengin +``` + +## 🛡️ Seguridad + +> ⚠️ **Importante**: +> +> - Nunca subas credenciales al repositorio +> - Usa variables de entorno o archivos `.env` +> - Cambia las contraseñas por defecto +> - Mantén las imágenes actualizadas + +## 📝 Notas + +- Los contenedores se reinician automáticamente (`restart: unless-stopped`) +- La comunicación entre servicios usa la red interna `odeng-net`