Merge pull request #253 from MacRimi/docs-sync-20260715

docs: promote /web from develop — v1.2.3 changelog + Backups video + install page refresh
This commit is contained in:
MacRimi
2026-07-15 17:20:49 +02:00
committed by GitHub
13 changed files with 277 additions and 14 deletions

View File

@@ -1,4 +1,119 @@
## 2026-07-14
### New version ProxMenux v1.2.3
![ProxMenux Backups](https://raw.githubusercontent.com/MacRimi/ProxMenux/main/images/ProxMenux_backup.png)
Stable consolidation of the **v1.2.2.x beta cycle** (v1.2.2.1 → v1.2.2.2 → v1.2.2.3). The headline is a new **Backups** section with a create / schedule / restore flow against Local, PBS and Borg, a live post-restore progress card, a PBS encryption dialog, and a direction-aware restore that handles cross-kernel jumps. Around it: a new Network Flow topology view, redesigned cards across Overview / VM & LXC / Storage / Network, notifications with richer information without needing AI, a refreshed Health Monitor Thresholds panel, and a full re-verification of the AI-model catalogue for the five supported providers.
---
## 🗄️ Backups integrated in the Monitor
- **Create / schedule / restore** host backups against **Local**, **Proxmox Backup Server** and **Borg** destinations from the dashboard.
- **Two scheduling modes**: dedicated systemd timer, or *attached* (recommended) to an existing PVE vzdump job with retention inherited from the backup task on each run.
- **PBS encryption with recovery blob**: encrypted backups store a passphrase-wrapped copy of the keyfile as a `-keyrecovery` group next to each backup, so a new Proxmox install can always get the key back with the user's passphrase.
- **Direction-aware restore**: reapplies IOMMU / VFIO / GRUB tunings on cross-kernel jumps, protects critical packages from cascade-remove, auto-remaps NICs after a motherboard swap.
- **Live post-restore progress card**: after the reboot, the Backups tab shows a real-time card with step-by-step milestones, per-component status (NVIDIA, Intel GPU tools, Coral, AMD tools) and a log tail with an Issues-only filter. Past restores are archived and browsable.
- **PBS keyfile management inline in the Monitor**: each PBS destination row exposes Download / Upload / Delete for the keyfile plus a Yes/No + passphrase + contextual Apply toggle for the escrow. When the installed keyfile does not match the backup's manifest, View contents / Download / Restore now show a structured amber panel with the required fingerprint so the operator knows which keyfile to import.
---
## 🌐 Network Flow diagram
- New live topology view on the **Network** tab: NICs → host → bridges → LXCs / VMs.
- Animated rx / tx pulses on every internal link — immediate answer to *"which guest is pulling / pushing right now"* without cross-referencing multiple panels.
- Tree layout designed to read cleanly on mobile devices.
---
## 🎨 Redesigned cards across Overview / VM & LXC / Storage / Network
- Layouts reworked for faster reading and denser, more practical information.
- Key numbers surface at a glance, grouped by relevance.
- Responsive grid behaves cleanly from a phone up to an ultrawide.
- **Physical Disks** and **Physical Interfaces** cards on Storage and Network get the largest visual change — clearer per-item presentation.
---
## 🔔 Richer notifications out of the box
For users who do **not** use an AI enhancement agent, the templated body now adds more useful content:
- Titles name the affected object (`Storage 'PBS' unavailable` instead of `1 Proxmox storage(s) unavailable`, `Network connectivity lost — vmbr0`, `3 health checks degraded — Storage (myPBS), Network (vmbr0), CPU`).
- Long lists surface the top offenders with an `…and N more` tail so nothing is silently dropped.
- Recovery notifications preserve the same identity used in the alert.
- Users with AI enrichment keep getting their tailored rewrite on top of this improved base.
---
## 🩺 Health Monitor Thresholds redesigned
- The **Settings → Health Monitor Thresholds** panel that controls per-category Warning and Critical levels (CPU, memory, temperature, storage, disks, …) was reworked with clearer visual grouping and inline hints.
- Tuning a threshold now takes a couple of clicks instead of scrolling through a wall of numbers.
---
## 🛠 Notable fixes
- **USB-NVMe / USB-SATA SMART on `removable=0` enclosures** — enclosures reporting `removable=0` (ASMedia, JMicron, Realtek, ASM105x) now walk sysfs to detect USB attachment, so `-d snt*` pass-through is tried and the drive's real model, serial, temperature, power-on hours and health surface. Temperature history sampler picks up the same fix.
- **PBS encryption prompt reworked** to a single explicit *Encrypt this backup?* Yes/No — nothing is uploaded to PBS unless the answer is Yes. Only when a keyfile is not yet installed does a second dialog ask whether to generate a new one or import an existing one. Cancelling never leaves a phantom keyfile behind.
- **Attached scheduled backups now inherit retention on every run** — jobs attached to a PVE vzdump parent re-read the parent's `prune-backups` config at each run and rewrite `KEEP_*` accordingly. Previously frozen to the value at job creation time.
- **Installer no longer auto-relaunches `menu` after an update** — the `exec MENU_SCRIPT` at the tail of the update path triggered *"line: syntax"* errors when bash tried to read the just-rewritten `/usr/local/bin/menu` under its feet. Flow now exits cleanly; operator types `menu` when ready. `change_release_channel` in Settings unaffected.
- **PBS restore listing broken on Proxmox 9 / jq 1.7** — `hb_pbs_list_snapshots` switched from the prefix form `and not (...)` (rejected by jq 1.7) to the postfix form `and ((...) | not)` (accepted by both jq 1.6 and 1.7). Silent stderr redirect removed so future parse errors surface.
- **`run_scheduled_backup.sh` no longer crashes when `LANGUAGE` is unset** — cron / systemd invocations now load language + initialize the translation cache before sourcing utility functions that require it.
- **Local archive restore prompts no longer freeze silently** — `hb_prompt_restore_source_dir` and `hb_prompt_local_archive` use the fd-9 TTY handoff already applied elsewhere.
- **Terminal modal auto-focuses xterm** so `dialog --yesno` inside CLI scripts receives arrow keys instead of the Close button.
- **NVIDIA VFIO passthrough writes back `vfio_passthrough` in `components_status.json`** — `switch_gpu_mode.sh`, `switch_gpu_mode_direct.sh` and `add_gpu_vm.sh` update component status when they flip the driver posture. Post-restore auto-reinstall no longer kicks the NVIDIA installer on hosts intentionally left in VFIO mode.
- **Secure Gateway update notifications no longer trail a bare `— v`** — when only sidecar packages need updating (Tailscale itself unchanged), the title now reads `secure-gateway update available — v<current> (packages only)` and the body shows a single line "Tailscale: v… (unchanged — only sidecar packages need updating)" instead of the confusing `v → v` arrow.
- **AI model auto-migration for deprecated aliases** — users with `claude-3-5-haiku-latest`, `claude-3-5-sonnet-latest` or `claude-3-opus-latest` (all 404 upstream now) are silently migrated to the current recommendation (`claude-haiku-4-5`, etc.) within 24 h of upgrade, with an `ai_model_migrated` notification explaining what happened.
- **NVIDIA installer no longer locked to the recommended branch** (#248) — `filter_option_c_branch` used to require an EXACT major match against the kernel-recommended branch, so kernel 7.0.14 users only saw 580.x drivers even when specific 580.x builds failed to compile on the newer PVE 9.1 toolchain. Filter now accepts branch ≥ recommended, so newer stable branches (590 / 595 / 600) are selectable in-menu when they compile. `MIN_DRIVER_VERSION` still gates the floor.
- **PBS keyfile auto-detection in the Monitor** — the *Upload PBS keyfile* modal (per-destination row) and the encrypted-backup keyfile-required panel (View contents / Download / Restore) now query `/etc/pve/priv/storage/<NAME>.enc` for the selected PBS repository and, when a match is found, offer a one-click *Use this key* import — the same convenience the shell TUI already provided.
- **Upload PBS keyfile — clearer placeholder** — the *Absolute path on this host* input placeholder was showing the ProxMenux canonical destination path (`/usr/local/share/proxmenux/pbs-key.conf`), which reads as "reuse the file already there". Replaced with a source-path example (`e.g. /etc/pve/priv/storage/<NAME>.enc or /root/my-pbs-key`).
- **Assorted minor** — PVE webhook URL follows the active SSL state; disk observations recorded before the SMART gate; Login screen no longer swallows a 401 forever after a brief stale-token state; toggles visible on light theme.
---
## 🤖 AI providers refresh
`AppImage/config/verified_ai_models.json` refreshed with functional verification against all five supported providers (`_updated: 2026-07-14`):
| Provider | Removed (deprecated / 404) | Added / kept | Recommended |
|-------------|-----------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------|-----------------------------------|
| groq | `llama-3.1-70b-versatile`, `llama3-70b/8b-8192`, `mixtral-8x7b`, `gemma2-9b-it` | `llama-3.3-70b-versatile`, `llama-3.1-8b-instant`, `llama-4-scout`, `openai/gpt-oss-20b`, `openai/gpt-oss-120b` | `llama-3.3-70b-versatile` |
| gemini | `gemini-2.0-flash*`, `gemini-1.5-flash`, `gemini-1.0-pro` | `gemini-flash-lite-latest`, `gemini-2.5-flash-lite/flash`, `gemini-3-flash-preview`, `gemini-3.1/3.5-flash-lite/flash` | `gemini-2.5-flash-lite` |
| openai | `gpt-5.4-nano`, `gpt-5.4-mini` (HTTP 400) | `gpt-4.1-nano/mini`, `gpt-4o-mini`, `gpt-4.1`, `gpt-4o`, `gpt-5-chat-latest`, `gpt-5-nano` | `gpt-4.1-nano` |
| anthropic | `claude-3-5-haiku-latest`, `claude-3-5-sonnet-latest`, `claude-3-opus-latest` (404 upstream) | `claude-haiku-4-5`, `claude-sonnet-5`, `claude-opus-4-8`, `claude-sonnet-4-6`, `claude-opus-4-6`, `claude-fable-5` | `claude-haiku-4-5` |
| openrouter | `claude-3.5-*`, `gemini-flash-1.5`, `mistral-7b`, `mixtral-8x7b` | `llama-4-scout`, `claude-haiku-4.5`, `claude-sonnet-4.6`, `gemini-2.5-flash/lite`, `mistral-small-3.2-24b` | `meta-llama/llama-3.3-70b-instruct` |
Auto-migration is built-in: `PollingCollector._check_ai_model_availability()` runs every 24 h and moves users whose configured model was removed to the recommended replacement, with an `ai_model_migrated` notification explaining what happened.
---
## ⬆ Upgrading from v1.2.2
- ProxMenux notifies stable users automatically on the next `menu` launch.
- Monitor service restarts in-place — **no host reboot is needed** for the upgrade itself.
- Users on the v1.2.2.x beta channel: the same `menu` flow detects the switch to stable and offers to move the install off the beta installer.
- Health Monitor settings, dismissed alerts and per-category suppression durations are preserved verbatim.
- AI configurations pointing at now-deprecated models (`claude-3-5-*-latest`, some `gemini-2.0-*`, retired Groq / OpenRouter IDs) are auto-migrated to the recommended replacement within 24 h of the first Monitor poll after the upgrade, with an explanatory notification sent through every enabled channel.
---
## 🙏 Acknowledgments
Special thanks to the community members who shaped this release with concrete designs, field reports and testing:
- **[@JF_Car](https://github.com/JF_Car)** — proposed the tree layout for the new Network Flow diagram so it reads correctly on mobile devices.
- **[@ghosthvj](https://github.com/ghosthvj)** — contributed the design for the new **Physical Disks** and **Physical Interfaces** cards.
- **[@riglesias](https://github.com/riglesias)**, **[@princo56](https://github.com/princo56)** and **[@jonatanc](https://github.com/jonatanc)** — tested the beta cycle end-to-end and provided the suggestions that closed most of the operator-visible gaps.
And to every user who opened an issue, commented in [GitHub Discussions](https://github.com/MacRimi/ProxMenux/discussions), reported a bug on the community channel, or told us what worked and what didn't on their hardware — most internal fixes in this release started as one of those reports. Keep them coming.
---
## 2026-06-02
### New version ProxMenux v1.2.2 — *Stable consolidation of the v1.2.1.x cycle*

BIN
images/ProxMenux_backup.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 337 KiB

View File

@@ -0,0 +1,19 @@
[?25l ▂▀▅▆▔▔▔▍▔▔▔▆▅▀▂ 
▃▆▔▐▐▍▐▐▍▐▐▘▀▀▀▀▅▀▔▆▃ 
▀▔▐▐▐▐▐▍▐▐▍▗▘▀▀▅▀▀▃▀▋▐▋▔▀ 
▗▔▍▐▐▐▐▐▐▍▗▗▗▘▅▅▆▆▅▃▃▐▐▐▐▍▋▔▖ 
▘▐▐▍▐▍▐▗▗▗▗▗▀▘▅▃▀▀▃▃▖▍▐▐▋▐▗▗▗▗▝ 
▘▐▐▐▐▐▗▗▗▗▃▀▆▅▀▀▅▅▀▀▀▝▋▐▐▐▗▗▗▃▀▀▝ 
▗▐▋▐▐▍▐▐▗▗▗▘▅▀▃▀▅▀▅▅▀▀▂▃▀▀▃▃▀▀▀▅▀▀▖
▎▐▍▐▋▋▐▐▐▋▘▀▀▀▀▀▀▃▃▃▀▀▀▀▀▀▀▀▀▀▀▀▀▀▊
▏▐▐▐▐▐▐▐▐▐▀▀▀▀▅▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▅▀▀▀▕
▏▐▐▐▐▐▐▐▐▎▀▀▀▃▃▀▀▗▗▗▀▀▀▀▀▀▅▅▀▀▀▅▀▀▕
▎▍▐▐▐▐▐▐▐▍▃▀▀▀▀▀▃▐▐▋▐▐▐▍▅▅▀▅▅▎▐▝▀▝▊
▝▋▐▐▐▐▐▝▀▝▖▀▀▃▃▃▃▘▐▍▐▐▐▐▐▐▐▐▍▖▖▖▝▝▘
▖▐▐▐▐▀▀▀▀▝▃▀▀▀▃▃▃▃▂▐▋▋▐▐▝▖▖▝▖▖▀▖▗ 
▖▐▝▅▀▀▀▀▀▅▀▀▀▀▀▀▃▃▀▃▃▐▐▖▝▝▝▝▀▖▗ 
▝▁▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▃▃▀▀▃▀▀▀▀▃▁▘ 
▀▁▀▀▀▀▀▀▘▆▅▅▀▅▆▆▀▃▃▃▀▀▃▁▀ 
▅▂▁▗▘▍▐▐▐▐▀▅▅▅▅▔▅▃▁▂▅ 
▆▀▃▂▁▁▁▏▁▁▁▂▃▀▆ 
[?25h

View File

@@ -4,6 +4,7 @@ import { Link } from "@/i18n/navigation"
import { DocHeader } from "@/components/ui/doc-header"
import { Callout } from "@/components/ui/callout"
import { DataFlowDiagram } from "@/components/ui/data-flow-diagram"
import { YouTubeEmbed } from "@/components/ui/youtube-embed"
export async function generateMetadata({
params,
@@ -81,6 +82,19 @@ export default async function BackupRestoreOverviewPage({
{t.rich("intro.body", { code, strong })}
</Callout>
<h2 className="text-2xl font-semibold mt-10 mb-4 text-gray-900">
{t("video.heading")}
</h2>
<p className="mb-4 text-gray-800 leading-relaxed">
{t("video.intro")}
</p>
<YouTubeEmbed
videoId="K7A1KtOe4IQ"
title={t("video.title")}
caption={t("video.caption")}
/>
<h2 className="text-2xl font-semibold mt-10 mb-4 text-gray-900">
{t("whatItIsNot.heading")}
</h2>

View File

@@ -97,7 +97,7 @@ export default async function InstallationPage({ params }: { params: Promise<{ l
<p className="mb-4 text-gray-800 leading-relaxed">{t.rich("during.outro", { code, strong })}</p>
<Image
src="https://macrimi.github.io/ProxMenux/install/install.png"
src="/install/install.png"
alt={t("during.imageAlt")}
width={900}
height={500}

View File

@@ -1,4 +1,107 @@
## 2026-07-14
### Nueva versión ProxMenux v1.2.3
![ProxMenux Backups](https://raw.githubusercontent.com/MacRimi/ProxMenux/main/images/ProxMenux_backup.png)
Consolidación estable del **ciclo beta v1.2.2.x** (v1.2.2.1 → v1.2.2.2 → v1.2.2.3). La novedad principal es una nueva sección **Backups** con un flujo para crear / programar / restaurar contra Local, PBS y Borg, una tarjeta de progreso en tiempo real de post-restore, un diálogo de cifrado PBS, y una restauración *direction-aware* que gestiona los saltos entre kernels. Alrededor de eso: una nueva vista de topología Network Flow, tarjetas rediseñadas en Overview / VM & LXC / Storage / Network, notificaciones con informcacion más ricas sin necesidad de IA, un panel Health Monitor Thresholds actualizado, y una re-verificación completa del catálogo de modelos IA en los cinco providers soportados.
---
## 🗄️ Backups integrados en el Monitor
- **Crear / programar / restaurar** copias del host contra destinos **Local**, **Proxmox Backup Server** y **Borg** desde el dashboard.
- **Dos modos de programación**: timer systemd propio, o *attached* a un job vzdump PVE existente (recomendado) con retención heredada de la tarea de copia en cada ejecución.
- **Cifrado PBS con blob de recuperación**: los backups cifrados almacenan una copia de la keyfile envuelta con passphrase como grupo `-keyrecovery` junto a cada backup, para que una instalación instalacion nueva de proxmox siempre pueda recuperar la clave con la passphrase del usuario.
- **Restauración direction-aware**: reaplica ajustes IOMMU / VFIO / GRUB en saltos entre kernels, protege paquetes críticos del cascade-remove, re-mapea NICs automáticamente tras un cambio de placa base.
- **Tarjeta de progreso post-restore en vivo**: tras el reboot, la pestaña Backups muestra una tarjeta en tiempo real con hitos paso a paso, estado por componente (NVIDIA, Intel GPU tools, Coral, AMD tools) y un log tail con filtro "Issues only". Las restauraciones pasadas quedan archivadas y navegables.
- **Gestión de la keyfile PBS inline en el Monitor**: cada fila de destino PBS expone Descargar / Subir / Eliminar para la keyfile, más un toggle Sí/No + passphrase + botón Apply contextual para el escrow. Cuando la keyfile instalada no coincide con el manifest del backup, View contents / Download / Restore ahora muestran un panel ámbar estructurado con el fingerprint requerido, para saber qué keyfile importar.
---
## 🌐 Diagrama Network Flow
- Nueva vista de topología en vivo en la pestaña **Network**: NICs → host → bridges → LXCs / VMs.
- Pulsos rx / tx animados en cada enlace interno — respuesta inmediata a *"¿qué guest está tirando o empujando ahora mismo?"* sin cruzar varios paneles.
- Layout en árbol diseñado para leerse limpio en dispositivos móviles.
---
## 🎨 Tarjetas rediseñadas en Overview / VM & LXC / Storage / Network
- Layouts rediseñados para lectura más rápida y con información más densa y práctica.
- Números clave a la vista de un vistazo, agrupados por relevancia.
- Grid responsive que se comporta limpio desde móvil hasta ultrawide.
- Las tarjetas de **Physical Disks** y **Physical Interfaces** en Storage y Network son el cambio visual más grande — presentación por-item más clara.
---
## 🔔 Notificaciones más ricas out of the box
Para quienes **no** usan un agente de enriquecimiento con IA, el cuerpo de las plantilas ahora añade contenido más útil:
- Los títulos nombran el objeto afectado (`Storage 'PBS' unavailable` en vez de `1 Proxmox storage(s) unavailable`, `Network connectivity lost — vmbr0`, `3 health checks degraded — Storage (myPBS), Network (vmbr0), CPU`).
- Las listas largas muestran los top offenders con una coleta `…and N more` para no perder nada en silencio.
- Las notificaciones de recovery preservan la misma identidad usada en la alerta.
- Los usuarios con enrichment IA siguen recibiendo su reescritura personalizada encima de esta base mejorada.
---
## 🩺 Panel Health Monitor Thresholds rediseñado
- El panel **Settings → Health Monitor Thresholds** que controla los niveles Warning y Critical por categoría (CPU, memoria, temperatura, storage, disks, …) se ha rediseñado con agrupación visual más clara e hints inline.
- Ajustar un threshold ahora es un par de clicks en vez de scrollear por un muro de números.
---
## 🛠 Fixes destacados
- **SMART en enclosures USB-NVMe / USB-SATA que reportan `removable=0`** — los enclosures que reportan `removable=0` (ASMedia, JMicron, Realtek, ASM105x) ahora hacen walk de sysfs para detectar attachment USB, así se prueba el pass-through `-d snt*` y aparecen el modelo real del drive, serial, temperatura, power-on hours y health. El sampler del histórico de temperatura hereda el mismo fix.
- **Prompt de cifrado PBS reworked** a una única pregunta explícita *Encrypt this backup?* Sí/No — nada se sube a PBS a menos que la respuesta sea Sí. Solo cuando no hay keyfile instalada aparece un segundo diálogo que pregunta si generar una nueva o importar una existente. Cancelar nunca deja una keyfile fantasma detrás.
- **Los backups attached programados ahora heredan retención en cada ejecución** — los jobs attached a un padre vzdump PVE releen la config `prune-backups` del padre en cada run y reescriben `KEEP_*` según corresponda. Antes quedaba congelado al valor del momento de creación del job.
- **El installer ya no auto-relanza `menu` tras un update** — el `exec MENU_SCRIPT` al final del update path disparaba errores visibles *"line: syntax"* cuando bash intentaba leer el `/usr/local/bin/menu` recién reescrito por debajo. El flujo ahora sale limpio; el usuario teclea `menu` cuando esté listo. `change_release_channel` en Settings no se ve afectado.
- **PBS restore listing roto en Proxmox 9 / jq 1.7** — `hb_pbs_list_snapshots` cambió de la forma prefix `and not (...)` (jq 1.7 la rechaza) a la postfix `and ((...) | not)` (ambos jq 1.6 y 1.7 la aceptan). También se quitó un `2>/dev/null` que enmascaraba el error de parseo.
- **`run_scheduled_backup.sh` ya no crashea cuando `LANGUAGE` está unset** — las invocaciones cron / systemd ahora cargan el idioma + inicializan el cache de traducción antes de hacer source a las funciones que lo requieren.
- **Los prompts de restore de archive local ya no se congelan en silencio** — `hb_prompt_restore_source_dir` y `hb_prompt_local_archive` usan el TTY handoff fd-9 ya aplicado en otros sitios.
- **El modal de terminal auto-focusea xterm** para que `dialog --yesno` dentro de scripts CLI reciba las flechas en lugar del botón Close.
- **NVIDIA VFIO passthrough escribe `vfio_passthrough` de vuelta en `components_status.json`** — `switch_gpu_mode.sh`, `switch_gpu_mode_direct.sh` y `add_gpu_vm.sh` actualizan el status del componente al cambiar el estado del driver. El auto-reinstall post-restore ya no pisa NVIDIA en hosts dejados intencionadamente en modo VFIO.
- **Las notificaciones de update de Secure Gateway ya no arrastran un `— v` colgando** — cuando solo hay paquetes sidecar que actualizar (Tailscale mismo sin cambio), el título dice `secure-gateway update available — v<current> (packages only)` y el body muestra una única línea "Tailscale: v… (unchanged — only sidecar packages need updating)" en vez de la confusa flecha `v → v`.
- **Auto-migración de modelos IA deprecados** — usuarios con `claude-3-5-haiku-latest`, `claude-3-5-sonnet-latest` o `claude-3-opus-latest` (todos 404 upstream ahora) se migran en silencio a la recomendación actual (`claude-haiku-4-5`, etc.) dentro de las 24 h del upgrade, con una notificación `ai_model_migrated` explicando qué pasó.
- **NVIDIA installer ya no bloqueado a la branch recomendada** (#248) — `filter_option_c_branch` requería un match EXACTO de major branch contra la recomendada por kernel, así que los usuarios de kernel 7.0.14 solo veían drivers 580.x aunque builds concretos de 580.x fallaran al compilar contra el toolchain nuevo de PVE 9.1. El filtro ahora acepta branch ≥ recomendada, así que branches estables más nuevas (590 / 595 / 600) son seleccionables in-menu cuando compilan. `MIN_DRIVER_VERSION` sigue vigilando el suelo.
- **Minor variado** — la URL del webhook PVE sigue el estado SSL activo; las disk observations se registran antes del gate SMART; la pantalla de Login ya no se traga un 401 para siempre tras un stale-token breve; los toggles visibles en tema claro.
---
## 🤖 Refresh de providers IA
`AppImage/config/verified_ai_models.json` refrescado con verificación funcional contra los cinco providers soportados (`_updated: 2026-07-14`):
| Provider | Eliminados (deprecados / 404) | Añadidos / mantenidos | Recomendado |
|-------------|-----------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------|-----------------------------------|
| groq | `llama-3.1-70b-versatile`, `llama3-70b/8b-8192`, `mixtral-8x7b`, `gemma2-9b-it` | `llama-3.3-70b-versatile`, `llama-3.1-8b-instant`, `llama-4-scout`, `openai/gpt-oss-20b`, `openai/gpt-oss-120b` | `llama-3.3-70b-versatile` |
| gemini | `gemini-2.0-flash*`, `gemini-1.5-flash`, `gemini-1.0-pro` | `gemini-flash-lite-latest`, `gemini-2.5-flash-lite/flash`, `gemini-3-flash-preview`, `gemini-3.1/3.5-flash-lite/flash` | `gemini-2.5-flash-lite` |
| openai | `gpt-5.4-nano`, `gpt-5.4-mini` (HTTP 400) | `gpt-4.1-nano/mini`, `gpt-4o-mini`, `gpt-4.1`, `gpt-4o`, `gpt-5-chat-latest`, `gpt-5-nano` | `gpt-4.1-nano` |
| anthropic | `claude-3-5-haiku-latest`, `claude-3-5-sonnet-latest`, `claude-3-opus-latest` (404 upstream) | `claude-haiku-4-5`, `claude-sonnet-5`, `claude-opus-4-8`, `claude-sonnet-4-6`, `claude-opus-4-6`, `claude-fable-5` | `claude-haiku-4-5` |
| openrouter | `claude-3.5-*`, `gemini-flash-1.5`, `mistral-7b`, `mixtral-8x7b` | `llama-4-scout`, `claude-haiku-4.5`, `claude-sonnet-4.6`, `gemini-2.5-flash/lite`, `mistral-small-3.2-24b` | `meta-llama/llama-3.3-70b-instruct` |
Auto-migración incluida: `PollingCollector._check_ai_model_availability()` se ejecuta cada 24 h y mueve a los usuarios cuyo modelo configurado haya sido retirado a la recomendación reemplazo, con una notificación `ai_model_migrated` explicando qué pasó.
---
## 🙏 Acknowledgments
Agradecimiento especial a los miembros de la comunidad que dieron forma a esta release con diseños concretos, reports de campo y pruebas:
- **[@JF_Car](https://github.com/JF_Car)** — propuso el layout en árbol del nuevo diagrama Network Flow para que se lea correctamente en dispositivos móviles.
- **[@ghosthvj](https://github.com/ghosthvj)** — contribuyó el diseño de las nuevas tarjetas de **Physical Disks** y **Physical Interfaces**.
- **[@riglesias](https://github.com/riglesias)**, **[@princo56](https://github.com/princo56)** y **[@jonatanc](https://github.com/jonatanc)** — probaron el ciclo beta end-to-end y aportaron las sugerencias que cerraron la mayoría de los gaps visibles para el usuario.
Y a cada usuario que abrió una issue, comentó en [GitHub Discussions](https://github.com/MacRimi/ProxMenux/discussions), reportó un bug por el canal comunitario, o simplemente pasó a decir qué funcionaba y qué no en su hardware — la mayor parte de los fixes internos de esta release empezaron como uno de esos reports. Que sigan viniendo.
---
## 2026-06-02
### Nueva versión ProxMenux v1.2.2 — *Consolidación estable del ciclo v1.2.1.x*

View File

@@ -16,6 +16,12 @@
"title": "What it is, in one paragraph",
"body": "A ProxMenux backup captures the complete state of a Proxmox host: <strong>the filesystem</strong> (relevant directories under <code>/etc</code>, <code>/root</code>, <code>/var/lib/pve-cluster</code>, plus optional custom paths), <strong>a structured manifest</strong> (JSON with the detected hardware, kernel parameters, network layout, ZFS state, users and cron entries), and <strong>an application inventory</strong> (all packages marked as manually installed by APT, plus the list of components installed by ProxMenux with their exact versions). Any of the three supported destinations — local archive, Proxmox Backup Server (recommended) or Borg — receives the same self-contained payload, and any of them can hydrate the target host without depending on the source being reachable at restore time."
},
"video": {
"heading": "Video walkthrough",
"intro": "Prefer watching Backup & Restore in action before configuring it? This walkthrough covers a full end-to-end demo of the feature in ProxMenux.",
"title": "ProxMenux — Backup & Restore walkthrough",
"caption": "External video on YouTube. Plays in privacy-enhanced mode (no cookies until you press play)."
},
"whatItIsNot": {
"heading": "What it is not",
"intro": "The section covers <strong>host-level</strong> backup and restore: the Proxmox installation itself, not the workloads running on top of it.",

View File

@@ -1,7 +1,7 @@
{
"meta": {
"title": "Installing ProxMenux | ProxMenux Documentation",
"description": "One-line installer for ProxMenux on Proxmox VE 8+ hosts. Choose between the Translation flavour (multi-language) or Normal (lightweight English-only). Beta channel also available for early access to new features.",
"description": "One-line installer for ProxMenux on Proxmox VE 8+ hosts. Ships pre-generated translation files for six languages (English, Spanish, French, German, Italian, Portuguese) — the language is picked once during installation. Beta channel also available for early access to new features.",
"ogTitle": "Installing ProxMenux | ProxMenux Documentation",
"ogDescription": "Install ProxMenux on Proxmox VE 8+ in one command. Stable and beta channels available."
},
@@ -85,7 +85,7 @@
"requirements": {
"heading": "Requirements & good practices",
"reqTitle": "Requirements",
"reqBody": "Proxmox VE <strong>8.x or later</strong>. PVE 7 and earlier are not supported. Internet access from the host (the installer downloads scripts, dependencies and — on the Translation install — Python packages from PyPI). Run as <strong>root</strong> on the Proxmox host.",
"reqBody": "Proxmox VE <strong>8.x or later</strong>. PVE 7 and earlier are not supported. Internet access from the host (the installer downloads scripts, dependencies and the ProxMenux Monitor AppImage). Run as <strong>root</strong> on the Proxmox host.",
"inspectTitle": "Always inspect scripts you run from the internet",
"inspectReview": "<sourcelink>Review the installer source</sourcelink> before running.",
"inspectCoc": "All executable links follow the <coclink>ProxMenux Code of Conduct</coclink>."

View File

@@ -51,29 +51,29 @@
"encryption": {
"heading": "Cifrado del lado del cliente",
"glossaryHint": "En esta sección aparecen los términos <em>clave</em>, <em>passphrase</em> y <em>sobre de recuperación</em>. El <glosarioLink>glosario</glosarioLink> resume las diferencias en una frase por término.",
"intro": "PBS puede cifrar las copias con una clave que reside únicamente en el host de origen: los datos se cifran en el propio host antes de subirse, y en PBS solo se guardan cifrados. En ProxMenux el cifrado es opcional; al activarlo, subir también a PBS una copia de la clave envuelta con una passphrase (el sobre de recuperación) es una decisión sí/no explícita que toma el usuario durante la configuración inicial (y que puede revisar más tarde desde el Monitor). La clave siempre vive en una única ruta canónica del host — <code>/usr/local/share/proxmenux/pbs-key.conf</code> — y se reutiliza en silencio en todas las copias cifradas siguientes.",
"intro": "PBS puede cifrar las copias con una clave que vive solo en el host. Los datos se cifran en el host antes de subirse; en PBS llegan ya cifrados. En ProxMenux este cifrado es opcional. Al activarlo, el usuario decide aparte, con una pregunta sí/no, si quiere subir a PBS también una copia de esa clave envuelta con una passphrase (el sobre de recuperación) como red de seguridad. La respuesta se puede cambiar después desde el Monitor. La clave siempre queda en una única ruta del host — <code>/usr/local/share/proxmenux/pbs-key.conf</code> — y se reutiliza sin volver a preguntar en las copias siguientes.",
"keyfileTitle": "Configuración inicial de la clave",
"keyfileBody": "El diálogo aparece en la primera copia cifrada del host. Primero pregunta si se quiere cifrar la copia: <em>No</em> continúa sin cifrado; <em>Sí</em> pasa al segundo paso. El segundo paso depende de si ya hay una clave instalada en <code>/usr/local/share/proxmenux/pbs-key.conf</code>. Si la hay, se reutiliza en silencio y la copia continúa — las copias posteriores no vuelven a preguntar. Si no la hay, aparece un menú con dos opciones. <em>Generar una clave nueva</em> ejecuta <code>proxmox-backup-client key create --kdf none</code>. <em>Usar una clave existente</em> autodetecta una clave gestionada por PVE: si el repositorio PBS seleccionado está registrado en Proxmox con encryption-key en <code>/etc/pve/priv/storage/&lt;NAME&gt;.enc</code>, ese fichero se copia a la ruta canónica de ProxMenux en silencio y el flujo continúa. Cuando ninguna clave PVE coincide con el repositorio, aparece un input pidiendo la ruta absoluta donde el usuario ha colocado la clave en este host. En cualquier caso, el fichero acaba en la ruta canónica con <code>chmod 600</code>.",
"keyfileBody": "El diálogo aparece en la primera copia cifrada del host y hace dos preguntas. Primero, si se quiere cifrar la copia: <em>No</em> sigue sin cifrado; <em>Sí</em> pasa al segundo paso. Segundo, qué clave usar. Si ya hay una instalada en <code>/usr/local/share/proxmenux/pbs-key.conf</code>, se reutiliza sin preguntar más y las copias posteriores tampoco vuelven a preguntar. Si no la hay, aparecen dos opciones: <em>Generar una clave nueva</em> crea una con <code>proxmox-backup-client key create --kdf none</code>. <em>Usar una clave existente</em> busca primero una gestionada por PVE: si el repositorio PBS elegido tiene una en <code>/etc/pve/priv/storage/&lt;NAME&gt;.enc</code>, ese fichero se copia solo a la ruta canónica. Si no hay ninguna que coincida, el diálogo pide la ruta absoluta donde el usuario ha dejado la clave en este host. En cualquier caso, el fichero termina en la ruta canónica con <code>chmod 600</code>.",
"modesTitle": "Clave por host o compartida",
"modesIntro": "Ambos modelos operativos están soportados y ninguno se impone — la decisión pertenece al usuario según cómo esté organizada su flota.",
"modesIntro": "Los dos modos están soportados y ninguno se impone — el usuario elige según cómo tenga organizados sus hosts.",
"modesPerHostTitle": "Clave por host (por defecto)",
"modesPerHostBody": "Cada host genera su propia clave la primera vez que se activa el cifrado. Es el modo con mayor aislamiento: si la clave de un host se ve comprometida, no afecta a las copias de ningún otro. Recomendado para entornos de producción y para escenarios donde cada host tiene su propio responsable o requisitos distintos.",
"modesSharedTitle": "Clave compartida (importar la misma en cada host)",
"modesSharedBody": "Se genera una única clave y se importa en todos los hosts mediante la opción <em>Usar una clave existente</em>. La gestión es más sencilla: hay un solo secreto que proteger, y cualquier host puede leer las copias de cualquier otro (útil para verificación centralizada, ejercicios de restauración cruzada o consolidación). A cambio, si la clave compartida se filtra queda expuesto todo el conjunto de hosts a la vez. Recomendado para laboratorios personales y entornos donde todos los hosts pertenecen al mismo responsable y comparten el mismo nivel de confianza.",
"recoveryTitle": "¿Subir la clave a PBS? — el usuario decide",
"recoveryBody": "Justo después de elegir la clave, ProxMenux hace una única pregunta explícita — <em>Upload key to PBS?</em> — con dos respuestas. <strong>No se sube nada a PBS hasta que el usuario responde Sí.</strong> La opción por defecto es <em>No, keep local only</em>: la clave se queda únicamente en la ruta canónica local, ProxMenux no toca PBS con ningún artefacto de recuperación, y el usuario gestiona su propia copia offsite (el botón <em>Download keyfile</em> en la fila de destino PBS del Monitor la genera bajo demanda). Al elegir <em>Yes, upload</em>, ProxMenux pide una passphrase de recuperación —dos veces, comprobando que coincidan— y envuelve la clave con esa passphrase usando AES-256-CBC y PBKDF2 (600 000 iteraciones, sal aleatoria) para producir <code>pbs-key.recovery.enc</code>. Todas las copias cifradas siguientes suben ese sobre a PBS como grupo emparejado. Ni la passphrase ni una copia en claro de la clave salen nunca del host. La elección se puede cambiar más adelante desde el Monitor en cualquier momento el interruptor de escrow inline en la fila del destino PBS conmuta Sí/No y se aplica en el acto (Start uploading, Stop uploading o Update passphrase, según el estado actual).",
"recoveryBody": "Justo después de elegir la clave, ProxMenux pregunta si se quiere subir una copia de esa clave a PBS como red de seguridad, con dos opciones. <strong>No</strong> (por defecto) mantiene la clave solo en el host; ProxMenux no toca PBS con nada relacionado con la recuperación y el usuario gestiona por su cuenta la copia externa (desde el Monitor, la acción <em>Descargar</em> en la fila del destino PBS la exporta en el acto). <strong>Sí</strong> pide una passphrase de recuperación —dos veces, para comprobar que coincidan—; con esa passphrase, la clave se envuelve localmente con AES-256-CBC y PBKDF2 (600 000 iteraciones, sal aleatoria) en un fichero <code>pbs-key.recovery.enc</code>. A partir de ese momento, cada copia cifrada sube también ese fichero envuelto a PBS. Ni la passphrase ni la clave en claro salen del host. La respuesta se puede cambiar después desde el Monitor en cualquier momento; el interruptor está inline en la fila del destino PBS y el botón que aparece se adapta al estado (empezar a subir, dejar de subir, o cambiar la passphrase).",
"blobUploadTitle": "Grupo emparejado en PBS",
"blobUploadBody1": "Cuando el modo elegido es <em>Yes, upload</em>, ProxMenux sube el sobre de recuperación a PBS después de cada copia cifrada como un segundo grupo emparejado, con el mismo nombre que el del host pero terminado en <code>-keyrecovery</code>. Los dos grupos aparecen juntos en el listado del datastore, uno con las copias del host y otro con los sobres. <strong>El sobre nunca sale del host en claro</strong>: el cifrado ocurre en el propio host con AES-256-CBC y PBKDF2 antes de que se envíe un solo byte (<code>openssl enc -aes-256-cbc -pbkdf2 -iter 600000 -salt</code>). PBS recibe únicamente el sobre ya cifrado.",
"blobUploadBody1": "Cuando el usuario ha respondido Sí, ProxMenux sube el sobre de recuperación a PBS después de cada copia cifrada como un segundo grupo emparejado, con el mismo nombre que el del host pero terminado en <code>-keyrecovery</code>. Los dos grupos aparecen juntos en el listado del datastore: uno con las copias del host, otro con los sobres. <strong>El sobre nunca sale del host en claro</strong>: se cifra en el host con AES-256-CBC y PBKDF2 antes de enviar un solo byte (<code>openssl enc -aes-256-cbc -pbkdf2 -iter 600000 -salt</code>). PBS solo recibe el sobre ya cifrado.",
"envelopeSecurityTitle": "¿No es un riesgo subir el archivo keyrecovery a PBS?",
"envelopeSecurityBody": "El keyrecovery viaja y se almacena cifrado en todo momento. La passphrase de recuperación nunca abandona el host: el cifrado ocurre localmente antes de la subida y PBS solo recibe el resultado ya cifrado. Aunque un administrador de PBS —o cualquiera con acceso al datastore— descargue el keyrecovery, sin la passphrase de recuperación no puede leer la clave que contiene: son solo bytes cifrados. Para reconstruir la clave hacen falta las dos cosas al mismo tiempo, el keyrecovery y la passphrase, y solo el usuario dispone de ambas.",
"envelopeSecurityBody": "El sobre viaja y se guarda cifrado en todo momento. La passphrase de recuperación no sale nunca del host: el cifrado ocurre en local antes de la subida y PBS solo recibe el resultado ya cifrado. Un administrador de PBS —o cualquiera con acceso al datastore— puede descargar el sobre, pero sin la passphrase no puede leer la clave que contiene: son solo bytes cifrados. Para reconstruir la clave hacen falta las dos cosas a la vez, el sobre y la passphrase, y solo el usuario tiene ambas.",
"blobUploadConstraintTitle": "Por qué dos grupos y no uno solo cifrado",
"blobUploadConstraintBody": "Una misma subida de <code>proxmox-backup-client backup</code> cifra todos sus archivos con la misma clave, o no cifra ninguno — no hay opción intermedia. La copia del host tiene que ir cifrada con la clave del host; el sobre de recuperación no puede ir en esa misma subida, porque quedaría cifrado con la clave que precisamente contiene: en un equipo recién reinstalado no habría manera de abrirlo (haría falta la clave para descifrar la clave). Por eso se hacen dos subidas independientes y aparecen como dos grupos separados: la copia del host va cifrada por PBS con la clave, y el sobre de recuperación va cifrado por ProxMenux con la passphrase antes de subirse. Son dos capas de cifrado distintas que protegen dos activos distintos.",
"blobUploadConstraintBody": "Cada subida de <code>proxmox-backup-client backup</code> cifra todos sus archivos con la misma clave o ninguno—. No hay opción intermedia. La copia del host tiene que ir cifrada con la clave. El sobre de recuperación no puede viajar en esa misma subida: quedaría cifrado con la clave que precisamente contiene, y en un equipo recién reinstalado no habría manera de abrirlo (haría falta la clave para descifrar la clave). Por eso salen dos subidas independientes y aparecen dos grupos separados: la copia del host la cifra PBS con la clave, y el sobre lo cifra ProxMenux con la passphrase antes de subirlo. Dos capas de cifrado distintas para dos cosas distintas.",
"blobUploadImageAlt": "Interfaz de PBS mostrando los grupos hostcfg-HOSTNAME y hostcfg-HOSTNAME-keyrecovery adyacentes en el listado del datastore.",
"blobUploadImageCaption": "Interfaz de PBS — los grupos de copia emparejados. El grupo principal contiene las copias del host; el grupo -keyrecovery contiene la clave envuelta con la passphrase.",
"recoverTitle": "Recuperación en un equipo recién instalado",
"recoverBody": "Cuando falta la clave en la ruta canónica —tras reinstalar el host desde cero o después de eliminarla explícitamente— el flujo de restauración prueba tres fuentes en orden y se queda con la primera que produce una clave usable. Primero, si el repositorio PBS seleccionado tiene una clave gestionada por PVE en <code>/etc/pve/priv/storage/&lt;NAME&gt;.enc</code>, ese fichero se copia a la ruta canónica en silencio. Segundo, si hay un grupo <code>-keyrecovery</code> disponible en PBS, se descarga el snapshot más reciente y se pide al usuario la passphrase de recuperación para descifrarlo. Tercero, si ninguna de las dos vías anteriores funciona o el usuario las declina, aparece un input pidiendo la ruta absoluta donde vive la clave en este host, y el fichero se copia a la ruta canónica. El Monitor expone el mismo flujo de importación de forma inline en el modal de detalle de la copia — aparece un panel ámbar en la parte superior cuando Restaurar, Descargar o Ver contenido necesitarían una clave que no está instalada. Cuando la clave está instalada pero no coincide con la que cifró la copia, PBS devuelve un error <code>wrong key — manifest's key XX does not match provided key YY</code>; las mismas tres acciones muestran un panel ámbar estructurado con el fingerprint del manifest destacado en primer plano, para que el usuario pueda identificar qué clave importar para abrir esa copia concreta.",
"recoverBody": "Cuando la clave no está en su sitio —tras reinstalar el host desde cero o después de eliminarla a propósito— el flujo de restauración prueba tres fuentes en orden y se queda con la primera que produce una clave usable. Primero, si el repositorio PBS elegido tiene una clave gestionada por PVE en <code>/etc/pve/priv/storage/&lt;NAME&gt;.enc</code>, se copia sola a la ruta canónica. Segundo, si en PBS hay un grupo <code>-keyrecovery</code>, se descarga la copia más reciente y se pide la passphrase de recuperación para abrirla. Tercero, si ninguna de las dos anteriores funciona o el usuario las descarta, el diálogo pide la ruta absoluta donde ha dejado la clave en este host, y se copia a la ruta canónica. El Monitor expone el mismo flujo dentro del modal de la copia. Si al Restaurar, Descargar o Ver contenido falta la clave, aparece un panel ámbar arriba del modal con las mismas tres vías de importación. Si la clave está instalada pero no es la correcta para esa copia, PBS devuelve un error de tipo <code>wrong key — manifest's key XX does not match provided key YY</code> y el modal muestra un panel estructurado con el fingerprint que PBS espera (el que quedó grabado en el manifest de la copia), para que el usuario sepa qué clave concreta necesita importar.",
"monitorManagementTitle": "Gestionar la clave desde el Monitor",
"monitorManagementBody": "El Monitor expone los controles de la clave de forma inline en cada fila de destino PBS de la página de configuración de copias. La fila muestra tres acciones: <em>Descargar</em> exporta la clave actual al navegador del usuario, <em>Subir</em> reemplaza la clave instalada por una que aporta el usuario (el fichero anterior solo se sobrescribe cuando el nuevo llega correctamente a la ruta canónica), y <em>Eliminar</em> retira la clave del host. El interruptor del sobre de recuperación es un único control inline junto a esas acciones: un radio Sí/No para <em>Upload key to PBS?</em>, un campo de passphrase cuando se selecciona Sí, y un botón Apply contextual que dice <em>Start uploading</em>, <em>Stop uploading</em> o <em>Update passphrase</em> según el estado actual. Todas las acciones pasan por los mismos endpoints Flask que usa el TUI del shell, así que el efecto en disco y en PBS es idéntico independientemente de qué superficie elija el usuario."
"monitorManagementBody": "En la página de configuración de copias, la fila de cada destino PBS incluye los controles de la clave. Tres acciones directas: <em>Descargar</em> exporta la clave actual al navegador. <em>Subir</em> reemplaza la clave instalada por otra que aporta el usuario (la anterior solo se sobrescribe cuando la nueva ha llegado correctamente a su sitio). <em>Eliminar</em> retira la clave del host. Justo al lado está el interruptor del sobre de recuperación: un Sí/No para subir o no la clave a PBS, un campo de passphrase que aparece al elegir Sí, y un botón que se adapta al estado actual (empezar a subir, dejar de subir, o cambiar la passphrase). Los controles del Monitor y el diálogo del shell hacen lo mismo por dentro, así que el resultado en disco y en PBS es idéntico se use la que se use."
},
"restoreAccess": {
"heading": "Recuperación del lado de la restauración",

View File

@@ -16,6 +16,12 @@
"title": "Qué es, en un párrafo",
"body": "Una copia de ProxMenux captura el estado completo de un host Proxmox: <strong>el sistema de ficheros</strong> (directorios relevantes bajo <code>/etc</code>, <code>/root</code>, <code>/var/lib/pve-cluster</code>, más rutas personalizadas opcionales), <strong>un manifiesto estructurado</strong> (JSON con el hardware detectado, los parámetros del kernel, la topología de red, el estado de ZFS, los usuarios y las entradas de cron) y <strong>un inventario de aplicaciones</strong> (todos los paquetes marcados como instalados manualmente por APT, más la lista de componentes instalados por ProxMenux con sus versiones exactas). Cualquiera de los tres destinos soportados — archivo local, Proxmox Backup Server (recomendado) o Borg — recibe el mismo contenido autocontenido, y cualquiera de ellos puede hidratar el host de destino sin depender de que el origen esté accesible en el momento de la restauración."
},
"video": {
"heading": "Vídeo demostración",
"intro": "¿Prefieres ver Backup & Restore en acción antes de configurarlo? Este vídeo cubre una demo end-to-end de la funcionalidad en ProxMenux.",
"title": "ProxMenux — Demostración de Backup & Restore",
"caption": "Vídeo externo en YouTube. Se reproduce en modo mejorado de privacidad (sin cookies hasta pulsar play)."
},
"whatItIsNot": {
"heading": "Qué no es",
"intro": "La sección cubre copia y restauración <strong>a nivel de host</strong>: la instalación de Proxmox en sí, no las cargas de trabajo que se ejecutan sobre ella.",

View File

@@ -1,7 +1,7 @@
{
"meta": {
"title": "Instalar ProxMenux | ProxMenux Documentation",
"description": "Instalador de una línea para ProxMenux en hosts Proxmox VE 8+. Elige entre el sabor con traducción (multi-idioma) o normal (ligero, solo inglés). Canal beta también disponible para acceso temprano a nuevas funciones.",
"description": "Instalador de una línea para ProxMenux en hosts Proxmox VE 8+. Incluye ficheros de traducción pre-generados para seis idiomas (inglés, español, francés, alemán, italiano, portugués) — el idioma se elige una vez durante la instalación. Canal beta también disponible para acceso temprano a nuevas funciones.",
"ogTitle": "Instalar ProxMenux | ProxMenux Documentation",
"ogDescription": "Instala ProxMenux en Proxmox VE 8+ con un comando. Canales estable y beta disponibles."
},
@@ -85,7 +85,7 @@
"requirements": {
"heading": "Requisitos y buenas prácticas",
"reqTitle": "Requisitos",
"reqBody": "Proxmox VE <strong>8.x o posterior</strong>. PVE 7 y anteriores no están soportados. Acceso a internet desde el host (el instalador descarga scripts, dependencias y — en la instalación con traducción — paquetes de Python desde PyPI). Ejecuta como <strong>root</strong> en el host Proxmox.",
"reqBody": "Proxmox VE <strong>8.x o posterior</strong>. PVE 7 y anteriores no están soportados. Acceso a internet desde el host (el instalador descarga scripts, dependencias y la AppImage de ProxMenux Monitor). Ejecuta como <strong>root</strong> en el host Proxmox.",
"inspectTitle": "Revisa siempre los scripts que ejecutas desde internet",
"inspectReview": "<sourcelink>Revisa la fuente del instalador</sourcelink> antes de ejecutarlo.",
"inspectCoc": "Todos los enlaces ejecutables siguen el <coclink>código de conducta de ProxMenux</coclink>."

Binary file not shown.

Before

Width:  |  Height:  |  Size: 387 KiB

After

Width:  |  Height:  |  Size: 147 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 65 KiB