Actualizar README.md con la descripción del sistema y la configuración de servicios Docker

This commit is contained in:
2025-12-07 11:58:45 -05:00
parent 24af1dff01
commit 9eca2c2493

184
README.md
View File

@@ -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 <tu-repositorio>
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`