# 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`