diff --git a/docs/01.PROXMENUX_REVIEW.md b/docs/01.PROXMENUX_REVIEW.md new file mode 100644 index 0000000..985b474 --- /dev/null +++ b/docs/01.PROXMENUX_REVIEW.md @@ -0,0 +1,512 @@ + +--- + +# **Análisis Completo del proyecto ProxMenux** + +## **1. Estructura General del Proyecto** + +### **Archivos Principales** +- **[install_proxmenux.sh](cci:7://file:///home/debian/src/ProxMenuxDotDeb/install_proxmenux.sh:0:0-0:0)**: Script de instalación principal (723 líneas) +- **[menu](cci:7://file:///home/debian/src/ProxMenuxDotDeb/menu:0:0-0:0)**: Script principal que se instala como comando del sistema (93 líneas) +- **[version.txt](cci:7://file:///home/debian/src/ProxMenuxDotDeb/version.txt:0:0-0:0)**: Control de versiones (actual: 1.1.7) + +### **Directorios Principales** +``` +ProxMenuxDotDeb/ +├── scripts/ # 122 archivos de scripts bash +│ ├── menus/ # 13 scripts de menús +│ ├── lxc/ # 6 scripts para contenedores LXC +│ ├── vm/ # 13 scripts para máquinas virtuales +│ ├── storage/ # 9 scripts de almacenamiento +│ ├── share/ # 12 scripts para compartir recursos +│ ├── utilities/ # 6 utilidades del sistema +│ ├── global/ # 10 funciones comunes +│ ├── backup_restore/ # 6 scripts de respaldo +│ ├── post_install/ # 3 scripts post-instalación +│ └── gpu_tpu/ # Scripts para hardware gráfico +├── web/ # 136 archivos - Dashboard Next.js +├── AppImage/ # 54 archivos - ProxMenux Monitor +├── json/ # Archivos de caché de traducciones +├── lang/ # Archivos de idioma +├── guides/ # 5 guías de usuario +└── images/ # 7 imágenes del proyecto +``` + +--- + +## **2. Flujo de Instalación** + +### **Script: [install_proxmenux.sh](cci:7://file:///home/debian/src/ProxMenuxDotDeb/install_proxmenux.sh:0:0-0:0)** + +**Fase 1: Inicialización** +- Verifica permisos root (línea 716-719) +- Carga [utils.sh](cci:7://file:///home/debian/src/ProxMenuxDotDeb/scripts/utils.sh:0:0-0:0) desde GitHub (línea 54-57) +- Limpia archivos corruptos de configuración (línea 59-68) + +**Fase 2: Detección de Instalación Existente** +- Función [check_existing_installation()](cci:1://file:///home/debian/src/ProxMenuxDotDeb/install_proxmenux.sh:70:0-106:1) (línea 71-107) +- Detecta 4 tipos: `none`, `normal`, `translation`, `unknown` +- Verifica entorno virtual Python en `/opt/googletrans-env` +- Verifica configuración de idioma en `/usr/local/share/proxmenux/config.json` + +**Fase 3: Selección de Versión** +- **Versión Normal** (opción 1): + - Dependencias: `dialog`, `curl`, `jq` + - Solo inglés + - Más ligera y rápida + +- **Versión con Traducción** (opción 2): + - Dependencias adicionales: `python3`, `python3-venv`, `python3-pip` + - Instala `googletrans==4.0.0-rc1` en entorno virtual + - Soporte multiidioma: en, es, fr, de, it, pt + - **Nota**: No compatible con Proxmox VE 9+ (línea 639-658) + +**Fase 4: Instalación Normal** ([install_normal_version()](cci:1://file:///home/debian/src/ProxMenuxDotDeb/install_proxmenux.sh:402:0-484:1)) +1. Instala dependencias básicas +2. Crea directorios: + - `/usr/local/bin` (ejecutables) + - `/usr/local/share/proxmenux` (archivos del sistema) +3. Descarga desde GitHub: + - `utils.sh` → `/usr/local/share/proxmenux/utils.sh` + - `menu` → `/usr/local/bin/menu` + - `version.txt` → `/usr/local/share/proxmenux/version.txt` +4. Instala ProxMenux Monitor (AppImage) + +**Fase 5: Instalación con Traducción** (`install_translation_version()`) +- Pasos adicionales: + - Selector de idioma interactivo (línea 234-273) + - Crea entorno virtual Python en `/opt/googletrans-env` + - Instala googletrans con pip + - Descarga `cache.json` con traducciones precargadas + - Sistema de caché para reducir llamadas a la API de traducción + +**Fase 6: ProxMenux Monitor** +- Descarga AppImage desde GitHub (línea 317-360) +- Verifica checksum SHA256 (línea 333-351) +- Crea servicio systemd `/etc/systemd/system/proxmenux-monitor.service` +- Puerto por defecto: 8008 +- Se ejecuta como usuario root +- Auto-inicio en boot + +--- + +## **3. Funcionamiento del Comando `menu`** + +### **Script Principal: `/usr/local/bin/menu`** + +**Flujo de Ejecución:** + +1. **Carga de Configuración** (línea 33-44): + ```bash + REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main" + BASE_DIR="/usr/local/share/proxmenux" + source "$UTILS_FILE" + ``` + +2. **Sistema de Traducción** (línea 89-92): + - Carga idioma desde `config.json` + - Inicializa caché de traducciones + - Función `translate()` en `utils.sh` + +3. **Verificación de Actualizaciones** (línea 48-80): + - Compara versión local vs remota + - Prompt interactivo para actualizar + - Descarga y ejecuta nuevo `install_proxmenux.sh` si hay actualización + +4. **Ejecución del Menú Principal** (línea 84-86): + ```bash + exec bash <(curl -fsSL "$REPO_URL/scripts/menus/main_menu.sh") + ``` + +**Importante**: El comando `menu` **NO ejecuta scripts locales**, siempre descarga desde GitHub. + +--- + +## **4. Sistema de Menús** + +### **Menú Principal: `scripts/menus/main_menu.sh`** + +**Compatibilidad PVE 9** (línea 26-64): +- Detecta versión de Proxmox +- Si PVE 9+ y tiene traducciones instaladas → fuerza reinstalación en versión normal +- Previene errores de compatibilidad + +**Opciones del Menú** (línea 97-111): +``` +1. Settings post-install Proxmox → menu_post_install.sh +2. Hardware: GPUs and Coral-TPU → hw_grafics_menu.sh +3. Create VM from template → create_vm_menu.sh +4. Disk and Storage Manager → storage_menu.sh +5. Mount and Share Manager → share_menu.sh +6. Proxmox VE Helper Scripts → menu_Helper_Scripts.sh +7. Network Management → network_menu.sh +8. Utilities and Tools → utilities_menu.sh +h. Help and Info Commands → help_info_menu.sh +s. Settings → config_menu.sh +0. Exit +``` + +**Patrón de Ejecución**: +```bash +exec bash <(curl -s "$REPO_URL/scripts/menus/submenu.sh") +``` + +Todos los menús descargan y ejecutan scripts desde GitHub en tiempo real. + +--- + +## **5. Scripts Locales vs Remotos** + +### **Estado Actual** +- **Scripts locales**: Están presentes en el repositorio (122 archivos) +- **Ejecución**: Siempre desde GitHub mediante `curl` +- **Ventaja actual**: Actualizaciones automáticas sin reinstalar +- **Desventaja**: Requiere conexión a internet constante + +### **Scripts Principales Disponibles Localmente** + +**Gestión de VMs** (`scripts/vm/`): +- `create_vm.sh` - Crear VMs +- `synology.sh` (39KB) - Instalación Synology DSM +- `zimaos.sh` (40KB) - Instalación ZimaOS +- `uupdump_creator.sh` - Creador de ISOs Windows +- `select_windows_iso.sh`, `select_linux_iso.sh`, `select_nas_iso.sh` + +**Gestión de LXC** (`scripts/lxc/`): +- `lxc-manual-guide.sh` - Guía manual +- `lxc-privileged-to-unprivileged.sh` +- `lxc-unprivileged-to-privileged.sh` + +**Almacenamiento** (`scripts/storage/`): +- `disk-passthrough.sh` - Passthrough disco a VM +- `disk-passthrough_ct.sh` - Passthrough disco a LXC (22KB) +- `import-disk-image.sh` - Importar imágenes +- `format-disk.sh`, `mount-disk-on-host.sh` + +**Compartir Recursos** (`scripts/share/`): +- `lxc-mount-manager_minimal.sh` (35KB) - Gestión mount points +- `nfs_host.sh` (35KB) - Servidor NFS en host +- `samba_host.sh` (52KB) - Servidor Samba en host +- `nfs_client.sh`, `samba_client.sh` - Clientes en LXC +- `local-shared-manager.sh` - Directorios compartidos locales + +**Post-Instalación** (`scripts/post_install/`): +- `auto_post_install.sh` (29KB) - Automatizado sin interacción +- `customizable_post_install.sh` (148KB) - Personalizable +- `uninstall-tools.sh` (34KB) - Desinstalador + +**Utilidades** (`scripts/utilities/`): +- `upgrade_pve8_to_pve9.sh` (35KB) - Upgrade PVE 8→9 +- `system_utils.sh` (20KB) - Instalador de utilidades +- `proxmox_update.sh` - Actualización de Proxmox + +**Red** (`scripts/menus/network_menu.sh`): +- 43KB de funcionalidades de red +- Optimizaciones para LXC+NFS + +**Global** (`scripts/global/`): +- `update-pve.sh`, `update-pve8.sh`, `update-pve9_2.sh` +- `remove-banner-pve8.sh`, `remove-banner-pve9.sh` +- `share-common.func` (30KB) - Funciones compartidas + +--- + +## **6. Sistema de Utilidades: `utils.sh`** + +### **Funciones Principales** + +**Interfaz Visual** (línea 50-71): +- Definición de colores ANSI +- Códigos de estilo para terminal +- Spinner animado (línea 75-88) + +**Mensajes Estandarizados**: +- `msg_info()` - Info con spinner +- `msg_ok()` - Éxito (checkmark verde) +- `msg_error()` - Error (rojo) +- `msg_warn()` - Advertencia (amarillo) +- `msg_title()` - Títulos +- `type_text()` - Efecto máquina de escribir + +**Sistema de Traducción** (línea 232-305): +```bash +translate() { + # Si idioma es "en" → retorna texto original + # Busca en caché local (cache.json) + # Si no existe → llama a googletrans vía Python + # Guarda en caché para futuras traducciones + # Limpia prefijos de contexto +} +``` + +**Contexto de Traducción** (línea 48): +```bash +TRANSLATION_CONTEXT="Context: Technical message for Proxmox and IT. Translate:" +``` + +**Logo ASCII** (línea 314-400): +- Dos versiones: terminal noVNC y SSH +- Detección automática del entorno +- Diseño en ASCII art con colores + +--- + +## **7. ProxMenux Monitor** + +### **Componente Web (AppImage)** + +**Tecnología**: +- **Frontend**: Next.js 14, React 18, TypeScript +- **UI**: Radix UI + shadcn/ui + Tailwind CSS +- **Gráficos**: Recharts +- **Backend**: Flask (Python) para recolección de datos del sistema +- **Empaquetado**: AppImage (10.3 MB) + +**Características**: +- Dashboard en tiempo real +- Monitoreo de CPU, RAM, temperatura +- Estado de VMs y LXC containers +- Gestión de almacenamiento visual +- Estadísticas de red +- Logs del sistema +- Tema oscuro/claro +- Responsive design +- Puerto: 8008 + +**Servicio Systemd**: +```ini +[Unit] +Description=ProxMenux Monitor - Web Dashboard +After=network.target + +[Service] +Type=simple +User=root +WorkingDirectory=/usr/local/share/proxmenux +ExecStart=/usr/local/share/proxmenux/ProxMenux-Monitor.AppImage +Restart=on-failure +RestartSec=10 +Environment="PORT=8008" +``` + +**Estado**: Se instala automáticamente en ambas versiones (normal y traducción) + +--- + +## **8. Sistema de Configuración** + +### **Archivos de Configuración** + +**`/usr/local/share/proxmenux/config.json`**: +- Estado de instalación de componentes +- Idioma seleccionado +- Timestamps de instalación +- Estados: `installed`, `already_installed`, `failed` + +**Componentes Rastreados** (línea 201): +```json +{ + "dialog": {"status": "installed", "timestamp": "..."}, + "curl": {"status": "already_installed", "timestamp": "..."}, + "jq": {"status": "installed", "timestamp": "..."}, + "python3": {"status": "installed", "timestamp": "..."}, + "virtual_environment": {"status": "created", "timestamp": "..."}, + "googletrans": {"status": "installed", "timestamp": "..."}, + "proxmenux_monitor": {"status": "installed", "timestamp": "..."}, + "language": "es" +} +``` + +**`/usr/local/share/proxmenux/cache.json`**: +- Traducciones cacheadas (100 KB) +- Formato: `{"texto_original": {"es": "traducción", "fr": "traduction"}}` +- Reduce llamadas a Google Translate API + +**`/usr/local/share/proxmenux/installed_tools.json`**: +- Registro de herramientas post-instalación +- Usado por el desinstalador + +--- + +## **9. Funcionalidades Destacadas** + +### **Post-Instalación Automatizada** +- **Optimizaciones de repositorios**: Limpia duplicados, configura repos gratuitos +- **Eliminación de banner de suscripción**: Con respaldo y reversión +- **Optimización de memoria y kernel**: Ajustes según RAM disponible +- **Log2RAM**: Instalación automática en SSD/NVMe +- **Network tuning**: Optimización de stack de red +- **Límites del sistema**: Aumenta límites de archivos y procesos +- **Configuración de journald**: Ajustada para Log2RAM +- **Entropía**: Mejora generación de números aleatorios +- **Aliases bash**: Personalización del entorno + +### **Gestión de Compartición de Recursos** +**Enfoque**: Mount Points LXC (Host ↔ Container) +- Detección automática de tipo de filesystem +- Mapeo UID/GID para contenedores unprivileged +- Visualización de mount points existentes +- Eliminación segura con verificación + +**Configuraciones disponibles**: +- NFS: Host, Client LXC, Server LXC +- Samba: Host, Client LXC, Server LXC +- Directorios locales compartidos + +### **Hardware Especializado** +- **Coral TPU**: Instalación de drivers compatible con PVE 8 y 9 +- **GPUs**: Passthrough y configuración para VMs y LXC +- **iGPU**: Configuración para contenedores LXC + +### **Upgrade PVE 8 → 9** +- Script de 35 KB con verificaciones exhaustivas +- Guía manual interactiva +- Checker de compatibilidad + +--- + +## **10. Arquitectura de Ejecución** + +### **Patrón de Descarga Dinámica** + +**Todos los scripts siguen este patrón**: +```bash +exec bash <(curl -s "$REPO_URL/scripts/path/to/script.sh") +``` + +**Ventajas**: +- ✅ Usuarios siempre tienen la última versión +- ✅ No requiere reinstalación para actualizaciones +- ✅ Hotfixes inmediatos +- ✅ Control centralizado de versiones + +**Consideraciones**: +- ⚠️ Requiere internet en cada ejecución +- ⚠️ Dependencia de disponibilidad de GitHub +- ⚠️ No funciona offline +- ⚠️ Los scripts locales del repo no se usan directamente + +### **Sistema de Versionado** +- `version.txt` en repo: versión remota +- `/usr/local/share/proxmenux/version.txt`: versión local instalada +- Check en cada ejecución del comando `menu` +- Prompt para actualizar si hay nueva versión + +--- + +## **11. Flujo de Navegación** + +``` +Comando: menu + ↓ +Verifica actualizaciones + ↓ +Carga utils.sh y traducciones + ↓ +Descarga main_menu.sh desde GitHub + ↓ +Usuario selecciona opción + ↓ +Descarga submenu correspondiente desde GitHub + ↓ +Usuario selecciona acción + ↓ +Descarga y ejecuta script específico desde GitHub + ↓ +Retorna al menú anterior +``` + +**Ejemplo de navegación**: +``` +menu → main_menu.sh + → opción 5: share_menu.sh + → opción 4: lxc-mount-manager_minimal.sh (35KB) + → Ejecuta acciones + → Retorna a share_menu.sh + → opción 0: Retorna a main_menu.sh + → opción 0: Exit +``` + +--- + +## **12. Integración con Comunidad** + +### **Scripts de la Comunidad Integrados** + +**Proxmox VE Helper-Scripts**: +- Post-install script oficial +- Ejecutado desde: `https://github.com/community-scripts/ProxmoxVE` + +**Xshok-proxmox** (fork): +- Post-install alternativo +- Descarga desde fork de MacRimi + +**Elementos compartidos**: +- Funciones de `utils.sh` basadas en Helper-Scripts +- Misma filosofía de mensajes estandarizados +- Licencia MIT compatible + +--- + +## **13. Sistema de Desinstalación** + +### **Función: `uninstall_proxmenux()`** (línea 109-161) + +**Proceso**: +1. Confirmación interactiva (whiptail) +2. Desinstala googletrans y entorno virtual Python +3. Selector de dependencias a eliminar (python3, python3-venv, pip) +4. Elimina `/usr/local/bin/menu` +5. Elimina `/usr/local/share/proxmenux/` +6. Restaura `.bashrc` desde backup +7. Restaura `/etc/motd` desde backup + +**Tool-specific uninstaller**: `scripts/post_install/uninstall-tools.sh` +- Lee `installed_tools.json` +- Permite desinstalar herramientas individualmente +- Restaura configuraciones originales + +--- + +## **14. Estructura de Archivos JSON** + +### **`json/cache.json`** (100 KB) +Traducciones precargadas para acelerar el sistema + +### **`json/helpers_cache.json`** (273 KB) +Caché extendido, probablemente para Helper Scripts + +### **`lang/cache.json`** (5.5 KB) +Caché de idiomas específico + +### **`lang/en.lang`** y **`lang/es.lang`** +Archivos de idioma estáticos (4-5 KB cada uno) + +--- + +## **15. Resumen de Componentes** + +| Componente | Ubicación | Función | +|------------|-----------|---------| +| **Instalador** | `install_proxmenux.sh` | Instalación inicial y actualizaciones | +| **Comando principal** | `/usr/local/bin/menu` | Punto de entrada del usuario | +| **Utilidades** | `/usr/local/share/proxmenux/utils.sh` | Funciones compartidas | +| **Configuración** | `/usr/local/share/proxmenux/config.json` | Estado del sistema | +| **Caché traducciones** | `/usr/local/share/proxmenux/cache.json` | Traducciones cacheadas | +| **Entorno Python** | `/opt/googletrans-env/` | Traducción (solo versión translation) | +| **Monitor** | `/usr/local/share/proxmenux/ProxMenux-Monitor.AppImage` | Dashboard web | +| **Servicio Monitor** | `/etc/systemd/system/proxmenux-monitor.service` | Servicio systemd | +| **Scripts** | GitHub (descarga dinámica) | Todos los scripts funcionales | + +--- + +## **Conclusión** + +ProxMenuxDotDeb es un **sistema modular de gestión de Proxmox VE** que utiliza una arquitectura híbrida: + +- **Núcleo local**: Comando `menu`, utilidades, sistema de configuración +- **Scripts remotos**: Toda la funcionalidad se descarga dinámicamente desde GitHub +- **Dashboard web**: AppImage independiente con Next.js + Flask +- **Sistema de traducción**: Opcional, basado en Python + googletrans + caché + +El proyecto tiene **122 scripts bash** en el repositorio local que **podrían ejecutarse localmente**, pero actualmente **todos se descargan desde GitHub en tiempo de ejecución**. Esta arquitectura prioriza mantener a los usuarios actualizados sobre la ejecución offline. \ No newline at end of file diff --git a/docs/02.GUIA_MODIFICACION_OFFLINE.md b/docs/02.GUIA_MODIFICACION_OFFLINE.md new file mode 100644 index 0000000..9f6b4b8 --- /dev/null +++ b/docs/02.GUIA_MODIFICACION_OFFLINE.md @@ -0,0 +1,699 @@ +# Scripts a Modificar para Ejecución 100% Local + +**Fecha**: 2025-11-01 +**Objetivo**: Eliminar dependencias de GitHub y permitir ejecución completamente local +**Repositorio**: ProxMenuxDotDeb + +--- + +## Resumen Ejecutivo + +Para que ProxMenux funcione 100% localmente sin depender de GitHub, se deben modificar **47 archivos** en total: + +- **2 archivos principales** (instalador y comando menu) +- **13 scripts de menús** (sistema de navegación) +- **32 scripts funcionales** (operaciones específicas) + +**Cambios principales**: +1. Cambiar `REPO_URL` de GitHub a rutas locales del sistema +2. Reemplazar descargas `curl` por ejecución de scripts locales +3. Copiar todos los scripts a `/usr/local/share/proxmenux/scripts/` durante instalación + +--- + +## 1. Archivos Principales (CRÍTICOS) ⚠️ + +### 1.1. `install_proxmenux.sh` (Raíz del repositorio) + +**Líneas a modificar**: +- **Línea 37**: `REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"` +- **Línea 38**: `UTILS_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main/scripts/utils.sh"` +- **Línea 54-57**: Carga de `utils.sh` con curl +- **Línea 459-476**: Descarga de archivos con wget (versión normal) +- **Línea 583-603**: Descarga de archivos con wget (versión traducción) + +**Cambios necesarios**: +```bash +# Cambiar URLs a rutas locales +REPO_URL="/usr/local/share/proxmenux" +UTILS_URL="./scripts/utils.sh" + +# Reemplazar wget por cp +# En lugar de descargar, copiar archivos locales del repositorio +``` + +**Impacto**: 🔴 CRÍTICO - Sin esto, la instalación falla completamente + +--- + +### 1.2. `menu` (Raíz del repositorio) + +**Líneas a modificar**: +- **Línea 34**: `REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"` +- **Línea 52**: Verificación de actualizaciones (curl remoto) +- **Línea 72**: Descarga de instalador actualizado +- **Línea 85**: `exec bash <(curl -fsSL "$REPO_URL/scripts/menus/main_menu.sh")` + +**Cambios necesarios**: +```bash +# Cambiar a ruta local +LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts" + +# Ejecutar localmente +exec bash "$LOCAL_SCRIPTS/menus/main_menu.sh" +``` + +**Impacto**: 🔴 CRÍTICO - Es el punto de entrada del usuario + +--- + +## 2. Scripts de Menús (13 archivos) + +### 2.1. `scripts/menus/main_menu.sh` ⭐ + +**Modificaciones**: +- **Línea 14**: `REPO_URL` +- **Línea 57**: curl para reinstalación PVE9 +- **Líneas 125-135**: Todas las opciones del menú (12 líneas) + +**Comandos a reemplazar**: +```bash +# Todas estas líneas: +exec bash <(curl -s "$REPO_URL/scripts/menus/menu_post_install.sh") +exec bash <(curl -s "$REPO_URL/scripts/menus/hw_grafics_menu.sh") +exec bash <(curl -s "$REPO_URL/scripts/menus/create_vm_menu.sh") +exec bash <(curl -s "$REPO_URL/scripts/menus/storage_menu.sh") +exec bash <(curl -s "$REPO_URL/scripts/menus/share_menu.sh") +exec bash <(curl -s "$REPO_URL/scripts/menus/menu_Helper_Scripts.sh") +exec bash <(curl -s "$REPO_URL/scripts/menus/network_menu.sh") +exec bash <(curl -s "$REPO_URL/scripts/menus/utilities_menu.sh") +bash <(curl -s "$REPO_URL/scripts/help_info_menu.sh") +exec bash <(curl -s "$REPO_URL/scripts/menus/config_menu.sh") +``` + +--- + +### 2.2. `scripts/menus/menu_post_install.sh` + +**Modificaciones**: +- **Línea 12**: `REPO_URL` +- **Línea 73**: `bash <(curl -s $REPO_URL/scripts/post_install/auto_post_install.sh)` +- **Línea 171**: `exec bash <(curl -s "$REPO_URL/scripts/menus/main_menu.sh")` + +**Nota**: Mantener URLs remotas para scripts de comunidad externa (líneas 90-91) + +--- + +### 2.3. `scripts/menus/config_menu.sh` + +**Modificaciones**: +- **Línea 13**: `REPO_URL` +- No tiene llamadas curl ✅ + +--- + +### 2.4. `scripts/menus/create_vm_menu.sh` + +**Modificaciones**: +- **Línea 13**: `REPO_URL` +- Múltiples `exec bash <(curl -s ...)` en opciones del menú + +--- + +### 2.5. `scripts/menus/hw_grafics_menu.sh` + +**Modificaciones**: +- **Línea 13**: `REPO_URL` +- **Líneas 38, 44, 50, 55, 56**: Llamadas curl + +**Comandos a reemplazar**: +```bash +bash <(curl -s "$REPO_URL/scripts/configure_igpu_lxc.sh") +bash <(curl -s "$REPO_URL/scripts/install_coral_lxc.sh") +bash <(curl -s "$REPO_URL/scripts/gpu_tpu/install_coral_pve9.sh") +exec bash <(curl -s "$REPO_URL/scripts/menus/main_menu.sh") +``` + +--- + +### 2.6. `scripts/menus/lxc_menu.sh` + +**Modificaciones**: +- **Línea 13**: `REPO_URL` +- Todos los `exec bash <(curl ...)` + +--- + +### 2.7. `scripts/menus/menu_Helper_Scripts.sh` + +**Modificaciones**: +- **Línea 13**: `REPO_URL` +- **Línea 296**: `exec bash <(curl -s ...)` + +**Nota**: Mantener URLs de Helper-Scripts externos (comunidad) + +--- + +### 2.8. `scripts/menus/network_menu.sh` + +**Modificaciones**: +- **Línea 13**: `REPO_URL` +- **Línea 1085**: `exec bash <(curl -s "$REPO_URL/scripts/menus/main_menu.sh")` + +--- + +### 2.9. `scripts/menus/share_menu.sh` + +**Modificaciones**: +- **Línea 13**: `REPO_URL` +- **Líneas 46, 55-82, 85**: 11 llamadas curl + +**Comandos a reemplazar**: +```bash +bash <(curl -s "$REPO_URL/scripts/share/nfs_host.sh") +bash <(curl -s "$REPO_URL/scripts/share/samba_host.sh") +bash <(curl -s "$REPO_URL/scripts/share/local-shared-manager.sh") +bash <(curl -s "$REPO_URL/scripts/share/lxc-mount-manager_minimal.sh") +bash <(curl -s "$REPO_URL/scripts/share/nfs_client.sh") +bash <(curl -s "$REPO_URL/scripts/share/samba_client.sh") +bash <(curl -s "$REPO_URL/scripts/share/nfs_lxc_server.sh") +bash <(curl -s "$REPO_URL/scripts/share/samba_lxc_server.sh") +bash <(curl -s "$REPO_URL/scripts/share/commands_share.sh") +exec bash <(curl -s "$REPO_URL/scripts/menus/main_menu.sh") # 2 veces +``` + +--- + +### 2.10. `scripts/menus/storage_menu.sh` + +**Modificaciones**: +- **Línea 15**: `REPO_URL` +- **Líneas 39, 42, 45, 48, 51**: 5 llamadas curl + +**Comandos a reemplazar**: +```bash +bash <(curl -s "$REPO_URL/scripts/storage/disk-passthrough.sh") +bash <(curl -s "$REPO_URL/scripts/storage/disk-passthrough_ct.sh") +bash <(curl -s "$REPO_URL/scripts/storage/import-disk-image.sh") +exec bash <(curl -s "$REPO_URL/scripts/menus/main_menu.sh") # 2 veces +``` + +--- + +### 2.11. `scripts/menus/utilities_menu.sh` + +**Modificaciones**: +- **Línea 15**: `REPO_URL` +- **Líneas 39, 45, 67, 74, 79, 80**: 6 llamadas curl + +**Comandos a reemplazar**: +```bash +bash <(curl -s "$REPO_URL/scripts/utilities/uup_dump_iso_creator.sh") +bash <(curl -s "$REPO_URL/scripts/utilities/system_utils.sh") +bash <(curl -s "$REPO_URL/scripts/utilities/proxmox_update.sh") +bash <(curl -s "$REPO_URL/scripts/utilities/upgrade_pve8_to_pve9.sh") +exec bash <(curl -s "$REPO_URL/scripts/menus/main_menu.sh") # 2 veces +``` + +--- + +### 2.12. `scripts/menus/main_menu_.sh` + +**Modificaciones**: Igual que `main_menu.sh` (archivo alternativo/backup) + +--- + +### 2.13. `scripts/menus/sm.sh` + +**Modificaciones**: Igual que `share_menu.sh` (archivo alternativo) + +--- + +## 3. Scripts Post-Instalación (3 archivos) + +### 3.1. `scripts/post_install/auto_post_install.sh` + +**Modificaciones**: +- **Línea 39**: `REPO_URL` +- **Línea 110**: `bash <(curl -fsSL "$REPO_URL/scripts/global/update-pve9_2.sh")` +- **Línea 113**: `bash <(curl -fsSL "$REPO_URL/scripts/global/update-pve8.sh")` +- **Línea 150**: `bash <(curl -fsSL "$REPO_URL/scripts/global/remove-banner-pve-v3.sh")` +- **Línea 157**: `bash <(curl -fsSL "$REPO_URL/scripts/global/remove-banner-pve8.sh")` + +--- + +### 3.2. `scripts/post_install/customizable_post_install.sh` + +**Modificaciones**: +- **Línea 39**: `REPO_URL` +- **Línea 197**: `bash <(curl -fsSL "$REPO_URL/scripts/global/update-pve9_2.sh")` +- **Línea 200**: `bash <(curl -fsSL "$REPO_URL/scripts/global/update-pve8.sh")` +- **Línea 2905**: `bash <(curl -fsSL "$REPO_URL/scripts/global/remove-banner-pve-v3.sh")` +- **Línea 2908**: `bash <(curl -fsSL "$REPO_URL/scripts/global/remove-banner-pve8.sh")` + +--- + +### 3.3. `scripts/post_install/uninstall-tools.sh` + +**Modificaciones**: Solo lectura de configs locales ✅ + +--- + +## 4. Scripts de VMs (8 archivos) + +### 4.1. `scripts/vm/create_vm.sh` + +**Modificaciones**: +- **Línea 29**: `REPO_URL` +- **Líneas 30-32**: `VM_REPO`, `ISO_REPO`, `MENU_REPO` + +--- + +### 4.2. `scripts/vm/select_linux_iso.sh` + +**Modificaciones**: +- **Línea 28**: `REPO_URL` +- **Línea 222**: `exec bash <(curl -s "$REPO_URL/scripts/vm/create_vm.sh")` + +--- + +### 4.3. `scripts/vm/select_windows_iso.sh` + +**Modificaciones**: +- **Línea 27**: `REPO_URL` +- **Línea 28**: `UUP_REPO` + +--- + +### 4.4. `scripts/vm/select_nas_iso.sh` + +**Modificaciones**: +- **Línea 31**: `REPO_URL` +- **Línea 65**: `bash <(curl -s "$REPO_URL/scripts/vm/synology.sh")` +- **Línea 106**: `bash <(curl -s "$REPO_URL/scripts/vm/zimaos.sh")` + +--- + +### 4.5. `scripts/vm/synology.sh` + +**Modificaciones**: +- **Línea 32**: `REPO_URL` + +--- + +### 4.6. `scripts/vm/synology_.sh` + +**Modificaciones**: +- **Línea 32**: `REPO_URL` + +--- + +### 4.7. `scripts/vm/zimaos.sh` + +**Modificaciones**: +- Verificar si tiene `REPO_URL` + +--- + +### 4.8. `scripts/vm/vm_creator.sh` + +**Modificaciones**: +- **Línea 497**: `bash <(curl -fsSL "$REPO_URL/scripts/menus/create_vm_menu.sh")` + +--- + +## 5. Scripts de LXC (4 archivos) + +### 5.1. `scripts/lxc/lxc-manual-guide.sh` + +**Modificaciones**: +- **Línea 14**: `REPO_URL` + +--- + +### 5.2. `scripts/lxc/lxc-privileged-to-unprivileged.sh` + +**Modificaciones**: +- **Línea 18**: `REPO_URL` + +--- + +### 5.3. `scripts/lxc/lxc-unprivileged-to-privileged.sh` + +**Modificaciones**: +- **Línea 19**: `REPO_URL` + +--- + +### 5.4. `scripts/lxc/lxc-mount-manager_minimal.sh` + +**Modificaciones**: +- Verificar si tiene `REPO_URL` + +--- + +## 6. Scripts de Compartir Recursos (9 archivos) + +### 6.1. `scripts/share/nfs_host.sh` + +**Modificaciones**: +- **Línea 16**: `REPO_URL` + +--- + +### 6.2. `scripts/share/nfs_client.sh` + +**Modificaciones**: +- **Línea 16**: `REPO_URL` + +--- + +### 6.3. `scripts/share/nfs_lxc_server.sh` + +**Modificaciones**: +- **Línea 16**: `REPO_URL` + +--- + +### 6.4. `scripts/share/samba_host.sh` + +**Modificaciones**: +- **Línea 16**: `REPO_URL` + +--- + +### 6.5. `scripts/share/samba_client.sh` + +**Modificaciones**: +- **Línea 18**: `REPO_URL` + +--- + +### 6.6. `scripts/share/samba_lxc_server.sh` + +**Modificaciones**: +- **Línea 16**: `REPO_URL` + +--- + +### 6.7. `scripts/share/local-shared-manager.sh` + +**Modificaciones**: +- **Línea 13**: `REPO_URL` + +--- + +### 6.8. `scripts/share/lxc-mount-manager_minimal.sh` + +**Modificaciones**: +- Verificar `REPO_URL` + +--- + +### 6.9. `scripts/share/commands_share.sh` + +**Modificaciones**: +- **Línea 14**: `REPO_URL` + +--- + +## 7. Scripts de Almacenamiento (3 archivos) + +### 7.1. `scripts/storage/disk-passthrough.sh` + +**Modificaciones**: +- Verificar `REPO_URL` + +--- + +### 7.2. `scripts/storage/disk-passthrough_ct.sh` + +**Modificaciones**: +- Verificar `REPO_URL` + +--- + +### 7.3. `scripts/storage/import-disk-image.sh` + +**Modificaciones**: +- **Línea 30**: `REPO_URL` + +--- + +## 8. Scripts de Utilidades (4 archivos) + +### 8.1. `scripts/utilities/upgrade_pve8_to_pve9.sh` + +**Modificaciones**: +- Verificar `REPO_URL` + +--- + +### 8.2. `scripts/utilities/system_utils.sh` + +**Modificaciones**: +- Verificar `REPO_URL` + +--- + +### 8.3. `scripts/utilities/proxmox_update.sh` + +**Modificaciones**: +- Verificar `REPO_URL` + +--- + +### 8.4. `scripts/utilities/uup_dump_iso_creator.sh` + +**Modificaciones**: +- Verificar `REPO_URL` + +--- + +## 9. Scripts Globales (3 archivos) + +### 9.1. `scripts/global/update-pve.sh` + +**Modificaciones**: +- **Línea 32**: `source <(curl -s "$REPO_URL/scripts/global/common-functions.sh")` + +**Cambiar a**: +```bash +source "$LOCAL_SCRIPTS/global/common-functions.sh" +``` + +--- + +### 9.2. `scripts/global/update-pve8.sh` + +**Modificaciones**: +- **Línea 32**: `source <(curl -s "$REPO_URL/scripts/global/common-functions.sh")` + +--- + +### 9.3. `scripts/global/update-pve9_2.sh` + +**Modificaciones**: +- **Línea 32**: `source <(curl -s "$REPO_URL/scripts/global/common-functions.sh")` + +--- + +## 10. Scripts de Hardware (2 archivos) + +### 10.1. `scripts/configure_igpu_lxc.sh` + +**Modificaciones**: +- **Línea 19**: `REPO_URL` + +--- + +### 10.2. `scripts/install_coral_lxc.sh` + +**Modificaciones**: +- **Línea 25**: `REPO_URL` + +--- + +## 11. Scripts de Red (2 archivos) + +### 11.1. `scripts/repair_network.sh` + +**Modificaciones**: +- **Línea 204**: `exec bash <(curl -s "$REPO_URL/scripts/menus/main_menu.sh")` +- **Línea 205**: `exec bash <(curl -s "$REPO_URL/scripts/menus/main_menu.sh")` + +--- + +### 11.2. `scripts/telegram-notifier.sh` + +**Modificaciones**: +- **Línea 5**: `REPO_URL` + +--- + +## 12. Scripts Duplicados/Alternos (en `scripts/auto_post_install.sh`) + +**Modificaciones**: Igual que `scripts/post_install/auto_post_install.sh` + +--- + +## Tabla Resumen + +| Categoría | Archivos | Modificaciones Principales | +|-----------|----------|---------------------------| +| **Principales** | 2 | REPO_URL + curl → rutas locales | +| **Menús** | 13 | REPO_URL + exec bash curl | +| **Post-Install** | 3 | bash curl a scripts global | +| **VMs** | 8 | REPO_URL + llamadas remotas | +| **LXC** | 4 | REPO_URL | +| **Share** | 9 | REPO_URL | +| **Storage** | 3 | REPO_URL | +| **Utilities** | 4 | REPO_URL | +| **Global** | 3 | source curl | +| **Hardware** | 2 | REPO_URL | +| **Red** | 2 | exec bash curl | +| **TOTAL** | **47** | **~150-200 líneas** | + +--- + +## Plan de Implementación Recomendado + +### Paso 1: Preparación +```bash +# Crear backup +cp -r . ../ProxMenuxDotDeb_backup + +# -------------------------------------------------------------------- +# Documentar información relevante del proyecto en directorio "docs" +# -------------------------------------------------------------------- +``` + +### Paso 2: Modificación Automática Global +```bash +# Script de conversión masiva +find . -name "*.sh" -o -name "menu" | xargs sed -i \ + 's|REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"|LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"|g' + +# Cambiar referencias +find . -name "*.sh" -o -name "menu" | xargs sed -i \ + 's|\$REPO_URL/scripts|\$LOCAL_SCRIPTS|g' + +# Cambiar bash curl +find . -name "*.sh" -o -name "menu" | xargs sed -i -E \ + 's|bash <\(curl -[sfSL]+ "\$REPO_URL/([^"]+)"|bash "\$LOCAL_SCRIPTS/\1"|g' + +# Cambiar exec bash curl +find . -name "*.sh" -o -name "menu" | xargs sed -i -E \ + 's|exec bash <\(curl -[sfSL]+ "\$REPO_URL/([^"]+)"|exec bash "\$LOCAL_SCRIPTS/\1"|g' + +# Cambiar source curl +find . -name "*.sh" | xargs sed -i -E \ + 's|source <\(curl -[sfSL]+ "\$REPO_URL/([^"]+)"|source "\$LOCAL_SCRIPTS/\1"|g' +``` + +### Paso 3: Modificar install_proxmenux.sh manualmente + +Cambiar secciones de descarga wget por copias locales: +```bash +# En lugar de: +wget -qO "$dest" "$url" + +# Usar: +cp "./scripts/utils.sh" "$UTILS_FILE" +cp "./menu" "$INSTALL_DIR/$MENU_SCRIPT" +cp "./version.txt" "$LOCAL_VERSION_FILE" +``` + +Agregar copia de todos los scripts: +```bash +msg_info "Copying local scripts..." +mkdir -p "$BASE_DIR/scripts" +cp -r "./scripts/"* "$BASE_DIR/scripts/" +chmod -R +x "$BASE_DIR/scripts/" +``` + +### Paso 4: Modificar comando menu + +Comentar o modificar verificación de actualizaciones remotas. + +### Paso 5: Validación +```bash +# Verificar que no queden referencias remotas +grep -r "githubusercontent.com" . --include="*.sh" --include="menu" + +# Verificar llamadas curl +grep -r "curl.*REPO_URL" . --include="*.sh" --include="menu" + +# Contar archivos modificados +grep -r "LOCAL_SCRIPTS=" . --include="*.sh" --include="menu" | wc -l +``` + +--- + +## Estructura Post-Modificación + +``` +/usr/local/share/proxmenux/ +├── utils.sh +├── config.json +├── cache.json +├── version.txt +├── ProxMenux-Monitor.AppImage +└── scripts/ # ⭐ NUEVO + ├── menus/ + │ ├── main_menu.sh + │ ├── menu_post_install.sh + │ └── ... + ├── post_install/ + ├── vm/ + ├── lxc/ + ├── storage/ + ├── share/ + ├── utilities/ + ├── global/ + └── gpu_tpu/ + +/usr/local/bin/ +└── menu +``` + +--- + +## Consideraciones Especiales + +### Scripts Externos de la Comunidad +Mantener URLs remotas para: +- Proxmox VE Helper-Scripts (community-scripts) +- xshok-proxmox scripts + +### ProxMenux Monitor +El AppImage se mantiene descargable desde GitHub durante la instalación inicial (10 MB). + +### Sistema de Actualizaciones +Opciones: +1. Deshabilitar completamente +2. Mostrar mensaje para ejecutar `install_proxmenux.sh` manualmente +3. Sistema híbrido (check opcional remoto) + +--- + +## Checklist de Validación + +- [x] Backup completo del repositorio +- [ ] Conversión automática ejecutada +- [ ] `install_proxmenux.sh` modificado +- [ ] `menu` modificado +- [ ] Scripts de menús verificados +- [ ] Sin referencias a githubusercontent.com +- [ ] Sin llamadas curl a REPO_URL +- [ ] Instalación local funcional +- [ ] Navegación por todos los menús OK +- [ ] Ejecución offline confirmada + +--- + +**Total de archivos a modificar**: 47 +**Líneas estimadas**: ~150-200 +**Tiempo estimado**: 2-4 horas +**Riesgo**: Medio (requiere testing) +**Beneficio**: Sistema completamente offline