84 lines
4.5 KiB
Markdown
84 lines
4.5 KiB
Markdown
# 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`.
|