feat: Initial commit for OnEver Drive centralized backup system with Windows PyQt6 agent and Proxmox LXC deployment

This commit is contained in:
2026-08-13 19:33:44 -03:00
commit 1bfb808c79
77 changed files with 10675 additions and 0 deletions
+83
View File
@@ -0,0 +1,83 @@
# 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.
---
## 🛠️ 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`.