diff --git a/AppImage/messages/it/common.json b/AppImage/messages/it/common.json
index d401d2f3..d4bb755b 100644
--- a/AppImage/messages/it/common.json
+++ b/AppImage/messages/it/common.json
@@ -830,60 +830,60 @@
"temperatureUnavailableCount": "Non disponibili: {count}",
"zfs": {
"classes": {
- "normal": "dati",
- "special": "speciale",
+ "normal": "Dati",
+ "special": "Speciale",
"dedup": "Dedup",
- "log": "registro",
- "cache": "cache",
- "spare": "ricambio"
+ "log": "Log",
+ "cache": "Cache",
+ "spare": "Riserva"
},
- "poolDetails": "layout della piscina, stato dello scrubbing e integrità del dispositivo",
- "detailsUnavailable": "il layout dettagliato della piscina richiede OpenZFS 2.3 o versione successiva.",
+ "poolDetails": "Struttura del pool, stato dello scrub e stato dei dispositivi",
+ "detailsUnavailable": "La struttura dettagliata del pool richiede OpenZFS 2.3 o versione successiva.",
"status": "Stato",
"action": "Azione",
"capacity": "Capacità",
"fragmentation": "Frammentazione",
- "dedupRatio": "rapporto di deduplicazione",
- "layout": "disposizione",
- "singleDisk": "disco singolo",
- "stripe": "Striscia",
- "mirror": "Specchio",
+ "dedupRatio": "Rapporto di deduplicazione",
+ "layout": "Struttura",
+ "singleDisk": "Disco singolo",
+ "stripe": "Stripe",
+ "mirror": "Mirror",
"raidz": "RAIDZ{parity}",
"draid": "dRAID{parity}",
- "diskCountOne": "disco {count}",
- "diskCountMany": "dischi {count}",
+ "diskCountOne": "{count} disco",
+ "diskCountMany": "{count} dischi",
"errorsReported": "Errori segnalati",
"scanTitle": "Scrub / Resilver",
"scrub": "Scrub",
"resilver": "Resilver",
- "neverScrubbed": "Mai strofinato",
- "scanRunning": "testo tecnico dell'interfaccia utente per una dashboard di gestione Proxmox.Traduzione: {kind} in corso ({percent}%)",
+ "neverScrubbed": "Scrub mai eseguito",
+ "scanRunning": "{kind} in corso ({percent}%)",
"scanCanceled": "{kind} annullato",
- "scanFinished": "{kind} finito {date}",
- "started": "iniziato",
- "ended": "finito",
- "repaired": "riparato",
- "scanErrors": "errori di scansione",
- "dataErrors": "errori dati {count}",
- "noDataErrors": "nessun errore di dati noto",
- "device": "dispositivo",
- "disk": "disco",
+ "scanFinished": "{kind} terminato {date}",
+ "started": "Inizio",
+ "ended": "Fine",
+ "repaired": "Dati riparati",
+ "scanErrors": "Errori di scansione",
+ "dataErrors": "{count} errori nei dati",
+ "noDataErrors": "Nessun errore noto nei dati",
+ "device": "Dispositivo",
+ "disk": "Disco",
"state": "Stato",
- "readErrors": "leggi gli errori",
- "writeErrors": "scrivi gli errori",
- "checksumErrors": "errori di checksum",
+ "readErrors": "Errori di lettura",
+ "writeErrors": "Errori di scrittura",
+ "checksumErrors": "Errori di checksum",
"readShort": "R",
"writeShort": "W",
"checksumShort": "CK",
"slowIos": "I/O lenti",
"via": "tramite {name}",
- "totalSize": "dimensione totale",
- "fragShort": "frag."
+ "totalSize": "Dimensione totale",
+ "fragShort": "Frag."
},
- "storageController": "controller di archiviazione",
- "noController": "nessun controller rilevato",
- "diskCountOne": "disco {count}",
- "diskCountMany": "dischi {count}"
+ "storageController": "Controller storage",
+ "noController": "Nessun controller rilevato",
+ "diskCountOne": "{count} disco",
+ "diskCountMany": "{count} dischi"
},
"details": {
"temperature": {
@@ -2673,9 +2673,9 @@
"help": "Un disco escluso non viene interrogato durante i controlli pianificati, nemmeno per temperatura, SMART o modalità di alimentazione. L’apertura dei suoi dettagli SMART comporta comunque una lettura."
},
"storageDisplay": {
- "title": "visualizzazione della memoria",
- "description": "modifica la disposizione dei dischi nella pagina Archiviazione",
- "groupByController": "raggruppa i dischi fisici per controller di archiviazione"
+ "title": "Visualizzazione storage",
+ "description": "Modifica la disposizione dei dischi nella pagina Storage",
+ "groupByController": "Raggruppa i dischi fisici per controller storage"
}
},
"login": {
@@ -4162,8 +4162,8 @@
"rotationRate": "Velocità di rotazione",
"classCode": "Codice classe",
"serial": "Seriale",
- "storageController": "controller di archiviazione",
- "attachedDisks": "Dischi allegati"
+ "storageController": "Controller storage",
+ "attachedDisks": "Dischi collegati"
},
"values": {
"cores": "{count} core",
@@ -5312,7 +5312,7 @@
"login_attempts": "Tentativi di accesso",
"fail2ban": "Fail2Ban",
"proxmox_storages": "Storage Proxmox",
- "reboot_required": "riavvio richiesto"
+ "reboot_required": "Riavvio necessario"
},
"details": {
"noTemperatureSensor": "Nessun sensore di temperatura rilevato. Installa lm-sensors se l’hardware lo supporta.",
@@ -5378,7 +5378,7 @@
"failedLogins": "Tentativi di accesso non riusciti in 24 ore: {count}",
"fail2banBannedIps": "Indirizzi IP bloccati da Fail2Ban: {count} (jail: {jails})",
"uptimeDays": "Tempo di attività: {count} giorni",
- "pendingPackages": "{count} pacchetti in sospeso",
+ "pendingPackages": "Pacchetti previsti: {count} (inclusi i nuovi pacchetti)",
"updatedDaysAgo": "Ultimo aggiornamento {count} giorni fa",
"storageAvailable": "{type} disponibile",
"storageUsage": "{percent}% utilizzato",
@@ -5392,7 +5392,7 @@
"startupStorageNotFound": "Controllo storage Proxmox dopo l’avvio: {storage} non è ancora visibile sul server",
"startupStorageUnavailable": "Controllo storage Proxmox dopo l’avvio: {storage} non è ancora pronto",
"startupStorageStatus": "Controllo storage Proxmox dopo l’avvio: {storage} (stato corrente: {status})",
- "noPendingUpdates": "nessun aggiornamento in sospeso"
+ "noPendingUpdates": "Nessun aggiornamento in sospeso"
},
"time": {
"justNow": "proprio adesso",
@@ -5431,51 +5431,51 @@
"7days": "7 giorni"
},
"restart": {
- "button": "riavvia il server",
- "title": "riavviare il server {server}?",
- "impact": "il riavvio interrompe temporaneamente il server, le macchine virtuali, i contenitori e i relativi servizi.",
+ "button": "Riavvia server",
+ "title": "Riavviare il server {server}?",
+ "impact": "Il riavvio interrompe temporaneamente il server, le macchine virtuali, i container e i relativi servizi.",
"cancel": "Annulla",
- "confirm": "conferma il riavvio",
- "blocked": "il riavvio sarà disponibile al termine dell'aggiornamento dell'host.",
- "accepted": "richiesta di riavvio accettata.Verificare che il server ritorni online.",
- "unconfirmed": "non è stato possibile verificare la richiesta di riavvio.Controlla il server prima di riprovare."
+ "confirm": "Conferma riavvio",
+ "blocked": "Il riavvio sarà disponibile al termine dell’aggiornamento dell’host.",
+ "accepted": "Richiesta di riavvio accettata. Controlla che il server torni online.",
+ "unconfirmed": "Non è stato possibile verificare la richiesta di riavvio. Controlla il server prima di riprovare."
},
"versions": {
- "title": "aggiornamento ProxMenux",
- "installed": "versione installata",
- "latest": "versione disponibile",
- "lastKnown": "ultima versione disponibile conosciuta",
- "available": "aggiornamento disponibile",
+ "title": "Aggiornamento ProxMenux",
+ "installed": "Versione installata",
+ "latest": "Versione disponibile",
+ "lastKnown": "Ultima versione disponibile nota",
+ "available": "Aggiornamento disponibile",
"current": "ProxMenux è aggiornato",
- "currentVersion": "la versione {version} è aggiornata",
- "unknown": "impossibile verificare la versione disponibile",
- "unverified": "non verificato",
- "stable": "canale stabile",
- "beta": "canale Beta",
+ "currentVersion": "La versione {version} è aggiornata",
+ "unknown": "Impossibile verificare la versione disponibile",
+ "unverified": "Non verificata",
+ "stable": "Canale stabile",
+ "beta": "Canale beta",
"checked": "Ultimo controllo riuscito: {time}"
},
"hostUpdate": {
- "running": "l'aggiornamento dell'host continua anche se ti disconnetti.Riaprilo dopo aver effettuato l'accesso.",
- "finished": "l'ultimo aggiornamento dell'host è terminato.Il suo risultato è disponibile.",
- "attention": "l'aggiornamento dell'host richiede attenzione.Non è stato fermato;riconnettersi per ispezionarlo.",
- "view": "visualizza l'aggiornamento",
+ "running": "L’aggiornamento dell’host continua anche se ti disconnetti. Riaprilo dopo aver effettuato l’accesso.",
+ "finished": "L’ultimo aggiornamento dell’host è terminato. Il risultato è disponibile.",
+ "attention": "L’aggiornamento dell’host richiede attenzione. Non è stato interrotto; riconnettiti per verificarne lo stato.",
+ "view": "Visualizza aggiornamento",
"viewResult": "Visualizza il risultato",
- "hideResult": "nascondi il risultato",
- "resultTitle": "risultato dell'aggiornamento dell'host",
- "resultReadOnly": "output salvato di un aggiornamento completato.Aprendolo non viene eseguito un altro aggiornamento.",
- "resultUnavailable": "non è stato possibile caricare il risultato salvato.Non è stato avviato alcun aggiornamento.",
- "retryResult": "ricarica il risultato",
- "loadingResult": "caricamento del risultato salvato…",
- "closeResult": "chiudi risultato",
- "noReboot": "non è richiesto alcun riavvio",
- "rebootMarker": "il sistema operativo richiede un riavvio.",
- "rebootUnknown": "impossibile determinare se è necessario un riavvio.",
- "rebootKernel": "è necessario un riavvio per attivare {installed}.Attualmente in esecuzione: {running}."
+ "hideResult": "Nascondi il risultato",
+ "resultTitle": "Risultato dell’aggiornamento dell’host",
+ "resultReadOnly": "Output salvato di un aggiornamento completato. Aprirlo non avvia un altro aggiornamento.",
+ "resultUnavailable": "Non è stato possibile caricare il risultato salvato. Non è stato avviato alcun aggiornamento.",
+ "retryResult": "Ricarica il risultato",
+ "loadingResult": "Caricamento del risultato salvato…",
+ "closeResult": "Chiudi risultato",
+ "noReboot": "Nessun riavvio necessario",
+ "rebootMarker": "Il sistema operativo richiede un riavvio.",
+ "rebootUnknown": "Impossibile determinare se è necessario un riavvio.",
+ "rebootKernel": "È necessario un riavvio per attivare {installed}. Attualmente in esecuzione: {running}."
},
- "updateSystem": "aggiornamento del sistema",
- "packagePlanNote": "il piano include anche nuovi pacchetti, come un nuovo kernel.La panoramica conta solo gli aggiornamenti ai pacchetti esistenti.",
- "snapshotUnavailable": "i nuovi risultati sulla salute non sono ancora disponibili.",
- "lastKnownResults": "mostra gli ultimi risultati disponibili con l'ora di controllo originale."
+ "updateSystem": "Aggiorna sistema",
+ "packagePlanNote": "Il piano include anche nuovi pacchetti, come un nuovo kernel. La panoramica conta solo gli aggiornamenti ai pacchetti esistenti.",
+ "snapshotUnavailable": "I nuovi risultati dei controlli di integrità non sono ancora disponibili.",
+ "lastKnownResults": "Sono mostrati gli ultimi risultati disponibili con l’ora originale del controllo."
},
"profilePage": {
"loading": "Caricamento profilo…",
diff --git a/lang/it.json b/lang/it.json
index 07bdcde4..ee4877e4 100644
--- a/lang/it.json
+++ b/lang/it.json
@@ -87,7 +87,7 @@
"A host reboot is required after this change.": "Dopo questa modifica occorre riavviare l’host.",
"A host reboot is required before starting the VM. Reboot now?": "Occorre riavviare l’host prima di avviare la VM. Riavviare ora?",
"A host script is not written over a symbolic link:": "Uno script host non viene scritto su un link simbolico:",
- "A host update is already running. Reconnect to it instead of starting another.": "un aggiornamento dell'host è già in esecuzione. Riconnettiti ad esso invece di avviarne un altro.",
+ "A host update is already running. Reconnect to it instead of starting another.": "Un aggiornamento dell'host è già in esecuzione. Riconnettiti invece di avviarne un altro.",
"A job with this ID already exists.": "Esiste già un’attività con questo ID.",
"A journal already exists; review or recover it before trying again": "Esiste già un journal; esaminarlo o recuperarlo prima di riprovare",
"A keyfile is installed at:": "Un file di chiavi è installato in:",
@@ -3093,7 +3093,7 @@
"Host paths found in container configs or saved records (not targeted for removal):": "Percorsi dell'host trovati nelle configurazioni dei container o nei record salvati (non destinati alla rimozione):",
"Host permissions applied (o+rwx + default ACL) — unprivileged LXCs can read/write through bind-mounts": "Autorizzazioni host applicate (o+rwx + ACL predefinito): gli LXC non privilegiati possono leggere/scrivere tramite montaggi bind",
"Host system path": "Percorso sistema host",
- "Host update lock is unavailable.": "il blocco dell'aggiornamento dell'host non è disponibile.",
+ "Host update lock is unavailable.": "Il lock per l'aggiornamento dell'host non è disponibile.",
"Host write access confirmed.": "Accesso in scrittura dell'host confermato.",
"Hostname": "Nome host",
"Hostname or IP address clients will use for this GoToSocial instance": "Nome host o indirizzo IP che i client useranno per questa istanza di GoToSocial",
@@ -3177,7 +3177,7 @@
"Identical:": "Identica:",
"Identify candidate disk (never use system disk):": "Identifica il disco candidato (non usare mai il disco di sistema):",
"Identify persistent disk paths": "Identifica i percorsi persistenti dei dischi",
- "Identity provider for single sign-on and access control": "provider di identità per Single Sign-On e controllo degli accessi",
+ "Identity provider for single sign-on and access control": "Provider di identità per il single sign-on e il controllo degli accessi",
"If 'proxmox-ve' removal warning:": "Se compare un avviso di rimozione di 'proxmox-ve':",
"If Code 43 error appears, KVM hiding is already configured.": "Se compare l'errore Codice 43, l'occultamento KVM è già configurato.",
"If GUI does not load:": "Se la GUI non viene caricata:",
@@ -4030,7 +4030,7 @@
"Manage private image registries.\nSaved credentials let ProxMenux access your private images.": "Gestisci i registri di immagini private.\nLe credenziali salvate consentono a ProxMenux di accedere alle tue immagini private.",
"Manage registry accounts as root on the Proxmox node.": "Gestisci gli account del registro come root sul nodo Proxmox.",
"Managed disks must have backup enabled and a valid size": "I dischi gestiti devono avere il backup abilitato e una dimensione valida",
- "Managed public route include is missing": "Manca il file di configurazione delle rotte pubbliche gestite",
+ "Managed public route include is missing": "Manca la direttiva di inclusione per le rotte pubbliche gestite",
"Managed public route installation failed": "Impossibile configurare le rotte pubbliche gestite",
"Managing Nginx proxy hosts with a simple, powerful interface.": "Gestione degli host proxy Nginx tramite un'interfaccia semplice e potente.",
"Manticore Search": "Manticore Search",
@@ -4895,7 +4895,7 @@
"Open the dashboard to create a new admin account:": "Apri la dashboard per creare un nuovo account amministratore:",
"Open the page of an application in the menu": "Apri la pagina di un'applicazione nel menu",
"Open the web address and create the first account: the daemon registers by itself and starts the first scan.": "Apri l'indirizzo web e crea il primo account: il daemon si registra da solo e avvia la prima scansione.",
- "Open the web address and create the password of the akadmin user in the first-run setup.": "apri l'indirizzo web e crea la password dell'utente akadmin nella configurazione di prima esecuzione.",
+ "Open the web address and create the password of the akadmin user in the first-run setup.": "Apri l'indirizzo web e imposta la password dell'utente akadmin durante la configurazione iniziale.",
"Open-source AI-powered coding assistant": "Assistente open source per la programmazione basato sull'IA",
"Open-source UI for building and debugging multi-agent and RAG applications": "Interfaccia open source per creare ed eseguire il debug di applicazioni multiagente e RAG",
"Open-source in-memory data store.": "Archivio dati in memoria open source.",
@@ -5853,7 +5853,7 @@
"Root shell/profile config": "Configurazione shell/profilo root",
"Root user on the PVE host (default 'root'):": "Utente root sull'host PVE (default 'root'):",
"Rootfs size in GB": "Dimensione rootfs in GB",
- "Rotate and write /var/log to disk when it passes 85% of its size?": "Ruotare e scrivere /var/log su disco quando supera l'85% della sua dimensione?",
+ "Rotate and write /var/log to disk when it passes 85% of its size?": "Eseguire la rotazione dei log e scrivere /var/log su disco quando lo spazio occupato supera l'85% della capacità assegnata?",
"Rotate the recovery passphrase": "Sostituisci la passphrase di ripristino",
"Routing Information": "Informazioni di instradamento",
"Routing Table": "Tabella di instradamento",
@@ -6278,7 +6278,7 @@
"Self-hosted remote device management.": "Gestione self-hosted dei dispositivi remoti.",
"Self-hosted scheduling and booking app with a built-in admin interface and SQLite database.": "App di pianificazione e prenotazione da ospitare sul proprio server, con interfaccia di amministrazione integrata e database SQLite.",
"Self-hosted shared-expense and group-budget manager for tracking purchases and settling who owes whom.": "Gestore di spese condivise e budget di gruppo da ospitare sul proprio server, per registrare gli acquisti e calcolare chi deve cosa a chi.",
- "Self-hosted smart home video platform.": "Piattaforma video per la smart home ospitata in autonomia.",
+ "Self-hosted smart home video platform.": "Piattaforma video self-hosted per la smart home.",
"Self-hosted software development service": "Servizio di sviluppo software ospitabile sul proprio server",
"Self-hosted strength-training tracker with workout logs, programs, progress photos, and a mobile PWA.": "Tracker per l'allenamento della forza da ospitare sul proprio server, con registri degli allenamenti, programmi, foto dei progressi e PWA per dispositivi mobili.",
"Self-hosted task and project management.": "Gestione di attività e progetti sul proprio server.",
@@ -6959,7 +6959,7 @@
"The build could not be checked beforehand; continuing without that check.": "Non è stato possibile verificare la build in anticipo; si prosegue senza tale verifica.",
"The cached image does not match the current digest": "L'immagine nella cache non corrisponde al digest corrente",
"The cached image is damaged; it will be downloaded again.": "L'immagine nella cache è danneggiata; verrà scaricata nuovamente.",
- "The carried record could not be verified before the backup": "Impossibile verificare la copia del registro nel contenitore prima del backup",
+ "The carried record could not be verified before the backup": "Impossibile verificare la copia del record nel container prima del backup",
"The changes need the application installer": "Le modifiche richiedono il programma di installazione dell’applicazione",
"The character device does not exist:": "Il dispositivo a caratteri non esiste:",
"The command asks for a password that is not echoed. After creating the users, the web interface asks for a user name and a password.": "Il comando richiede una password non visualizzata durante la digitazione. Dopo la creazione degli utenti, l’interfaccia web richiede nome utente e password.",
@@ -8009,7 +8009,7 @@
"VIRTUAL MACHINE ID": "ID MACCHINA VIRTUALE",
"VLAN": "VLAN",
"VLAN tag": "Tag VLAN",
- "VLAN tag (empty = none)": "Tag VLAN (vuoto = nessuna)",
+ "VLAN tag (empty = none)": "Tag VLAN (vuoto = nessuno)",
"VLC Media Player is a free and open source cross-platform multimedia player and framework that delivers dependable performance across multiple devices.": "VLC Media Player è un lettore e framework multimediale gratuito, open source e multipiattaforma che offre prestazioni affidabili su diversi dispositivi.",
"VM": "VM",
"VM Conflict Policy": "Politica conflitti VM",
@@ -8199,7 +8199,7 @@
"Web access": "Accesso web",
"Web address of the AdGuard Home that receives the settings (e.g. http://192.168.1.3)": "Indirizzo web dell'istanza AdGuard Home che riceve le impostazioni (ad es. http://192.168.1.3)",
"Web address of the main AdGuard Home, whose settings are copied (e.g. http://192.168.1.2)": "Indirizzo web dell'istanza AdGuard Home principale, da cui vengono copiate le impostazioni (ad es. http://192.168.1.2)",
- "Web interface": "interfaccia web",
+ "Web interface": "Interfaccia web",
"Web interface for Borg Backup repositories and jobs.": "Interfaccia web per repository e job di Borg Backup.",
"Web interface for managing 3D printers.": "Interfaccia web per gestire stampanti 3D.",
"Web interface to manage devices running Tasmota firmware.": "Interfaccia web per gestire dispositivi con firmware Tasmota.",
@@ -8646,7 +8646,7 @@
"missing": "mancanti",
"mkfs.btrfs not found. Install btrfs-progs and retry.": "mkfs.btrfs non trovato. Installare btrfs-progs e riprovare.",
"more": "in più",
- "more packages; the full list is in the update log": "pacchetti in più; l'elenco completo è nel log dell'aggiornamento",
+ "more packages; the full list is in the update log": "pacchetti non visualizzati; l'elenco completo è nel log dell'aggiornamento",
"motionEye web interface": "Interfaccia web motionEye",
"mount.cifs command not found after installation.": "Comando mount.cifs non trovato dopo l'installazione.",
"mount.nfs command not found after installation.": "Comando mount.nfs non trovato dopo l'installazione.",
diff --git a/web/messages/it/docs/monitor/audit-report/reports.json b/web/messages/it/docs/monitor/audit-report/reports.json
index ec3e1d0f..f3399101 100644
--- a/web/messages/it/docs/monitor/audit-report/reports.json
+++ b/web/messages/it/docs/monitor/audit-report/reports.json
@@ -115,7 +115,7 @@
}
},
{
- "p": "In base al profilo, il documento include identità del nodo e data della valutazione, sintesi, riepilogo per area, struttura di hardware, rete e archiviazione, protezione dei guest, risultati con evidenze, fonti illeggibili e ambito e politica applicati."
+ "p": "Il documento include, secondo quanto previsto da ciascun profilo, l’identità del nodo e la data della valutazione, la sintesi dei risultati, un riepilogo per area, la struttura di hardware, rete e archiviazione, la protezione dei guest, i risultati con le relative evidenze, le fonti che non è stato possibile leggere e l’ambito e i criteri applicati."
}
]
},
diff --git a/web/messages/it/docs/oci-manager/contribute-app.json b/web/messages/it/docs/oci-manager/contribute-app.json
new file mode 100644
index 00000000..a33490a2
--- /dev/null
+++ b/web/messages/it/docs/oci-manager/contribute-app.json
@@ -0,0 +1,235 @@
+{
+ "meta": {
+ "title": "Installare un’app e proporla al catalogo | ProxMenux",
+ "description": "Istruzioni riutilizzabili per un agente: installare un’app self-hosted con OCI manager Apps, verificarla e preparare un contributo al catalogo per tutti."
+ },
+ "header": {
+ "title": "Installare un’app e proporla al catalogo",
+ "description": "Istruzioni pratiche da dare al tuo agente per installare l’app che desideri, verificarla sul tuo sistema Proxmox e preparare una voce del catalogo OCI di ProxMenux riutilizzabile da altri.",
+ "section": "OCI manager Apps"
+ },
+ "sections": [
+ {
+ "id": "purpose",
+ "title": "Una richiesta, due risultati",
+ "blocks": [
+ {
+ "p": "Usa questa guida quando vuoi che un agente installi un’applicazione self-hosted sul sistema Proxmox che scegli e la proponga per il catalogo OCI di ProxMenux. La guida si rivolge a utenti con host Proxmox, architetture CPU, sistemi di storage e hardware diversi. Non presuppone un computer o un homelab specifico."
+ },
+ {
+ "cards": {
+ "items": [
+ {
+ "icon": "server",
+ "title": "La tua app",
+ "body": "Il servizio richiesto viene installato e verificato sul sistema Proxmox che hai scelto. Questa istanza e i suoi dati vanno conservati, salvo tua richiesta di rimozione."
+ },
+ {
+ "icon": "boxes",
+ "title": "La voce del catalogo",
+ "body": "L’agente verifica l’immagine upstream, scrive il relativo oci-compose, lo testa nei limiti consentiti dal sistema disponibile e prepara una pull request per gli altri utenti di ProxMenux."
+ }
+ ]
+ }
+ },
+ {
+ "calloutWarning": {
+ "title": "Un test su un sistema non dimostra il supporto su tutti",
+ "body": "L’agente deve rilevare la versione effettiva di Proxmox, l’architettura CPU, lo storage, la rete e i dispositivi disponibili. Indica quali combinazioni sono state testate. Non dichiarare mai per deduzione il supporto di un’altra architettura, GPU, NPU, dispositivo USB o tipo di storage."
+ }
+ },
+ {
+ "p": "Una voce del catalogo non viene automaticamente indicata come verificata con un ✓ negli elenchi dell’installatore. Questo simbolo viene assegnato tramite il processo di validazione separato del progetto. Un download o un avvio del container riuscito non basta a dimostrare che l’app funziona."
+ }
+ ]
+ },
+ {
+ "id": "brief",
+ "title": "Copia queste istruzioni per il tuo agente",
+ "blocks": [
+ {
+ "p": "Sostituisci i dettagli tra parentesi quadre se li conosci. Per il resto, l’agente dovrebbe esaminare il sistema Proxmox selezionato e lo stato attuale del repository, poi segnalarti le decisioni che richiedono il tuo intervento."
+ },
+ {
+ "agentPrompt": {
+ "title": "Richiesta riutilizzabile",
+ "body": "Voglio installare [APP NAME] sul sistema Proxmox che scelgo, usando OCI manager Apps. Se l’app è adatta, voglio anche che tu prepari un contributo al catalogo OCI di ProxMenux, così che altri utenti possano installarla.\n\nProgetto upstream o immagine (se noti): [LINK OR UNKNOWN]\nSistema Proxmox da usare: [SELECTED HOST OR UNKNOWN]\nRequisiti particolari (se noti): [DATA, NETWORK, GPU/USB, HTTPS, OR NONE]\n\nSegui questi passaggi:\n1. Esamina l’host Proxmox selezionato e indica la versione di Proxmox VE, l’architettura, lo storage disponibile, le opzioni di rete e i dispositivi pertinenti. Non presupporre un’architettura o un hardware specifici.\n2. Controlla il progetto e l’immagine upstream, il catalogo ProxMenux attuale, le pull request aperte e le indicazioni recenti dei manutentori. Non aggiungere duplicati. Le applicazioni vengono proposte per il catalogo nella discussione #440 (https://github.com/MacRimi/ProxMenux/discussions/440): se l’app non è già presente, proponila indicando l’immagine, il registro in cui è pubblicata e la categoria. Il catalogo usa l’immagine pubblicata dallo sviluppatore, quando esiste; identifica con precisione chi la pubblica.\n3. Installa l’app che ho richiesto tramite OCI manager Apps. Prima di confermare, controlla l’immagine, le risorse, i percorsi dei dati, la rete e le variabili. Proteggi i servizi e i dati esistenti. Dopo i test, lascia installata l’app richiesta, salvo mia richiesta di rimozione.\n4. Verifica che il servizio risponda davvero e che l’accesso o la configurazione iniziale funzionino. Registra ciò che hai osservato; non dichiarare funzionanti caratteristiche non testate.\n5. Scrivi l’oci-compose per la voce del catalogo, seguendo oci/README.md e i file in oci/examples/, e prepara l’icona. Se l’app richiede più servizi, descrivi e testa l’intero stack con l’approccio attuale di ProxMenux; non omettere database, cache o rete interna necessari.\n6. Esegui i controlli del repository, incluso `cd oci && python3 -m unittest discover -s tests -p 'test_*.py'` come utente non privilegiato su una copia del repository, mai su un host di produzione, insieme ai controlli pertinenti su catalogo, documentazione e traduzioni offline. Correggi gli errori causati da questa modifica e ripeti i controlli.\n7. Quando è praticabile, valida la voce candidata per il catalogo usando istanze di test che puoi eliminare. Non usare l’app che voglio conservare o i suoi dati per test distruttivi di aggiornamento, ripristino o rimozione. Indica con trasparenza l’hardware non disponibile e i casi non testati.\n8. Prepara una pull request mirata con il nome dell’app, l’immagine, l’icona, una sintesi dei risultati dei test e i limiti, e allega l’oci-compose testato alla proposta nella discussione #440. Controlla tutti gli esiti CI obbligatori e i commenti dei manutentori. Non eseguire il merge della pull request.\n9. Elimina solo le istanze di test temporanee, i file temporanei e i backup di test creati per questo lavoro. Conserva l’installazione che ho richiesto, i suoi dati e tutte le istanze e i backup estranei a questo lavoro.\n\nPrima di apportare una modifica irreversibile, esporre il servizio pubblicamente o eliminare qualsiasi cosa che possa contenere i miei dati, fermati e chiedimi conferma. Non inserire password, token o configurazioni private nel repository o nella pull request. Concludi con l’URL dell’app o i dettagli di connessione, il link alla pull request, i controlli osservati, le risorse eliminate e gli eventuali limiti rimasti."
+ }
+ },
+ {
+ "calloutTip": {
+ "title": "Mantieni riservate le credenziali",
+ "body": "Inserisci le credenziali del registro e i segreti dell’app solo nell’interfaccia locale prevista. Nel catalogo, nelle schermate, nei log e nella pull request i valori devono essere oscurati: mai password o token reali."
+ }
+ }
+ ]
+ },
+ {
+ "id": "research",
+ "title": "Cosa deve verificare prima l’agente",
+ "blocks": [
+ {
+ "steps": {
+ "items": [
+ {
+ "title": "Controlla l’host scelto",
+ "body": "Registra la versione di Proxmox VE e l’architettura dell’host. Individua lo storage disponibile, i bridge, l’assegnazione degli indirizzi e gli eventuali dispositivi GPU, NPU o USB pertinenti. Controlla nel registro il manifest dell’immagine dell’app per quell’architettura. Un manifest per amd64 non dimostra il supporto di arm64, né viceversa."
+ },
+ {
+ "title": "Controlla l’app e il catalogo",
+ "body": "Leggi la documentazione e l’esempio di installazione dello sviluppatore. Controlla le proposte per il catalogo OCI, la roadmap, il catalogo e le pull request aperte per individuare duplicati o decisioni progettuali attuali; prima di procedere, proponi l’app nella discussione dedicata. Il catalogo usa l’immagine pubblicata dallo sviluppatore, quando esiste; per un’immagine della community, verifica e indica chi la pubblica."
+ },
+ {
+ "title": "Comprendi l’intera configurazione di installazione",
+ "body": "Registra immagini, comandi, porte, variabili d’ambiente, volumi, utente e permessi, controlli di stato, comportamento al primo avvio, credenziali, dipendenze e hardware opzionale. Per un’app con più servizi, includi database, cache e rete interna quando necessari. Segnala i comportamenti di Compose privi di un equivalente sicuro in Proxmox, invece di ometterli senza avvisare."
+ },
+ {
+ "title": "Risolvi il riferimento all’immagine",
+ "body": "Usa la procedura Skopeo di OCI manager Apps per risolvere il riferimento all’immagine, scaricarla e verificarne i layer. Se la procedura fallisce, individua la causa reale: credenziali, immagine o tag mancanti, architettura non supportata, problemi di rete o limite di richieste del registro."
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "id": "install",
+ "title": "Installa e verifica l’app richiesta",
+ "blocks": [
+ {
+ "list": {
+ "items": [
+ "Usa OCI manager Apps per l’installazione. Quando serve, scegli un VMID di test libero e imposta storage, bridge, indirizzo e risorse in modo adeguato all’host selezionato e alla richiesta dell’utente.",
+ "Prima di confermare, controlla l’immagine, le risorse, i percorsi persistenti, la rete e le variabili. Mantieni nascosti i segreti. Per l’installazione avanzata, confronta le scelte relative a VMID, CPU, RAM, storage, bridge, variabili e associazioni dei dispositivi supportati con la configurazione risultante in `pct config`.",
+ "Usa la modalità di gestione delle credenziali effettivamente prevista dall’app: inserite dall’utente, generate dall’installatore, mostrate al primo avvio o indicate nella documentazione dell’immagine. Verifica che funzionino e oscurale nelle prove raccolte.",
+ "Verifica il servizio reale. Per un’app web, apri l’URL mostrato e controlla che la pagina o la schermata di accesso si carichi. Per un servizio non web, verifica il protocollo e la porta previsti. Usa HTTPS o un reverse proxy solo quando serve per il test o l’installazione richiesti.",
+ "Quando l’installatore offre queste opzioni, testa sia i volumi gestiti da Proxmox sia le directory dell’host. Crea dati nell’app e verifica che rimangano nella posizione prevista con i permessi richiesti.",
+ "Riavvia l’app o lo stack e verifica che torni operativo con i suoi dati e credenziali funzionanti. Testa solo l’hardware effettivamente disponibile; in caso contrario, indica il dispositivo mancante e lascia quell’integrazione non verificata."
+ ]
+ }
+ },
+ {
+ "calloutDanger": {
+ "title": "Proteggi l’installazione che l’utente vuole conservare",
+ "body": "Il ripristino di un backup, il rollback in caso di immagine non funzionante e la rimozione possono essere distruttivi. Esegui questi controlli solo su istanze di test che puoi eliminare, oppure dopo aver definito un piano esplicito che protegga l’installazione richiesta e i suoi dati. Non rimuovere mai l’app richiesta dall’utente come normale pulizia finale."
+ }
+ }
+ ]
+ },
+ {
+ "id": "catalog",
+ "title": "Prepara e valida la voce del catalogo",
+ "blocks": [
+ {
+ "list": {
+ "items": [
+ "Segui la guida oci-compose in oci/README.md e i file in `oci/examples/`. Aggiungi un ID univoco, la categoria corretta, l’attribuzione al progetto upstream, i link alla documentazione, le architetture supportate, il riferimento corretto all’immagine e l’icona dell’app. Verifica che l’icona corrisponda al prodotto giusto e venga visualizzata correttamente.",
+ "Conserva il comportamento di avvio, le porte, l’ambiente e i percorsi persistenti dell’immagine. Contrassegna i segreti come dati sensibili. Imposta proprietario e permessi dei dati in base a informazioni verificate del progetto upstream, non a supposizioni.",
+ "Usa valori predefiniti prudenti e scegli consapevolmente quali impostazioni opzionali rendere disponibili. Dichiara il supporto di GPU, NPU, USB o di un’architettura solo quando la procedura attuale di ProxMenux lo consente e il requisito è documentato.",
+ "Descrivi ogni servizio necessario a un’app con più servizi e conserva dipendenze, rete privata, controlli di stato, percorsi persistenti e operazioni coordinate. Mantieni separati uno stack complesso o una modifica al motore condiviso quando questo permette ai manutentori una revisione più sicura.",
+ "Esegui l’intera suite del motore OCI come utente non privilegiato su una copia del repository, anche se la CI non la esegue. Esegui i controlli pertinenti su schema, catalogo, documentazione, i18n e record di validazione. Non modificare mai a mano la pagina generata `oci/VALIDATION.md`: viene rigenerata da `python3 .github/scripts/oci_validation.py render`."
+ ]
+ }
+ },
+ {
+ "shell": {
+ "code": "cd oci && python3 -m unittest discover -s tests -p 'test_*.py'"
+ }
+ }
+ ]
+ },
+ {
+ "id": "lifecycle",
+ "title": "Verifiche del ciclo di vita su un’istanza di test eliminabile",
+ "blocks": [
+ {
+ "p": "Usa un’istanza di test separata per i controlli che aggiornano, ripristinano o rimuovono un’app. Prova le opzioni realmente supportate dall’app e disponibili sull’host di test. Per ogni riga, indica PASS, FAIL, BLOCKED, NOT APPLICABLE o NOT TESTED e includi prove osservabili."
+ },
+ {
+ "table": {
+ "headers": [
+ "Verifica",
+ "Criterio di superamento"
+ ],
+ "rows": [
+ [
+ "Download dell’immagine",
+ "Skopeo risolve il riferimento previsto e ne verifica i layer. In caso di errore, la causa viene identificata."
+ ],
+ [
+ "Installazione predefinita",
+ "Il riepilogo di conferma è corretto; l’LXC o l’intero stack si avvia, ha connettività di rete e supera i controlli del primo avvio."
+ ],
+ [
+ "Impostazioni avanzate",
+ "Le scelte rappresentative per VMID, CPU, RAM, storage, bridge, variabili e dispositivi supportati corrispondono alla configurazione Proxmox salvata."
+ ],
+ [
+ "Credenziali e risposta del servizio",
+ "Le credenziali mostrate o configurate funzionano. La pagina web o la schermata di accesso si carica, oppure il servizio non web previsto risponde."
+ ],
+ [
+ "Dati persistenti",
+ "Le opzioni di storage gestito e directory dell’host si comportano come documentato; i dati creati rimangono dopo il riavvio con i permessi corretti."
+ ],
+ [
+ "Riavvio",
+ "L’app o lo stack si avvia automaticamente e conserva dati e configurazione."
+ ],
+ [
+ "Backup e ripristino",
+ "Un’istanza di test eliminabile, ripristinata da un backup Proxmox con un VMID diverso, si avvia, risponde e compare in «Gestisci le applicazioni OCI installate»."
+ ],
+ [
+ "Aggiornamento e rollback",
+ "Un aggiornamento dell’immagine conserva dati, credenziali, rete, dispositivi e impostazioni Proxmox. Testa il rollback se puoi farlo in sicurezza; altrimenti indicalo come NOT TESTED."
+ ],
+ [
+ "Modifica",
+ "Un’impostazione supportata viene modificata, le altre impostazioni restano invariate e l’app continua a rispondere. Le modifiche che non riguardano l’immagine non dovrebbero causarne un nuovo download o la ricreazione dell’app senza necessità."
+ ],
+ [
+ "Rimozione",
+ "«Gestisci le applicazioni OCI installate» rimuove i container LXC di test, i dischi e i record. Le directory dei dati sull’host rimangono. Elimina solo i backup creati per i VMID riservati ai test temporanei."
+ ]
+ ]
+ }
+ },
+ {
+ "calloutInfo": {
+ "title": "Indica chiaramente i limiti hardware",
+ "body": "Se l’interfaccia dell’app si avvia ma manca una telecamera, un coordinatore, una GPU, una NPU o un dispositivo USB opzionale, il controllo dell’interfaccia può riuscire mentre quell’integrazione hardware rimane NOT TESTED. Specifica il dispositivo e le capacità dell’host necessari."
+ }
+ }
+ ]
+ },
+ {
+ "id": "pr",
+ "title": "Prepara la pull request e consegna il risultato",
+ "blocks": [
+ {
+ "steps": {
+ "items": [
+ {
+ "title": "Mostra cosa è stato davvero testato",
+ "body": "Includi nome dell’app, ID del catalogo, immagine e digest, versione di Proxmox VE, architettura, modalità di installazione, storage, rete, profilo dei dispositivi e la verifica effettiva della risposta del servizio. Riassumi gli esiti del ciclo di vita ed elenca i casi bloccati, non disponibili e non testati. Includi l’icona e il risultato dei test del motore OCI."
+ },
+ {
+ "title": "Controlla i riscontri ricevuti",
+ "body": "Dopo aver aperto la pull request, controlla ogni verifica CI obbligatoria sul suo commit corrente. Leggi i commenti e le revisioni dei manutentori, apporta le modifiche richieste e ripeti i controlli interessati. Non dichiarare pronta la PR finché un controllo obbligatorio fallisce o una modifica richiesta resta irrisolta. Non eseguire il merge."
+ },
+ {
+ "title": "Elimina solo le risorse temporanee",
+ "body": "Elimina le istanze di test temporanee, i file e i backup di test creati per questo lavoro. Conserva l’istanza dell’app che l’utente ha chiesto di mantenere, i suoi dati e tutte le istanze e i backup estranei al lavoro. Verifica la pulizia confrontandola con i VMID di test registrati per questa esecuzione."
+ },
+ {
+ "title": "Riepiloga la consegna",
+ "body": "Fornisci all’utente l’indirizzo dell’app funzionante o i dettagli di connessione, il link alla pull request, i controlli e gli esiti CI effettivamente osservati, le risorse temporanee eliminate e gli eventuali limiti. Non includere mai segreti nella pull request o nel resoconto finale."
+ }
+ ]
+ }
+ }
+ ]
+ }
+ ]
+}
diff --git a/web/messages/it/docs/oci-manager/custom-image.json b/web/messages/it/docs/oci-manager/custom-image.json
index 03777ba6..1daebad0 100644
--- a/web/messages/it/docs/oci-manager/custom-image.json
+++ b/web/messages/it/docs/oci-manager/custom-image.json
@@ -265,7 +265,7 @@
"list": {
"items": [
"Un Dockerfile senza immagine pubblicata: prima occorre creare l’immagine e pubblicarla in un registro OCI.",
- "I file Compose con più servizi usano un LXC nativo per servizio. Ogni applicazione web deve pubblicare la propria porta; i volumi con la stessa origine possono condividere una directory dell’host. Le opzioni non supportate, le reti esterne e i servizi senza un controllo di integrità supportato continuano a bloccare l’installazione.",
+ "I file Compose con più servizi usano un LXC nativo per servizio. Ogni applicazione web deve avere un proprio endpoint pubblicato; i volumi con la stessa origine possono condividere una directory dell’host. Le opzioni non supportate, le reti esterne e i servizi senza un controllo di integrità supportato continuano a bloccare l’installazione.",
"configs, segreti esterni o formati di dispositivi che non possono essere adattati senza ambiguità.",
"Sostituzioni della shell come $(command): occorre inserire direttamente il valore risultante.",
"Opzioni docker run non riconosciute e --env-file: usa invece un file Compose con valori espliciti."
diff --git a/web/messages/it/docs/oci-manager/index.json b/web/messages/it/docs/oci-manager/index.json
index 365c8c30..0ef23404 100644
--- a/web/messages/it/docs/oci-manager/index.json
+++ b/web/messages/it/docs/oci-manager/index.json
@@ -197,7 +197,7 @@
{
"label": "Installare un’app e proporla al catalogo",
"href": "/docs/oci-manager/contribute-app",
- "tail": "istruzioni per l’agente, verifiche e pull request."
+ "tail": "Istruzioni per l’agente, verifiche dell’installazione e pull request per il catalogo."
},
{
"label": "Installazione, aggiornamento e modifica",
diff --git a/web/messages/it/docs/oci-manager/lifecycle.json b/web/messages/it/docs/oci-manager/lifecycle.json
index ab32ca86..cba2e206 100644
--- a/web/messages/it/docs/oci-manager/lifecycle.json
+++ b/web/messages/it/docs/oci-manager/lifecycle.json
@@ -116,10 +116,10 @@
"items": [
"Se il registro restituisce ancora il digest installato, non viene scaricato nulla e l’istanza rimane invariata.",
"La nuova immagine viene verificata livello per livello prima di arrestare il CT. Un download danneggiato viene ripetuto una seconda volta; un’immagine già nella cache che non supera la verifica viene scaricata di nuovo.",
- "Le impostazioni modificate in Proxmox VE dopo l’installazione (memoria, swap, core, limite e priorità della CPU, avvio con il nodo) vengono conservate e incluse nel nuovo contratto.",
+ "Le impostazioni modificate in Proxmox VE dopo l’installazione vengono conservate e incluse nel nuovo contratto: variabili, memoria, swap, core, limite e priorità della CPU, avvio con il nodo, nome host, comando di avvio, opzioni di rete, tag VLAN, DNS, fuso orario, funzionalità, protezione, dimensioni dei dischi e righe lxc.* aggiunte. Una variabile rimossa in Proxmox VE viene eliminata dal contratto e, se l’immagine la definisce, il nuovo container usa il valore dell’immagine. Un disco o un dispositivo aggiunto in Proxmox VE viene salvato nel contratto: il menu lo mostra per la revisione, mentre un aggiornamento pianificato lo accetta.",
"L'interfaccia LAN che la suite Arr e le applicazioni multi-container aggiungono (net1) e l'ordine di avvio (startup) sono restituiti al nuovo contenitore come sono.",
"Una directory dell’host viene riconosciuta dal suo percorso e dal filesystem su cui si trova, non dal nome di dispositivo che l’host assegna al suo disco, quindi un disco USB o di rete che ricompare con un altro nome resta la stessa directory. Quando il suo disco non è collegato, l’aggiornamento si interrompe prima che il CT venga arrestato e indica la directory mancante.",
- "Qualsiasi altra differenza tra il CT e il suo contratto interrompe l’aggiornamento prima che il CT venga arrestato."
+ "Una modifica che non può essere conservata, come la rimozione di un volume dati, un’architettura diversa o uno snapshot creato dall’utente, interrompe l’aggiornamento prima che il CT venga arrestato."
]
}
},
diff --git a/web/messages/it/docs/oci-manager/monitor.json b/web/messages/it/docs/oci-manager/monitor.json
index ca107f84..7ab6b570 100644
--- a/web/messages/it/docs/oci-manager/monitor.json
+++ b/web/messages/it/docs/oci-manager/monitor.json
@@ -141,7 +141,7 @@
],
[
"Aggiornamenti pianificati",
- "L’immagine viene aggiornata all’ora scelta solo se il registro ne pubblica una nuova, con la possibilità di attendere che abbia 1, 3, 7 o 14 giorni. Un container modificato al di fuori di ProxMenux viene saltato e segnalato."
+ "L’immagine viene aggiornata all’ora scelta solo se il registro ne pubblica una nuova, con la possibilità di attendere che abbia 1, 3, 7 o 14 giorni. Le impostazioni modificate in Proxmox vengono conservate."
]
]
}
diff --git a/web/messages/it/docs/oci-manager/storage-network.json b/web/messages/it/docs/oci-manager/storage-network.json
index e069c1ef..8d84f9fb 100644
--- a/web/messages/it/docs/oci-manager/storage-network.json
+++ b/web/messages/it/docs/oci-manager/storage-network.json
@@ -223,6 +223,9 @@
]
}
},
+ {
+ "p": "L’interfaccia di accesso può avere un tag VLAN. L’installazione avanzata lo richiede insieme all’indirizzo; per un’applicazione con un solo container, Modifica consente di cambiarlo o rimuoverlo. Un tag impostato in Proxmox viene conservato. Se è presente un tag, ProxMenux verifica l’applicazione dall’interno del suo container, quindi l’host non deve avere accesso a quella VLAN."
+ },
{
"flow": {
"nodes": [
diff --git a/web/messages/it/docs/post-install/automated.json b/web/messages/it/docs/post-install/automated.json
index 65ee6916..77a068f0 100644
--- a/web/messages/it/docs/post-install/automated.json
+++ b/web/messages/it/docs/post-install/automated.json
@@ -109,7 +109,7 @@
}
],
"hardwareTitle": "Impostazioni predefinite in base all’hardware",
- "hardwareBody": "Lo script legge l'hardware dell'host prima di applicare le impostazioni. Log2RAM è installato solo su dischi SSD/root NVMe per impostazione predefinita (richiede se il rilevamento indica diversamente). La dimensione del disco ram Log2RAM viene scelta dal totale RAM (≤ 8 GB → 128M, ≤ 16 GB → 256M, '>' 16 GB → 512M). Con Log2RAM attivo, il journal resta su disco con un proprio limite.",
+ "hardwareBody": "Lo script rileva l’hardware dell’host prima di applicare le impostazioni. Per impostazione predefinita, Log2RAM viene installato solo se il disco di sistema è SSD o NVMe (negli altri casi viene chiesta conferma). La dimensione del ramdisk di Log2RAM viene scelta in base alla RAM totale (≤ 8 GB → 128M, ≤ 16 GB → 256M, '>' 16 GB → 512M). Con Log2RAM attivo, il journal resta su disco con un proprio limite.",
"upgrade": {
"heading": "Aggiorna gli elenchi dei pacchetti e il sistema",
"intro": "Il primo passo del pacchetto automatizzato è l'aggiornamento Proxmox. La guida di aggiornamento di Proxmox per un host in esecuzione (nella stessa versione principale) è quella di eseguire:",
diff --git a/web/messages/it/docs/post-install/optional.json b/web/messages/it/docs/post-install/optional.json
index 94d471c7..67fc8cf0 100644
--- a/web/messages/it/docs/post-install/optional.json
+++ b/web/messages/it/docs/post-install/optional.json
@@ -140,13 +140,13 @@
"doesLabel": "Cosa fa ProxMenux:",
"doesItems": [
"Rileva se il disco root è SSD/NVMe leggendo /sys/block/<dev>/queue/rotational. Su un disco rotazionale il flusso automatizzato chiede prima di installare.",
- "Installa Log2RAM 1.7.2 dal progetto ufficiale, verificando che il download sia quella versione, e lascia il suo codice invariato. L'email di errore viene disattivata con NOTIFICATION=false, poiché Proxmox VE non include un comando mail.",
+ "Installa Log2RAM 1.7.2 dal progetto ufficiale, verificando che il download sia quella versione, e lascia il suo codice invariato. L’email di errore viene disattivata con NOTIFICATION=false, poiché Proxmox VE non include il comando mail per impostazione predefinita.",
"Dimensiona il ramdisk in base alla RAM dell’host: ≤ 8 GB → 128M, ≤ 16 GB → 256M, > 16 GB → 512M. Scrive il valore in SIZE= di /etc/log2ram.conf.",
"Mantiene su disco il journal (/var/log/journal), i log delle attività di Proxmox VE (/var/log/pve) e, se installato, quelli di Proxmox Backup Server (/var/log/proxmox-backup), in /var/hdd.journal, /var/hdd.pve e /var/hdd.proxmox-backup. Ogni percorso abituale diventa un collegamento alla sua cartella su disco. Lo spostamento avviene all'avvio, prima che parta Log2RAM.",
- "Scrive il ramdisk su disco con il timer di Log2RAM ogni 1h / 3h / 6h secondo la stessa fascia di RAM, e svuota la cache del disco dopo ogni scrittura, così una sincronizzazione completata sopravvive a un'interruzione di corrente.",
+ "Scrive il ramdisk su disco con il timer di Log2RAM ogni 1h / 3h / 6h secondo la stessa fascia di RAM e, dopo ogni scrittura, sincronizza i dati in cache con il disco, così una sincronizzazione completata sopravvive a un’interruzione di corrente.",
"Installa un controllo in /etc/cron.d/log2ram-auto-sync eseguito ogni 10 minuti. Quando /var/log supera l'85% del ramdisk, ruota i log, comprime quelli appena ruotati e scrive tutto su disco. Nessun log viene svuotato.",
"Mantiene il journal di systemd su disco con un limite di 1 GB, in /etc/systemd/journald.conf.d/proxmenux-log2ram.conf. Su un host con Proxmox Backup Server aggiunge /etc/logrotate.d/proxmox-backup-api (rotazione 20 MB × 3) per i suoi log delle API.",
- "Si registra in installed_tools.json per poter essere annullato da Disinstalla ottimizzazioni. Un aggiornamento da una versione precedente mantiene la dimensione e l'intervallo di sincronizzazione e sposta il journal su disco al successivo avvio."
+ "Si registra in installed_tools.json per consentirne la rimozione da Disinstalla ottimizzazioni. Un aggiornamento da una versione precedente mantiene la dimensione e l’intervallo di sincronizzazione e sposta il journal su disco al successivo avvio."
],
"howUseLabel": "Come usare:",
"howUseBody": "Nel flusso automatico Log2RAM si installa senza intervento quando rileva un disco di sistema SSD/NVMe. Il flusso personalizzabile chiede la dimensione, l'intervallo di sincronizzazione e se attivare il controllo. Le modifiche hanno effetto al successivo avvio.",