16 KiB
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:
- Cambiar
REPO_URLde GitHub a rutas locales del sistema - Reemplazar descargas
curlpor ejecución de scripts locales - 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.shcon 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:
# 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:
# 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:
# 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 <(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 <(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 <(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 <(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:
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
# Crear backup
cp -r . ../ProxMenuxDotDeb_backup
# --------------------------------------------------------------------
# Documentar información relevante del proyecto en directorio "docs"
# --------------------------------------------------------------------
Paso 2: Modificación Automática Global
# 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:
# 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:
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
# 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:
- Deshabilitar completamente
- Mostrar mensaje para ejecutar
install_proxmenux.shmanualmente - Sistema híbrido (check opcional remoto)
Checklist de Validación
- [ok] Backup completo del repositorio
- [ok] Conversión automática ejecutada
- [ok]
install_proxmenux.shmodificado - [ok]
menumodificado - [ip] 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