mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2025-11-17 19:16:25 +00:00
2
.gitignore
vendored
2
.gitignore
vendored
@@ -51,3 +51,5 @@ Thumbs.db
|
||||
!guides/
|
||||
!web/
|
||||
|
||||
# GitHub authentication
|
||||
.github/auth.sh
|
||||
|
||||
512
docs/01.PROXMENUX_REVIEW.md
Normal file
512
docs/01.PROXMENUX_REVIEW.md
Normal file
@@ -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/ProxMenuxOffline/install_proxmenux.sh:0:0-0:0)**: Script de instalación principal (723 líneas)
|
||||
- **[menu](cci:7://file:///home/debian/src/ProxMenuxOffline/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/ProxMenuxOffline/version.txt:0:0-0:0)**: Control de versiones (actual: 1.1.7)
|
||||
|
||||
### **Directorios Principales**
|
||||
```
|
||||
ProxMenuxOffline/
|
||||
├── 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/ProxMenuxOffline/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/ProxMenuxOffline/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/ProxMenuxOffline/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/ProxMenuxOffline/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**
|
||||
|
||||
ProxMenuxOffline 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.
|
||||
699
docs/02.GUIA_MODIFICACION_OFFLINE.md
Normal file
699
docs/02.GUIA_MODIFICACION_OFFLINE.md
Normal file
@@ -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
|
||||
|
||||
- [ok] Backup completo del repositorio
|
||||
- [ok] Conversión automática ejecutada
|
||||
- [ok] `install_proxmenux.sh` modificado
|
||||
- [ok] `menu` modificado
|
||||
- [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
|
||||
560
install_proxmenux.sh
Normal file → Executable file
560
install_proxmenux.sh
Normal file → Executable file
@@ -1,41 +1,46 @@
|
||||
#!/bin/bash
|
||||
|
||||
# ==========================================================
|
||||
# ProxMenux - A menu-driven script for Proxmox VE management
|
||||
# ProxMenux - A menu-driven toolkit for Proxmox VE management
|
||||
# ==========================================================
|
||||
# Author : MacRimi
|
||||
# Copyright : (c) 2024 MacRimi
|
||||
# License : (CC BY-NC 4.0) (https://github.com/MacRimi/ProxMenux/blob/main/LICENSE)
|
||||
# Version : 1.3
|
||||
# Last Updated: 04/07/2025
|
||||
# Author : MacRimi
|
||||
# Contributors : cod378
|
||||
# Subproject : ProxMenux Monitor (System Health & Web Dashboard)
|
||||
# Copyright : (c) 2024-2025 MacRimi
|
||||
# License : (CC BY-NC 4.0) (https://github.com/MacRimi/ProxMenux/blob/main/LICENSE)
|
||||
# Version : 1.4
|
||||
# Last Updated : 12/11/2025
|
||||
# ==========================================================
|
||||
# Description:
|
||||
# This script installs and configures ProxMenux, a menu-driven
|
||||
# tool for managing Proxmox VE.
|
||||
# toolkit for managing and optimizing Proxmox VE servers.
|
||||
#
|
||||
# - Ensures the script is run with root privileges.
|
||||
# - Displays an installation confirmation prompt.
|
||||
# - Installs required dependencies:
|
||||
# - whiptail (for interactive terminal menus)
|
||||
# - curl (for downloading remote files)
|
||||
# - jq (for handling JSON data)
|
||||
# - Python 3 and virtual environment (for translations)
|
||||
# - Configures the Python virtual environment and installs googletrans.
|
||||
# - Creates necessary directories for storing ProxMenux data.
|
||||
# - Downloads required files from GitHub, including:
|
||||
# - Cache file (`cache.json`) for translation caching.
|
||||
# - Utility script (`utils.sh`) for core functions.
|
||||
# - Main script (`menu.sh`) to launch ProxMenux.
|
||||
# - Sets correct permissions for execution.
|
||||
# - Displays final instructions on how to start ProxMenux.
|
||||
# • whiptail (interactive terminal menus)
|
||||
# • curl (downloads and connectivity checks)
|
||||
# • jq (JSON parsing)
|
||||
# • Python 3 + venv (for translation support)
|
||||
# - Creates the ProxMenux base directories and configuration files:
|
||||
# • $BASE_DIR/config.json
|
||||
# • $BASE_DIR/cache.json
|
||||
# - Copies local project files into the target paths (offline mode by default):
|
||||
# • scripts/* → $BASE_DIR/scripts/
|
||||
# • utils.sh → $BASE_DIR/scripts/utils.sh
|
||||
# • menu → $INSTALL_DIR/menu (main launcher)
|
||||
# • install_proxmenux.sh → $BASE_DIR/install_proxmenux.sh
|
||||
# - Sets correct permissions for all executables.
|
||||
# - Displays the final instruction on how to start ProxMenux ("menu").
|
||||
#
|
||||
# This installer ensures a smooth setup process and prepares
|
||||
# the system for running ProxMenux efficiently.
|
||||
# Notes:
|
||||
# - This installer supports both offline and online setups.
|
||||
# - ProxMenux Monitor can be installed later as an optional module
|
||||
# to provide real-time system monitoring and a web dashboard.
|
||||
# ==========================================================
|
||||
|
||||
# Configuration ============================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
UTILS_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main/scripts/utils.sh"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
INSTALL_DIR="/usr/local/bin"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
CONFIG_FILE="$BASE_DIR/config.json"
|
||||
@@ -45,17 +50,222 @@ LOCAL_VERSION_FILE="$BASE_DIR/version.txt"
|
||||
MENU_SCRIPT="menu"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
|
||||
MONITOR_APPIMAGE_URL="https://github.com/MacRimi/ProxMenux/raw/refs/heads/main/AppImage/ProxMenux-1.0.0.AppImage"
|
||||
MONITOR_SHA256_URL="https://github.com/MacRimi/ProxMenux/raw/refs/heads/main/AppImage/ProxMenux-Monitor.AppImage.sha256"
|
||||
MONITOR_INSTALL_PATH="$BASE_DIR/ProxMenux-Monitor.AppImage"
|
||||
MONITOR_INSTALL_DIR="$BASE_DIR/monitor"
|
||||
MONITOR_SERVICE_FILE="/etc/systemd/system/proxmenux-monitor.service"
|
||||
MONITOR_PORT=8008
|
||||
|
||||
if ! source <(curl -sSf "$UTILS_URL"); then
|
||||
echo "Error: Could not load utils.sh from $UTILS_URL"
|
||||
exit 1
|
||||
# Offline installer envs
|
||||
REPO_URL="https://github.com/MacRimi/ProxMenux.git"
|
||||
TEMP_DIR="/tmp/proxmenux-install-$$"
|
||||
|
||||
# Load utility functions
|
||||
NEON_PURPLE_BLUE="\033[38;5;99m"
|
||||
WHITE="\033[38;5;15m"
|
||||
RESET="\033[0m"
|
||||
DARK_GRAY="\033[38;5;244m"
|
||||
ORANGE="\033[38;5;208m"
|
||||
YW="\033[33m"
|
||||
YWB="\033[1;33m"
|
||||
GN="\033[1;92m"
|
||||
RD="\033[01;31m"
|
||||
CL="\033[m"
|
||||
BL="\033[36m"
|
||||
DGN="\e[32m"
|
||||
BGN="\e[1;32m"
|
||||
DEF="\e[1;36m"
|
||||
CUS="\e[38;5;214m"
|
||||
BOLD="\033[1m"
|
||||
BFR="\\r\\033[K"
|
||||
HOLD="-"
|
||||
BOR=" | "
|
||||
CM="${GN}✓ ${CL}"
|
||||
TAB=" "
|
||||
|
||||
|
||||
# Create and display spinner
|
||||
spinner() {
|
||||
local frames=('⠋' '⠙' '⠹' '⠸' '⠼' '⠴' '⠦' '⠧' '⠇' '⠏')
|
||||
local spin_i=0
|
||||
local interval=0.1
|
||||
printf "\e[?25l"
|
||||
|
||||
local color="${YW}"
|
||||
|
||||
while true; do
|
||||
printf "\r ${color}%s${CL}" "${frames[spin_i]}"
|
||||
spin_i=$(( (spin_i + 1) % ${#frames[@]} ))
|
||||
sleep "$interval"
|
||||
done
|
||||
}
|
||||
|
||||
|
||||
# Function to simulate typing effect
|
||||
type_text() {
|
||||
local text="$1"
|
||||
local delay=0.05
|
||||
for ((i=0; i<${#text}; i++)); do
|
||||
echo -n "${text:$i:1}"
|
||||
sleep $delay
|
||||
done
|
||||
echo
|
||||
}
|
||||
|
||||
|
||||
# Display info message with spinner
|
||||
msg_info() {
|
||||
local msg="$1"
|
||||
echo -ne "${TAB}${YW}${HOLD}${msg}"
|
||||
spinner &
|
||||
SPINNER_PID=$!
|
||||
}
|
||||
|
||||
|
||||
# Display info2 message
|
||||
msg_info2() {
|
||||
local msg="$1"
|
||||
echo -e "${TAB}${BOLD}${YW}${HOLD}${msg}${CL}"
|
||||
}
|
||||
|
||||
|
||||
|
||||
# Display title script
|
||||
msg_title() {
|
||||
local msg="$1"
|
||||
echo -e "\n"
|
||||
echo -e "${TAB}${BOLD}${HOLD}${BOR}${msg}${BOR}${HOLD}${CL}"
|
||||
echo -e "\n"
|
||||
}
|
||||
|
||||
|
||||
# Display warning or highlighted information message
|
||||
msg_warn() {
|
||||
if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID > /dev/null; then
|
||||
kill $SPINNER_PID > /dev/null
|
||||
fi
|
||||
printf "\e[?25h"
|
||||
local msg="$1"
|
||||
echo -e "${BFR}${TAB}${CL} ${YWB}${msg}${CL}"
|
||||
}
|
||||
|
||||
|
||||
# Display success message
|
||||
msg_ok() {
|
||||
if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID > /dev/null; then
|
||||
kill $SPINNER_PID > /dev/null
|
||||
fi
|
||||
printf "\e[?25h"
|
||||
local msg="$1"
|
||||
echo -e "${BFR}${TAB}${CM}${GN}${msg}${CL}"
|
||||
}
|
||||
|
||||
|
||||
# Display error message
|
||||
msg_error() {
|
||||
if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID > /dev/null; then
|
||||
kill $SPINNER_PID > /dev/null
|
||||
fi
|
||||
printf "\e[?25h"
|
||||
local msg="$1"
|
||||
echo -e "${BFR}${TAB}${RD}[ERROR] ${msg}${CL}"
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
show_proxmenux_logo() {
|
||||
clear
|
||||
|
||||
if [[ -z "$SSH_TTY" && -z "$(who am i | awk '{print $NF}' | grep -E '([0-9]{1,3}\.){3}[0-9]{1,3}')" ]]; then
|
||||
|
||||
# Logo for terminal noVNC
|
||||
|
||||
LOGO=$(cat << "EOF"
|
||||
\e[0m\e[38;2;61;61;61m▆\e[38;2;60;60;60m▄\e[38;2;54;54;54m▂\e[0m \e[38;2;0;0;0m \e[0m \e[38;2;54;54;54m▂\e[38;2;60;60;60m▄\e[38;2;61;61;61m▆\e[0m
|
||||
\e[38;2;59;59;59;48;2;62;62;62m▏ \e[38;2;61;61;61;48;2;37;37;37m▇\e[0m\e[38;2;60;60;60m▅\e[38;2;56;56;56m▃\e[38;2;37;37;37m▁ \e[38;2;36;36;36m▁\e[38;2;56;56;56m▃\e[38;2;60;60;60m▅\e[38;2;61;61;61;48;2;37;37;37m▇\e[48;2;62;62;62m \e[0m\e[7m\e[38;2;60;60;60m▁\e[0m
|
||||
\e[38;2;59;59;59;48;2;62;62;62m▏ \e[0m\e[7m\e[38;2;61;61;61m▂\e[0m\e[38;2;62;62;62;48;2;61;61;61m┈\e[48;2;62;62;62m \e[48;2;61;61;61m┈\e[0m\e[38;2;60;60;60m▆\e[38;2;57;57;57m▄\e[38;2;48;48;48m▂\e[0m \e[38;2;47;47;47m▂\e[38;2;57;57;57m▄\e[38;2;60;60;60m▆\e[38;2;62;62;62;48;2;61;61;61m┈\e[48;2;62;62;62m \e[48;2;61;61;61m┈\e[0m\e[7m\e[38;2;60;60;60m▂\e[38;2;57;57;57m▄\e[38;2;47;47;47m▆\e[0m \e[0m
|
||||
\e[38;2;59;59;59;48;2;62;62;62m▏ \e[0m\e[38;2;32;32;32m▏\e[7m\e[38;2;39;39;39m▇\e[38;2;57;57;57m▅\e[38;2;60;60;60m▃\e[0m\e[38;2;40;40;40;48;2;61;61;61m▁\e[48;2;62;62;62m \e[38;2;54;54;54;48;2;61;61;61m┊\e[48;2;62;62;62m \e[38;2;39;39;39;48;2;61;61;61m▁\e[0m\e[7m\e[38;2;60;60;60m▃\e[38;2;57;57;57m▅\e[38;2;38;38;38m▇\e[0m \e[38;2;193;60;2m▃\e[38;2;217;67;2m▅\e[38;2;225;70;2m▇\e[0m
|
||||
\e[38;2;59;59;59;48;2;62;62;62m▏ \e[0m\e[38;2;32;32;32m▏\e[0m \e[38;2;203;63;2m▄\e[38;2;147;45;1m▂\e[0m \e[7m\e[38;2;55;55;55m▆\e[38;2;60;60;60m▄\e[38;2;61;61;61m▂\e[38;2;60;60;60m▄\e[38;2;55;55;55m▆\e[0m \e[38;2;144;44;1m▂\e[38;2;202;62;2m▄\e[38;2;219;68;2m▆\e[38;2;231;72;3;48;2;226;70;2m┈\e[48;2;231;72;3m \e[48;2;225;70;2m▉\e[0m
|
||||
\e[38;2;59;59;59;48;2;62;62;62m▏ \e[0m\e[38;2;32;32;32m▏\e[7m\e[38;2;121;37;1m▉\e[0m\e[38;2;0;0;0;48;2;231;72;3m \e[0m\e[38;2;221;68;2m▇\e[38;2;208;64;2m▅\e[38;2;212;66;2m▂\e[38;2;123;37;0m▁\e[38;2;211;65;2m▂\e[38;2;207;64;2m▅\e[38;2;220;68;2m▇\e[48;2;231;72;3m \e[38;2;231;72;3;48;2;225;70;2m┈\e[0m\e[7m\e[38;2;221;68;2m▂\e[0m\e[38;2;44;13;0;48;2;231;72;3m \e[38;2;231;72;3;48;2;225;70;2m▉\e[0m
|
||||
\e[38;2;59;59;59;48;2;62;62;62m▏ \e[0m\e[38;2;32;32;32m▏\e[0m \e[7m\e[38;2;190;59;2m▅\e[38;2;216;67;2m▃\e[38;2;225;70;2m▁\e[0m\e[38;2;95;29;0;48;2;231;72;3m \e[38;2;231;72;3;48;2;230;71;2m┈\e[48;2;231;72;3m \e[0m\e[7m\e[38;2;225;70;2m▁\e[38;2;216;67;2m▃\e[38;2;191;59;2m▅\e[0m \e[38;2;0;0;0;48;2;231;72;3m \e[38;2;231;72;3;48;2;225;70;2m▉\e[0m
|
||||
\e[38;2;59;59;59;48;2;62;62;62m▏ \e[0m\e[38;2;32;32;32m▏ \e[0m \e[7m\e[38;2;172;53;1m▆\e[38;2;213;66;2m▄\e[38;2;219;68;2m▂\e[38;2;213;66;2m▄\e[38;2;174;54;2m▆\e[0m \e[38;2;0;0;0m \e[0m \e[38;2;0;0;0;48;2;231;72;3m \e[38;2;231;72;3;48;2;225;70;2m▉\e[0m
|
||||
\e[38;2;59;59;59;48;2;62;62;62m▏ \e[0m\e[38;2;32;32;32m▏ \e[0m \e[38;2;0;0;0;48;2;231;72;3m \e[38;2;231;72;3;48;2;225;70;2m▉\e[0m
|
||||
\e[7m\e[38;2;52;52;52m▆\e[38;2;59;59;59m▄\e[38;2;61;61;61m▂\e[0m\e[38;2;31;31;31m▏ \e[0m \e[7m\e[38;2;228;71;2m▂\e[38;2;221;69;2m▄\e[38;2;196;60;2m▆\e[0m
|
||||
EOF
|
||||
)
|
||||
|
||||
|
||||
TEXT=(
|
||||
""
|
||||
""
|
||||
"${BOLD}ProxMenux${RESET}"
|
||||
""
|
||||
"${BOLD}${NEON_PURPLE_BLUE}An Interactive Menu for${RESET}"
|
||||
"${BOLD}${NEON_PURPLE_BLUE}Proxmox VE management${RESET}"
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
)
|
||||
|
||||
|
||||
mapfile -t logo_lines <<< "$LOGO"
|
||||
|
||||
for i in {0..9}; do
|
||||
echo -e "${TAB}${logo_lines[i]} ${WHITE}│${RESET} ${TEXT[i]}"
|
||||
done
|
||||
echo -e
|
||||
|
||||
else
|
||||
|
||||
|
||||
# Logo for terminal SSH
|
||||
TEXT=(
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
"${BOLD}ProxMenux${RESET}"
|
||||
""
|
||||
"${BOLD}${NEON_PURPLE_BLUE}An Interactive Menu for${RESET}"
|
||||
"${BOLD}${NEON_PURPLE_BLUE}Proxmox VE management${RESET}"
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
)
|
||||
|
||||
LOGO=(
|
||||
"${DARK_GRAY}░░░░ ░░░░${RESET}"
|
||||
"${DARK_GRAY}░░░░░░░ ░░░░░░ ${RESET}"
|
||||
"${DARK_GRAY}░░░░░░░░░░░ ░░░░░░░ ${RESET}"
|
||||
"${DARK_GRAY}░░░░ ░░░░░░ ░░░░░░ ${ORANGE}░░${RESET}"
|
||||
"${DARK_GRAY}░░░░ ░░░░░░░ ${ORANGE}░░▒▒▒${RESET}"
|
||||
"${DARK_GRAY}░░░░ ░░░ ${ORANGE}░▒▒▒▒▒▒▒${RESET}"
|
||||
"${DARK_GRAY}░░░░ ${ORANGE}▒▒▒░ ░▒▒▒▒▒▒▒▒▒▒${RESET}"
|
||||
"${DARK_GRAY}░░░░ ${ORANGE}░▒▒▒▒▒ ▒▒▒▒▒░░ ▒▒▒▒${RESET}"
|
||||
"${DARK_GRAY}░░░░ ${ORANGE}░░▒▒▒▒▒▒▒░░ ▒▒▒▒${RESET}"
|
||||
"${DARK_GRAY}░░░░ ${ORANGE}░░░ ▒▒▒▒${RESET}"
|
||||
"${DARK_GRAY}░░░░ ${ORANGE}▒▒▒▒${RESET}"
|
||||
"${DARK_GRAY}░░░░ ${ORANGE}▒▒▒░${RESET}"
|
||||
"${DARK_GRAY} ░░ ${ORANGE}░░ ${RESET}"
|
||||
)
|
||||
|
||||
for i in {0..12}; do
|
||||
echo -e "${TAB}${LOGO[i]} │${RESET} ${TEXT[i]}"
|
||||
done
|
||||
echo -e
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
# ==========================================================
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
cleanup_corrupted_files() {
|
||||
if [ -f "$CONFIG_FILE" ] && ! jq empty "$CONFIG_FILE" >/dev/null 2>&1; then
|
||||
echo "Cleaning up corrupted configuration file..."
|
||||
@@ -67,6 +277,17 @@ cleanup_corrupted_files() {
|
||||
fi
|
||||
}
|
||||
|
||||
# Cleanup function
|
||||
cleanup() {
|
||||
if [ -d "$TEMP_DIR" ]; then
|
||||
rm -rf "$TEMP_DIR"
|
||||
fi
|
||||
}
|
||||
|
||||
# Set trap to ensure cleanup on exit
|
||||
trap cleanup EXIT
|
||||
|
||||
|
||||
# ==========================================================
|
||||
check_existing_installation() {
|
||||
local has_venv=false
|
||||
@@ -118,6 +339,27 @@ uninstall_proxmenux() {
|
||||
|
||||
echo "Uninstalling ProxMenux..."
|
||||
|
||||
if systemctl is-active --quiet proxmenux-monitor.service; then
|
||||
echo "Stopping ProxMenux Monitor service..."
|
||||
systemctl stop proxmenux-monitor.service
|
||||
fi
|
||||
|
||||
if systemctl is-enabled --quiet proxmenux-monitor.service 2>/dev/null; then
|
||||
echo "Disabling ProxMenux Monitor service..."
|
||||
systemctl disable proxmenux-monitor.service
|
||||
fi
|
||||
|
||||
if [ -f "$MONITOR_SERVICE_FILE" ]; then
|
||||
echo "Removing ProxMenux Monitor service file..."
|
||||
rm -f "$MONITOR_SERVICE_FILE"
|
||||
systemctl daemon-reload
|
||||
fi
|
||||
|
||||
if [ -d "$MONITOR_INSTALL_DIR" ]; then
|
||||
echo "Removing ProxMenux Monitor directory..."
|
||||
rm -rf "$MONITOR_INSTALL_DIR"
|
||||
fi
|
||||
|
||||
if [ -f "$VENV_PATH/bin/activate" ]; then
|
||||
echo "Removing googletrans and virtual environment..."
|
||||
source "$VENV_PATH/bin/activate"
|
||||
@@ -314,57 +556,108 @@ get_server_ip() {
|
||||
echo "$ip"
|
||||
}
|
||||
|
||||
detect_latest_appimage() {
|
||||
local appimage_dir="$TEMP_DIR/AppImage"
|
||||
|
||||
if [ ! -d "$appimage_dir" ]; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
local latest_appimage=$(find "$appimage_dir" -name "ProxMenux-*.AppImage" -type f | sort -V | tail -1)
|
||||
|
||||
if [ -z "$latest_appimage" ]; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo "$latest_appimage"
|
||||
return 0
|
||||
}
|
||||
|
||||
get_appimage_version() {
|
||||
local appimage_path="$1"
|
||||
local filename=$(basename "$appimage_path")
|
||||
|
||||
local version=$(echo "$filename" | grep -oP 'ProxMenux-\K[0-9]+\.[0-9]+\.[0-9]+')
|
||||
|
||||
echo "$version"
|
||||
}
|
||||
|
||||
install_proxmenux_monitor() {
|
||||
systemctl stop proxmenux-monitor 2>/dev/null || true
|
||||
local appimage_source=$(detect_latest_appimage)
|
||||
|
||||
# Check if URL is accessible
|
||||
if ! wget --spider -q "$MONITOR_APPIMAGE_URL" 2>/dev/null; then
|
||||
msg_warn "ProxMenux Monitor AppImage not available at: $MONITOR_APPIMAGE_URL"
|
||||
msg_info "The monitor will be available in future releases."
|
||||
if [ -z "$appimage_source" ] || [ ! -f "$appimage_source" ]; then
|
||||
msg_error "ProxMenux Monitor AppImage not found in $TEMP_DIR/AppImage/"
|
||||
msg_warn "Please ensure the AppImage directory exists with ProxMenux-*.AppImage files."
|
||||
update_config "proxmenux_monitor" "appimage_not_found"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Download AppImage silently
|
||||
if ! wget -q -O "$MONITOR_INSTALL_PATH" "$MONITOR_APPIMAGE_URL" 2>&1; then
|
||||
msg_warn "Failed to download ProxMenux Monitor from GitHub."
|
||||
msg_info "You can install it manually later when available."
|
||||
return 1
|
||||
local appimage_version=$(get_appimage_version "$appimage_source")
|
||||
|
||||
if systemctl is-active --quiet proxmenux-monitor.service; then
|
||||
systemctl stop proxmenux-monitor.service
|
||||
fi
|
||||
|
||||
# Download SHA256 checksum silently
|
||||
local sha256_file="/tmp/proxmenux-monitor.sha256"
|
||||
if ! wget -q -O "$sha256_file" "$MONITOR_SHA256_URL" 2>/dev/null; then
|
||||
msg_warn "SHA256 checksum file not available. Skipping verification."
|
||||
msg_info "AppImage downloaded but integrity cannot be verified."
|
||||
rm -f "$sha256_file"
|
||||
else
|
||||
# Verify SHA256 silently
|
||||
local expected_hash=$(cat "$sha256_file" | awk '{print $1}')
|
||||
local actual_hash=$(sha256sum "$MONITOR_INSTALL_PATH" | awk '{print $1}')
|
||||
local service_exists=false
|
||||
if [ -f "$MONITOR_SERVICE_FILE" ]; then
|
||||
service_exists=true
|
||||
fi
|
||||
|
||||
local sha256_file="$TEMP_DIR/AppImage/ProxMenux-Monitor.AppImage.sha256"
|
||||
|
||||
if [ -f "$sha256_file" ]; then
|
||||
msg_info "Verifying AppImage integrity..."
|
||||
local expected_hash=$(cat "$sha256_file" | grep -Eo '^[a-f0-9]+' | tr -d '\n')
|
||||
local actual_hash=$(sha256sum "$appimage_source" | awk '{print $1}')
|
||||
|
||||
if [ "$expected_hash" != "$actual_hash" ]; then
|
||||
msg_error "SHA256 verification failed! AppImage may be corrupted."
|
||||
msg_info "Expected: $expected_hash"
|
||||
msg_info "Got: $actual_hash"
|
||||
rm -f "$MONITOR_INSTALL_PATH" "$sha256_file"
|
||||
return 1
|
||||
fi
|
||||
rm -f "$sha256_file"
|
||||
msg_ok "SHA256 verification passed."
|
||||
else
|
||||
msg_warn "SHA256 checksum not available. Skipping verification."
|
||||
fi
|
||||
|
||||
# Make executable
|
||||
chmod +x "$MONITOR_INSTALL_PATH"
|
||||
msg_info "Installing ProxMenux Monitor..."
|
||||
mkdir -p "$MONITOR_INSTALL_DIR"
|
||||
|
||||
# Show single success message at the end
|
||||
msg_ok "ProxMenux Monitor installed and activated successfully."
|
||||
local target_path="$MONITOR_INSTALL_DIR/ProxMenux-Monitor.AppImage"
|
||||
cp "$appimage_source" "$target_path"
|
||||
chmod +x "$target_path"
|
||||
|
||||
return 0
|
||||
msg_ok "ProxMenux Monitor v$appimage_version installed."
|
||||
|
||||
if [ "$service_exists" = false ]; then
|
||||
return 0 # New installation - service needs to be created
|
||||
else
|
||||
|
||||
systemctl start proxmenux-monitor.service
|
||||
sleep 2
|
||||
|
||||
if systemctl is-active --quiet proxmenux-monitor.service; then
|
||||
|
||||
update_config "proxmenux_monitor" "updated"
|
||||
return 2 # Update successful
|
||||
else
|
||||
msg_warn "Service failed to restart. Check: journalctl -u proxmenux-monitor"
|
||||
update_config "proxmenux_monitor" "failed"
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
create_monitor_service() {
|
||||
msg_info "Creating ProxMenux Monitor service..."
|
||||
|
||||
cat > "$MONITOR_SERVICE_FILE" << EOF
|
||||
local exec_path="$MONITOR_INSTALL_DIR/ProxMenux-Monitor.AppImage"
|
||||
|
||||
if [ -f "$TEMP_DIR/systemd/proxmenux-monitor.service" ]; then
|
||||
sed "s|ExecStart=.*|ExecStart=$exec_path|g" \
|
||||
"$TEMP_DIR/systemd/proxmenux-monitor.service" > "$MONITOR_SERVICE_FILE"
|
||||
msg_ok "Using service file from repository."
|
||||
else
|
||||
cat > "$MONITOR_SERVICE_FILE" << EOF
|
||||
[Unit]
|
||||
Description=ProxMenux Monitor - Web Dashboard
|
||||
After=network.target
|
||||
@@ -372,8 +665,8 @@ After=network.target
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
WorkingDirectory=$BASE_DIR
|
||||
ExecStart=$MONITOR_INSTALL_PATH
|
||||
WorkingDirectory=$MONITOR_INSTALL_DIR
|
||||
ExecStart=$exec_path
|
||||
Restart=on-failure
|
||||
RestartSec=10
|
||||
Environment="PORT=$MONITOR_PORT"
|
||||
@@ -381,41 +674,40 @@ Environment="PORT=$MONITOR_PORT"
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
msg_ok "Created default service file."
|
||||
fi
|
||||
|
||||
# Reload systemd, enable and start service
|
||||
systemctl daemon-reload
|
||||
systemctl enable proxmenux-monitor.service > /dev/null 2>&1
|
||||
systemctl start proxmenux-monitor.service > /dev/null 2>&1
|
||||
|
||||
# Wait a moment for service to start
|
||||
sleep 2
|
||||
sleep 3
|
||||
|
||||
# Check if service is running
|
||||
if systemctl is-active --quiet proxmenux-monitor.service; then
|
||||
msg_ok "ProxMenux Monitor service started successfully."
|
||||
update_config "proxmenux_monitor" "installed"
|
||||
return 0
|
||||
else
|
||||
msg_warn "ProxMenux Monitor service failed to start. Check logs with: journalctl -u proxmenux-monitor"
|
||||
msg_warn "ProxMenux Monitor service failed to start."
|
||||
msg_info "Check logs with: journalctl -u proxmenux-monitor -n 20"
|
||||
msg_info "Check status with: systemctl status proxmenux-monitor"
|
||||
update_config "proxmenux_monitor" "failed"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
####################################################
|
||||
install_normal_version() {
|
||||
local total_steps=4
|
||||
local total_steps=5
|
||||
local current_step=1
|
||||
|
||||
show_progress $current_step $total_steps "Installing basic dependencies"
|
||||
show_progress $current_step $total_steps "Installing basic dependencies."
|
||||
|
||||
if ! command -v jq > /dev/null 2>&1; then
|
||||
# Try installing from APT (silently)
|
||||
apt-get update > /dev/null 2>&1
|
||||
|
||||
if apt-get install -y jq > /dev/null 2>&1 && command -v jq > /dev/null 2>&1; then
|
||||
update_config "jq" "installed"
|
||||
else
|
||||
# Fallback: Download jq binary from GitHub
|
||||
local jq_url="https://github.com/jqlang/jq/releases/download/jq-1.7.1/jq-linux-amd64"
|
||||
if wget -q -O /usr/local/bin/jq "$jq_url" 2>/dev/null && chmod +x /usr/local/bin/jq; then
|
||||
if command -v jq > /dev/null 2>&1; then
|
||||
@@ -435,7 +727,7 @@ install_normal_version() {
|
||||
update_config "jq" "already_installed"
|
||||
fi
|
||||
|
||||
BASIC_DEPS=("dialog" "curl")
|
||||
BASIC_DEPS=("dialog" "curl" "git")
|
||||
for pkg in "${BASIC_DEPS[@]}"; do
|
||||
if ! dpkg -l | grep -qw "$pkg"; then
|
||||
if apt-get install -y "$pkg" > /dev/null 2>&1; then
|
||||
@@ -450,8 +742,21 @@ install_normal_version() {
|
||||
fi
|
||||
done
|
||||
|
||||
msg_ok "jq, dialog and curl installed successfully."
|
||||
|
||||
msg_ok "jq, dialog, curl and git installed successfully."
|
||||
|
||||
((current_step++))
|
||||
|
||||
show_progress $current_step $total_steps "Install ProxMenux repository"
|
||||
msg_info "Cloning ProxMenux repositoryy."
|
||||
if ! git clone --depth 1 "$REPO_URL" "$TEMP_DIR" 2>/dev/null; then
|
||||
msg_error "Failed to clone repository from $REPO_URL"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
msg_ok "Repository cloned successfully."
|
||||
|
||||
cd "$TEMP_DIR"
|
||||
|
||||
((current_step++))
|
||||
|
||||
show_progress $current_step $total_steps "Creating directories and configuration"
|
||||
@@ -466,36 +771,34 @@ install_normal_version() {
|
||||
msg_ok "Directories and configuration created."
|
||||
((current_step++))
|
||||
|
||||
show_progress $current_step $total_steps "Downloading necessary files"
|
||||
|
||||
FILES=(
|
||||
"$UTILS_FILE $REPO_URL/scripts/utils.sh"
|
||||
"$INSTALL_DIR/$MENU_SCRIPT $REPO_URL/$MENU_SCRIPT"
|
||||
"$LOCAL_VERSION_FILE $REPO_URL/version.txt"
|
||||
)
|
||||
|
||||
for file in "${FILES[@]}"; do
|
||||
IFS=" " read -r dest url <<< "$file"
|
||||
sleep 2
|
||||
if wget -qO "$dest" "$url"; then
|
||||
msg_ok "${dest##*/} downloaded successfully."
|
||||
else
|
||||
msg_error "Failed to download ${dest##*/}. Check your Internet connection."
|
||||
return 1
|
||||
fi
|
||||
done
|
||||
show_progress $current_step $total_steps "Copying necessary files"
|
||||
|
||||
cp "./scripts/utils.sh" "$UTILS_FILE"
|
||||
cp "./menu" "$INSTALL_DIR/$MENU_SCRIPT"
|
||||
cp "./version.txt" "$LOCAL_VERSION_FILE"
|
||||
cp "./install_proxmenux.sh" "$BASE_DIR/install_proxmenux.sh"
|
||||
|
||||
mkdir -p "$BASE_DIR/scripts"
|
||||
cp -r "./scripts/"* "$BASE_DIR/scripts/"
|
||||
chmod -R +x "$BASE_DIR/scripts/"
|
||||
chmod +x "$BASE_DIR/install_proxmenux.sh"
|
||||
msg_ok "Necessary files created."
|
||||
|
||||
chmod +x "$INSTALL_DIR/$MENU_SCRIPT"
|
||||
|
||||
((current_step++))
|
||||
show_progress $current_step $total_steps "Installing ProxMenux Monitor"
|
||||
|
||||
if install_proxmenux_monitor; then
|
||||
install_proxmenux_monitor
|
||||
local monitor_status=$?
|
||||
|
||||
if [ $monitor_status -eq 0 ]; then
|
||||
create_monitor_service
|
||||
fi
|
||||
|
||||
msg_ok "ProxMenux Normal Version installation completed successfully."
|
||||
}
|
||||
|
||||
####################################################
|
||||
install_translation_version() {
|
||||
local total_steps=5
|
||||
local current_step=1
|
||||
@@ -507,13 +810,11 @@ install_translation_version() {
|
||||
show_progress $current_step $total_steps "Installing system dependencies"
|
||||
|
||||
if ! command -v jq > /dev/null 2>&1; then
|
||||
# Try installing from APT (silently)
|
||||
apt-get update > /dev/null 2>&1
|
||||
|
||||
if apt-get install -y jq > /dev/null 2>&1 && command -v jq > /dev/null 2>&1; then
|
||||
update_config "jq" "installed"
|
||||
else
|
||||
# Fallback: Download jq binary from GitHub
|
||||
local jq_url="https://github.com/jqlang/jq/releases/download/jq-1.7.1/jq-linux-amd64"
|
||||
if wget -q -O /usr/local/bin/jq "$jq_url" 2>/dev/null && chmod +x /usr/local/bin/jq; then
|
||||
if command -v jq > /dev/null 2>&1; then
|
||||
@@ -533,7 +834,7 @@ install_translation_version() {
|
||||
update_config "jq" "already_installed"
|
||||
fi
|
||||
|
||||
DEPS=("dialog" "curl" "python3" "python3-venv" "python3-pip")
|
||||
DEPS=("dialog" "curl" "git" "python3" "python3-venv" "python3-pip")
|
||||
for pkg in "${DEPS[@]}"; do
|
||||
if ! dpkg -l | grep -qw "$pkg"; then
|
||||
if apt-get install -y "$pkg" > /dev/null 2>&1; then
|
||||
@@ -548,7 +849,7 @@ install_translation_version() {
|
||||
fi
|
||||
done
|
||||
|
||||
msg_ok "jq, dialog, curl, python3, python3-venv and python3-pip installed successfully."
|
||||
msg_ok "jq, dialog, curl, git, python3, python3-venv and python3-pip installed successfully."
|
||||
|
||||
((current_step++))
|
||||
|
||||
@@ -587,44 +888,54 @@ install_translation_version() {
|
||||
fi
|
||||
|
||||
deactivate
|
||||
|
||||
show_progress $current_step $total_steps "Cloning ProxMenux repository"
|
||||
if ! git clone --depth 1 "$REPO_URL" "$TEMP_DIR" 2>/dev/null; then
|
||||
msg_error "Failed to clone repository from $REPO_URL"
|
||||
exit 1
|
||||
fi
|
||||
msg_ok "Repository cloned successfully."
|
||||
|
||||
cd "$TEMP_DIR"
|
||||
|
||||
((current_step++))
|
||||
|
||||
show_progress $current_step $total_steps "Downloading necessary files"
|
||||
show_progress $current_step $total_steps "Copying necessary files"
|
||||
|
||||
mkdir -p "$BASE_DIR"
|
||||
mkdir -p "$INSTALL_DIR"
|
||||
|
||||
FILES=(
|
||||
"$CACHE_FILE $REPO_URL/json/cache.json"
|
||||
"$UTILS_FILE $REPO_URL/scripts/utils.sh"
|
||||
"$INSTALL_DIR/$MENU_SCRIPT $REPO_URL/$MENU_SCRIPT"
|
||||
"$LOCAL_VERSION_FILE $REPO_URL/version.txt"
|
||||
)
|
||||
cp "./json/cache.json" "$CACHE_FILE"
|
||||
msg_ok "Cache file copied with translations."
|
||||
|
||||
for file in "${FILES[@]}"; do
|
||||
IFS=" " read -r dest url <<< "$file"
|
||||
sleep 2
|
||||
if wget -qO "$dest" "$url"; then
|
||||
if [[ "$dest" == "$CACHE_FILE" ]]; then
|
||||
msg_ok "Cache file updated with latest translations."
|
||||
fi
|
||||
else
|
||||
msg_error "Failed to download ${dest##*/}. Check your Internet connection."
|
||||
return 1
|
||||
fi
|
||||
done
|
||||
cp "./scripts/utils.sh" "$UTILS_FILE"
|
||||
cp "./menu" "$INSTALL_DIR/$MENU_SCRIPT"
|
||||
cp "./version.txt" "$LOCAL_VERSION_FILE"
|
||||
cp "./install_proxmenux.sh" "$BASE_DIR/install_proxmenux.sh"
|
||||
|
||||
mkdir -p "$BASE_DIR/scripts"
|
||||
cp -r "./scripts/"* "$BASE_DIR/scripts/"
|
||||
chmod -R +x "$BASE_DIR/scripts/"
|
||||
chmod +x "$BASE_DIR/install_proxmenux.sh"
|
||||
msg_ok "Necessary files created."
|
||||
|
||||
chmod +x "$INSTALL_DIR/$MENU_SCRIPT"
|
||||
|
||||
((current_step++))
|
||||
show_progress $current_step $total_steps "Installing ProxMenux Monitor"
|
||||
|
||||
if install_proxmenux_monitor; then
|
||||
install_proxmenux_monitor
|
||||
local monitor_status=$?
|
||||
|
||||
if [ $monitor_status -eq 0 ]; then
|
||||
create_monitor_service
|
||||
elif [ $monitor_status -eq 2 ]; then
|
||||
msg_ok "ProxMenux Monitor updated successfully."
|
||||
fi
|
||||
|
||||
msg_ok "ProxMenux Translation Version installation completed successfully."
|
||||
}
|
||||
|
||||
####################################################
|
||||
show_installation_options() {
|
||||
local current_install_type
|
||||
current_install_type=$(check_existing_installation)
|
||||
@@ -675,7 +986,6 @@ show_installation_options() {
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# For new installations, show confirmation with details
|
||||
if [ "$current_install_type" = "none" ]; then
|
||||
if ! show_installation_confirmation "$INSTALL_TYPE"; then
|
||||
show_proxmenux_logo
|
||||
@@ -710,17 +1020,21 @@ install_proxmenux() {
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ -f "$UTILS_FILE" ]]; then
|
||||
source "$UTILS_FILE"
|
||||
fi
|
||||
|
||||
msg_title "$(translate "ProxMenux has been installed successfully")"
|
||||
msg_title "ProxMenux has been installed successfully"
|
||||
|
||||
if systemctl is-active --quiet proxmenux-monitor.service; then
|
||||
local server_ip=$(get_server_ip)
|
||||
echo -e "${GN}🌐 $(translate "ProxMenux Monitor activated")${CL}: ${BL}http://${server_ip}:${MONITOR_PORT}${CL}"
|
||||
echo -e "${GN}🌐 ProxMenux Monitor activated${CL}: ${BL}http://${server_ip}:${MONITOR_PORT}${CL}"
|
||||
echo
|
||||
fi
|
||||
|
||||
echo -ne "${GN}"
|
||||
type_text "$(translate "To run ProxMenux, simply execute this command in the console or terminal:")"
|
||||
type_text "To run ProxMenux, simply execute this command in the console or terminal:"
|
||||
echo -e "${YWB} menu${CL}"
|
||||
echo
|
||||
}
|
||||
|
||||
13
menu
13
menu
@@ -31,7 +31,7 @@
|
||||
|
||||
|
||||
# Configuration ============================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
CONFIG_FILE="$BASE_DIR/config.json"
|
||||
CACHE_FILE="$BASE_DIR/cache.json"
|
||||
@@ -44,7 +44,10 @@ if [[ -f "$UTILS_FILE" ]]; then
|
||||
fi
|
||||
|
||||
# =========================================================
|
||||
|
||||
# For now, update is not available in the local version.
|
||||
# Take in mind that in future versions, updates must be
|
||||
# a warning to update the .deb package
|
||||
# =========================================================
|
||||
check_updates() {
|
||||
local INSTALL_SCRIPT="$BASE_DIR/install_proxmenux.sh"
|
||||
|
||||
@@ -80,13 +83,13 @@ check_updates() {
|
||||
}
|
||||
|
||||
|
||||
|
||||
main_menu() {
|
||||
exec bash <(curl -fsSL "$REPO_URL/scripts/menus/main_menu.sh")
|
||||
exec bash "$LOCAL_SCRIPTS/menus/main_menu.sh"
|
||||
}
|
||||
|
||||
|
||||
load_language
|
||||
initialize_cache
|
||||
check_updates
|
||||
# Check updates doesn't make sense in offline mode
|
||||
# check_updates
|
||||
main_menu
|
||||
|
||||
@@ -31,12 +31,12 @@
|
||||
# - Translation support: Multi-language compatible through ProxMenux framework
|
||||
# - Rollback compatibility: All optimizations can be reversed using the uninstall script
|
||||
#
|
||||
# This script is based on the post-install script cutotomizable
|
||||
# This script is based on the post-install script customizable
|
||||
# ==========================================================
|
||||
|
||||
|
||||
# Configuration
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
@@ -99,7 +99,7 @@ lvm_repair_check() {
|
||||
done
|
||||
|
||||
msg_ok "$(translate "LVM PV headers check completed")"
|
||||
|
||||
register_tool "lvm_repair" true
|
||||
}
|
||||
|
||||
# ==========================================================
|
||||
@@ -257,7 +257,7 @@ apt_upgrade() {
|
||||
if [ "$total_packages" -eq 0 ]; then
|
||||
total_packages=1
|
||||
fi
|
||||
msg_ok "$(translate "Packages upgrade successfull")"
|
||||
msg_ok "$(translate "Packages upgrade successful")"
|
||||
tput civis
|
||||
tput sc
|
||||
|
||||
@@ -748,8 +748,9 @@ install_log2ram_auto() {
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Detect RAM
|
||||
RAM_SIZE_GB=$(free -g | awk '/^Mem:/{print $2}')
|
||||
# Detect RAM (in MB first for better accuracy)
|
||||
RAM_SIZE_MB=$(free -m | awk '/^Mem:/{print $2}')
|
||||
RAM_SIZE_GB=$((RAM_SIZE_MB / 1024))
|
||||
[[ -z "$RAM_SIZE_GB" || "$RAM_SIZE_GB" -eq 0 ]] && RAM_SIZE_GB=4
|
||||
|
||||
if (( RAM_SIZE_GB <= 8 )); then
|
||||
@@ -773,7 +774,13 @@ install_log2ram_auto() {
|
||||
cat << 'EOF' > /usr/local/bin/log2ram-check.sh
|
||||
#!/bin/bash
|
||||
CONF_FILE="/etc/log2ram.conf"
|
||||
LIMIT_KB=$(grep '^SIZE=' "$CONF_FILE" | cut -d'=' -f2 | tr -d 'M')000
|
||||
SIZE_VALUE=$(grep '^SIZE=' "$CONF_FILE" | cut -d'=' -f2)
|
||||
# Convert to KB: handle M (megabytes) and G (gigabytes)
|
||||
if [[ "$SIZE_VALUE" == *"G" ]]; then
|
||||
LIMIT_KB=$(($(echo "$SIZE_VALUE" | tr -d 'G') * 1024 * 1024))
|
||||
else
|
||||
LIMIT_KB=$(($(echo "$SIZE_VALUE" | tr -d 'M') * 1024))
|
||||
fi
|
||||
USED_KB=$(df /var/log --output=used | tail -1)
|
||||
THRESHOLD=$(( LIMIT_KB * 90 / 100 ))
|
||||
if (( USED_KB > THRESHOLD )); then
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Configuration ============================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
@@ -16,7 +16,7 @@ initialize_cache
|
||||
|
||||
get_external_backup_mount_point() {
|
||||
local BACKUP_MOUNT_FILE="/usr/local/share/proxmenux/last_backup_mount.txt"
|
||||
local STORAGE_REPO="$REPO_URL/scripts/backup_restore"
|
||||
local STORAGE_REPO="$LOCAL_SCRIPTS/backup_restore"
|
||||
local MOUNT_POINT
|
||||
|
||||
if [[ -f "$BACKUP_MOUNT_FILE" ]]; then
|
||||
@@ -36,7 +36,7 @@ get_external_backup_mount_point() {
|
||||
echo "$MOUNT_POINT"
|
||||
return 0
|
||||
else
|
||||
source <(curl -s "$STORAGE_REPO/mount_disk_host_bk.sh")
|
||||
source "$STORAGE_REPO/mount_disk_host_bk.sh"
|
||||
MOUNT_POINT=$(mount_disk_host_bk)
|
||||
[[ -z "$MOUNT_POINT" ]] && msg_error "$(translate "No disk mounted.")" && return 1
|
||||
echo "$MOUNT_POINT"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Configuration ============================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
@@ -16,7 +16,7 @@ initialize_cache
|
||||
|
||||
get_external_backup_mount_point() {
|
||||
local BACKUP_MOUNT_FILE="/usr/local/share/proxmenux/last_backup_mount.txt"
|
||||
local STORAGE_REPO="$REPO_URL/scripts/backup_restore"
|
||||
local STORAGE_REPO="$LOCAL_SCRIPTS/backup_restore"
|
||||
local MOUNT_POINT
|
||||
|
||||
if [[ -f "$BACKUP_MOUNT_FILE" ]]; then
|
||||
@@ -36,7 +36,7 @@ get_external_backup_mount_point() {
|
||||
echo "$MOUNT_POINT"
|
||||
return 0
|
||||
else
|
||||
source <(curl -s "$STORAGE_REPO/mount_disk_host_bk.sh")
|
||||
source "$STORAGE_REPO/mount_disk_host_bk.sh"
|
||||
MOUNT_POINT=$(mount_disk_host_bk)
|
||||
[[ -z "$MOUNT_POINT" ]] && msg_error "$(translate "No disk mounted.")" && return 1
|
||||
echo "$MOUNT_POINT"
|
||||
@@ -1058,4 +1058,4 @@ read -r
|
||||
# ===============================
|
||||
|
||||
|
||||
host_backup_menu
|
||||
host_backup_menu
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Configuration ============================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
@@ -16,7 +16,7 @@ initialize_cache
|
||||
|
||||
get_external_backup_mount_point() {
|
||||
local BACKUP_MOUNT_FILE="/usr/local/share/proxmenux/last_backup_mount.txt"
|
||||
local STORAGE_REPO="$REPO_URL/scripts/backup_restore"
|
||||
local STORAGE_REPO="$LOCAL_SCRIPTS/backup_restore"
|
||||
local MOUNT_POINT
|
||||
|
||||
if [[ -f "$BACKUP_MOUNT_FILE" ]]; then
|
||||
@@ -36,7 +36,7 @@ get_external_backup_mount_point() {
|
||||
echo "$MOUNT_POINT"
|
||||
return 0
|
||||
else
|
||||
source <(curl -s "$STORAGE_REPO/mount_disk_host_bk.sh")
|
||||
source "$STORAGE_REPO/mount_disk_host_bk.sh"
|
||||
MOUNT_POINT=$(mount_disk_host_bk)
|
||||
[[ -z "$MOUNT_POINT" ]] && msg_error "$(translate "No disk mounted.")" && return 1
|
||||
echo "$MOUNT_POINT"
|
||||
@@ -1291,4 +1291,4 @@ read -r
|
||||
# ===============================
|
||||
|
||||
|
||||
host_backup_menu
|
||||
host_backup_menu
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Configuration ============================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
@@ -16,7 +16,7 @@ initialize_cache
|
||||
|
||||
get_external_backup_mount_point() {
|
||||
local BACKUP_MOUNT_FILE="/usr/local/share/proxmenux/last_backup_mount.txt"
|
||||
local STORAGE_REPO="$REPO_URL/scripts/backup_restore"
|
||||
local STORAGE_REPO="$LOCAL_SCRIPTS/backup_restore"
|
||||
local MOUNT_POINT
|
||||
|
||||
if [[ -f "$BACKUP_MOUNT_FILE" ]]; then
|
||||
@@ -36,7 +36,7 @@ get_external_backup_mount_point() {
|
||||
echo "$MOUNT_POINT"
|
||||
return 0
|
||||
else
|
||||
source <(curl -s "$STORAGE_REPO/mount_disk_host_bk.sh")
|
||||
source "$STORAGE_REPO/mount_disk_host_bk.sh"
|
||||
MOUNT_POINT=$(mount_disk_host_bk)
|
||||
[[ -z "$MOUNT_POINT" ]] && msg_error "$(translate "No disk mounted.")" && return 1
|
||||
echo "$MOUNT_POINT"
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
# Last Updated: 13/12/2024
|
||||
# ==========================================================
|
||||
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
# ==========================================================
|
||||
|
||||
# Configuration ============================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||
|
||||
# Configuration ============================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
|
||||
|
||||
# Configuration ============================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# ==========================================================
|
||||
|
||||
# Configuration
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# ==========================================================
|
||||
# Remove Subscription Banner - Proxmox VE 8.4.9
|
||||
# ==========================================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# ==========================================================
|
||||
# Remove Subscription Banner - Proxmox VE 9.x
|
||||
# ==========================================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# ==========================================================
|
||||
# Remove Subscription Banner - Proxmox VE 9.x ONLY
|
||||
# ==========================================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# ==========================================================
|
||||
|
||||
# Configuration
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
@@ -29,7 +29,7 @@ register_tool() {
|
||||
}
|
||||
|
||||
download_common_functions() {
|
||||
if ! source <(curl -s "$REPO_URL/scripts/global/common-functions.sh"); then
|
||||
if ! source "$LOCAL_SCRIPTS/global/common-functions.sh"; then
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# ==========================================================
|
||||
|
||||
# Configuration
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
@@ -29,7 +29,7 @@ register_tool() {
|
||||
}
|
||||
|
||||
download_common_functions() {
|
||||
if ! source <(curl -s "$REPO_URL/scripts/global/common-functions.sh"); then
|
||||
if ! source "$LOCAL_SCRIPTS/global/common-functions.sh"; then
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# ==========================================================
|
||||
|
||||
# Configuration
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
@@ -29,7 +29,7 @@ register_tool() {
|
||||
}
|
||||
|
||||
download_common_functions() {
|
||||
if ! source <(curl -s "$REPO_URL/scripts/global/common-functions.sh"); then
|
||||
if ! source "$LOCAL_SCRIPTS/global/common-functions.sh"; then
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
# Last Updated: 25/09/2025
|
||||
# =========================================
|
||||
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
LOG_FILE="/tmp/coral_install.log"
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
# ==========================================================
|
||||
|
||||
# Configuration ============================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
# ==========================================================
|
||||
|
||||
# Configuration ============================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
# Includes USB passthrough enhancement using persistent udev alias (/dev/coral).
|
||||
# ==========================================================
|
||||
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
|
||||
# Configuration ============================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
# ==========================================================
|
||||
|
||||
# Configuration ============================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
# ==========================================================
|
||||
|
||||
# Configuration ============================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
# ==========================================================
|
||||
|
||||
# Configuration ============================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
|
||||
@@ -4,13 +4,14 @@
|
||||
# ==========================================================
|
||||
# Author : MacRimi
|
||||
# Copyright : (c) 2024 MacRimi
|
||||
# Contributors : cod378
|
||||
# License : (CC BY-NC 4.0) (https://github.com/MacRimi/ProxMenux/blob/main/LICENSE)
|
||||
# Version : 1.1
|
||||
# Last Updated: 04/07/2025
|
||||
# ==========================================================
|
||||
|
||||
# Configuration ============================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
CONFIG_FILE="$BASE_DIR/config.json"
|
||||
CACHE_FILE="$BASE_DIR/cache.json"
|
||||
@@ -19,7 +20,9 @@ LOCAL_VERSION_FILE="$BASE_DIR/version.txt"
|
||||
INSTALL_DIR="/usr/local/bin"
|
||||
MENU_SCRIPT="menu"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
|
||||
MONITOR_SERVICE="proxmenux-monitor.service"
|
||||
MONITOR_UNIT_FILE="/etc/systemd/system/${MONITOR_SERVICE}"
|
||||
|
||||
if [[ -f "$UTILS_FILE" ]]; then
|
||||
source "$UTILS_FILE"
|
||||
@@ -30,6 +33,41 @@ initialize_cache
|
||||
|
||||
# ==========================================================
|
||||
|
||||
uninstall_proxmenux_monitor() {
|
||||
|
||||
# 1. Stop service if it is running
|
||||
if systemctl is-active --quiet "${MONITOR_SERVICE}"; then
|
||||
echo " - Stoping service..."
|
||||
systemctl stop "${MONITOR_SERVICE}" > /dev/null 2>&1
|
||||
else
|
||||
echo " - Service is not running (ok)"
|
||||
fi
|
||||
|
||||
# 2. Disable service if enabled
|
||||
if systemctl is-enabled --quiet "${MONITOR_SERVICE}"; then
|
||||
echo " - Disabling service..."
|
||||
systemctl disable "${MONITOR_SERVICE}" > /dev/null 2>&1
|
||||
else
|
||||
echo " - Service is not enabled (ok)"
|
||||
fi
|
||||
|
||||
# 3. Remove unit file
|
||||
if [ -f "${MONITOR_UNIT_FILE}" ]; then
|
||||
echo " - Removing unit file ${MONITOR_UNIT_FILE}..."
|
||||
rm -f "${MONITOR_UNIT_FILE}"
|
||||
else
|
||||
echo " - Unit file ${MONITOR_UNIT_FILE} does not exist (ok)"
|
||||
fi
|
||||
|
||||
# 4. Reload systemd
|
||||
echo " - Recargando systemd..."
|
||||
systemctl daemon-reload > /dev/null 2>&1
|
||||
systemctl reset-failed > /dev/null 2>&1 || true
|
||||
|
||||
echo "==> Service ${MONITOR_SERVICE} uninstalled."
|
||||
|
||||
}
|
||||
|
||||
detect_installation_type() {
|
||||
local has_venv=false
|
||||
local has_language=false
|
||||
@@ -218,7 +256,7 @@ show_config_menu() {
|
||||
uninstall_proxmenu
|
||||
;;
|
||||
"return_main"|"")
|
||||
exec bash <(curl -s "$REPO_URL/scripts/menus/main_menu.sh")
|
||||
exec bash "$LOCAL_SCRIPTS/menus/main_menu.sh"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
@@ -257,11 +295,7 @@ change_language() {
|
||||
--msgbox "\n\n$(translate "Language changed to") $new_language" 10 50
|
||||
|
||||
# Reload menu with new language
|
||||
TMP_FILE=$(mktemp)
|
||||
curl -s "$REPO_URL/scripts/menus/config_menu.sh" > "$TMP_FILE"
|
||||
chmod +x "$TMP_FILE"
|
||||
trap 'rm -f "$TMP_FILE"' EXIT
|
||||
exec bash "$TMP_FILE"
|
||||
exec bash "$LOCAL_SCRIPTS/menus/config_menu.sh"
|
||||
}
|
||||
|
||||
# ==========================================================
|
||||
@@ -404,6 +438,9 @@ uninstall_proxmenu() {
|
||||
done
|
||||
apt-get autoremove -y --purge >/dev/null 2>&1
|
||||
fi
|
||||
|
||||
echo "80" ; echo "Removing ProxMenux Monitor..."
|
||||
uninstall_proxmenux_monitor
|
||||
|
||||
echo "90" ; echo "Restoring system files..."
|
||||
# Restore .bashrc and motd
|
||||
|
||||
@@ -26,30 +26,30 @@
|
||||
|
||||
|
||||
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
VM_REPO="$REPO_URL/scripts/vm"
|
||||
ISO_REPO="$REPO_URL/scripts/vm"
|
||||
MENU_REPO="$REPO_URL/scripts/menus"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
VM_REPO="$LOCAL_SCRIPTS/vm"
|
||||
ISO_REPO="$LOCAL_SCRIPTS/vm"
|
||||
MENU_REPO="$LOCAL_SCRIPTS/menus"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
|
||||
[[ -f "$UTILS_FILE" ]] && source "$UTILS_FILE"
|
||||
|
||||
|
||||
source <(curl -s "$VM_REPO/vm_configurator.sh")
|
||||
source <(curl -s "$VM_REPO/disk_selector.sh")
|
||||
source <(curl -s "$VM_REPO/vm_creator.sh")
|
||||
|
||||
|
||||
|
||||
# Source utilities and required scripts
|
||||
if [[ -f "$UTILS_FILE" ]]; then
|
||||
source "$UTILS_FILE"
|
||||
else
|
||||
echo "Error: $UTILS_FILE not found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
load_language
|
||||
initialize_cache
|
||||
|
||||
# Source VM management scripts
|
||||
[[ -f "$VM_REPO/vm_configurator.sh" ]] && source "$VM_REPO/vm_configurator.sh" || { echo "Error: vm_configurator.sh not found"; exit 1; }
|
||||
[[ -f "$VM_REPO/disk_selector.sh" ]] && source "$VM_REPO/disk_selector.sh" || { echo "Error: disk_selector.sh not found"; exit 1; }
|
||||
[[ -f "$VM_REPO/vm_creator.sh" ]] && source "$VM_REPO/vm_creator.sh" || { echo "Error: vm_creator.sh not found"; exit 1; }
|
||||
|
||||
|
||||
|
||||
function header_info() {
|
||||
@@ -108,17 +108,17 @@ while true; do
|
||||
3>&1 1>&2 2>&3)
|
||||
|
||||
|
||||
[[ $? -ne 0 || "$OS_TYPE" == "6" ]] && exec bash <(curl -s "$MENU_REPO/main_menu.sh")
|
||||
[[ $? -ne 0 || "$OS_TYPE" == "6" ]] && exec bash "$MENU_REPO/main_menu.sh"
|
||||
|
||||
case "$OS_TYPE" in
|
||||
1)
|
||||
source <(curl -fsSL "$ISO_REPO/select_nas_iso.sh") && select_nas_iso || continue
|
||||
source "$ISO_REPO/select_nas_iso.sh" && select_nas_iso || continue
|
||||
;;
|
||||
2)
|
||||
source <(curl -fsSL "$ISO_REPO/select_windows_iso.sh") && select_windows_iso || continue
|
||||
source "$ISO_REPO/select_windows_iso.sh" && select_windows_iso || continue
|
||||
;;
|
||||
3)
|
||||
source <(curl -fsSL "$ISO_REPO/select_linux_iso.sh") && select_linux_iso || continue
|
||||
source "$ISO_REPO/select_linux_iso.sh" && select_linux_iso || continue
|
||||
;;
|
||||
4)
|
||||
whiptail --title "OSX-PROXMOX" --yesno "$(translate "This is an external script that creates a macOS VM in Proxmox VE in just a few steps, whether you are using AMD or Intel hardware.")\n\n$(translate "The script clones the osx-proxmox.com repository and once the setup is complete, the server will automatically reboot.")\n\n$(translate "Make sure there are no critical services running as they will be interrupted. Ensure your server can be safely rebooted.")\n\n$(translate "Visit https://osx-proxmox.com for more information.")\n\n$(translate "Do you want to run the script now?")" 24 70
|
||||
@@ -128,7 +128,7 @@ while true; do
|
||||
continue
|
||||
;;
|
||||
5)
|
||||
source <(curl -fsSL "$ISO_REPO/select_linux_iso.sh") && select_linux_other_scripts || continue
|
||||
source "$ISO_REPO/select_linux_iso.sh" && select_linux_other_scripts || continue
|
||||
;;
|
||||
esac
|
||||
|
||||
@@ -149,26 +149,3 @@ while true; do
|
||||
create_vm
|
||||
break
|
||||
done
|
||||
|
||||
|
||||
|
||||
|
||||
function start_vm_configuration() {
|
||||
|
||||
if (whiptail --title "ProxMenux" --yesno "$(translate "Use Default Settings?")" --no-button "$(translate "Advanced")" 10 60); then
|
||||
header_info
|
||||
load_default_vm_config "$OS_TYPE"
|
||||
|
||||
if [[ -z "$HN" ]]; then
|
||||
HN=$(whiptail --inputbox "$(translate "Enter a name for the new virtual machine:")" 10 60 --title "VM Hostname" 3>&1 1>&2 2>&3)
|
||||
[[ -z "$HN" ]] && HN="custom-vm"
|
||||
fi
|
||||
|
||||
apply_default_vm_config
|
||||
else
|
||||
header_info
|
||||
echo -e "${CUS}$(translate "Using advanced configuration")${CL}"
|
||||
configure_vm_advanced "$OS_TYPE"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
|
||||
# Configuration ============================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
@@ -35,24 +35,24 @@ initialize_cache
|
||||
|
||||
case $OPTION in
|
||||
1)
|
||||
bash <(curl -s "$REPO_URL/scripts/configure_igpu_lxc.sh")
|
||||
bash "$LOCAL_SCRIPTS/configure_igpu_lxc.sh"
|
||||
if [ $? -ne 0 ]; then
|
||||
return
|
||||
fi
|
||||
;;
|
||||
2)
|
||||
bash <(curl -s "$REPO_URL/scripts/install_coral_lxc.sh")
|
||||
bash "$LOCAL_SCRIPTS/install_coral_lxc.sh"
|
||||
if [ $? -ne 0 ]; then
|
||||
return
|
||||
fi
|
||||
;;
|
||||
3)
|
||||
bash <(curl -s "$REPO_URL/scripts/gpu_tpu/install_coral_pve9.sh")
|
||||
bash "$LOCAL_SCRIPTS/gpu_tpu/install_coral_pve9.sh"
|
||||
if [ $? -ne 0 ]; then
|
||||
return
|
||||
fi
|
||||
;;
|
||||
4) exec bash <(curl -s "$REPO_URL/scripts/menus/main_menu.sh") ;;
|
||||
*) exec bash <(curl -s "$REPO_URL/scripts/menus/main_menu.sh") ;;
|
||||
4) exec bash "$LOCAL_SCRIPTS/menus/main_menu.sh" ;;
|
||||
*) exec bash "$LOCAL_SCRIPTS/menus/main_menu.sh" ;;
|
||||
esac
|
||||
done
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
# ==========================================================
|
||||
|
||||
# Configuration ============================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
@@ -40,22 +40,23 @@ show_main_menu() {
|
||||
|
||||
case $CHOICE in
|
||||
1)
|
||||
bash <(curl -s "$REPO_URL/scripts/lxc/lxc-privileged-to-unprivileged.sh")
|
||||
bash "$LOCAL_SCRIPTS/lxc/lxc-privileged-to-unprivileged.sh"
|
||||
;;
|
||||
2)
|
||||
bash <(curl -s "$REPO_URL/scripts/lxc/lxc-unprivileged-to-privileged.sh")
|
||||
bash "$LOCAL_SCRIPTS/lxc/lxc-unprivileged-to-privileged.sh"
|
||||
;;
|
||||
3)
|
||||
show_container_status
|
||||
;;
|
||||
4)
|
||||
bash <(curl -s "$REPO_URL/scripts/lxc/lxc-conversion-manual-guide.sh")
|
||||
bash "$LOCAL_SCRIPTS/lxc/lxc-conversion-manual-guide.sh"
|
||||
;;
|
||||
5)
|
||||
exec bash <(curl -s "$REPO_URL/scripts/menus/main_menu.sh")
|
||||
exec bash "$LOCAL_SCRIPTS/menus/main_menu.sh"
|
||||
;;
|
||||
*)
|
||||
exec bash <(curl -s "$REPO_URL/scripts/menus/main_menu.sh")
|
||||
exec bash "$LOCAL_SCRIPTS/menus/main_menu.sh"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
@@ -99,6 +100,4 @@ show_container_status() {
|
||||
show_main_menu
|
||||
}
|
||||
|
||||
|
||||
|
||||
show_main_menu
|
||||
show_main_menu
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
# ==========================================================
|
||||
|
||||
# Configuration ============================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
@@ -54,10 +54,10 @@ check_pve9_translation_compatibility() {
|
||||
--title "Translation Environment Incompatible with PVE $pve_version" \
|
||||
--msgbox "NOTICE: You are running Proxmox VE $pve_version with translation components installed.\n\nTranslations are NOT supported in PVE 9+. This causes:\n• Menu loading errors\n• Translation failures\n• System instability\n\nREQUIRED ACTION:\nProxMenux will now automatically reinstall the Normal Version.\n\nThis process will:\n• Remove incompatible translation components\n• Install PVE 9+ compatible version\n• Preserve all your settings and preferences\n\nPress OK to continue with automatic reinstallation..." 20 75
|
||||
|
||||
bash <(curl -sSL "$REPO_URL/install_proxmenux.sh")
|
||||
bash "$BASE_DIR/install_proxmenux.sh"
|
||||
|
||||
fi
|
||||
exit
|
||||
exit 0
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -90,9 +90,6 @@ show_menu() {
|
||||
while true; do
|
||||
|
||||
local menu_title="Main ProxMenux"
|
||||
if [[ -n "$PROXMENUX_PVE9_WARNING_SHOWN" ]]; then
|
||||
menu_title="Main ProxMenux"
|
||||
fi
|
||||
|
||||
dialog --clear \
|
||||
--backtitle "ProxMenux" \
|
||||
@@ -122,16 +119,16 @@ show_menu() {
|
||||
OPTION=$(<"$TEMP_FILE")
|
||||
|
||||
case $OPTION in
|
||||
1) exec bash <(curl -s "$REPO_URL/scripts/menus/menu_post_install.sh") ;;
|
||||
2) exec bash <(curl -s "$REPO_URL/scripts/menus/hw_grafics_menu.sh") ;;
|
||||
3) exec bash <(curl -s "$REPO_URL/scripts/menus/create_vm_menu.sh") ;;
|
||||
4) exec bash <(curl -s "$REPO_URL/scripts/menus/storage_menu.sh") ;;
|
||||
5) exec bash <(curl -s "$REPO_URL/scripts/menus/share_menu.sh") ;;
|
||||
6) exec bash <(curl -s "$REPO_URL/scripts/menus/menu_Helper_Scripts.sh") ;;
|
||||
7) exec bash <(curl -s "$REPO_URL/scripts/menus/network_menu.sh") ;;
|
||||
8) exec bash <(curl -s "$REPO_URL/scripts/menus/utilities_menu.sh") ;;
|
||||
h) bash <(curl -s "$REPO_URL/scripts/help_info_menu.sh") ;;
|
||||
s) exec bash <(curl -s "$REPO_URL/scripts/menus/config_menu.sh") ;;
|
||||
1) exec bash "$LOCAL_SCRIPTS/menus/menu_post_install.sh" ;;
|
||||
2) exec bash "$LOCAL_SCRIPTS/menus/hw_grafics_menu.sh" ;;
|
||||
3) exec bash "$LOCAL_SCRIPTS/menus/create_vm_menu.sh" ;;
|
||||
4) exec bash "$LOCAL_SCRIPTS/menus/storage_menu.sh" ;;
|
||||
5) exec bash "$LOCAL_SCRIPTS/menus/share_menu.sh" ;;
|
||||
6) exec bash "$LOCAL_SCRIPTS/menus/menu_Helper_Scripts.sh" ;;
|
||||
7) exec bash "$LOCAL_SCRIPTS/menus/network_menu.sh" ;;
|
||||
8) exec bash "$LOCAL_SCRIPTS/menus/utilities_menu.sh" ;;
|
||||
h) bash "$LOCAL_SCRIPTS/help_info_menu.sh" ;;
|
||||
s) exec bash "$LOCAL_SCRIPTS/menus/config_menu.sh" ;;
|
||||
0) clear; msg_ok "$(translate "Thank you for using ProxMenux. Goodbye!")"; rm -f "$TEMP_FILE"; exit 0 ;;
|
||||
*) msg_warn "$(translate "Invalid option")"; sleep 2 ;;
|
||||
esac
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
# ==========================================================
|
||||
|
||||
# Configuration ============================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
@@ -62,21 +62,19 @@ show_menu() {
|
||||
OPTION=$(<"$TEMP_FILE")
|
||||
|
||||
case $OPTION in
|
||||
1) exec bash <(curl -s "$REPO_URL/scripts/menus/menu_post_install.sh") ;;
|
||||
2) bash <(curl -s "$REPO_URL/scripts/help_info_menu.sh") ;;
|
||||
3) exec bash <(curl -s "$REPO_URL/scripts/menus/hw_grafics_menu.sh") ;;
|
||||
4) exec bash <(curl -s "$REPO_URL/scripts/menus/create_vm_menu.sh") ;;
|
||||
5) exec bash <(curl -s "$REPO_URL/scripts/menus/storage_menu.sh") ;;
|
||||
6) exec bash <(curl -s "$REPO_URL/scripts/menus/menu_Helper_Scripts.sh") ;;
|
||||
7) exec bash <(curl -s "$REPO_URL/scripts/menus/network_menu.sh") ;;
|
||||
8) exec bash <(curl -s "$REPO_URL/scripts/menus/utilities_menu.sh") ;;
|
||||
9) exec bash <(curl -s "$REPO_URL/scripts/menus/config_menu.sh") ;;
|
||||
1) exec bash "$LOCAL_SCRIPTS/menus/menu_post_install.sh" ;;
|
||||
2) bash "$LOCAL_SCRIPTS/help_info_menu.sh" ;;
|
||||
3) exec bash "$LOCAL_SCRIPTS/menus/hw_grafics_menu.sh" ;;
|
||||
4) exec bash "$LOCAL_SCRIPTS/menus/create_vm_menu.sh" ;;
|
||||
5) exec bash "$LOCAL_SCRIPTS/menus/storage_menu.sh" ;;
|
||||
6) exec bash "$LOCAL_SCRIPTS/menus/menu_Helper_Scripts.sh" ;;
|
||||
7) exec bash "$LOCAL_SCRIPTS/menus/network_menu.sh" ;;
|
||||
8) exec bash "$LOCAL_SCRIPTS/menus/utilities_menu.sh" ;;
|
||||
9) exec bash "$LOCAL_SCRIPTS/menus/config_menu.sh" ;;
|
||||
0) clear; msg_ok "$(translate "Thank you for using ProxMenux. Goodbye!")"; rm -f "$TEMP_FILE"; exit 0 ;;
|
||||
*) msg_warn "$(translate "Invalid option")"; sleep 2 ;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
|
||||
|
||||
show_menu
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
|
||||
# Configuration ============================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
@@ -293,7 +293,7 @@ while true; do
|
||||
dialog --clear --title "Proxmox VE Helper-Scripts" \
|
||||
--msgbox "\n\n$(translate "Visit the website to discover more scripts, stay updated with the latest updates, and support the project:")\n\nhttps://community-scripts.github.io/ProxmoxVE" 15 70
|
||||
#clear
|
||||
exec bash <(curl -s "$REPO_URL/scripts/menus/main_menu.sh")
|
||||
exec bash "$LOCAL_SCRIPTS/menus/main_menu.sh"
|
||||
}
|
||||
|
||||
if [[ "$SELECTED" == "search" ]]; then
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
# Last Updated: 06/07/2025
|
||||
# ==========================================================
|
||||
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
@@ -70,7 +70,7 @@ confirm_automated_script() {
|
||||
clear
|
||||
|
||||
if [ $response -eq 0 ]; then
|
||||
bash <(curl -s $REPO_URL/scripts/post_install/auto_post_install.sh)
|
||||
bash "$LOCAL_SCRIPTS/post_install/auto_post_install.sh"
|
||||
else
|
||||
msg_warn "$(translate "Cancelled by user.")"
|
||||
sleep 1
|
||||
@@ -80,9 +80,9 @@ confirm_automated_script() {
|
||||
# ==========================================================
|
||||
|
||||
declare -a PROXMENUX_SCRIPTS=(
|
||||
"Customizable post-installation script|ProxMenux|bash <(curl -s $REPO_URL/scripts/post_install/customizable_post_install.sh)"
|
||||
"Customizable post-installation script|ProxMenux|bash \"$LOCAL_SCRIPTS/post_install/customizable_post_install.sh\""
|
||||
"Automated post-installation script|ProxMenux|confirm_automated_script"
|
||||
"Uninstall optimizations|ProxMenux|bash <(curl -s $REPO_URL/scripts/post_install/uninstall-tools.sh)"
|
||||
"Uninstall optimizations|ProxMenux|bash \"$LOCAL_SCRIPTS/post_install/uninstall-tools.sh\""
|
||||
)
|
||||
|
||||
|
||||
@@ -168,7 +168,7 @@ show_menu() {
|
||||
|
||||
|
||||
if [ $exit_status -ne 0 ] || [ "$script_selection" = "0" ]; then
|
||||
exec bash <(curl -s "$REPO_URL/scripts/menus/main_menu.sh")
|
||||
exec bash "$LOCAL_SCRIPTS/menus/main_menu.sh"
|
||||
fi
|
||||
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
# Special thanks to @Andres_Eduardo_Rojas_Moya for contributing the persistent
|
||||
# network naming function and for the original idea.
|
||||
# Configuration ============================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
@@ -1082,7 +1082,7 @@ show_menu() {
|
||||
|
||||
|
||||
if [ $exit_status -ne 0 ] || [ "$script_selection" = "0" ]; then
|
||||
exec bash <(curl -s "$REPO_URL/scripts/menus/main_menu.sh")
|
||||
exec bash "$LOCAL_SCRIPTS/menus/main_menu.sh"
|
||||
fi
|
||||
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
# ==========================================================
|
||||
|
||||
# Configuration
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
@@ -43,7 +43,7 @@ while true; do
|
||||
"h" "$(translate "Help & Info (commands)")" \
|
||||
"0" "$(translate "Return to Main Menu")" \
|
||||
2>&1 >/dev/tty
|
||||
) || { exec bash <(curl -s "$REPO_URL/scripts/menus/main_menu.sh"); }
|
||||
) || { exec bash "$LOCAL_SCRIPTS/menus/main_menu.sh"; }
|
||||
|
||||
case "$OPTION" in
|
||||
|
||||
@@ -52,37 +52,37 @@ while true; do
|
||||
;;
|
||||
|
||||
1)
|
||||
bash <(curl -s "$REPO_URL/scripts/share/nfs_host.sh")
|
||||
bash "$LOCAL_SCRIPTS/share/nfs_host.sh"
|
||||
;;
|
||||
2)
|
||||
bash <(curl -s "$REPO_URL/scripts/share/samba_host.sh")
|
||||
bash "$LOCAL_SCRIPTS/share/samba_host.sh"
|
||||
;;
|
||||
3)
|
||||
bash <(curl -s "$REPO_URL/scripts/share/local-shared-manager.sh")
|
||||
bash "$LOCAL_SCRIPTS/share/local-shared-manager.sh"
|
||||
;;
|
||||
4)
|
||||
bash <(curl -s "$REPO_URL/scripts/share/lxc-mount-manager_minimal.sh")
|
||||
bash "$LOCAL_SCRIPTS/share/lxc-mount-manager_minimal.sh"
|
||||
;;
|
||||
5)
|
||||
bash <(curl -s "$REPO_URL/scripts/share/nfs_client.sh")
|
||||
bash "$LOCAL_SCRIPTS/share/nfs_client.sh"
|
||||
;;
|
||||
6)
|
||||
bash <(curl -s "$REPO_URL/scripts/share/samba_client.sh")
|
||||
bash "$LOCAL_SCRIPTS/share/samba_client.sh"
|
||||
;;
|
||||
7)
|
||||
bash <(curl -s "$REPO_URL/scripts/share/nfs_lxc_server.sh")
|
||||
bash "$LOCAL_SCRIPTS/share/nfs_lxc_server.sh"
|
||||
;;
|
||||
8)
|
||||
bash <(curl -s "$REPO_URL/scripts/share/samba_lxc_server.sh")
|
||||
bash "$LOCAL_SCRIPTS/share/samba_lxc_server.sh"
|
||||
;;
|
||||
h)
|
||||
bash <(curl -s "$REPO_URL/scripts/share/commands_share.sh")
|
||||
bash "$LOCAL_SCRIPTS/share/commands_share.sh"
|
||||
;;
|
||||
0)
|
||||
exec bash <(curl -s "$REPO_URL/scripts/menus/main_menu.sh")
|
||||
exec bash "$LOCAL_SCRIPTS/menus/main_menu.sh"
|
||||
;;
|
||||
*)
|
||||
exec bash <(curl -s "$REPO_URL/scripts/menus/main_menu.sh")
|
||||
exec bash "$LOCAL_SCRIPTS/menus/main_menu.sh"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
|
||||
# Configuration ============================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
@@ -39,38 +39,37 @@ while true; do
|
||||
case $OPTION in
|
||||
1)
|
||||
msg_info2 "$(translate "Running script: Add Disk Passthrough to a VM")..."
|
||||
bash <(curl -s "$REPO_URL/scripts/storage/disk-passthrough.sh")
|
||||
bash "$LOCAL_SCRIPTS/storage/disk-passthrough.sh"
|
||||
;;
|
||||
2)
|
||||
msg_info2 "$(translate "Running script: Add Disk Passthrough to a CT")..."
|
||||
bash <(curl -s "$REPO_URL/scripts/storage/disk-passthrough_ct.sh")
|
||||
bash "$LOCAL_SCRIPTS/storage/disk-passthrough_ct.sh"
|
||||
;;
|
||||
3)
|
||||
msg_info2 "$(translate "Running script: Import Disk Image to a VM")..."
|
||||
bash <(curl -s "$REPO_URL/scripts/storage/import-disk-image.sh")
|
||||
bash "$LOCAL_SCRIPTS/storage/import-disk-image.sh"
|
||||
;;
|
||||
4)
|
||||
msg_info2 "$(translate "Running script: Mount point to CT")..."
|
||||
bash <(curl -s "$REPO_URL/scripts/storage/mount-point-to-ct.sh")
|
||||
bash "$LOCAL_SCRIPTS/storage/mount-point-to-ct.sh"
|
||||
;;
|
||||
5)
|
||||
msg_info2 "$(translate "Running script: Mount disk on HOST")..."
|
||||
bash <(curl -s "$REPO_URL/scripts/storage/mount-disk-on-host.sh")
|
||||
bash "$LOCAL_SCRIPTS/storage/mount-disk-on-host.sh"
|
||||
;;
|
||||
6)
|
||||
msg_info2 "$(translate "Running script: Unmount disk from HOST")..."
|
||||
bash <(curl -s "$REPO_URL/scripts/storage/unmount-disk-from-host.sh")
|
||||
bash "$LOCAL_SCRIPTS/storage/unmount-disk-from-host.sh"
|
||||
;;
|
||||
7)
|
||||
msg_info2 "$(translate "Running script: Format disk")..."
|
||||
bash <(curl -s "$REPO_URL/scripts/storage/format-disk.sh")
|
||||
bash "$LOCAL_SCRIPTS/storage/format-disk.sh"
|
||||
;;
|
||||
8)
|
||||
exec bash <(curl -s "$REPO_URL/scripts/menus/main_menu.sh")
|
||||
exec bash "$LOCAL_SCRIPTS/menus/main_menu.sh"
|
||||
;;
|
||||
*)
|
||||
exec bash <(curl -s "$REPO_URL/scripts/menus/main_menu.sh")
|
||||
exec bash "$LOCAL_SCRIPTS/menus/main_menu.sh"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
|
||||
# Configuration ============================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
@@ -36,19 +36,19 @@ while true; do
|
||||
|
||||
case $OPTION in
|
||||
1)
|
||||
bash <(curl -s "$REPO_URL/scripts/storage/disk-passthrough.sh")
|
||||
bash "$LOCAL_SCRIPTS/storage/disk-passthrough.sh"
|
||||
;;
|
||||
2)
|
||||
bash <(curl -s "$REPO_URL/scripts/storage/disk-passthrough_ct.sh")
|
||||
bash "$LOCAL_SCRIPTS/storage/disk-passthrough_ct.sh"
|
||||
;;
|
||||
3)
|
||||
bash <(curl -s "$REPO_URL/scripts/storage/import-disk-image.sh")
|
||||
bash "$LOCAL_SCRIPTS/storage/import-disk-image.sh"
|
||||
;;
|
||||
4)
|
||||
exec bash <(curl -s "$REPO_URL/scripts/menus/main_menu.sh")
|
||||
exec bash "$LOCAL_SCRIPTS/menus/main_menu.sh"
|
||||
;;
|
||||
*)
|
||||
exec bash <(curl -s "$REPO_URL/scripts/menus/main_menu.sh")
|
||||
exec bash "$LOCAL_SCRIPTS/menus/main_menu.sh"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
|
||||
# Configuration ============================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
@@ -36,13 +36,13 @@ initialize_cache
|
||||
|
||||
case $OPTION in
|
||||
1)
|
||||
bash <(curl -s "$REPO_URL/scripts/utilities/uup_dump_iso_creator.sh")
|
||||
bash "$LOCAL_SCRIPTS/utilities/uup_dump_iso_creator.sh"
|
||||
if [ $? -ne 0 ]; then
|
||||
return
|
||||
fi
|
||||
;;
|
||||
2)
|
||||
bash <(curl -s "$REPO_URL/scripts/utilities/system_utils.sh")
|
||||
bash "$LOCAL_SCRIPTS/utilities/system_utils.sh"
|
||||
if [ $? -ne 0 ]; then
|
||||
return
|
||||
fi
|
||||
@@ -64,19 +64,20 @@ initialize_cache
|
||||
|
||||
dialog_result=$?
|
||||
if [[ $dialog_result -eq 0 ]]; then
|
||||
bash <(curl -s "$REPO_URL/scripts/utilities/proxmox_update.sh")
|
||||
bash "$LOCAL_SCRIPTS/utilities/proxmox_update.sh"
|
||||
if [ $? -ne 0 ]; then
|
||||
return
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
4)
|
||||
bash <(curl -s "$REPO_URL/scripts/utilities/upgrade_pve8_to_pve9.sh")
|
||||
bash "$LOCAL_SCRIPTS/utilities/upgrade_pve8_to_pve9.sh"
|
||||
if [ $? -ne 0 ]; then
|
||||
return
|
||||
fi
|
||||
;;
|
||||
5) exec bash <(curl -s "$REPO_URL/scripts/menus/main_menu.sh") ;;
|
||||
*) exec bash <(curl -s "$REPO_URL/scripts/menus/main_menu.sh") ;;
|
||||
5) exec bash "$LOCAL_SCRIPTS/menus/main_menu.sh" ;;
|
||||
*) exec bash "$LOCAL_SCRIPTS/menus/main_menu.sh" ;;
|
||||
esac
|
||||
done
|
||||
done
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
|
||||
|
||||
# Configuration
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
@@ -107,16 +107,11 @@ apt_upgrade() {
|
||||
|
||||
if [[ "$pve_version" -ge 9 ]]; then
|
||||
|
||||
bash <(curl -fsSL "$REPO_URL/scripts/global/update-pve9_2.sh")
|
||||
bash "$LOCAL_SCRIPTS/global/update-pve9_2.sh"
|
||||
else
|
||||
|
||||
bash <(curl -fsSL "$REPO_URL/scripts/global/update-pve8.sh")
|
||||
bash "$LOCAL_SCRIPTS/global/update-pve8.sh"
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
# ==========================================================
|
||||
@@ -147,14 +142,14 @@ remove_subscription_banner() {
|
||||
msg_warn "Banner removal cancelled by user."
|
||||
return 1
|
||||
fi
|
||||
bash <(curl -fsSL "$REPO_URL/scripts/global/remove-banner-pve-v3.sh")
|
||||
bash "$LOCAL_SCRIPTS/global/remove-banner-pve-v3.sh"
|
||||
else
|
||||
if ! whiptail --title "Proxmox VE 8.x Subscription Banner Removal" \
|
||||
--yesno "Do you want to remove the Proxmox subscription banner from the web interface for PVE $pve_version?" 10 70; then
|
||||
msg_warn "Banner removal cancelled by user."
|
||||
return 1
|
||||
fi
|
||||
bash <(curl -fsSL "$REPO_URL/scripts/global/remove-banner-pve8.sh")
|
||||
bash "$LOCAL_SCRIPTS/global/remove-banner-pve8.sh"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
|
||||
|
||||
# Configuration
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
@@ -194,10 +194,10 @@ apt_upgrade() {
|
||||
|
||||
if [[ "$pve_version" -ge 9 ]]; then
|
||||
|
||||
bash <(curl -fsSL "$REPO_URL/scripts/global/update-pve9_2.sh")
|
||||
bash "$LOCAL_SCRIPTS/global/update-pve9_2.sh"
|
||||
else
|
||||
|
||||
bash <(curl -fsSL "$REPO_URL/scripts/global/update-pve8.sh")
|
||||
bash "$LOCAL_SCRIPTS/global/update-pve8.sh"
|
||||
fi
|
||||
|
||||
|
||||
@@ -2902,10 +2902,10 @@ remove_subscription_banner() {
|
||||
|
||||
if [[ "$pve_version" -ge 9 ]]; then
|
||||
|
||||
bash <(curl -fsSL "$REPO_URL/scripts/global/remove-banner-pve-v3.sh")
|
||||
bash "$LOCAL_SCRIPTS/global/remove-banner-pve-v3.sh"
|
||||
else
|
||||
|
||||
bash <(curl -fsSL "$REPO_URL/scripts/global/remove-banner-pve8.sh")
|
||||
bash "$LOCAL_SCRIPTS/global/remove-banner-pve8.sh"
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -4366,4 +4366,3 @@ done
|
||||
|
||||
check_extremeshok_warning
|
||||
main_menu
|
||||
|
||||
|
||||
@@ -20,8 +20,8 @@
|
||||
# ==========================================================
|
||||
|
||||
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
RETURN_SCRIPT="$REPO_URL/scripts/menus/menu_post_install.sh"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
RETURN_SCRIPT="$LOCAL_SCRIPTS/menus/menu_post_install.sh"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
TOOLS_JSON="$BASE_DIR/installed_tools.json"
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
# ==========================================================
|
||||
|
||||
# Configuration ============================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
@@ -201,8 +201,8 @@ show_main_menu() {
|
||||
2)
|
||||
show_ip_info
|
||||
;;
|
||||
3) exec bash <(curl -s "$REPO_URL/scripts/menus/main_menu.sh") ;;
|
||||
*) exec bash <(curl -s "$REPO_URL/scripts/menus/main_menu.sh") ;;
|
||||
3) exec bash "$LOCAL_SCRIPTS/menus/main_menu.sh" ;;
|
||||
*) exec bash "$LOCAL_SCRIPTS/menus/main_menu.sh" ;;
|
||||
|
||||
esac
|
||||
done
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
# ==========================================================
|
||||
|
||||
# Configuration ============================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
# ==========================================================
|
||||
|
||||
# Configuration
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
|
||||
@@ -21,8 +21,8 @@ if [[ -f "$UTILS_FILE" ]]; then
|
||||
fi
|
||||
|
||||
|
||||
SHARE_COMMON_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main/scripts/global/share-common.func"
|
||||
if ! source <(curl -s "$SHARE_COMMON_URL" 2>/dev/null); then
|
||||
SHARE_COMMON_FILE="$LOCAL_SCRIPTS/global/share-common.func"
|
||||
if ! source "$SHARE_COMMON_FILE" 2>/dev/null; then
|
||||
SHARE_COMMON_LOADED=false
|
||||
else
|
||||
SHARE_COMMON_LOADED=true
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
# ==========================================================
|
||||
|
||||
# Configuration
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
|
||||
@@ -22,8 +22,8 @@ if [[ -f "$UTILS_FILE" ]]; then
|
||||
fi
|
||||
|
||||
# Load shared functions
|
||||
SHARE_COMMON_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main/scripts/global/share-common.func"
|
||||
if ! source <(curl -s "$SHARE_COMMON_URL" 2>/dev/null); then
|
||||
SHARE_COMMON_FILE="$LOCAL_SCRIPTS/global/share-common.func"
|
||||
if ! source "$SHARE_COMMON_FILE" 2>/dev/null; then
|
||||
msg_error "$(translate "Could not load shared functions. Script cannot continue.")"
|
||||
exit 1
|
||||
fi
|
||||
@@ -684,4 +684,4 @@ while true; do
|
||||
5) exit 0 ;;
|
||||
*) exit 0 ;;
|
||||
esac
|
||||
done
|
||||
done
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
# ==========================================================
|
||||
|
||||
# Configuration
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
@@ -26,8 +26,8 @@ load_language
|
||||
initialize_cache
|
||||
|
||||
# Load common share functions
|
||||
SHARE_COMMON_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main/scripts/global/share-common.func"
|
||||
if ! source <(curl -s "$SHARE_COMMON_URL" 2>/dev/null); then
|
||||
SHARE_COMMON_FILE="$LOCAL_SCRIPTS/global/share-common.func"
|
||||
if ! source "$SHARE_COMMON_FILE" 2>/dev/null; then
|
||||
msg_warn "$(translate "Could not load shared functions. Using fallback methods.")"
|
||||
SHARE_COMMON_LOADED=false
|
||||
else
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
# ==========================================================
|
||||
|
||||
# Configuration
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
|
||||
@@ -22,8 +22,8 @@ if [[ -f "$UTILS_FILE" ]]; then
|
||||
fi
|
||||
|
||||
# Load shared functions
|
||||
SHARE_COMMON_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main/scripts/global/share-common.func"
|
||||
if ! source <(curl -s "$SHARE_COMMON_URL" 2>/dev/null); then
|
||||
SHARE_COMMON_FILE="$LOCAL_SCRIPTS/global/share-common.func"
|
||||
if ! source "$SHARE_COMMON_FILE" 2>/dev/null; then
|
||||
msg_error "$(translate "Could not load shared functions. Script cannot continue.")"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
|
||||
# Configuration
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
@@ -26,8 +26,8 @@ if [[ -f "$UTILS_FILE" ]]; then
|
||||
fi
|
||||
|
||||
|
||||
SHARE_COMMON_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main/scripts/global/share-common.func"
|
||||
if ! source <(curl -s "$SHARE_COMMON_URL" 2>/dev/null); then
|
||||
SHARE_COMMON_FILE="$LOCAL_SCRIPTS/global/share-common.func"
|
||||
if ! source "$SHARE_COMMON_FILE" 2>/dev/null; then
|
||||
msg_error "$(translate "Could not load shared functions. Script cannot continue.")"
|
||||
exit 1
|
||||
fi
|
||||
@@ -1082,4 +1082,4 @@ while true; do
|
||||
5) exit 0 ;;
|
||||
*) exit 0 ;;
|
||||
esac
|
||||
done
|
||||
done
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
# ==========================================================
|
||||
|
||||
# Configuration
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
CREDENTIALS_DIR="/etc/samba/credentials"
|
||||
@@ -26,8 +26,8 @@ load_language
|
||||
initialize_cache
|
||||
|
||||
# Load common share functions
|
||||
SHARE_COMMON_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main/scripts/global/share-common.func"
|
||||
if ! source <(curl -s "$SHARE_COMMON_URL" 2>/dev/null); then
|
||||
SHARE_COMMON_FILE="$LOCAL_SCRIPTS/global/share-common.func"
|
||||
if ! source "$SHARE_COMMON_FILE" 2>/dev/null; then
|
||||
msg_warn "$(translate "Could not load shared functions. Using fallback methods.")"
|
||||
SHARE_COMMON_LOADED=false
|
||||
else
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
# ==========================================================
|
||||
|
||||
# Configuration
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
@@ -24,8 +24,8 @@ if [[ -f "$UTILS_FILE" ]]; then
|
||||
fi
|
||||
|
||||
|
||||
SHARE_COMMON_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main/scripts/global/share-common.func"
|
||||
if ! source <(curl -s "$SHARE_COMMON_URL" 2>/dev/null); then
|
||||
SHARE_COMMON_FILE="$LOCAL_SCRIPTS/global/share-common.func"
|
||||
if ! source "$SHARE_COMMON_FILE" 2>/dev/null; then
|
||||
msg_error "$(translate "Could not load shared functions. Script cannot continue.")"
|
||||
exit 1
|
||||
fi
|
||||
@@ -573,4 +573,4 @@ while true; do
|
||||
6) exit 0 ;;
|
||||
*) exit 0 ;;
|
||||
esac
|
||||
done
|
||||
done
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||
|
||||
# Configuration ============================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
# ==========================================================
|
||||
|
||||
# Configuration ============================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
|
||||
# Configuration ============================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
# ==========================================================
|
||||
|
||||
# Configuration ============================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
# ==========================================================
|
||||
|
||||
# Configuration ============================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
# Description : Mount a folder from /mnt on the host to a mount point in a CT
|
||||
# ==========================================================
|
||||
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
# Last Updated: 13/12/2024
|
||||
# ==========================================================
|
||||
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
# Description : Allows unmounting a previously mounted disk
|
||||
# ==========================================================
|
||||
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
|
||||
# Configuration ============================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
|
||||
# Configuration ============================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||
|
||||
# Configuration ============================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
# It avoids making changes if the system is already connected to the internet.
|
||||
# ==========================================================
|
||||
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
@@ -183,8 +183,8 @@ show_main_menu() {
|
||||
1) repair_network ;;
|
||||
2) verify_network ;;
|
||||
3) show_ip_info ;;
|
||||
4) exec bash <(curl -s "$REPO_URL/scripts/menus/main_menu.sh") ;;
|
||||
*) exec bash <(curl -s "$REPO_URL/scripts/menus/main_menu.sh") ;;
|
||||
4) exec bash "$LOCAL_SCRIPTS/menus/main_menu.sh" ;;
|
||||
*) exec bash "$LOCAL_SCRIPTS/menus/main_menu.sh" ;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
|
||||
|
||||
# Configuration ============================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
|
||||
|
||||
# Configuration ============================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
# ==========================================================
|
||||
|
||||
# Configuration ============================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
@@ -266,10 +266,10 @@ EOF${CL}" \
|
||||
read -r
|
||||
clear
|
||||
exit 0
|
||||
#bash <(curl -fsSL "$REPO_URL/scripts/utilities/upgrade_pve8_to_pve9.sh")
|
||||
#bash "$LOCAL_SCRIPTS/utilities/upgrade_pve8_to_pve9.sh"
|
||||
|
||||
}
|
||||
|
||||
|
||||
# Main execution
|
||||
show_proxmox_upgrade_manual_guide
|
||||
show_proxmox_upgrade_manual_guide
|
||||
|
||||
@@ -57,12 +57,12 @@ apt_upgrade() {
|
||||
if [[ "$pve_version" -ge 9 ]]; then
|
||||
show_proxmenux_logo
|
||||
msg_title "$(translate "$SCRIPT_TITLE")"
|
||||
bash <(curl -fsSL "$REPO_URL/scripts/global/update-pve9_2.sh")
|
||||
bash "$LOCAL_SCRIPTS/global/update-pve9_2.sh"
|
||||
|
||||
else
|
||||
show_proxmenux_logo
|
||||
msg_title "$(translate "Proxmox system update")"
|
||||
bash <(curl -fsSL "$REPO_URL/scripts/global/update-pve8.sh")
|
||||
bash "$LOCAL_SCRIPTS/global/update-pve8.sh"
|
||||
|
||||
fi
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
# Last Updated: 14/08/2025
|
||||
# ==========================================================
|
||||
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
#
|
||||
|
||||
# Configuration ============================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
# Last Updated: 14/08/2025
|
||||
# ==========================================================
|
||||
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
|
||||
@@ -49,21 +49,21 @@ done
|
||||
|
||||
|
||||
run_manual_guide() {
|
||||
local url="$REPO_URL/scripts/utilities/proxmox-upgrade-pve8-to-pve9-manual-guide.sh"
|
||||
if command -v curl >/dev/null 2>&1; then
|
||||
bash <(curl -fsSL "$url")
|
||||
else
|
||||
bash <(wget -qO- "$url")
|
||||
local SCRIPT_FILE="$LOCAL_SCRIPTS/utilities/proxmox-upgrade-pve8-to-pve9-manual-guide.sh"
|
||||
if [[ ! -f "$SCRIPT_FILE" ]]; then
|
||||
msg_error "$(translate "Manual guide script not found")"
|
||||
return 1
|
||||
fi
|
||||
bash "$SCRIPT_FILE"
|
||||
}
|
||||
|
||||
run_pve8to9_check() {
|
||||
local url="$REPO_URL/scripts/utilities/pve8to9_check.sh"
|
||||
if command -v curl >/dev/null 2>&1; then
|
||||
bash <(curl -fsSL "$url")
|
||||
else
|
||||
bash <(wget -qO- "$url")
|
||||
local SCRIPT_FILE="$LOCAL_SCRIPTS/utilities/pve8to9_check.sh"
|
||||
if [[ ! -f "$SCRIPT_FILE" ]]; then
|
||||
msg_error "$(translate "Check script not found")"
|
||||
return 1
|
||||
fi
|
||||
bash "$SCRIPT_FILE"
|
||||
}
|
||||
|
||||
ask_run_mode() {
|
||||
@@ -564,7 +564,7 @@ apt_upgrade() {
|
||||
exit 1
|
||||
|
||||
else
|
||||
bash <(curl -fsSL "$REPO_URL/scripts/global/update-pve8.sh")
|
||||
bash "$LOCAL_SCRIPTS/global/update-pve8.sh"
|
||||
hash -r
|
||||
|
||||
fi
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
# ==========================================================
|
||||
|
||||
# Repository and directory structure
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
INSTALL_DIR="/usr/local/bin"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
CONFIG_FILE="$BASE_DIR/config.json"
|
||||
@@ -133,7 +133,7 @@ msg_info() {
|
||||
# Display info2 message
|
||||
msg_info2() {
|
||||
local msg="$1"
|
||||
echo -e "${TAB}${BOLD}${YW}${HOLD}${msg}${CL}"
|
||||
echo -e "${TAB}${BOLD}${YW}${HOLD} ${msg}${CL}"
|
||||
}
|
||||
|
||||
# Display info message with spinner
|
||||
|
||||
@@ -26,10 +26,10 @@
|
||||
|
||||
|
||||
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
VM_REPO="$REPO_URL/scripts/vm"
|
||||
ISO_REPO="$REPO_URL/scripts/vm"
|
||||
MENU_REPO="$REPO_URL/scripts/menus"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
VM_REPO="$LOCAL_SCRIPTS/vm"
|
||||
ISO_REPO="$LOCAL_SCRIPTS/vm"
|
||||
MENU_REPO="$LOCAL_SCRIPTS/menus"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
@@ -37,9 +37,9 @@ VENV_PATH="/opt/googletrans-env"
|
||||
[[ -f "$UTILS_FILE" ]] && source "$UTILS_FILE"
|
||||
|
||||
|
||||
source <(curl -s "$VM_REPO/vm_configurator.sh")
|
||||
source <(curl -s "$VM_REPO/disk_selector.sh")
|
||||
source <(curl -s "$VM_REPO/vm_creator.sh")
|
||||
source "$VM_REPO/vm_configurator.sh"
|
||||
source "$VM_REPO/disk_selector.sh"
|
||||
source "$VM_REPO/vm_creator.sh"
|
||||
|
||||
|
||||
|
||||
@@ -108,17 +108,17 @@ while true; do
|
||||
3>&1 1>&2 2>&3)
|
||||
|
||||
|
||||
[[ $? -ne 0 || "$OS_TYPE" == "5" ]] && exec bash <(curl -s "$MENU_REPO/main_menu.sh")
|
||||
[[ $? -ne 0 || "$OS_TYPE" == "5" ]] && exec bash "$MENU_REPO/main_menu.sh"
|
||||
|
||||
case "$OS_TYPE" in
|
||||
1)
|
||||
source <(curl -fsSL "$ISO_REPO/select_nas_iso.sh") && select_nas_iso || continue
|
||||
source "$ISO_REPO/select_nas_iso.sh" && select_nas_iso || continue
|
||||
;;
|
||||
2)
|
||||
source <(curl -fsSL "$ISO_REPO/select_windows_iso.sh") && select_windows_iso || continue
|
||||
source "$ISO_REPO/select_windows_iso.sh" && select_windows_iso || continue
|
||||
;;
|
||||
3)
|
||||
source <(curl -fsSL "$ISO_REPO/select_linux_iso.sh") && select_linux_iso || continue
|
||||
source "$ISO_REPO/select_linux_iso.sh" && select_linux_iso || continue
|
||||
;;
|
||||
4)
|
||||
whiptail --title "OSX-PROXMOX" --yesno "$(translate "This is an external script that creates a macOS VM in Proxmox VE in just a few steps, whether you are using AMD or Intel hardware.")\n\n$(translate "The script clones the osx-proxmox.com repository and once the setup is complete, the server will automatically reboot.")\n\n$(translate "Make sure there are no critical services running as they will be interrupted. Ensure your server can be safely rebooted.")\n\n$(translate "Visit https://osx-proxmox.com for more information.")\n\n$(translate "Do you want to run the script now?")" 20 70
|
||||
@@ -128,7 +128,7 @@ while true; do
|
||||
continue
|
||||
;;
|
||||
5)
|
||||
source <(curl -fsSL "$ISO_REPO/select_linux_iso.sh") && select_linux_other_scripts || continue
|
||||
source "$ISO_REPO/select_linux_iso.sh" && select_linux_other_scripts || continue
|
||||
;;
|
||||
esac
|
||||
|
||||
@@ -173,4 +173,3 @@ function start_vm_configuration() {
|
||||
configure_vm_advanced "$OS_TYPE"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
# ==========================================================
|
||||
|
||||
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
@@ -219,7 +219,7 @@ function select_linux_cloudinit() {
|
||||
whiptail --title "Proxmox VE Helper-Scripts" \
|
||||
--msgbox "$(translate "Visit the website to discover more scripts, stay updated with the latest updates, and support the project:\n\nhttps://community-scripts.github.io/ProxmoxVE")" 15 70
|
||||
|
||||
exec bash <(curl -s "$REPO_URL/scripts/vm/create_vm.sh")
|
||||
exec bash "$LOCAL_SCRIPTS/vm/create_vm.sh"
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
|
||||
[[ -f "$UTILS_FILE" ]] && source "$UTILS_FILE"
|
||||
load_language
|
||||
@@ -62,7 +62,7 @@ function select_nas_iso() {
|
||||
|
||||
case "$NAS_TYPE" in
|
||||
1)
|
||||
bash <(curl -s "$REPO_URL/scripts/vm/synology.sh")
|
||||
bash "$LOCAL_SCRIPTS/vm/synology.sh"
|
||||
msg_success "$(translate "Press Enter to return to menu...")"
|
||||
read -r
|
||||
return 1
|
||||
@@ -103,7 +103,7 @@ function select_nas_iso() {
|
||||
HN="Rockstor"
|
||||
;;
|
||||
7)
|
||||
bash <(curl -s "$REPO_URL/scripts/vm/zimaos.sh")
|
||||
bash "$LOCAL_SCRIPTS/vm/zimaos.sh"
|
||||
msg_success "$(translate "Press Enter to return to menu...")"
|
||||
read -r
|
||||
return 1
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
# consistent and maintainable way, using ProxMenux standards.
|
||||
# ==========================================================
|
||||
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
UUP_REPO="$REPO_URL/scripts/vm"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
UUP_REPO="$LOCAL_SCRIPTS/vm"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
@@ -79,7 +79,7 @@ function select_windows_iso() {
|
||||
|
||||
case "$CHOICE" in
|
||||
1)
|
||||
if source <(curl -fsSL "$UUP_REPO/uupdump_creator.sh"); then
|
||||
if source "$UUP_REPO/uupdump_creator.sh"; then
|
||||
run_uupdump_creator || return 1
|
||||
detect_latest_iso_created || return 1
|
||||
EXIT_FLAG="yes"
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
|
||||
|
||||
# Configuration ============================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
|
||||
|
||||
# Configuration ============================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
# consistent and maintainable way, using ProxMenux standards.
|
||||
# ==========================================================
|
||||
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
@@ -494,7 +494,7 @@ fi
|
||||
|
||||
msg_success "$(translate "Press Enter to return to the main menu...")"
|
||||
read -r
|
||||
bash <(curl -fsSL "$REPO_URL/scripts/menus/create_vm_menu.sh")
|
||||
bash "$LOCAL_SCRIPTS/menus/create_vm_menu.sh"
|
||||
exit 0
|
||||
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||
|
||||
# Configuration ============================================
|
||||
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
|
||||
LOCAL_SCRIPTS="/usr/local/share/proxmenux/scripts"
|
||||
BASE_DIR="/usr/local/share/proxmenux"
|
||||
UTILS_FILE="$BASE_DIR/utils.sh"
|
||||
VENV_PATH="/opt/googletrans-env"
|
||||
|
||||
Reference in New Issue
Block a user