mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2026-11-02 10:52:22 +00:00
fix(i18n): review Italian translations for 1.2.8
This commit is contained in:
@@ -830,60 +830,60 @@
|
|||||||
"temperatureUnavailableCount": "Non disponibili: {count}",
|
"temperatureUnavailableCount": "Non disponibili: {count}",
|
||||||
"zfs": {
|
"zfs": {
|
||||||
"classes": {
|
"classes": {
|
||||||
"normal": "dati",
|
"normal": "Dati",
|
||||||
"special": "speciale",
|
"special": "Speciale",
|
||||||
"dedup": "Dedup",
|
"dedup": "Dedup",
|
||||||
"log": "registro",
|
"log": "Log",
|
||||||
"cache": "cache",
|
"cache": "Cache",
|
||||||
"spare": "ricambio"
|
"spare": "Riserva"
|
||||||
},
|
},
|
||||||
"poolDetails": "layout della piscina, stato dello scrubbing e integrità del dispositivo",
|
"poolDetails": "Struttura del pool, stato dello scrub e stato dei dispositivi",
|
||||||
"detailsUnavailable": "il layout dettagliato della piscina richiede OpenZFS 2.3 o versione successiva.",
|
"detailsUnavailable": "La struttura dettagliata del pool richiede OpenZFS 2.3 o versione successiva.",
|
||||||
"status": "Stato",
|
"status": "Stato",
|
||||||
"action": "Azione",
|
"action": "Azione",
|
||||||
"capacity": "Capacità",
|
"capacity": "Capacità",
|
||||||
"fragmentation": "Frammentazione",
|
"fragmentation": "Frammentazione",
|
||||||
"dedupRatio": "rapporto di deduplicazione",
|
"dedupRatio": "Rapporto di deduplicazione",
|
||||||
"layout": "disposizione",
|
"layout": "Struttura",
|
||||||
"singleDisk": "disco singolo",
|
"singleDisk": "Disco singolo",
|
||||||
"stripe": "Striscia",
|
"stripe": "Stripe",
|
||||||
"mirror": "Specchio",
|
"mirror": "Mirror",
|
||||||
"raidz": "RAIDZ{parity}",
|
"raidz": "RAIDZ{parity}",
|
||||||
"draid": "dRAID{parity}",
|
"draid": "dRAID{parity}",
|
||||||
"diskCountOne": "disco {count}",
|
"diskCountOne": "{count} disco",
|
||||||
"diskCountMany": "dischi {count}",
|
"diskCountMany": "{count} dischi",
|
||||||
"errorsReported": "Errori segnalati",
|
"errorsReported": "Errori segnalati",
|
||||||
"scanTitle": "Scrub / Resilver",
|
"scanTitle": "Scrub / Resilver",
|
||||||
"scrub": "Scrub",
|
"scrub": "Scrub",
|
||||||
"resilver": "Resilver",
|
"resilver": "Resilver",
|
||||||
"neverScrubbed": "Mai strofinato",
|
"neverScrubbed": "Scrub mai eseguito",
|
||||||
"scanRunning": "testo tecnico dell'interfaccia utente per una dashboard di gestione Proxmox.Traduzione: {kind} in corso ({percent}%)",
|
"scanRunning": "{kind} in corso ({percent}%)",
|
||||||
"scanCanceled": "{kind} annullato",
|
"scanCanceled": "{kind} annullato",
|
||||||
"scanFinished": "{kind} finito {date}",
|
"scanFinished": "{kind} terminato {date}",
|
||||||
"started": "iniziato",
|
"started": "Inizio",
|
||||||
"ended": "finito",
|
"ended": "Fine",
|
||||||
"repaired": "riparato",
|
"repaired": "Dati riparati",
|
||||||
"scanErrors": "errori di scansione",
|
"scanErrors": "Errori di scansione",
|
||||||
"dataErrors": "errori dati {count}",
|
"dataErrors": "{count} errori nei dati",
|
||||||
"noDataErrors": "nessun errore di dati noto",
|
"noDataErrors": "Nessun errore noto nei dati",
|
||||||
"device": "dispositivo",
|
"device": "Dispositivo",
|
||||||
"disk": "disco",
|
"disk": "Disco",
|
||||||
"state": "Stato",
|
"state": "Stato",
|
||||||
"readErrors": "leggi gli errori",
|
"readErrors": "Errori di lettura",
|
||||||
"writeErrors": "scrivi gli errori",
|
"writeErrors": "Errori di scrittura",
|
||||||
"checksumErrors": "errori di checksum",
|
"checksumErrors": "Errori di checksum",
|
||||||
"readShort": "R",
|
"readShort": "R",
|
||||||
"writeShort": "W",
|
"writeShort": "W",
|
||||||
"checksumShort": "CK",
|
"checksumShort": "CK",
|
||||||
"slowIos": "I/O lenti",
|
"slowIos": "I/O lenti",
|
||||||
"via": "tramite {name}",
|
"via": "tramite {name}",
|
||||||
"totalSize": "dimensione totale",
|
"totalSize": "Dimensione totale",
|
||||||
"fragShort": "frag."
|
"fragShort": "Frag."
|
||||||
},
|
},
|
||||||
"storageController": "controller di archiviazione",
|
"storageController": "Controller storage",
|
||||||
"noController": "nessun controller rilevato",
|
"noController": "Nessun controller rilevato",
|
||||||
"diskCountOne": "disco {count}",
|
"diskCountOne": "{count} disco",
|
||||||
"diskCountMany": "dischi {count}"
|
"diskCountMany": "{count} dischi"
|
||||||
},
|
},
|
||||||
"details": {
|
"details": {
|
||||||
"temperature": {
|
"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."
|
"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": {
|
"storageDisplay": {
|
||||||
"title": "visualizzazione della memoria",
|
"title": "Visualizzazione storage",
|
||||||
"description": "modifica la disposizione dei dischi nella pagina Archiviazione",
|
"description": "Modifica la disposizione dei dischi nella pagina Storage",
|
||||||
"groupByController": "raggruppa i dischi fisici per controller di archiviazione"
|
"groupByController": "Raggruppa i dischi fisici per controller storage"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"login": {
|
"login": {
|
||||||
@@ -4162,8 +4162,8 @@
|
|||||||
"rotationRate": "Velocità di rotazione",
|
"rotationRate": "Velocità di rotazione",
|
||||||
"classCode": "Codice classe",
|
"classCode": "Codice classe",
|
||||||
"serial": "Seriale",
|
"serial": "Seriale",
|
||||||
"storageController": "controller di archiviazione",
|
"storageController": "Controller storage",
|
||||||
"attachedDisks": "Dischi allegati"
|
"attachedDisks": "Dischi collegati"
|
||||||
},
|
},
|
||||||
"values": {
|
"values": {
|
||||||
"cores": "{count} core",
|
"cores": "{count} core",
|
||||||
@@ -5312,7 +5312,7 @@
|
|||||||
"login_attempts": "Tentativi di accesso",
|
"login_attempts": "Tentativi di accesso",
|
||||||
"fail2ban": "Fail2Ban",
|
"fail2ban": "Fail2Ban",
|
||||||
"proxmox_storages": "Storage Proxmox",
|
"proxmox_storages": "Storage Proxmox",
|
||||||
"reboot_required": "riavvio richiesto"
|
"reboot_required": "Riavvio necessario"
|
||||||
},
|
},
|
||||||
"details": {
|
"details": {
|
||||||
"noTemperatureSensor": "Nessun sensore di temperatura rilevato. Installa lm-sensors se l’hardware lo supporta.",
|
"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}",
|
"failedLogins": "Tentativi di accesso non riusciti in 24 ore: {count}",
|
||||||
"fail2banBannedIps": "Indirizzi IP bloccati da Fail2Ban: {count} (jail: {jails})",
|
"fail2banBannedIps": "Indirizzi IP bloccati da Fail2Ban: {count} (jail: {jails})",
|
||||||
"uptimeDays": "Tempo di attività: {count} giorni",
|
"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",
|
"updatedDaysAgo": "Ultimo aggiornamento {count} giorni fa",
|
||||||
"storageAvailable": "{type} disponibile",
|
"storageAvailable": "{type} disponibile",
|
||||||
"storageUsage": "{percent}% utilizzato",
|
"storageUsage": "{percent}% utilizzato",
|
||||||
@@ -5392,7 +5392,7 @@
|
|||||||
"startupStorageNotFound": "Controllo storage Proxmox dopo l’avvio: {storage} non è ancora visibile sul server",
|
"startupStorageNotFound": "Controllo storage Proxmox dopo l’avvio: {storage} non è ancora visibile sul server",
|
||||||
"startupStorageUnavailable": "Controllo storage Proxmox dopo l’avvio: {storage} non è ancora pronto",
|
"startupStorageUnavailable": "Controllo storage Proxmox dopo l’avvio: {storage} non è ancora pronto",
|
||||||
"startupStorageStatus": "Controllo storage Proxmox dopo l’avvio: {storage} (stato corrente: {status})",
|
"startupStorageStatus": "Controllo storage Proxmox dopo l’avvio: {storage} (stato corrente: {status})",
|
||||||
"noPendingUpdates": "nessun aggiornamento in sospeso"
|
"noPendingUpdates": "Nessun aggiornamento in sospeso"
|
||||||
},
|
},
|
||||||
"time": {
|
"time": {
|
||||||
"justNow": "proprio adesso",
|
"justNow": "proprio adesso",
|
||||||
@@ -5431,51 +5431,51 @@
|
|||||||
"7days": "7 giorni"
|
"7days": "7 giorni"
|
||||||
},
|
},
|
||||||
"restart": {
|
"restart": {
|
||||||
"button": "riavvia il server",
|
"button": "Riavvia server",
|
||||||
"title": "riavviare il server {server}?",
|
"title": "Riavviare il server {server}?",
|
||||||
"impact": "il riavvio interrompe temporaneamente il server, le macchine virtuali, i contenitori e i relativi servizi.",
|
"impact": "Il riavvio interrompe temporaneamente il server, le macchine virtuali, i container e i relativi servizi.",
|
||||||
"cancel": "Annulla",
|
"cancel": "Annulla",
|
||||||
"confirm": "conferma il riavvio",
|
"confirm": "Conferma riavvio",
|
||||||
"blocked": "il riavvio sarà disponibile al termine dell'aggiornamento dell'host.",
|
"blocked": "Il riavvio sarà disponibile al termine dell’aggiornamento dell’host.",
|
||||||
"accepted": "richiesta di riavvio accettata.Verificare che il server ritorni online.",
|
"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."
|
"unconfirmed": "Non è stato possibile verificare la richiesta di riavvio. Controlla il server prima di riprovare."
|
||||||
},
|
},
|
||||||
"versions": {
|
"versions": {
|
||||||
"title": "aggiornamento ProxMenux",
|
"title": "Aggiornamento ProxMenux",
|
||||||
"installed": "versione installata",
|
"installed": "Versione installata",
|
||||||
"latest": "versione disponibile",
|
"latest": "Versione disponibile",
|
||||||
"lastKnown": "ultima versione disponibile conosciuta",
|
"lastKnown": "Ultima versione disponibile nota",
|
||||||
"available": "aggiornamento disponibile",
|
"available": "Aggiornamento disponibile",
|
||||||
"current": "ProxMenux è aggiornato",
|
"current": "ProxMenux è aggiornato",
|
||||||
"currentVersion": "la versione {version} è aggiornata",
|
"currentVersion": "La versione {version} è aggiornata",
|
||||||
"unknown": "impossibile verificare la versione disponibile",
|
"unknown": "Impossibile verificare la versione disponibile",
|
||||||
"unverified": "non verificato",
|
"unverified": "Non verificata",
|
||||||
"stable": "canale stabile",
|
"stable": "Canale stabile",
|
||||||
"beta": "canale Beta",
|
"beta": "Canale beta",
|
||||||
"checked": "Ultimo controllo riuscito: {time}"
|
"checked": "Ultimo controllo riuscito: {time}"
|
||||||
},
|
},
|
||||||
"hostUpdate": {
|
"hostUpdate": {
|
||||||
"running": "l'aggiornamento dell'host continua anche se ti disconnetti.Riaprilo dopo aver effettuato l'accesso.",
|
"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.",
|
"finished": "L’ultimo aggiornamento dell’host è terminato. Il risultato è disponibile.",
|
||||||
"attention": "l'aggiornamento dell'host richiede attenzione.Non è stato fermato;riconnettersi per ispezionarlo.",
|
"attention": "L’aggiornamento dell’host richiede attenzione. Non è stato interrotto; riconnettiti per verificarne lo stato.",
|
||||||
"view": "visualizza l'aggiornamento",
|
"view": "Visualizza aggiornamento",
|
||||||
"viewResult": "Visualizza il risultato",
|
"viewResult": "Visualizza il risultato",
|
||||||
"hideResult": "nascondi il risultato",
|
"hideResult": "Nascondi il risultato",
|
||||||
"resultTitle": "risultato dell'aggiornamento dell'host",
|
"resultTitle": "Risultato dell’aggiornamento dell’host",
|
||||||
"resultReadOnly": "output salvato di un aggiornamento completato.Aprendolo non viene eseguito un altro aggiornamento.",
|
"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.",
|
"resultUnavailable": "Non è stato possibile caricare il risultato salvato. Non è stato avviato alcun aggiornamento.",
|
||||||
"retryResult": "ricarica il risultato",
|
"retryResult": "Ricarica il risultato",
|
||||||
"loadingResult": "caricamento del risultato salvato…",
|
"loadingResult": "Caricamento del risultato salvato…",
|
||||||
"closeResult": "chiudi risultato",
|
"closeResult": "Chiudi risultato",
|
||||||
"noReboot": "non è richiesto alcun riavvio",
|
"noReboot": "Nessun riavvio necessario",
|
||||||
"rebootMarker": "il sistema operativo richiede un riavvio.",
|
"rebootMarker": "Il sistema operativo richiede un riavvio.",
|
||||||
"rebootUnknown": "impossibile determinare se è necessario un riavvio.",
|
"rebootUnknown": "Impossibile determinare se è necessario un riavvio.",
|
||||||
"rebootKernel": "è necessario un riavvio per attivare {installed}.Attualmente in esecuzione: {running}."
|
"rebootKernel": "È necessario un riavvio per attivare {installed}. Attualmente in esecuzione: {running}."
|
||||||
},
|
},
|
||||||
"updateSystem": "aggiornamento del sistema",
|
"updateSystem": "Aggiorna sistema",
|
||||||
"packagePlanNote": "il piano include anche nuovi pacchetti, come un nuovo kernel.La panoramica conta solo gli aggiornamenti ai pacchetti esistenti.",
|
"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.",
|
"snapshotUnavailable": "I nuovi risultati dei controlli di integrità non sono ancora disponibili.",
|
||||||
"lastKnownResults": "mostra gli ultimi risultati disponibili con l'ora di controllo originale."
|
"lastKnownResults": "Sono mostrati gli ultimi risultati disponibili con l’ora originale del controllo."
|
||||||
},
|
},
|
||||||
"profilePage": {
|
"profilePage": {
|
||||||
"loading": "Caricamento profilo…",
|
"loading": "Caricamento profilo…",
|
||||||
|
|||||||
+11
-11
@@ -87,7 +87,7 @@
|
|||||||
"A host reboot is required after this change.": "Dopo questa modifica occorre riavviare l’host.",
|
"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 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 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 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 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:",
|
"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 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 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 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.",
|
"Host write access confirmed.": "Accesso in scrittura dell'host confermato.",
|
||||||
"Hostname": "Nome host",
|
"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",
|
"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:",
|
"Identical:": "Identica:",
|
||||||
"Identify candidate disk (never use system disk):": "Identifica il disco candidato (non usare mai il disco di sistema):",
|
"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",
|
"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 '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 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:",
|
"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 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.",
|
"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 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",
|
"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.",
|
"Managing Nginx proxy hosts with a simple, powerful interface.": "Gestione degli host proxy Nginx tramite un'interfaccia semplice e potente.",
|
||||||
"Manticore Search": "Manticore Search",
|
"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 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 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 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 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 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.",
|
"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 shell/profile config": "Configurazione shell/profilo root",
|
||||||
"Root user on the PVE host (default 'root'):": "Utente root sull'host PVE (default 'root'):",
|
"Root user on the PVE host (default 'root'):": "Utente root sull'host PVE (default 'root'):",
|
||||||
"Rootfs size in GB": "Dimensione rootfs in GB",
|
"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",
|
"Rotate the recovery passphrase": "Sostituisci la passphrase di ripristino",
|
||||||
"Routing Information": "Informazioni di instradamento",
|
"Routing Information": "Informazioni di instradamento",
|
||||||
"Routing Table": "Tabella di instradamento",
|
"Routing Table": "Tabella di instradamento",
|
||||||
@@ -6274,7 +6274,7 @@
|
|||||||
"Self-hosted remote device management.": "Gestione self-hosted dei dispositivi remoti.",
|
"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 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 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 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 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.",
|
"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 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 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 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 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 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.",
|
"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",
|
"VIRTUAL MACHINE ID": "ID MACCHINA VIRTUALE",
|
||||||
"VLAN": "VLAN",
|
"VLAN": "VLAN",
|
||||||
"VLAN tag": "Tag 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.",
|
"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": "VM",
|
||||||
"VM Conflict Policy": "Politica conflitti VM",
|
"VM Conflict Policy": "Politica conflitti VM",
|
||||||
@@ -8193,7 +8193,7 @@
|
|||||||
"Web access": "Accesso web",
|
"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 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 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 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 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.",
|
"Web interface to manage devices running Tasmota firmware.": "Interfaccia web per gestire dispositivi con firmware Tasmota.",
|
||||||
@@ -8640,7 +8640,7 @@
|
|||||||
"missing": "mancanti",
|
"missing": "mancanti",
|
||||||
"mkfs.btrfs not found. Install btrfs-progs and retry.": "mkfs.btrfs non trovato. Installare btrfs-progs e riprovare.",
|
"mkfs.btrfs not found. Install btrfs-progs and retry.": "mkfs.btrfs non trovato. Installare btrfs-progs e riprovare.",
|
||||||
"more": "in più",
|
"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",
|
"motionEye web interface": "Interfaccia web motionEye",
|
||||||
"mount.cifs command not found after installation.": "Comando mount.cifs non trovato dopo l'installazione.",
|
"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.",
|
"mount.nfs command not found after installation.": "Comando mount.nfs non trovato dopo l'installazione.",
|
||||||
|
|||||||
@@ -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."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -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 <validation>processo di validazione</validation> 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 <proposals>proposte per il catalogo OCI</proposals>, la <roadmap>roadmap</roadmap>, il <catalog>catalogo</catalog> 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 <readme>oci/README.md</readme> 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."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -265,7 +265,7 @@
|
|||||||
"list": {
|
"list": {
|
||||||
"items": [
|
"items": [
|
||||||
"Un Dockerfile senza immagine pubblicata: prima occorre creare l’immagine e pubblicarla in un registro OCI.",
|
"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.",
|
||||||
"<code>configs</code>, segreti esterni o formati di dispositivi che non possono essere adattati senza ambiguità.",
|
"<code>configs</code>, segreti esterni o formati di dispositivi che non possono essere adattati senza ambiguità.",
|
||||||
"Sostituzioni della shell come <code>$(command)</code>: occorre inserire direttamente il valore risultante.",
|
"Sostituzioni della shell come <code>$(command)</code>: occorre inserire direttamente il valore risultante.",
|
||||||
"Opzioni <code>docker run</code> non riconosciute e <code>--env-file</code>: usa invece un file Compose con valori espliciti."
|
"Opzioni <code>docker run</code> non riconosciute e <code>--env-file</code>: usa invece un file Compose con valori espliciti."
|
||||||
|
|||||||
@@ -197,7 +197,7 @@
|
|||||||
{
|
{
|
||||||
"label": "Installare un’app e proporla al catalogo",
|
"label": "Installare un’app e proporla al catalogo",
|
||||||
"href": "/docs/oci-manager/contribute-app",
|
"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",
|
"label": "Installazione, aggiornamento e modifica",
|
||||||
|
|||||||
@@ -116,10 +116,10 @@
|
|||||||
"items": [
|
"items": [
|
||||||
"Se il registro restituisce ancora il digest installato, non viene scaricato nulla e l’istanza rimane invariata.",
|
"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.",
|
"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 (<code>net1</code>) e l'ordine di avvio (<code>startup</code>) sono restituiti al nuovo contenitore come sono.",
|
"L'interfaccia LAN che la suite Arr e le applicazioni multi-container aggiungono (<code>net1</code>) e l'ordine di avvio (<code>startup</code>) 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.",
|
"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."
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -141,7 +141,7 @@
|
|||||||
],
|
],
|
||||||
[
|
[
|
||||||
"Aggiornamenti pianificati",
|
"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."
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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": {
|
"flow": {
|
||||||
"nodes": [
|
"nodes": [
|
||||||
|
|||||||
@@ -109,7 +109,7 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"hardwareTitle": "Impostazioni predefinite in base all’hardware",
|
"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 (<code>≤ 8 GB → 128M</code>, <code>≤ 16 GB → 256M</code>, <code>'>' 16 GB → 512M</code>). 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 (<code>≤ 8 GB → 128M</code>, <code>≤ 16 GB → 256M</code>, <code>'>' 16 GB → 512M</code>). Con Log2RAM attivo, il journal resta su disco con un proprio limite.",
|
||||||
"upgrade": {
|
"upgrade": {
|
||||||
"heading": "Aggiorna gli elenchi dei pacchetti e il sistema",
|
"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:",
|
"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:",
|
||||||
|
|||||||
@@ -140,13 +140,13 @@
|
|||||||
"doesLabel": "Cosa fa ProxMenux:",
|
"doesLabel": "Cosa fa ProxMenux:",
|
||||||
"doesItems": [
|
"doesItems": [
|
||||||
"Rileva se il disco root è SSD/NVMe leggendo <code>/sys/block/<dev>/queue/rotational</code>. Su un disco rotazionale il flusso automatizzato chiede prima di installare.",
|
"Rileva se il disco root è SSD/NVMe leggendo <code>/sys/block/<dev>/queue/rotational</code>. 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 <code>NOTIFICATION=false</code>, 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 <code>NOTIFICATION=false</code>, poiché Proxmox VE non include il comando mail per impostazione predefinita.",
|
||||||
"Dimensiona il ramdisk in base alla RAM dell’host: <code>≤ 8 GB → 128M</code>, <code>≤ 16 GB → 256M</code>, <code>> 16 GB → 512M</code>. Scrive il valore in <code>SIZE=</code> di <code>/etc/log2ram.conf</code>.",
|
"Dimensiona il ramdisk in base alla RAM dell’host: <code>≤ 8 GB → 128M</code>, <code>≤ 16 GB → 256M</code>, <code>> 16 GB → 512M</code>. Scrive il valore in <code>SIZE=</code> di <code>/etc/log2ram.conf</code>.",
|
||||||
"Mantiene su disco il journal (<code>/var/log/journal</code>), i log delle attività di Proxmox VE (<code>/var/log/pve</code>) e, se installato, quelli di Proxmox Backup Server (<code>/var/log/proxmox-backup</code>), in <code>/var/hdd.journal</code>, <code>/var/hdd.pve</code> e <code>/var/hdd.proxmox-backup</code>. Ogni percorso abituale diventa un collegamento alla sua cartella su disco. Lo spostamento avviene all'avvio, prima che parta Log2RAM.",
|
"Mantiene su disco il journal (<code>/var/log/journal</code>), i log delle attività di Proxmox VE (<code>/var/log/pve</code>) e, se installato, quelli di Proxmox Backup Server (<code>/var/log/proxmox-backup</code>), in <code>/var/hdd.journal</code>, <code>/var/hdd.pve</code> e <code>/var/hdd.proxmox-backup</code>. 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 <code>/etc/cron.d/log2ram-auto-sync</code> eseguito ogni 10 minuti. Quando <code>/var/log</code> supera l'85% del ramdisk, ruota i log, comprime quelli appena ruotati e scrive tutto su disco. Nessun log viene svuotato.",
|
"Installa un controllo in <code>/etc/cron.d/log2ram-auto-sync</code> eseguito ogni 10 minuti. Quando <code>/var/log</code> 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 <code>/etc/systemd/journald.conf.d/proxmenux-log2ram.conf</code>. Su un host con Proxmox Backup Server aggiunge <code>/etc/logrotate.d/proxmox-backup-api</code> (rotazione 20 MB × 3) per i suoi log delle API.",
|
"Mantiene il journal di systemd su disco con un limite di 1 GB, in <code>/etc/systemd/journald.conf.d/proxmenux-log2ram.conf</code>. Su un host con Proxmox Backup Server aggiunge <code>/etc/logrotate.d/proxmox-backup-api</code> (rotazione 20 MB × 3) per i suoi log delle API.",
|
||||||
"Si registra in <code>installed_tools.json</code> 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 <code>installed_tools.json</code> 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:",
|
"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.",
|
"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.",
|
||||||
|
|||||||
Reference in New Issue
Block a user