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 48230b32..f5b7790c 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:", @@ -3092,7 +3092,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", @@ -3176,7 +3176,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:", @@ -4029,7 +4029,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", @@ -4893,7 +4893,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.", @@ -5851,7 +5851,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", @@ -6274,7 +6274,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.", @@ -6954,7 +6954,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.", @@ -8003,7 +8003,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", @@ -8193,7 +8193,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.", @@ -8640,7 +8640,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.",