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:
git clone <tu-repositorio>
cd onedrive
  1. Copia el archivo de configuración de ejemplo:
cp .env.example .env
  1. Edita el archivo .env con tus credenciales:
# Linux/Mac
nano .env

# Windows
notepad .env
  1. Rellena todas las variables requeridas:
E5_CLIENT_ID=tu_client_id
E5_CLIENT_SECRET=tu_client_secret
E5_REFRESH_TOKEN=tu_refresh_token
WEB_APP_PASSWORD=tu_password_segura
E5_WEB_APP_PASSWORD=tu_e5_password
CRON_PASSWORD=tu_cron_password
CRON_REFRESH_TOKEN=tu_cron_refresh_token
  1. Inicia los servicios:
docker-compose up -d
  1. Verifica el estado:
docker-compose ps
docker-compose logs -f

⚙️ Configuración

Archivo .env

El archivo .env contiene todas las variables de entorno necesarias. Nunca debes:

  • Subir .env a Git
  • Compartir .env públicamente
  • Guardar credenciales en el código

El archivo .env.example se incluye como referencia para documentar qué variables se necesitan.

Variables de Entorno

Servicio odengin

Variable Descripción Requerida Variable de Entorno
E5_CLIENT_ID Client ID de Microsoft Azure E5_CLIENT_ID
E5_CLIENT_SECRET Client Secret de Azure E5_CLIENT_SECRET
E5_REFRESH_TOKEN Token de renovación E5_REFRESH_TOKEN
WEB_APP_PASSWORD Contraseña de la aplicación web WEB_APP_PASSWORD
E5_WEB_APP_PASSWORD Contraseña adicional E5 E5_WEB_APP_PASSWORD

Servicio odcron

Variable Descripción Requerida Variable de Entorno
IP del motor Dirección del motor (formato: host:puerto) CRON_IP
Contraseña Contraseña de autenticación CRON_PASSWORD
Token de renovación Token de renovación CRON_REFRESH_TOKEN

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

# 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

# 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

# Verificar conectividad
docker exec -it odcron ping odengin

🛡️ Seguridad

Gestión de Credenciales

HACER:

  • Usar archivo .env para variables sensibles
  • Incluir .env en .gitignore
  • Compartir solo .env.example con placeholders
  • Cambiar contraseñas por defecto
  • Restringir permisos del archivo .env: chmod 600 .env
  • Usar secretos de Docker/Kubernetes en producción

NO HACER:

  • Nunca subir .env a Git
  • No guardar credenciales en el código
  • No compartir .env por mensajes o email
  • No usar contraseñas débiles
  • No hacer commit accidental de .env

Verificar antes de subir

# Asegurate de que .env NO está en Git
git status

# Si fue agregado accidentalmente:
git rm --cached .env
git commit --amend -m "Remove .env from repository"

📝 Notas

  • Los contenedores se reinician automáticamente (restart: unless-stopped)
  • La comunicación entre servicios usa la red interna odeng-net
Description
No description provided
Readme 124 KiB
Languages
Shell 64.3%
Dockerfile 35.7%