# OnEver Drive Plataforma empresarial centralizada de backup y sincronización para entornos Windows sobre infraestructura **Proxmox VE (Contenedores LXC Debian 12/13)**. --- ## 🚀 Arquitectura General ```text ┌────────────────────────────────────────────────────────┐ │ CLIENTES WINDOWS (10/11/Server) │ │ │ │ [ Agente PyQt6 / System Tray (.EXE) ] │ │ ├── Selector visual de carpetas (QFileDialog) │ │ ├── Detección de bloqueos SQL Server (Locks/Growth) │ │ ├── Motor de Chunks (Bloques de 4MB con reanudación) │ │ └── Verificación de integridad SHA-256 local │ └──────────────────────────┬─────────────────────────────┘ │ HTTPS / TLS (Chunks + JSON) ▼ ┌────────────────────────────────────────────────────────┐ │ SERVIDOR PROXMOX VE (LXC Debian) │ │ │ │ [ Nginx Proxy Inverso + SSL / Let's Encrypt ] │ │ ├── Frontend Web Dashboard (React 19 + TypeScript) │ │ ├── Backend REST API (FastAPI Asíncrono) │ │ ├── WebSockets (Telemetría de subidas en tiempo real) │ │ ├── Ensamblado Streaming SHA-256 (Bajo consumo RAM) │ │ ├── Políticas de Retención (Diaria/Semanal/Mensual) │ │ └── Base de Datos (PostgreSQL 16 / SQLite dev) │ └────────────────────────────────────────────────────────┘ ``` --- ## 📦 Estructura del Repositorio - **`backend/`**: API REST FastAPI con autenticación JWT, registro de dispositivos por código temporal, motor de chunks con reanudación, políticas de retención y WebSockets. - **`frontend/`**: Dashboard web moderno (Vite + React 19 + TypeScript) con telemetría en vivo, gestión de clientes, creación de trabajos y explorador de restauración. - **`windows-agent/`**: Agente nativo en PyQt6 para Windows con System Tray, selector de carpetas, notificaciones discretas y empaquetado en binario `.exe` (PyInstaller). - **`deployment/`**: Scripts de aprovisionamiento automatizado en contenedores nativos **Debian 12/13 LXC en Proxmox VE**, configuración de Nginx, SSL y mantenimiento de backups. - **`docs/`**: Documentación técnica, manual del agente Windows, arquitectura del motor de chunks y guía de despliegue en Proxmox. - **`tests/`**: Suite automatizada con Pytest para verificar reanudación ante microcortes, aislamiento de clientes y detección de bloqueos. --- ## 🧪 Ejecución Local para Desarrollo y Pruebas Para depurar y probar la aplicación en tu máquina local: ### Backend (FastAPI) ```bash cd backend # 1. Crear y activar entorno virtual python -m venv venv # Windows: venv\Scripts\activate # Linux/Mac: source venv/bin/activate # 2. Instalar dependencias pip install -r requirements.txt # 3. Ejecutar servidor en modo desarrollo uvicorn app.main:app --reload --host 127.0.0.1 --port 8000 ``` ### Frontend (React + Vite) ```bash cd frontend # 1. Instalar dependencias npm install # 2. Iniciar servidor de desarrollo npm run dev ``` --- ## 🛠️ Requisitos de Despliegue en Proxmox VE El backend y frontend se despliegan en un **Contenedor LXC Debian 12/13** sin dependencias de Docker: ```bash # 1. Crear el contenedor en el host Proxmox bash deployment/proxmox/01-create-lxc-pve-host.sh # 2. Instalar el entorno, PostgreSQL, Nginx y Backend dentro del LXC pct enter 100 bash /root/deployment/proxmox/02-install-backend-debian.sh # 3. Configurar certificados SSL bash /root/deployment/proxmox/03-configure-ssl.sh ``` --- ## 💻 Agente de Windows (.EXE) El agente se ejecuta en el área de notificaciones (System Tray) y cuenta con una interfaz gráfica en PyQt6 para apuntar al servidor y seleccionar las carpetas locales: ```powershell # Ejecutar agente desde binario compilado windows-agent\dist\OnEverDriveAgent-Standalone.exe # O compilar nuevamente desde el código fuente python windows-agent/build_exe.py ``` --- ## 🔒 Seguridad y Multi-Inquilino - **Aislamiento por Dispositivo**: Cada máquina Windows tiene un `device_id` y `device_token` único generado criptográficamente. - **Validación SHA-256**: Cada bloque de 4MB y el archivo final ensamblado se verifican mediante streaming de hash SHA-256. - **Protección SQL Server**: Detección de archivos en uso para evitar transferencias incompletas de volcados `.bak`. --- ## 📝 Cambios Recientes Para ver la lista completa de mejoras implementadas en la última sesión de desarrollo (sincronización bidireccional, planificación tipo Proxmox Backup Server y re-vinculación de agentes), consulta el [Changelog de la Sesión](CHANGELOG_SESSION.md).