{t("settings.notifications.ui.appriseSlackSteps")}
+https://hooks.slack.com/services/TOKEN_A/TOKEN_B/TOKEN_C
+
+ {t("settings.notifications.ui.appriseSlackDocs")} {t("settings.notifications.ui.appriseMatrixSteps")}
+matrixs://USER:PASSWORD@matrix.example.com/!ROOM_ID:matrix.example.com
+
+ {t("settings.notifications.ui.appriseMatrixDocs")} {t("settings.notifications.ui.appriseServiceFinish")}
+{t("backup.storageRetention.description")}
+ {message &&{message}
} + {error ?{t("backup.storageRetention.loadFailed")}
: !data ? +{t("backup.storageRetention.empty")}
: + data.storages.map(storage =>{message}
} + {error &&{error}
} + {loading ?{chunks}
diff --git a/web/app/[locale]/docs/post-install/optional/page.tsx b/web/app/[locale]/docs/post-install/optional/page.tsx
index 258b0b4e..5f1bc657 100644
--- a/web/app/[locale]/docs/post-install/optional/page.tsx
+++ b/web/app/[locale]/docs/post-install/optional/page.tsx
@@ -312,25 +312,31 @@ EOF
{t("figurine.automates")}
vm/zimaos.sh) but follows the same CPU / RAM / storage / optional-GPU sequence."
+ "bodyRich": "All seven systems share the same ProxMenux wizard. The NAS selector picks the matching installer (auto-detecting the latest stable version for TrueNAS, OMV, XigmaNAS, Rockstor and FygoOS) and then hands over to the generic VM configurator and the storage plan. ZimaOS uses its own installer script (vm/zimaos.sh) but follows the same CPU / RAM / storage / optional-GPU sequence."
},
"config": {
"heading": "Default vs Advanced configuration",
@@ -262,6 +262,21 @@
"UEFI (OVMF) boot",
"VirtIO network adapter for best throughput"
]
+ },
+ "fygoos": {
+ "id": "fygoos",
+ "title": "FygoOS",
+ "icon": "Server",
+ "officialName": "fygonas.com",
+ "officialUrl": "https://fygonas.com",
+ "description": "International edition of fnOS, a Debian-based NAS. ProxMenux downloads the latest installer ISO published on fygonas.com and mounts it in the VM. The installer puts the system on one disk; the space left on that disk can hold volumes for apps and files. After the installation, the console shows the address of the web interface, on port 5666 (port 80 redirects to it): open it in a browser to name the device and create the administrator account.",
+ "specs": [
+ "System disk: FygoOS proposes a 64 GB system partition, which can be smaller in a VM",
+ "Installation: Graphical Install, or Rescuing Install if the graphical one fails",
+ "UEFI (OVMF) boot without Secure Boot keys, as the installer requires",
+ "Network: Ethernet with DHCP by default",
+ "VirtIO network adapter for best throughput"
+ ]
}
},
"related": {
diff --git a/web/messages/en/docs/oci-manager/custom-image.json b/web/messages/en/docs/oci-manager/custom-image.json
index a1b6ef66..7b3fc108 100644
--- a/web/messages/en/docs/oci-manager/custom-image.json
+++ b/web/messages/en/docs/oci-manager/custom-image.json
@@ -29,12 +29,12 @@
"table": {
"headers": ["Option", "What it reads"],
"rows": [
- ["Paste its Compose file in the terminal", "The YAML is pasted in the terminal and ends with Ctrl+D on an empty line."],
+ ["Paste its Compose file in the terminal", "The YAML is pasted in the terminal and ends with Ctrl+D."],
["Read its Compose file from a file of this host", "A path on the node, /root/docker-compose.yml by default. The file must exist and be at most 256 KiB."],
["Download its Compose file from an address", "An http:// or https:// address that serves the raw YAML. At most 256 KiB are downloaded."],
["Paste its docker run command in the terminal", "The command published by the project. Ports, environment, volumes, devices, capabilities, user, shared memory and the other supported options are translated."],
["Only the image reference, with no Compose file", "A reference such as ghcr.io/user/application:latest. The registry is queried and the OCI metadata of the image is kept."],
- ["Paste an oci-compose in the terminal", "The JSON is pasted in the terminal and ends with Ctrl+D on an empty line. It is not translated: it is checked and installed as it is written."],
+ ["Paste an oci-compose in the terminal", "The JSON is pasted in the terminal and ends with Ctrl+D. It is not translated: it is checked and installed as it is written."],
["Read an oci-compose from a file of this host", "A JSON file on the node, /root/oci-compose.json by default, of at most 2 MiB."],
["Download an oci-compose from an address", "An http:// or https:// address that serves the JSON file. At most 2 MiB are downloaded."]
]
@@ -76,7 +76,7 @@
"steps": {
"items": [
{ "title": "Analyse", "body": "Services, image, ports, paths, environment, devices, security and healthcheck are read." },
- { "title": "Query the registry", "body": "The image must exist in a public registry, and its published architectures are listed." },
+ { "title": "Query the registry", "body": "The image must exist in its registry, and its published architectures are listed. A private registry is read with the account saved for it." },
{ "title": "List what is not applied", "body": "Labels, Docker networks, Swarm settings and other keys that have no effect on an LXC are listed." },
{ "title": "Block what cannot be translated", "body": "A key with no safe equivalent is shown under What cannot be translated and the installation does not continue. Nothing is dropped silently." },
{ "title": "Ask for secrets", "body": "Variables whose names read as a password, token or key become sensitive questions of the installation." }
@@ -152,6 +152,38 @@
}
]
},
+ {
+ "id": "private-registries",
+ "title": "Images in private registries",
+ "intro": "An image in a private registry, such as a private package on GitHub or a private repository on Docker Hub, is read with an account saved in ProxMenux.",
+ "blocks": [
+ {
+ "steps": {
+ "items": [
+ { "title": "The registry refuses the image", "body": "When the registry answers that the image needs an account, the review offers to sign in to that registry and reads the image again." },
+ { "title": "Sign in", "body": "A user and a password or access token that can pull the image. The registry checks them, and they are saved only if it accepts them." },
+ { "title": "Install and keep up to date", "body": "The installation downloads the image with that account, and so do updates, Modify, Recreate, the watchdog and the update check of the Monitor, on any node of the cluster." }
+ ]
+ }
+ },
+ { "p": "Registry accounts, in the main menu of OCI manager Apps, lists the saved accounts by registry and user, never their secret. From each account an image can be checked, downloaded or installed, and the account updated or removed." },
+ {
+ "list": {
+ "items": [
+ "GitHub (ghcr.io): the user is the GitHub account, and the password a personal access token with the read:packages permission.",
+ "Docker Hub (docker.io): the user is the Docker Hub account, and the password an access token with read permission.",
+ "Other registries, including one with its own port such as registry.example.com:5000: the user and password or token that registry gives."
+ ]
+ }
+ },
+ {
+ "calloutInfo": {
+ "title": "Where the accounts are kept",
+ "body": "In /etc/pve/priv/proxmenux/registry-auth.json, readable only by root, in the same folder where Proxmox keeps its storage passwords. /etc/pve is shared by every node of the cluster, so an account added on one node is used on all of them. The host backup includes it, and uninstalling ProxMenux removes it from every node."
+ }
+ }
+ ]
+ },
{
"id": "limits",
"title": "Definitions that are not installed",
@@ -159,7 +191,6 @@
{
"list": {
"items": [
- "Images in private registries: registry credentials are not requested.",
"A Dockerfile without a published image: the image has to be built and published in an OCI registry first.",
"A Compose file with several services: it is blocked because it describes more than one image. This option installs a single container.",
"configs, external secrets or device formats that cannot be translated unambiguously.",
diff --git a/web/messages/en/docs/oci-manager/index.json b/web/messages/en/docs/oci-manager/index.json
index 574d8970..9df86243 100644
--- a/web/messages/en/docs/oci-manager/index.json
+++ b/web/messages/en/docs/oci-manager/index.json
@@ -41,6 +41,7 @@
"Search applications — search by name across the catalog.",
"All applications — the complete catalog, with the number of applications.",
"Manage installed OCI applications — update, modify, remove or recover what was installed.",
+ "Registry accounts — the accounts used to install and update images from private registries.",
"Install an image that is not in the catalog — translate a Compose file, a docker run command or an image reference.",
"The catalog categories, each with its number of applications."
]
diff --git a/web/messages/en/docs/post-install/optional.json b/web/messages/en/docs/post-install/optional.json
index a7221f42..dc3a1d04 100644
--- a/web/messages/en/docs/post-install/optional.json
+++ b/web/messages/en/docs/post-install/optional.json
@@ -119,9 +119,9 @@
"intro": "This option installs and configures Figurine, a tool that creates stylish ASCII text banners for your terminal, displaying your hostname in a visually appealing 3D format.",
"doesLabel": "What it does:",
"doesItems": [
- "Downloads and installs Figurine v2.0.0 from GitHub",
+ "Downloads and installs Figurine v2.1.1 from GitHub for the host architecture (AMD64, ARM64 or ARMv7)",
"Creates a welcome message that displays your hostname in 3D ASCII art when you log in",
- "Automatically removes any previous Figurine installation if present",
+ "Updates an existing Figurine binary after download and extraction succeed",
"Sets up the welcome message to run automatically at login"
],
"practicalLabel": "Practical Use:",
diff --git a/web/messages/es/docs/create-vm/system-nas/index.json b/web/messages/es/docs/create-vm/system-nas/index.json
index 560ce215..6b7304ef 100644
--- a/web/messages/es/docs/create-vm/system-nas/index.json
+++ b/web/messages/es/docs/create-vm/system-nas/index.json
@@ -1,14 +1,14 @@
{
"meta": {
"title": "Crear VM: System NAS | ProxMenux Documentation",
- "description": "Crea máquinas virtuales NAS en Proxmox VE con ProxMenux. Soporta Synology DSM (loader), TrueNAS SCALE / CORE, OpenMediaVault, XigmaNAS, Rockstor y ZimaOS. Umbrel OS está disponible vía community script.",
+ "description": "Crea máquinas virtuales NAS en Proxmox VE con ProxMenux. Soporta Synology DSM (loader), TrueNAS SCALE / CORE, OpenMediaVault, XigmaNAS, Rockstor, ZimaOS y FygoOS. Umbrel OS está disponible vía community script.",
"ogTitle": "Crear VM: System NAS | ProxMenux Documentation",
- "ogDescription": "Crea máquinas virtuales NAS en Proxmox VE con ProxMenux. Soporta Synology DSM (loader), TrueNAS SCALE / CORE, OpenMediaVault, XigmaNAS, Rockstor y ZimaOS.",
+ "ogDescription": "Crea máquinas virtuales NAS en Proxmox VE con ProxMenux. Soporta Synology DSM (loader), TrueNAS SCALE / CORE, OpenMediaVault, XigmaNAS, Rockstor, ZimaOS y FygoOS.",
"ogImageAlt": "Menú System NAS de ProxMenux"
},
"header": {
"title": "Crear VM: System NAS",
- "description": "ProxMenux soporta siete sistemas operativos NAS como VMs específicas, más una ruta opcional para Umbrel OS vía community script. La mayoría de sistemas comparten el mismo flujo auto-ISO; Synology DSM usa un asistente de loader especializado.",
+ "description": "ProxMenux soporta ocho sistemas operativos NAS como VMs específicas, más una ruta opcional para Umbrel OS vía community script. La mayoría de sistemas comparten el mismo flujo auto-ISO; Synology DSM usa un asistente de loader especializado.",
"section": "Máquinas virtuales"
},
"intro": {
@@ -94,12 +94,21 @@
"fileSystem": "ext4",
"href": "/docs/create-vm/system-nas/system-nas-others#zimaos",
"flow": "dedicated"
+ },
+ {
+ "name": "FygoOS",
+ "tagline": "Edición internacional de fnOS: un NAS basado en Debian con volúmenes de almacenamiento, apps y streaming multimedia, gestionado desde su interfaz web y las apps de Fygo.",
+ "icon": "Server",
+ "base": "Debian Linux",
+ "fileSystem": "Btrfs, ext4",
+ "href": "/docs/create-vm/system-nas/system-nas-others#fygoos",
+ "flow": "auto-iso"
}
]
},
"umbrel": {
"title": "Opción de la comunidad: Umbrel OS",
- "bodyRich": "La 8ª entrada del menú NAS es Umbrel OS. Ejecuta un vm/zimaos.sh) pero sigue la misma secuencia de CPU / RAM / almacenamiento / GPU opcional."
+ "bodyRich": "Los siete sistemas comparten el mismo asistente de ProxMenux. El selector de NAS elige el instalador correspondiente (autodetectando la última versión estable para TrueNAS, OMV, XigmaNAS, Rockstor y FygoOS) y luego cede el control al configurador genérico de VM y al plan de almacenamiento. ZimaOS usa su propio script de instalador (vm/zimaos.sh) pero sigue la misma secuencia de CPU / RAM / almacenamiento / GPU opcional."
},
"config": {
"heading": "Configuración por defecto vs Avanzada",
@@ -262,6 +262,21 @@
"Arranque UEFI (OVMF)",
"Adaptador de red VirtIO para mejor throughput"
]
+ },
+ "fygoos": {
+ "id": "fygoos",
+ "title": "FygoOS",
+ "icon": "Server",
+ "officialName": "fygonas.com",
+ "officialUrl": "https://fygonas.com",
+ "description": "Edición internacional de fnOS, un NAS basado en Debian. ProxMenux descarga la última ISO de instalación publicada en fygonas.com y la monta en la VM. El instalador coloca el sistema en un disco; el espacio que queda en ese disco puede alojar volúmenes para apps y archivos. Al terminar la instalación, la consola muestra la dirección de la interfaz web, en el puerto 5666 (el puerto 80 redirige a él): al abrirla en el navegador se da nombre al equipo y se crea la cuenta de administrador.",
+ "specs": [
+ "Disco del sistema: FygoOS propone una partición de sistema de 64 GB, que puede ser menor en una VM",
+ "Instalación: Graphical Install, o Rescuing Install si la gráfica falla",
+ "Arranque UEFI (OVMF) sin claves de Secure Boot, como pide el instalador",
+ "Red: Ethernet con DHCP por defecto",
+ "Adaptador de red VirtIO para mejor throughput"
+ ]
}
},
"related": {
diff --git a/web/messages/es/docs/oci-manager/custom-image.json b/web/messages/es/docs/oci-manager/custom-image.json
index dd991851..5a9316c7 100644
--- a/web/messages/es/docs/oci-manager/custom-image.json
+++ b/web/messages/es/docs/oci-manager/custom-image.json
@@ -29,12 +29,12 @@
"table": {
"headers": ["Opción", "Qué lee"],
"rows": [
- ["Pegar su archivo Compose en la terminal", "El YAML se pega en la terminal y termina con Ctrl+D en una línea vacía."],
+ ["Pegar su archivo Compose en la terminal", "El YAML se pega en la terminal y termina con Ctrl+D."],
["Leer su archivo Compose desde un archivo de este host", "Una ruta del nodo, /root/docker-compose.yml por defecto. El archivo debe existir y ocupar como máximo 256 KiB."],
["Descargar su archivo Compose desde una dirección", "Una dirección http:// o https:// que sirva el YAML sin procesar. Se descargan como máximo 256 KiB."],
["Pegar su comando docker run en la terminal", "El comando que publica el proyecto. Se traducen puertos, entorno, volúmenes, dispositivos, capacidades, usuario, memoria compartida y el resto de opciones admitidas."],
["Solo la referencia de la imagen, sin archivo Compose", "Una referencia como ghcr.io/user/application:latest. Se consulta el registro y se conservan los metadatos OCI de la imagen."],
- ["Pegar un oci-compose en la terminal", "El JSON se pega en la terminal y termina con Ctrl+D en una línea vacía. No se traduce: se comprueba y se instala tal como está escrito."],
+ ["Pegar un oci-compose en la terminal", "El JSON se pega en la terminal y termina con Ctrl+D. No se traduce: se comprueba y se instala tal como está escrito."],
["Leer un oci-compose desde un archivo de este host", "Un archivo JSON del nodo, /root/oci-compose.json por defecto, de 2 MiB como máximo."],
["Descargar un oci-compose desde una dirección", "Una dirección http:// o https:// que sirva el archivo JSON. Se descargan como máximo 2 MiB."]
]
@@ -76,7 +76,7 @@
"steps": {
"items": [
{ "title": "Analizar", "body": "Se leen servicios, imagen, puertos, rutas, entorno, dispositivos, seguridad y healthcheck." },
- { "title": "Consultar el registro", "body": "La imagen debe existir en un registro público, y se enumeran las arquitecturas que publica." },
+ { "title": "Consultar el registro", "body": "La imagen debe existir en su registro, y se enumeran las arquitecturas que publica. Un registro privado se lee con la cuenta guardada para él." },
{ "title": "Enumerar lo que no se aplica", "body": "Se enumeran las etiquetas, las redes Docker, los ajustes de Swarm y el resto de claves que no tienen efecto en un LXC." },
{ "title": "Bloquear lo que no puede traducirse", "body": "Una clave sin equivalencia segura aparece en Lo que no puede traducirse y la instalación no continúa. Nada se descarta en silencio." },
{ "title": "Pedir los secretos", "body": "Las variables cuyo nombre corresponde a una contraseña, un token o una clave se convierten en preguntas sensibles de la instalación." }
@@ -152,6 +152,38 @@
}
]
},
+ {
+ "id": "private-registries",
+ "title": "Imágenes en registros privados",
+ "intro": "Una imagen en un registro privado, como un paquete privado de GitHub o un repositorio privado de Docker Hub, se lee con una cuenta guardada en ProxMenux.",
+ "blocks": [
+ {
+ "steps": {
+ "items": [
+ { "title": "El registro rechaza la imagen", "body": "Cuando el registro responde que la imagen necesita una cuenta, la revisión ofrece iniciar sesión en ese registro y vuelve a leer la imagen." },
+ { "title": "Iniciar sesión", "body": "Un usuario y una contraseña o un token de acceso que puedan descargar la imagen. El registro los comprueba y solo se guardan si los acepta." },
+ { "title": "Instalar y mantener al día", "body": "La instalación descarga la imagen con esa cuenta, y también las actualizaciones, Modificar, Recrear, la vigilancia y la comprobación de actualizaciones del Monitor, en cualquier nodo del clúster." }
+ ]
+ }
+ },
+ { "p": "Cuentas de registro, en el menú principal de OCI manager Apps, lista las cuentas guardadas por registro y usuario, nunca su secreto. Desde cada cuenta se puede comprobar, descargar o instalar una imagen, y actualizar o eliminar la cuenta." },
+ {
+ "list": {
+ "items": [
+ "GitHub (ghcr.io): el usuario es la cuenta de GitHub, y la contraseña un token de acceso personal con el permiso read:packages.",
+ "Docker Hub (docker.io): el usuario es la cuenta de Docker Hub, y la contraseña un token de acceso con permiso de lectura.",
+ "Otros registros, también uno con su propio puerto como registry.example.com:5000: el usuario y la contraseña o token que da ese registro."
+ ]
+ }
+ },
+ {
+ "calloutInfo": {
+ "title": "Dónde se guardan",
+ "body": "En /etc/pve/priv/proxmenux/registry-auth.json, legible solo por root, en la misma carpeta donde Proxmox guarda las contraseñas de sus almacenamientos. /etc/pve lo comparten todos los nodos del clúster, así que una cuenta añadida en un nodo se usa en todos. El backup del host lo incluye, y al desinstalar ProxMenux se elimina de todos los nodos."
+ }
+ }
+ ]
+ },
{
"id": "limits",
"title": "Definiciones que no se instalan",
@@ -159,7 +191,6 @@
{
"list": {
"items": [
- "Imágenes en registros privados: no se piden credenciales del registro.",
"Un Dockerfile sin imagen publicada: la imagen debe construirse y publicarse antes en un registro OCI.",
"Un archivo Compose con varios servicios: queda bloqueado porque describe más de una imagen. Esta opción instala un único contenedor.",
"configs, secretos externos o formatos de dispositivo que no pueden traducirse sin ambigüedad.",
diff --git a/web/messages/es/docs/oci-manager/index.json b/web/messages/es/docs/oci-manager/index.json
index aefa2ca0..5f548dbf 100644
--- a/web/messages/es/docs/oci-manager/index.json
+++ b/web/messages/es/docs/oci-manager/index.json
@@ -41,6 +41,7 @@
"Buscar aplicaciones: búsqueda por nombre en todo el catálogo.",
"Todas las aplicaciones: el catálogo completo, con el número de aplicaciones.",
"Gestionar aplicaciones OCI instaladas: actualizar, modificar, eliminar o recuperar lo instalado.",
+ "Cuentas de registro: las cuentas con las que se instalan y actualizan imágenes de registros privados.",
"Instalar una imagen que no está en el catálogo: traducción de un archivo Compose, un comando docker run o una referencia de imagen.",
"Las categorías del catálogo, cada una con su número de aplicaciones."
]
diff --git a/web/messages/es/docs/post-install/optional.json b/web/messages/es/docs/post-install/optional.json
index 0882f1ac..a2ab138a 100644
--- a/web/messages/es/docs/post-install/optional.json
+++ b/web/messages/es/docs/post-install/optional.json
@@ -119,9 +119,9 @@
"intro": "Esta opción instala y configura Figurine, una herramienta que crea banners de texto ASCII con estilo para tu terminal, mostrando tu hostname en un formato 3D atractivo visualmente.",
"doesLabel": "Qué hace:",
"doesItems": [
- "Descarga e instala Figurine v2.0.0 desde GitHub",
+ "Descarga e instala Figurine v2.1.1 desde GitHub para la arquitectura del host (AMD64, ARM64 o ARMv7)",
"Crea un mensaje de bienvenida que muestra tu hostname en ASCII art 3D al hacer login",
- "Elimina automáticamente cualquier instalación previa de Figurine si la hay",
+ "Actualiza el binario existente de Figurine tras descargar y extraer el paquete correctamente",
"Configura el mensaje de bienvenida para que se ejecute automáticamente al hacer login"
],
"practicalLabel": "Uso práctico:",