mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2026-11-02 19:02:31 +00:00
Merge remote-tracking branch 'origin/develop' into HEAD
# Conflicts: # web/messages/es/docs/monitor/access-auth.json # web/messages/es/docs/monitor/api-reference.json # web/messages/es/docs/monitor/dashboard/vms-lxcs-app.json # web/messages/es/docs/monitor/integrations.json # web/messages/es/docs/monitor/notifications.json # web/messages/sk/docs/monitor/dashboard/vms-lxcs-updates.json
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Codice di condotta | Documentazione ProxMenux",
|
||||
"description": "Codice di condotta e buone pratiche di ProxMenux per collaboratori, tester e utenti.",
|
||||
"ogTitle": "Codice di condotta | Documentazione ProxMenux",
|
||||
"ogDescription": "Aspettative sulla responsabilità del codice, sulla segnalazione delle vulnerabilità e sull’ambito delle PR nel progetto ProxMenux."
|
||||
},
|
||||
"errors": {
|
||||
"notFound": "Errore: file CODE_OF_CONDUCT.md non trovato.",
|
||||
"loadFailed": "Errore: impossibile caricare il contenuto del codice di condotta."
|
||||
},
|
||||
"contentMarkdown": "# 📝 Codice di condotta e buone pratiche\n\nQuesto documento definisce i **principi e le linee guida** per l’uso di **ProxMenux**, promuovendo **rispetto, collaborazione e sicurezza** nello sviluppo.\n\n## 📌 1. Attribuzione del codice e riconoscimenti\n\n- Se si usano **script, frammenti di codice o idee** di altri repository o sviluppatori, l’autore originale verrà sempre citato.\n- Un commento nel codice o nella documentazione indicherà la fonte e, se possibile, un collegamento al repository originale.\n- Quando si utilizza codice con una **licenza** specifica, occorre rispettarne le condizioni.\n\n### ✅ Esempio di attribuzione corretta nel codice:\n\n```bash\n# Script basato sul lavoro di [Autore] in [Link al repository]\n```\n\n## 🔒 2. Sicurezza e responsabilità del codice\n\n- Tutto il codice di questo repository segue le buone pratiche di sviluppo sicuro.\n- Non sono ammessi contributi che introducano vulnerabilità intenzionali o pratiche non sicure.\n- Gli script non devono mai compromettere la sicurezza del sistema o i dati degli utenti.\n- Prima dell’implementazione, i contributi vanno revisionati per verificarne sicurezza e stabilità.\n\n### ⚠️ Divulgazione responsabile delle vulnerabilità\n\nSe scopri una vulnerabilità di sicurezza, NON segnalarla in issue o forum pubblici.\n\nComunicala invece in privato tramite e-mail:\n\n📧 proxmenux@macrimi.pro\n\nPer maggiori informazioni sulle vulnerabilità e su come segnalarle, consulta la nostra [politica di sicurezza](./SECURITY.md).\n\n## 🤝 3. Regole della comunità\n\nPer mantenere un ambiente rispettoso e professionale, tutti gli utenti devono seguire queste regole:\n\n- ✅ Mantieni un atteggiamento rispettoso e costruttivo nelle discussioni.\n- ❌ Non saranno tollerati molestie, discorsi d’odio o comportamenti offensivi.\n- ✅ Fornisci riscontri in modo professionale, evitando attacchi personali.\n- ❌ Le violazioni possono comportare avvertimenti o esclusioni, in base alla gravità.\n\n##\n\nQuesto documento promuove l’uso etico del codice, la consapevolezza della sicurezza e una comunità rispettosa.\n\n📢 Costruiamo insieme qualcosa di straordinario!\n"
|
||||
}
|
||||
@@ -0,0 +1,293 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Contributo a ProxMenux | Documentazione ProxMenux",
|
||||
"description": "Come contribuire a ProxMenux: modello dei rami (main / develop / feature/*), procedura delle pull request, intestazione con autore e link di sostegno facoltativo, interfaccia in due fasi, funzioni dei messaggi e passaggio da un ramo di funzionalità a una versione stabile.",
|
||||
"ogTitle": "Contributi a ProxMenux",
|
||||
"ogDescription": "Modello dei rami, procedura, attribuzione nell’intestazione e regola dell’interfaccia in due fasi per chi contribuisce."
|
||||
},
|
||||
"header": {
|
||||
"title": "Contributi a ProxMenux",
|
||||
"description": "ProxMenux è aperto ai contributi comunitari — nuovi script, correzioni per quelli esistenti, miglioramenti di dialogo, traduzioni, integrazioni. Questa pagina è la porta formale: come il repository è strutturato, il modello di ramificazione e il flusso di lavoro di pull-request, l'intestazione dello script con attribuzione dell'autore e link di sponsor opzionale, e le convenzioni di progettazione ogni contributo deve seguire.",
|
||||
"section": "Informazioni"
|
||||
},
|
||||
"twoPagesCallout": {
|
||||
"title": "Due pagine correlate, un progetto",
|
||||
"body": "Non confondere questa pagina con <contributorsLink>Collaboratori</contributorsLink>, che riconosce il lavoro di tester, revisori e sviluppatori già coinvolti. Questa pagina è per <em>te</em>, futuro collaboratore, e spiega come preparare una pull request da integrare."
|
||||
},
|
||||
"branching": {
|
||||
"heading": "Modello di ramificazione",
|
||||
"intro": "ProxMenux utilizza un modello di ramificazione a tre livelli:",
|
||||
"headerBranch": "Ramo",
|
||||
"headerPurpose": "Scopo",
|
||||
"rows": [
|
||||
{
|
||||
"branch": "main",
|
||||
"purposeRich": "Codice stabile, pronto per la produzione. Qui vengono integrate solo modifiche pronte per il rilascio. È la versione ricevuta con un’installazione normale di ProxMenux."
|
||||
},
|
||||
{
|
||||
"branch": "develop",
|
||||
"purposeRich": "Ramo di sviluppo attivo. Il nuovo lavoro viene integrato prima qui: è il canale beta. Quando una versione stabile è pronta, viene trasferita da qui a <code>main</code>."
|
||||
},
|
||||
{
|
||||
"branch": "feature/*",
|
||||
"purposeRich": "Rami temporanei per una funzionalità, una correzione o un miglioramento. Creati da <code>develop</code> e reintegrati in <code>develop</code> tramite pull request dopo la revisione."
|
||||
}
|
||||
],
|
||||
"calloutTitle": "Ciò significa per gli utenti",
|
||||
"calloutBody": "Chi segue <code>main</code> riceve versioni testate. Chi vuole prima le novità e accetta qualche imperfezione può seguire <code>develop</code>. Le nuove funzioni passano sempre prima da <code>develop</code>; nulla arriva in <code>main</code> senza questo ciclo."
|
||||
},
|
||||
"workflow": {
|
||||
"heading": "Procedura delle pull request",
|
||||
"intro": "Dall'idea alla fusione del rilascio in cinque fasi:",
|
||||
"step1Lead": "<strong>Crea un ramo per la funzionalità da <code>develop</code></strong>:",
|
||||
"step1Code": "git clone https://github.com/MacRimi/ProxMenux.git\ncd ProxMenux\ngit checkout develop\ngit pull origin develop\ngit checkout -b feature/your-feature-name",
|
||||
"step1Trail": "Utilizzare un nome di ramo descrittivo: <code>feature/zfs-arc-tuning</code>, <code>feature/fix-iommu-detection</code>, <code>feature/add-tailscale-script</code>.",
|
||||
"step2Lead": "<strong>Lavora alle modifiche e pubblica il ramo:</strong>",
|
||||
"step2Code": "# Make your changes, then:\ngit add scripts/...\ngit commit -m \"Add ZFS ARC tuning script\"\ngit push -u origin feature/your-feature-name",
|
||||
"step3": "<strong>Apri una pull request verso <code>develop</code></strong>, non verso <code>main</code>. Su GitHub verifica che il ramo di base sia <code>develop</code>. Descrivi cosa fa e modifica lo script e su quali versioni di Proxmox VE è stato testato.",
|
||||
"step4": "<strong>Dopo la revisione le modifiche vengono integrate in <code>develop</code>.</strong> Un manutentore verifica codice, intestazione e interfaccia in due fasi. Se richiede modifiche, aggiungi commit allo stesso ramo: la PR si aggiorna automaticamente.",
|
||||
"step5": "<strong>Le versioni stabili passano da <code>develop</code> a <code>main</code>.</strong> Al rilascio, <code>main</code> viene portato a <code>develop</code> con un fast-forward e riceve un tag. Il tuo contributo entra nella prossima versione stabile."
|
||||
},
|
||||
"scriptHeader": {
|
||||
"heading": "Intestazione script — metadati & descrizione",
|
||||
"intro": "Ogni script ProxMenux inizia con due blocchi di commenti adiacenti che formano l’intestazione. Sono <strong>entrambi obbligatori</strong>: indicano autore e scopo senza dover leggere il corpo del codice.",
|
||||
"bullets": [
|
||||
"<strong>Blocco superiore: metadati.</strong> Autore, link GitHub/di sostegno facoltativi, manutentore, copyright, licenza, versione e data di aggiornamento. Qui avviene il <em>riconoscimento dei collaboratori</em>: per un nuovo script inserisci il tuo nome e, facoltativamente, la pagina GitHub e un profilo come Ko-fi, GitHub Sponsors o Buy Me a Coffee.",
|
||||
"<strong>Blocco inferiore: descrizione.</strong> Un breve paragrafo in inglese semplice spiega il compito dello script. Si legge <em>prima</em> del codice e deve chiarire da solo scopo, azioni principali, risorse coinvolte e prerequisiti."
|
||||
],
|
||||
"licenseCalloutTitle": "La linea di licenza è fissa — GPL-3.0",
|
||||
"licenseCalloutBody": "ProxMenux è pubblicato sotto <strong>GNU General Public License v3.0</strong>. Tutti gli script usano la stessa licenza: la riga <code>License</code> nell’intestazione deve essere il riferimento GPL-3.0 dell’esempio seguente, non una scelta per singolo script. Contribuendo accetti il rilascio sotto GPL-3.0: chiunque può leggere, modificare e ridistribuire lo script e le modifiche mantenendo la stessa licenza. Testo completo: <licenseLink>MacRimi/ProxMenux/LICENSE</licenseLink>.",
|
||||
"templateCode": "#!/bin/bash\n\n# ==========================================================\n# ProxMenux - A menu-driven script for Proxmox VE management\n# ==========================================================\n# Author : Your Name\n# GitHub : github.com/yourhandle\n# Sponsor : ko-fi.com/yourhandle\n# Maintainer : MacRimi\n# Copyright : (c) 2026 MacRimi & contributors\n# License : (GPL-3.0) (https://github.com/MacRimi/ProxMenux/blob/main/LICENSE)\n# Version : 1.0\n# Last Updated: DD/MM/YYYY\n# ==========================================================\n# Description:\n# Short paragraph explaining what the script does.\n# Mention the main actions (e.g. \"creates a ZFS pool\",\n# \"configures IOMMU and reboots\", \"imports an ISO into a VM\"),\n# the resources it touches, and any prerequisites the user\n# should be aware of before running it.\n# ==========================================================",
|
||||
"optionalNote": "Le linee <code>GitHub</code> e <code>Sponsor</code> sono facoltative: lasciatele fuori se non volete pubblicarle. Tutto il resto è richiesto.",
|
||||
"whyCalloutTitle": "Perché questo è importante",
|
||||
"whyCalloutBody": "Contribuire all’open source è un lavoro volontario. Il nome e l’eventuale link di sostegno nel codice rendono visibile l’autore a ogni lettura, senza nasconderlo dietro il progetto. La descrizione ha un altro scopo: è la prima cosa letta da un futuro manutentore o utente curioso. La sua chiarezza spesso determina se ci si fida dello script o lo si evita."
|
||||
},
|
||||
"structure": {
|
||||
"heading": "Struttura del progetto",
|
||||
"intro": "Dove ogni tipo di script vive nel repository:",
|
||||
"treeCode": "scripts/\n├── menus/ # Top-level menu scripts (entry points)\n├── storage/ # Disk, storage and passthrough scripts\n├── share/ # NFS, Samba, local share scripts\n├── vm/ # VM creation and configuration scripts\n├── gpu_tpu/ # GPU / TPU passthrough scripts\n├── post_install/ # Post-install automation scripts\n├── backup_restore/ # Backup and restore scripts\n├── utilities/ # System utility scripts\n├── global/ # Shared helper libraries (sourced by other scripts)\n├── utils.sh # Shared utility functions and message helpers\n└── help_info_menu.sh # Interactive help and command reference",
|
||||
"outro": "Ogni script carica <code>utils.sh</code> all’avvio tramite source per avere funzioni dei messaggi, indicatore di attesa, colori e sistema di traduzione. Le librerie condivise in <code>scripts/global/</code> vengono caricate esplicitamente dagli script che ne hanno bisogno."
|
||||
},
|
||||
"twoPhase": {
|
||||
"heading": "La politica di progettazione dell'interfaccia utente bifase",
|
||||
"intro": "È la convenzione più importante di ProxMenux e quella per cui vengono richieste più spesso correzioni alle PR. Ogni script è diviso in <strong>esattamente due fasi</strong>:",
|
||||
"headerPhase": "Fase",
|
||||
"headerPurpose": "Scopo",
|
||||
"headerScreen": "Stato dello schermo",
|
||||
"rows": [
|
||||
{
|
||||
"phaseRich": "<strong>Phase 1 — Selezione</strong>",
|
||||
"purposeRich": "Raccogliere ogni decisione dell'utente. Eseguire qualsiasi lavoro preparatorio necessario (sonde, scansioni, controlli).",
|
||||
"screenRich": "Finestre <code>dialog</code>. Se una verifica tra due menu richiede più di uno o due secondi, mostra l’indicatore di attesa <code>msg_info</code> perché l’utente sappia che lo script non è bloccato, poi chiama <code>stop_spinner</code> subito prima del prossimo dialogo."
|
||||
},
|
||||
{
|
||||
"phaseRich": "<strong>Phase 2 — Esecuzione</strong>",
|
||||
"purposeRich": "Eseguire ogni operazione. Visualizza la storia del progresso completo che si accumula sullo schermo.",
|
||||
"screenRich": "Messaggi <code>msg_info</code> / <code>msg_ok</code> visibili; mai <code>dialog</code>."
|
||||
}
|
||||
],
|
||||
"principle": "Il principio è <strong>raccogliere prima tutte le scelte, poi eseguire tutto</strong>. L’utente vede prima menu ordinati con dialoghi (fase 1), poi una vista di esecuzione come un log (fase 2). Le fasi non si mescolano: niente dialoghi durante l’esecuzione né messaggi di avanzamento durante la selezione.",
|
||||
"phase1Heading": "Fase 1 — modello tipico",
|
||||
"phase1Code": "# Silent preparatory work between dialogs\nmsg_info \"$(translate \"Checking disk assignments...\")\"\nASSIGNED_TO=$(check_assignments \"$DISK\")\nstop_spinner # ← clears line silently, result saved in variable\n\n# Next dialog can now use ASSIGNED_TO\nif [ -n \"$ASSIGNED_TO\" ]; then\n dialog --yesno \"$(translate \"Disk already assigned. Continue?\")\" $UI_YESNO_H $UI_YESNO_W\nfi\n\n# Collect multiple decisions per item with parallel arrays\ndeclare -a DISK_LIST=()\ndeclare -a DISK_FORMAT_TYPES=()\ndeclare -a DISK_MOUNT_POINTS=()\nfor DISK in $SELECTED; do\n msg_info \"$(translate \"Analyzing disk...\")\"\n CURRENT_FS=$(lsblk -no FSTYPE \"$DISK\" | xargs)\n stop_spinner\n\n FORMAT=$(dialog --backtitle \"$BACKTITLE\" \\\n --title \"$(translate \"Select Filesystem\")\" \\\n --menu \"...\" $UI_SHORT_MENU_H $UI_SHORT_MENU_W $UI_SHORT_MENU_LIST_H \\\n \"ext4\" \"...\" \"xfs\" \"...\" \"btrfs\" \"...\" \\\n 2>&1 >/dev/tty)\n [ -z \"$FORMAT\" ] && continue\n\n DISK_LIST+=(\"$DISK\")\n DISK_FORMAT_TYPES+=(\"$FORMAT\")\ndone",
|
||||
"phase1RulesIntro": "<strong>Regole per la fase 1:</strong>",
|
||||
"phase1Rules": [
|
||||
"Se è attivo un indicatore <code>msg_info</code> e devi aprire un menu <code>dialog</code> o <code>whiptail</code>, chiama prima <code>stop_spinner</code>: l’indicatore non può convivere con l’overlay dei due strumenti. Se nessun indicatore è attivo, la chiamata non serve.",
|
||||
"Usa <code>show_proxmenux_logo</code> + <code>msg_title</code> + <code>msg_info</code> per dare un contesto visivo a un’operazione lunga nella fase 1, ad esempio una verifica di oltre cinque secondi. La funzione pulisce già lo schermo: non chiamare prima <code>clear</code>.",
|
||||
"Non chiamare <code>show_proxmenux_logo</code> tra i menu di dialogo in cui non c'è nulla da mostrare — cancellare lo schermo per un terminale vuoto è solo rumore visivo.",
|
||||
"Conservare tutte le decisioni e i risultati della sonda in variabili o array paralleli. Il recap visibile avviene all'inizio della fase 2, non in fase 1."
|
||||
],
|
||||
"phase2Heading": "Fase 2 — modello tipico",
|
||||
"phase2Code": "# ── PHASE 2 — EXECUTION ─────────────────────────────\nshow_proxmenux_logo\nmsg_title \"$(translate \"My Script Title\")\"\n\n# Recap Phase 1 preparatory results — show what was already done\nmsg_ok \"$(translate \"CT $CTID selected.\")\"\nmsg_ok \"$(translate \"Repositories verified.\")\"\nmsg_ok \"$(translate \"Disks to process: ${#DISK_LIST[@]}\")\"\n\n# Now execute operations\nfor i in \"${!DISK_LIST[@]}\"; do\n DISK=\"${DISK_LIST[$i]}\"\n FORMAT=\"${DISK_FORMAT_TYPES[$i]}\"\n\n msg_info \"$(translate \"Formatting\") $DISK $(translate \"as\") $FORMAT...\"\n mkfs.\"$FORMAT\" \"$DISK\" >/dev/null 2>&1\n msg_ok \"$(translate \"Formatted.\")\"\ndone\n\nmsg_ok \"$(translate \"Completed. ${#DISK_LIST[@]} disk(s) processed.\")\"\nmsg_success \"$(translate \"Press Enter to return to menu...\")\"\nread -r",
|
||||
"phase2Rules": "<strong>Regole per la fase 2:</strong> inizia con <code>show_proxmenux_logo + msg_title</code> e riepiloga subito la fase 1 con righe <code>msg_ok</code>. Non richiamare <code>show_proxmenux_logo</code>, perché cancellerebbe il progresso accumulato. Non usare <code>dialog</code>; se una scelta durante l’esecuzione è inevitabile, usa <code>whiptail</code> come spiegato nella sezione seguente."
|
||||
},
|
||||
"dialogVsWhiptail": {
|
||||
"headingRich": "Quando utilizzare <code>dialog</code> vs <code>whiptail</code>",
|
||||
"intro": "Entrambi gli strumenti disegnano interfacce utente in modalità testo, ma si comportano molto diversamente sullo schermo — e ProxMenux li utilizza in due fasi distinte per un motivo.",
|
||||
"headerTool": "Strumento",
|
||||
"headerWhen": "Quando usarlo",
|
||||
"headerEffect": "Effetti sullo schermo",
|
||||
"rows": [
|
||||
{
|
||||
"toolRich": "<strong><code>dialog</code></strong>",
|
||||
"whenRich": "<strong> Sempre in Fase 1.</strong> Ogni selezione interattiva — raccogliendo un VM, un disco, un filesystem, confermando un'azione — utilizza <code>dialog</code>. Questo è lo strumento UI predefinito di ProxMenux.",
|
||||
"effectRich": "Prende il controllo del terminale: pulisce lo schermo, disegna l’interfaccia e alla chiusura ripristina lo stato precedente. Va bene nella fase 1, quando non ci sono ancora risultati utili da mostrare."
|
||||
},
|
||||
{
|
||||
"toolRich": "<strong><code>whiptail</code></strong>",
|
||||
"whenRich": "<strong>Solo in Fase 2, solo quando inevitabile.</strong> Il caso tipico è un prompt di riavvio alla fine dell'esecuzione. Non raggiungere <code>whiptail</code> per chiedere “continua?” mid-execution — tale decisione dovrebbe essere presa in fase 1.",
|
||||
"effectRich": "Overlay più leggero che <em>non cancella</em> il contesto del terminale. La cronologia <code>msg_ok</code>/<code>msg_info</code> della fase 2 resta visibile dietro il dialogo. È quindi adatto quando l’avanzamento è già sullo schermo."
|
||||
}
|
||||
],
|
||||
"calloutTitle": "Perché la divisione conta",
|
||||
"calloutBody": "Se si chiama <code>dialog</code> nel mezzo della fase 2, ogni linea <code>msg_ok</code> l'utente sta guardando scompare. Tu pulisci la pista di controllo. <code>whiptail</code> lo evita. Quindi la regola non è arbitraria — si tratta di preservare la vista dell'utente di ciò che lo script ha fatto finora.",
|
||||
"rebootHeading": "Richiesta di riavvio: il caso tipico di whiptail nella fase 2",
|
||||
"rebootIntro": "Quando uno script termina e un riavvio può essere richiesto (ad es. IOMMU abilitato, parametri del kernel modificati), il prompt alla fine della fase 2 utilizza <code>whiptail</code>. Sempre includere un ramo “No” che avverte l’utente di non utilizzare la risorsa interessata fino al riavvio:",
|
||||
"rebootCode": "if [[ \"$HOST_REBOOT_REQUIRED\" == \"yes\" ]]; then\n echo \"\"\n if whiptail --title \"$(translate \"Reboot Required\")\" --yesno \\\n \"\\n$(translate \"A host reboot is required before starting the VM. Reboot now?\")\" \\\n 13 78; then\n msg_warn \"$(translate \"Rebooting the system...\")\"\n reboot\n else\n echo \"\"\n msg_info2 \"$(translate \"Do not start the VM until the system has been rebooted.\")\"\n fi\nfi\n\nmsg_success \"$(translate \"Press Enter to return to menu...\")\"\nread -r"
|
||||
},
|
||||
"messageFunctions": {
|
||||
"heading": "Funzioni di messaggio",
|
||||
"intro": "Tutti definiti in <code>utils.sh</code>. Utilizzarli come predefinito per qualsiasi output visibile dall'utente — visuali coerenti tra gli script è l'intero punto. Se il tuo script ha bisogno di una nuova funzione che non si adatta al set esistente (un nuovo livello di gravità, un nuovo aiutante di layout, ecc.), proporlo nella tua richiesta di pull — sarà rivisto e aggiunto a <code>utils.sh</code> se è ampiamente utile.",
|
||||
"headerFunction": "Funzione",
|
||||
"headerWhen": "Quando usare",
|
||||
"headerSpinner": "Indicatore di avanzamento",
|
||||
"rows": [
|
||||
{
|
||||
"function": "msg_info \"text\"",
|
||||
"whenRich": "Operazione in corso.",
|
||||
"spinner": "Inizia"
|
||||
},
|
||||
{
|
||||
"function": "stop_spinner",
|
||||
"whenRich": "Fine del lavoro preparatorio silenzioso in Fase 1 — uccide spinner, cancella la linea.",
|
||||
"spinner": "Arresta"
|
||||
},
|
||||
{
|
||||
"function": "msg_ok \"text\"",
|
||||
"whenRich": "L'operazione è riuscita. Utilizzare anche per “funzione abilitata” anche quando è richiesto un riavvio.",
|
||||
"spinner": "Arresta"
|
||||
},
|
||||
{
|
||||
"function": "msg_warn \"text\"",
|
||||
"whenRich": "Avvertenza effettiva o stato degradato.",
|
||||
"spinner": "Arresta"
|
||||
},
|
||||
{
|
||||
"function": "msg_error \"text\"",
|
||||
"whenRich": "Errore fatale.",
|
||||
"spinner": "Arresta"
|
||||
},
|
||||
{
|
||||
"function": "msg_info2 \"text\"",
|
||||
"whenRich": "Avviso non bloccante, su una riga informativa ciano.",
|
||||
"spinner": "Arresta"
|
||||
},
|
||||
{
|
||||
"function": "msg_success \"text\"",
|
||||
"whenRich": "Messaggio finale «Premi Invio per tornare» alla fine della fase 2.",
|
||||
"spinner": "Arresta"
|
||||
},
|
||||
{
|
||||
"function": "msg_title \"text\"",
|
||||
"whenRich": "Titolo in grassetto con spaziatura integrata. Usato all’inizio della fase 2.",
|
||||
"spinner": "—"
|
||||
},
|
||||
{
|
||||
"function": "show_proxmenux_logo",
|
||||
"whenRich": "Pulisce lo schermo e mostra il logo. Da chiamare <em>una sola volta</em> all’inizio della fase 2.",
|
||||
"spinner": "—"
|
||||
}
|
||||
]
|
||||
},
|
||||
"dialogConventions": {
|
||||
"heading": "convenzioni di dialogo",
|
||||
"bullets": [
|
||||
"Passa sempre <code>--backtitle \"$BACKTITLE\"</code> ad ogni chiamata <code>dialog</code> e <code>whiptail</code>. <code>$BACKTITLE</code> è sempre <code>\"ProxMenux\"</code> — impostato una volta all'intestazione dello script e mai sovrascritto. L'utente deve sempre vedere il nome del progetto come il contesto di inquadramento, mai il titolo dello script.",
|
||||
"Avvolgi sempre titoli e messaggi con <code>$(translate \"...\")</code>.",
|
||||
"Reindirizza sempre l'output <code>dialog</code> con <code>2>&1 >/dev/tty</code> — lo stdout catturato diventa la selezione dell'utente, mentre la finestra di dialogo si disegna sul terminale.",
|
||||
"Utilizzare le variabili standard di dimensione dell'interfaccia utente (<code>$UI_MENU_H</code>, <code>$UI_MSG_W</code>, ecc.) per un dimensionamento coerente tra gli script.",
|
||||
"Controlla sempre le selezioni vuote o annullate e gestiscile correttamente."
|
||||
],
|
||||
"exampleIntro": "Esempio completo: creare un menu di selezione della VM e gestire l’annullamento.",
|
||||
"exampleCode": "# 1) Build the list of VMs as alternating \"ID NAME\" pairs.\n# dialog --menu expects this exact shape: tag1 description1 tag2 description2 ...\nVM_LIST=\"\"\nfor vmid in $(qm list | awk 'NR>1 {print $1}'); do\n vm_name=$(qm config \"$vmid\" | awk -F': ' '/^name:/ {print $2}')\n VM_LIST=\"$VM_LIST $vmid \\\"$vm_name\\\"\"\ndone\n\n# 2) Show the dialog. Captured stdout is the user's selection (the VMID).\nVMID=$(eval \"dialog --backtitle \\\"\\$BACKTITLE\\\" \\\n --title \\\"\\$(translate \\\"Select VM\\\")\\\" \\\n --menu \\\"\\$(translate \\\"Choose a VM from the list:\\\")\\\" \\\n \\$UI_MENU_H \\$UI_MENU_W \\$UI_MENU_LIST_H \\\n $VM_LIST \\\n 2>&1 >/dev/tty\")\n\n# 3) Empty result means the user pressed Cancel or Esc — exit silently.\nif [ -z \"$VMID\" ]; then\n exit 0\nfi\n\n# 4) Continue with the rest of Phase 1, knowing VMID is now set.\necho \"User selected VMID=$VMID\""
|
||||
},
|
||||
"translation": {
|
||||
"heading": "Politica di traduzione",
|
||||
"intro": "Tutte le stringhe visualizzabili dall'utente devono essere avvolte con la funzione <code>translate</code>. ProxMenux li traduce automaticamente in tutte le lingue supportate — scrivi inglese, l'utente legge la loro lingua madre.",
|
||||
"code": "msg_ok \"$(translate \"Operation completed successfully.\")\"\nmsg_error \"$(translate \"Failed to start container\") $CTID.\"\ndialog --title \"$(translate \"Select Storage\")\" ...",
|
||||
"bullets": [
|
||||
"Scrivere stringhe in inglese — la traduzione viene gestita automaticamente dalla build.",
|
||||
"Mantieni concise le stringhe. Evita, se possibile, variabili all’interno di frasi lunghe.",
|
||||
"<strong>non</strong> tradurre nomi di variabili, percorsi o identificatori tecnici."
|
||||
]
|
||||
},
|
||||
"variableStyle": {
|
||||
"heading": "Convenzioni variabili e di stile",
|
||||
"bullets": [
|
||||
"Utilizzare <code>UPPER_CASE</code> per le variabili a livello di script.",
|
||||
"Utilizzare <code>lower_case</code> per le variabili di funzione locali (dichiarazione con <code>local</code>).",
|
||||
"Quotare tutte le espansioni variabili: <code>\"$VAR\"</code> — non <code>$VAR</code>.",
|
||||
"Utilizzare <code>[[ ]]</code> per condizionali, non <code>[ ]</code> (eccetto dove è richiesto il POSIX).",
|
||||
"<code>show_proxmenux_logo</code> è il modo previsto per pulire lo schermo: lo cancella e mostra il logo del progetto per dare un contesto visivo. Chiamalo una volta all’inizio della fase 2, e facoltativamente prima di una lunga attesa nella fase 1."
|
||||
],
|
||||
"standardNamesIntro": "Nomi variabili standard nel progetto:",
|
||||
"standardNamesCode": "CTID # container ID\nVMID # virtual machine ID\nDISK # device path (e.g. /dev/sdb)\nPARTITION # partition path (e.g. /dev/sdb1)\nSTORAGE # Proxmox storage name\nMOUNT_POINT # filesystem mount path",
|
||||
"redirectHeading": "Reindirizza l'output dello strumento durante la fase 2",
|
||||
"redirectIntro": "La fase 2 mostra un log di righe <code>msg_info → msg_ok</code>. Se uno strumento chiamato, come apt, mkfs, qm, pct o dd, scrive su stdout/stderr, il suo output fa scorrere i messaggi e confonde la vista. L’utente non distingue più l’avanzamento dello script dai dettagli dello strumento.",
|
||||
"withoutRedirectIntro": "<strong>Senza reindirizzare</strong> — ciò che l'utente vede se non si gestisce il rumore:",
|
||||
"withoutRedirectCode": "ℹ Installing kernel package...\nReading package lists... Done\nBuilding dependency tree... Done\nReading state information... Done\nThe following NEW packages will be installed:\n proxmox-kernel-6.5\n0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.\nNeed to get 12.5 MB of archives.\nAfter this operation, 47.2 MB of additional disk space will be used.\nGet:1 http://download.proxmox.com/debian/pve trixie/pve-no-subscription amd64 ...\n... [200+ more lines of dpkg output] ...\n✓ Kernel installed.",
|
||||
"withRedirectIntro": "<strong>Con redirect</strong> — quale sia la stessa operazione quando il rumore viene inviato altrove:",
|
||||
"withRedirectCode": "ℹ Installing kernel package...\n✓ Kernel installed.\nℹ Configuring kernel command line...\n✓ Configured.\nℹ Refreshing boot loader...\n✓ Boot loader updated.",
|
||||
"twoPatternsIntro": "Due modelli tra cui scegliere:",
|
||||
"discardLead": "<strong>Scarta l’output</strong> quando non serve: è la soluzione più semplice e rapida.",
|
||||
"discardCode": "DEBIAN_FRONTEND=noninteractive apt-get install -y \"$package\" >/dev/null 2>&1",
|
||||
"logLead": "<strong>Inviare l'output a un file di registro</strong> quando si può desiderare di ispezionare in seguito (debugging un'installazione fallita, controllando ciò che dpkg effettivamente fatto). Questo è il modello preferito per qualsiasi operazione apt:",
|
||||
"logCode": "apt-get install -y \"$package\" >> \"$log_file\" 2>&1",
|
||||
"referenceOutro": "Lo script <code>scripts/global/update-pve9_2.sh</code> è un'implementazione di riferimento — ogni chiamata <code>apt-get</code> invia l'output a un file di registro in modo che l'utente vede solo il flusso <code>msg_info → msg_ok</code> pulito, mentre il log su disco consente di ricostruire esattamente ciò che ha fatto apt se qualcosa va storto."
|
||||
},
|
||||
"dosAndDonts": {
|
||||
"heading": "Cosa fare e cosa non fare",
|
||||
"doHeading": "✅ Da fare",
|
||||
"doBullets": [
|
||||
"<code>stop_spinner</code> prima di un <code>dialog</code> in Fase 1 solo quando un girante <code>msg_info</code> è in esecuzione.",
|
||||
"La fase 2 inizia con <code>show_proxmenux_logo + msg_title + msg_ok</code> per riepilogare i risultati della fase 1.",
|
||||
"Utilizzare <code>msg_ok</code> per funzioni abilitate con successo, anche se è necessario un riavvio.",
|
||||
"Utilizzare <code>whiptail</code> (non <code>dialog</code>) per qualsiasi prompt post-esecuzione che deve apparire in Fase 2.",
|
||||
"Sempre includere un ramo “No” nelle finestre di dialogo di riavvio che avverte l’utente di non avviare la risorsa interessata fino al riavvio.",
|
||||
"Limita la logica riservata alle VM verificando <code>[[ -f \"/etc/pve/qemu-server/$'{'vmid'}'.conf\" ]]</code>: controller e NVMe PCIe non possono essere assegnati a LXC con passthrough PCI.",
|
||||
"Utilizzare <code>ensure_repositories</code> da <code>utils-install-functions.sh</code> invece di <code>apt-get update</code> incondizionato.",
|
||||
"Utilizzare array paralleli in Fase 1 quando ogni elemento ha bisogno di finestre di dialogo multiple."
|
||||
],
|
||||
"dontHeading": "❌ Da evitare",
|
||||
"dontBullets": [
|
||||
"Chiama <code>dialog</code> mentre uno spinner è attivo.",
|
||||
"Saltare la fase 1 recap all'inizio della fase 2.",
|
||||
"Chiama <code>show_proxmenux_logo</code> una seconda volta — cancella tutto Fase 2 ha stampato.",
|
||||
"Utilizzare <code>dialog</code> in Fase 2 (usare <code>whiptail</code> per il raro caso inevitabile).",
|
||||
"Usare il solo <code>clear</code>.",
|
||||
"Avvolgere <code>msg_title</code> in linee vuote <code>echo \"\"</code> — include già spaziatura.",
|
||||
"Utilizzare <code>msg_warn</code> per segnalare una funzione abilitata con successo: è un <code>msg_ok</code>.",
|
||||
"Eseguire <code>apt-get update</code> incondizionato — utilizzare <code>ensure_repositories</code>."
|
||||
]
|
||||
},
|
||||
"submitting": {
|
||||
"heading": "Inviare il tuo contributo",
|
||||
"steps": [
|
||||
"Crea un fork di <code>MacRimi/ProxMenux</code> su GitHub e clonalo.",
|
||||
"Crea un ramo <code>feature/*</code> da <code>develop</code> (vedi <em>Modello dei rami</em> sopra).",
|
||||
"Segui questa guida per qualsiasi script nuovo o modificato. Scrivi l'intestazione con il tuo nome; aggiungi la linea di sponsor opzionale se vuoi.",
|
||||
"Prova lo script su una vera istanza Proxmox VE: fase 1 con tutti i rami dei dialoghi e fase 2 con ogni operazione e il ripristino pulito in caso di errore.",
|
||||
"Apri una pull request <strong>verso <code>develop</code></strong> con una descrizione chiara: cosa fa lo script, cosa è cambiato e su quale versione di Proxmox VE è stato testato.",
|
||||
"Assicurati che il contributo rispetti il <cocLink>Codice di condotta</cocLink>."
|
||||
],
|
||||
"securityOutro": "Per problemi di sicurezza sensibili, segui la procedura di divulgazione in <securityLink>SECURITY.md</securityLink> invece di aprire una segnalazione pubblica."
|
||||
},
|
||||
"whereNext": {
|
||||
"heading": "Come proseguire",
|
||||
"items": [
|
||||
{
|
||||
"kind": "external",
|
||||
"url": "https://github.com/MacRimi/ProxMenux/blob/main/CONTRIBUTING.md",
|
||||
"label": "CONTRIBUTING.md (guida completa)",
|
||||
"tail": "— la fonte di verità per ogni convenzione, compresi i modelli hardware avanzati."
|
||||
},
|
||||
{
|
||||
"kind": "internal",
|
||||
"href": "/docs/about/contributors",
|
||||
"label": "Contributori",
|
||||
"tail": "— le persone il cui lavoro ha plasmato le versioni ProxMenux (pagina diversa da questa)."
|
||||
},
|
||||
{
|
||||
"kind": "internal",
|
||||
"href": "/docs/about/code-of-conduct",
|
||||
"label": "Codice di condotta",
|
||||
"tail": "— gli standard che ogni collaboratore accetta di seguire."
|
||||
},
|
||||
{
|
||||
"kind": "external",
|
||||
"url": "https://github.com/MacRimi/ProxMenux/discussions",
|
||||
"label": "GitHub Discussions",
|
||||
"tail": "— chiedere prima di costruire se non sei sicuro se un'idea si adatta, o trovare collaboratori su una caratteristica più grande."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Contributori | Documentazione ProxMenux",
|
||||
"description": "Un riconoscimento alle persone che rendono possibile ProxMenux: tester, revisori e sviluppatori che contribuiscono a ogni versione.",
|
||||
"ogTitle": "Contributori | Documentazione ProxMenux",
|
||||
"ogDescription": "Incontra i contributori dietro ProxMenux."
|
||||
},
|
||||
"header": {
|
||||
"title": "Contributori",
|
||||
"description": "Il progetto ProxMenux cresce grazie ai suoi collaboratori. Questa pagina riconosce il loro lavoro: provare le versioni prima della pubblicazione, individuare regressioni, esaminare le PR e orientare le nuove funzionalità.",
|
||||
"section": "Informazioni"
|
||||
},
|
||||
"beyond": {
|
||||
"title": "Oltre questa lista",
|
||||
"body": "Molte altre persone contribuiscono segnalando bug, proponendo funzionalità in Discussions, provando le versioni beta e traducendo il progetto. L’elenco completo dei collaboratori al codice si trova nel <extlink>grafico dei contributori di GitHub</extlink>. Questa pagina presenta chi partecipa più attivamente ai test e alla revisione delle versioni di ProxMenux."
|
||||
},
|
||||
"testers": {
|
||||
"heading": "Tester e recensori",
|
||||
"intro": "Queste persone sono state tra le prime a contribuire al progetto. I loro test, le segnalazioni di problemi e le proposte di miglioramento hanno aiutato ProxMenux a diventare ciò che è oggi.",
|
||||
"roles": {
|
||||
"testing": "Test",
|
||||
"testingReviewer": "Test e revisione"
|
||||
},
|
||||
"youtube": "YouTube"
|
||||
},
|
||||
"contribute": {
|
||||
"heading": "Vuoi contribuire?",
|
||||
"intro": "Ogni contributo è benvenuto: codice, test, design, documentazione o anche solo la condivisione delle tue idee:",
|
||||
"tester": "<strong>Tester</strong> — prova il canale <beta>beta</beta> e segnala ciò che funziona e ciò che non funziona prima delle versioni stabili.",
|
||||
"developer": "<strong>Sviluppatore</strong> — Bash, Next.js (TypeScript) e un po’ di Python per l’ambiente virtuale di traduzione (venv). Le PR sono benvenute su <gh>GitHub</gh>.",
|
||||
"designer": "<strong>Designer</strong> — Miglioramenti dell'interfaccia utente, icone, screenshot per la documentazione.",
|
||||
"ideas": "<strong>Idee</strong> — apri una discussione in <disc>GitHub Discussions</disc> prima di creare una issue per richiedere una funzionalità."
|
||||
},
|
||||
"coc": {
|
||||
"title": "Leggi prima il codice di condotta",
|
||||
"body": "Prima di proporre codice o segnalare problemi, leggi il <coclink>Codice di condotta e le buone pratiche</coclink>. Descrive le aspettative sulla responsabilità del codice, sulla segnalazione delle vulnerabilità e sull’ambito delle PR."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,94 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "FAQ | Documentazione ProxMenux",
|
||||
"description": "Domande frequenti su ProxMenux: funzionalità, installazione, compatibilità da PVE 8, personalizzazione, aggiornamenti, sicurezza, uso in produzione, file di sistema, contributi e disinstallazione.",
|
||||
"ogTitle": "FAQ | Documentazione ProxMenux",
|
||||
"ogDescription": "Domande frequenti su installazione, compatibilità, sicurezza e modi per contribuire a ProxMenux."
|
||||
},
|
||||
"header": {
|
||||
"title": "Domande frequenti",
|
||||
"description": "Domande comuni su ProxMenux: che cos’è, a chi serve, installazione, aggiornamento, disinstallazione, compatibilità, personalizzazione, sicurezza e contributi. Se non trovi la tua domanda, consulta GitHub Discussions o apri una issue.",
|
||||
"section": "Informazioni"
|
||||
},
|
||||
"quickLinks": {
|
||||
"title": "Collegamenti rapidi",
|
||||
"installationLabel": "Installazione",
|
||||
"installationSuffix": " — il comando di installazione su una sola riga e le dipendenze.",
|
||||
"introductionLabel": "Introduzione",
|
||||
"introductionSuffix": " — cosa fa ProxMenux, in cinque minuti.",
|
||||
"uninstallLabel": "Disinstalla",
|
||||
"uninstallSuffix": "— rimozione pulita.",
|
||||
"issuesLabel": "GitHub Issues",
|
||||
"discussionsLabel": "Discussioni"
|
||||
},
|
||||
"q1": {
|
||||
"question": "Che cosa è ProxMenux, e per cosa è usato?",
|
||||
"p1Rich": "<strong>ProxMenux</strong> è uno strumento interattivo a menu che rende <strong>Proxmox VE</strong> accessibile a tutti, a prescindere dall’esperienza tecnica. Semplifica l’esecuzione dei comandi e consente di gestire il sistema senza conoscenze avanzate di Linux.",
|
||||
"p2": "Gli utenti meno esperti possono eseguire comandi da menu strutturati, riducendo ciò che devono digitare nel terminale. Gli amministratori esperti risparmiano passaggi nelle attività ripetitive: protezione dopo l’installazione, passthrough GPU, importazione di VM OVF e rotazione degli snapshot ZFS.",
|
||||
"p3": "Proxmox VE è ampiamente usato per:",
|
||||
"items": [
|
||||
"Virtualizzazione di livello aziendale",
|
||||
"HomeLab e soluzioni cloud personali",
|
||||
"Server multimediali, automazione e altro ancora"
|
||||
]
|
||||
},
|
||||
"q2": {
|
||||
"question": "Come posso installare ProxMenux?",
|
||||
"p1Rich": "Segui la <installlink>guida all’installazione</installlink>. In breve:",
|
||||
"stableInstall": "bash -c \"$(wget -qLO - https://raw.githubusercontent.com/MacRimi/ProxMenux/main/install_proxmenux.sh)\"",
|
||||
"p2": "Una volta installato, basta avviarlo con:",
|
||||
"menuCmd": "menu"
|
||||
},
|
||||
"q3": {
|
||||
"question": "ProxMenux è compatibile con tutte le versioni Proxmox?",
|
||||
"bodyRich": "<strong>No — ProxMenux richiede Proxmox VE 8 o successivo.</strong> PVE 7 e le versioni precedenti non sono supportati. Se usi ancora PVE 7, passa prima a 8.x seguendo la procedura ufficiale Proxmox. Puoi poi gestire il passaggio da 8 a 9 con ProxMenux da <upgradelink>Utilità → Aggiorna PVE 8 a PVE 9</upgradelink>."
|
||||
},
|
||||
"q4": {
|
||||
"question": "Posso personalizzare ProxMenux?",
|
||||
"p1Rich": "Gli aggiornamenti possono sovrascrivere le modifiche locali agli script principali: evita quindi di modificare direttamente questi file. Ecco cosa <em>puoi</em> personalizzare:",
|
||||
"items": [
|
||||
"Il banner della console tramite lo strumento <strong>FastFetch</strong> nelle opzioni Post-Install.",
|
||||
"Quali componenti opzionali sono installati (Monitor, Fail2Ban, Lynis...) — scegliere durante l'installazione o tramite il menu pertinente in seguito."
|
||||
]
|
||||
},
|
||||
"q5": {
|
||||
"question": "Come posso aggiornare ProxMenux?",
|
||||
"p1Rich": "Quando è disponibile una nuova versione, ProxMenux la rileva al successivo avvio di <code>menu</code> e propone l’aggiornamento. Se accetti, sostituisce i file e la configurazione dello strumento nell’installazione esistente, senza richiedere download manuali.",
|
||||
"p2Rich": "Chi usa la versione stabile riceve aggiornamenti stabili; chi usa la beta riceve quelli beta. Quando viene pubblicata una versione stabile, la beta lo segnala alla successiva apertura del menu e propone il passaggio automatico. Consulta il <betalink>programma beta</betalink>."
|
||||
},
|
||||
"q6": {
|
||||
"question": "Dove posso segnalare i problemi?",
|
||||
"p1Rich": "Segnala i bug su <issueslink>GitHub Issues</issueslink>. Includi i passaggi per riprodurli, il messaggio di errore e, se pertinente, l’output di Monitor ottenuto con <code>journalctl -u proxmenux-monitor -n 50</code>.",
|
||||
"p2Rich": "Per i problemi di <strong>sicurezza</strong>, <strong>non pubblicare i dettagli</strong>. Segui la procedura di segnalazione responsabile nel <coclink>codice di condotta e nelle buone pratiche</coclink>."
|
||||
},
|
||||
"q7": {
|
||||
"question": "Posso contribuire a ProxMenux?",
|
||||
"p1Rich": "<strong>Certamente.</strong> ProxMenux è un progetto collaborativo e open source. Puoi contribuire con codice (Bash, Next.js/TypeScript e strumenti di traduzione in Python), test, documentazione, design o idee.",
|
||||
"item1Rich": "Discuti le idee in <discusslink>GitHub Discussions</discusslink> prima di aprire una richiesta di funzionalità.",
|
||||
"item2Rich": "Prima di inviare una pull request, leggi il <coclink>codice di condotta e le buone pratiche</coclink>.",
|
||||
"item3Rich": "Consulta la <contriblink>pagina dei collaboratori</contriblink> per conoscere chi si occupa attualmente di test e revisioni."
|
||||
},
|
||||
"q8": {
|
||||
"question": "ProxMenux modifica i file di sistema critici?",
|
||||
"p1Rich": "<strong>L’installazione di ProxMenux aggiunge i seguenti componenti.</strong>",
|
||||
"item1Rich": "Dipendenze tramite apt: <code>dialog</code>, <code>curl</code>, <code>jq</code> e <code>git</code>. Le traduzioni usano cataloghi JSON già generati; l’installazione non aggiunge all’host un ambiente virtuale per la traduzione.",
|
||||
"item2Rich": "L'albero di script a <code>/usr/local/share/proxmenux/</code>.",
|
||||
"item3Rich": "Il comando di avvio in <code>/usr/local/bin/menu</code>.",
|
||||
"item4Rich": "Facoltativo: il servizio systemd di Monitor, <code>proxmenux-monitor.service</code>.",
|
||||
"p2Rich": "ProxMenux <em>non</em> modifica la configurazione principale di Proxmox, a meno che tu non lo richieda esplicitamente da un menu dedicato. Per esempio, la riparazione della rete modifica <code>/etc/network/interfaces</code>, ma solo dopo la tua conferma e la creazione di un backup."
|
||||
},
|
||||
"q9": {
|
||||
"question": "È sicuro usare ProxMenux in produzione?",
|
||||
"bodyRich": "<strong>Sì.</strong> Poiché ProxMenux modifica i file principali di Proxmox solo su richiesta esplicita, può essere usato in produzione. Come per ogni automazione, provalo prima in un ambiente controllato e prepara i backup prima delle operazioni distruttive: aggiornamento da PVE 8 a 9, formattazione di dischi, eliminazione di VM e simili."
|
||||
},
|
||||
"q10": {
|
||||
"question": "Come posso disinstallare ProxMenux?",
|
||||
"p1Rich": "Da ProxMenux: <strong>Impostazioni → Disinstalla ProxMenux</strong>. La disinstallazione rimuove gli script, il comando di avvio e il servizio Monitor, oltre alle dipendenze selezionate se richiesto. Ripristina <code>/root/.bashrc</code> e <code>/etc/motd</code> dalle copie create da Post-Install, se presenti (altrimenti rimuove la riga di ProxMenux dal MOTD).",
|
||||
"p2Rich": "Procedura completa: <uninstalllink>Disinstallare ProxMenux</uninstalllink>."
|
||||
},
|
||||
"q11": {
|
||||
"question": "VirusTotal contrassegna l'URL di installazione — è sicuro?",
|
||||
"p1Rich": "Il risultato di 1/95 del motore <em>Chong Lua Dao</em>, riportato nella issue #162, è stato identificato dal manutentore come falso positivo. L’installazione si avvia con un comando che scarica ed esegue lo script (<code>bash -c \"$(wget -qLO - …)\"</code>) e può scaricare <code>jq</code> dalla sua release ufficiale su GitHub. Questo <em>comportamento</em> può attivare gli scanner euristici; il rapporto storico non costituisce una valutazione di ogni download futuro.",
|
||||
"p2Rich": "ProxMenux è completamente open source e puoi esaminare lo script di installazione riga per riga: <scriptlink>install_proxmenux.sh</scriptlink>. Altri dettagli nella <issuelink>issue #162</issuelink>."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Informazioni su | Documentazione ProxMenux",
|
||||
"description": "Informazioni su ProxMenux: obiettivi del progetto, collaboratori, FAQ e codice di condotta. Uno strumento di gestione open source a menu per Proxmox VE 8+, sviluppato e mantenuto da MacRimi con un piccolo gruppo di tester e collaboratori.",
|
||||
"ogTitle": "Informazioni su | Documentazione ProxMenux",
|
||||
"ogDescription": "Informazioni su ProxMenux — strumento di gestione a menu open source per Proxmox VE 8+."
|
||||
},
|
||||
"header": {
|
||||
"title": "Informazioni",
|
||||
"description": "Informazioni sul progetto, FAQ, contributori e codice di condotta. ProxMenux è uno strumento di gestione a menu open source per Proxmox VE 8+, costruito e mantenuto da MacRimi con l'aiuto di un piccolo team di tester e collaboratori.",
|
||||
"section": "Informazioni"
|
||||
},
|
||||
"callout": {
|
||||
"title": "Open source, sviluppato dalla comunità",
|
||||
"body": "ProxMenux è distribuito con licenza GPL-3.0 e sviluppato pubblicamente su GitHub. Ogni script può essere esaminato e ogni modifica tracciata. Sono benvenuti segnalazioni di bug, idee, codice e test."
|
||||
},
|
||||
"section": {
|
||||
"heading": "In questa sezione",
|
||||
"options": [
|
||||
{
|
||||
"icon": "HelpCircle",
|
||||
"href": "/docs/about/faq",
|
||||
"title": "FAQ",
|
||||
"description": "Domande frequenti: che cos’è ProxMenux, installazione, compatibilità, personalizzazione, aggiornamenti, sicurezza, uso in produzione e disinstallazione."
|
||||
},
|
||||
{
|
||||
"icon": "Users",
|
||||
"href": "/docs/about/contributors",
|
||||
"title": "Contributori",
|
||||
"description": "Un riconoscimento alle persone che rendono possibile ProxMenux: tester, revisori e sviluppatori che contribuiscono a ogni versione."
|
||||
},
|
||||
{
|
||||
"icon": "ScrollText",
|
||||
"href": "/docs/about/code-of-conduct",
|
||||
"title": "Codice di condotta",
|
||||
"description": "Valori del progetto, responsabilità del codice e linee guida per contribuire. Da leggere prima di aprire una PR o segnalare un problema."
|
||||
}
|
||||
]
|
||||
},
|
||||
"involved": {
|
||||
"heading": "Partecipa",
|
||||
"intro": "Tre modi per partecipare al progetto:",
|
||||
"cards": [
|
||||
{
|
||||
"href": "https://github.com/MacRimi/ProxMenux/issues/new",
|
||||
"title": "🐛 Segnala un bug",
|
||||
"description": "GitHub Issues — includi i log e i passaggi per riprodurre il problema."
|
||||
},
|
||||
{
|
||||
"href": "https://github.com/MacRimi/ProxMenux/discussions",
|
||||
"title": "💡 Suggerisci una funzionalità",
|
||||
"description": "GitHub Discussions — condividi le tue idee prima di aprire una PR."
|
||||
},
|
||||
{
|
||||
"href": "https://github.com/MacRimi/ProxMenux/pulls",
|
||||
"title": "🔀 Invia una PR",
|
||||
"description": "GitHub Pull Requests — leggere prima il codice di condotta."
|
||||
}
|
||||
]
|
||||
},
|
||||
"support": {
|
||||
"heading": "Sostieni il progetto",
|
||||
"introRich": "Se ProxMenux ti fa risparmiare tempo, il modo più semplice per farlo conoscere è <starlink>assegnare una ⭐ al repository su GitHub</starlink>. Se vuoi fare di più:",
|
||||
"kofiLabel": "Supporto su Ko-fi",
|
||||
"kofiOutro": " — offri un caffè al manutentore e contribuisci a portare avanti lo sviluppo."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,220 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Creazione di backup — flusso di backup interattivo | ProxMenux",
|
||||
"description": "Il flusso di backup interattivo di ProxMenux: due punti di accesso (il menu TUI di Scripts e l’interfaccia web di Monitor), tre destinazioni, due modalità di profilo, una fase di preparazione temporanea e una finestra di conferma. La pagina descrive la matrice con sei opzioni, i profili predefinito e personalizzato e ciò che vede l’utente dalla scelta del backup fino al salvataggio dell’archivio a destinazione.",
|
||||
"ogTitle": "ProxMenux Backup — creazione di backup",
|
||||
"ogDescription": "Il flusso di backup interattivo con tre destinazioni, due profili e una fase di staging comune.",
|
||||
"twitterTitle": "Creazione di backup | ProxMenux",
|
||||
"twitterDescription": "Flusso di backup interattivo con tre destinazioni e due modalità di profilo."
|
||||
},
|
||||
"header": {
|
||||
"title": "Creazione di backup",
|
||||
"description": "Il flusso di backup interattivo: scegli una destinazione e un profilo, controlla il riepilogo di conferma e segui il salvataggio dell’archivio. I due punti di accesso condividono lo stesso backend e producono archivi identici.",
|
||||
"section": "Backup e ripristino"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Due punti di ingresso, funzionalità identiche",
|
||||
"body": "La TUI di Scripts e l’interfaccia web di Monitor offrono <strong>esattamente le stesse funzionalità</strong>. Ogni backup — manuale o pianificato — usa la stessa matrice di scelta (tre destinazioni × due profili) e richiama la stessa funzione backend per ogni cella (<code>_bk_pbs</code>, <code>_bk_borg</code> o <code>_bk_local</code>). Gli archivi prodotti dai due punti di accesso sono indistinguibili. La scelta dipende dalle preferenze: la TUI è adatta a SSH e agli script; Monitor offre il controllo con il mouse insieme alle viste delle notifiche e del monitoraggio dei log."
|
||||
},
|
||||
"entryPoints": {
|
||||
"heading": "I due punti di ingresso",
|
||||
"rows": [
|
||||
{
|
||||
"entry": "ProxMenux Scripts (TUI)",
|
||||
"path": "menu → Utilities → Host Config Backup",
|
||||
"detail": "Flusso basato sul dialogo, SSH-friendly. Il menu principale presenta le sei opzioni direttamente. Utilizza <code>backup_menu</code> in <code>backup_host.sh</code>."
|
||||
},
|
||||
{
|
||||
"entry": "ProxMenux Monitor (interfaccia web)",
|
||||
"path": "Backups tab → Create backup",
|
||||
"detail": "Flusso guidato da una procedura assistita. Le stesse sei opzioni sono presentate in un modulo in due passaggi (destinazione → profilo). Le stesse funzioni backend vengono richiamate tramite l’API Flask."
|
||||
}
|
||||
]
|
||||
},
|
||||
"modes": {
|
||||
"heading": "Backup manuali e pianificati",
|
||||
"body": "I backup possono essere prodotti in due modi: <strong>manuale</strong> (il flusso interattivo descritto in questa pagina - l'utente sceglie una destinazione e un profilo da un menu e segue il salvataggio dell’archivio) o <strong>pianificato</strong> (un lavoro non assistito che funziona su un timer in stile cron e applica la ritenzione configurata sul lavoro). Entrambe le modalità supportano le stesse tre destinazioni e gli stessi due profili, ed entrambe sono disponibili da entrambi i punti di ingresso — il menu Script TUI e la scheda Monitor Backups. I lavori programmati utilizzano le stesse funzioni backend del flusso manuale attraverso <code>run_scheduled_backup.sh</code>; gli archivi prodotti sono indistinguibili.",
|
||||
"seeAlso": "La pagina dei lavori programmati copre il flusso completo, incluso come creare un lavoro, collegarlo a un timer PVE vzdump esistente e configurare i valori di ritenzione.",
|
||||
"monitorAlt": "Scheda di backup ProxMenux Monitor che mostra la Nuova finestra di dialogo di backup programmata con i campi di destinazione, profilo, pianificazione e ritenzione.",
|
||||
"monitorCaption": "Backup pianificato — ProxMenux Monitor. La stessa finestra guidata che crea un backup manuale contiene in basso i campi di pianificazione e conservazione per l’esecuzione senza intervento."
|
||||
},
|
||||
"matrix": {
|
||||
"heading": "La matrice con sei opzioni",
|
||||
"intro": "La scelta determina sia il backend eseguito sia la strategia di selezione dei percorsi. Consulta le pagine delle singole destinazioni per i dettagli di configurazione di ogni cella.",
|
||||
"rows": [
|
||||
{
|
||||
"combo": "1",
|
||||
"destination": "PBS",
|
||||
"profile": "Predefinito",
|
||||
"action": "Carica il profilo predefinito e gli extra persistenti su un repository PBS configurato."
|
||||
},
|
||||
{
|
||||
"combo": "2",
|
||||
"destination": "Borg",
|
||||
"profile": "Predefinito",
|
||||
"action": "Crea un archivio con il profilo predefinito più extra persistenti nel repository Borg selezionato."
|
||||
},
|
||||
{
|
||||
"combo": "3",
|
||||
"destination": "Locale",
|
||||
"profile": "Predefinito",
|
||||
"action": "Scrive un archivio <code>.tar.zst</code> con il profilo predefinito più extra persistenti al target locale configurato."
|
||||
},
|
||||
{
|
||||
"combo": "4",
|
||||
"destination": "PBS",
|
||||
"profile": "Personalizzato",
|
||||
"action": "Apre il selettore dei percorsi prima del caricamento su PBS; l’utente seleziona i percorsi e può aggiungerne di nuovi."
|
||||
},
|
||||
{
|
||||
"combo": "5",
|
||||
"destination": "Borg",
|
||||
"profile": "Personalizzato",
|
||||
"action": "Apre il selettore dei percorsi prima di creare l’archivio Borg."
|
||||
},
|
||||
{
|
||||
"combo": "6",
|
||||
"destination": "Locale",
|
||||
"profile": "Personalizzato",
|
||||
"action": "Apre il selettore dei percorsi prima di scrivere il file <code>.tar.zst</code> locale."
|
||||
}
|
||||
]
|
||||
},
|
||||
"profiles": {
|
||||
"heading": "Profilo predefinito e personalizzato",
|
||||
"defaultTitle": "Profilo predefinito",
|
||||
"defaultBody": "Il profilo predefinito è l'elenco curato da <code>hb_default_profile_paths</code> (documentato in <em>Come funziona</em> sotto <em>Categorie di percorsi</em>) più ogni voce nel file extra persistente <code>/usr/local/share/proxmenux/backup-extra-paths.txt</code>. L'utente conferma le opzioni di destinazione e crittografia e il backup procede senza ulteriori selezioni dei percorsi.",
|
||||
"customTitle": "Profilo personalizzato",
|
||||
"customBody": "Il profilo personalizzato apre un elenco con tutti i percorsi del profilo predefinito (non selezionati) e tutti gli extra persistenti (già selezionati, con il prefisso <code>[+]</code>). L’utente seleziona i percorsi per questa esecuzione e può premere <em>Aggiungi percorso personalizzato</em> per aggiungere un nuovo percorso assoluto. I percorsi aggiunti vengono salvati in <code>backup-extra-paths.txt</code>, così i backup futuri li includono automaticamente senza doverli aggiungere di nuovo. Deselezionare un extra persistente lo esclude da questa esecuzione ma non lo elimina dal file — l’eliminazione avviene con l’azione separata <em>Gestisci percorsi personalizzati</em>, al di fuori del flusso di backup.",
|
||||
"customPickerAlt": "Elenco di controllo del profilo personalizzato che mostra i percorsi di predefinito (non selezionati) e gli extra persistenti (già selezionati con un prefisso [+]), più pulsanti per aggiungere un nuovo percorso o confermare la selezione.",
|
||||
"customPickerCaption": "Profilo personalizzato — il selettore dei percorsi. I percorsi del profilo predefinito non sono selezionati; gli extra persistenti sono già selezionati con il prefisso [+]. L’utente seleziona i percorsi per questa esecuzione.",
|
||||
"manageCustomAlt": "Menu di gestione dei percorsi personalizzati con l’elenco degli extra persistenti e le opzioni per aggiungerli, rimuoverli o modificarli.",
|
||||
"manageCustomCaption": "Gestisci percorsi personalizzati — il punto di ingresso dove vengono aggiunti o rimossi gli extra persistenti. Ogni percorso elencato qui è incluso automaticamente nei backup in modalità predefinita senza dover aprire il selettore personalizzato."
|
||||
},
|
||||
"commonPipeline": {
|
||||
"heading": "Cosa funziona indipendentemente dalla destinazione",
|
||||
"intro": "Una volta definito il profilo, ogni backend esegue la stessa procedura di preparazione temporanea prima di passare al proprio metodo di caricamento. <code>hb_prepare_staging</code> assembla l’albero dell’archivio in <code>/tmp/proxmenux-DESTINATION-stage.XXXXXX</code> e compila ciascuno dei tre blocchi di dati.",
|
||||
"steps": [
|
||||
{
|
||||
"step": "1",
|
||||
"name": "Assemblaggio del rootfs",
|
||||
"detail": "Esegue <code>rsync -a</code> per ogni percorso selezionato verso <code>staging_root/rootfs/</code>. Il database pmxcfs in <code>/var/lib/pve-cluster/config.db</code> viene acquisito separatamente tramite <code>sqlite3 .backup</code> per ottenere un’istantanea coerente senza arrestare il cluster; i file ausiliari <code>.db-wal</code> / <code>.db-shm</code> sono esclusi da rsync. Se <code>sqlite3</code> non è disponibile, viene invece salvato un file <code>config.db.raw-fallback</code>, che il ripristino adotta come database durante l’importazione. Da <code>/root/</code> sono esclusi i sottopercorsi volatili (cronologia bash, cache, cestino). I percorsi assenti nell’origine vengono registrati in <code>metadata/missing_paths.txt</code> senza interrompere il backup."
|
||||
},
|
||||
{
|
||||
"step": "2",
|
||||
"name": "Generazione manifesto",
|
||||
"detail": "<code>build_manifest.sh</code> coordina i sei moduli di raccolta e scrive <code>manifest.json</code> nella radice della directory temporanea. Se un modulo non riesce, la sezione interessata assume un valore predefinito vuoto documentato; il manifest resta valido."
|
||||
},
|
||||
{
|
||||
"step": "3",
|
||||
"name": "Inventario dei pacchetti",
|
||||
"detail": "<code>apt-mark showmanual</code> viene catturato verbatim in <code>metadata/packages.manual.list</code>. Lo stato dei componenti è già all'interno del rootfs ripristinato (<code>components_status.json</code>) perché <code>/usr/local/share/proxmenux/</code> fa parte del profilo predefinito."
|
||||
},
|
||||
{
|
||||
"step": "4",
|
||||
"name": "Informazioni sull’esecuzione",
|
||||
"detail": "<code>metadata/run_info.env</code> registra l'identità di esecuzione di backup — hostname, timestamp, versione del kernel — utilizzata dal controllo di compatibilità del ripristino per determinare la direzione del cross-kernel."
|
||||
},
|
||||
{
|
||||
"step": "5",
|
||||
"name": "Notifica (start)",
|
||||
"detail": "Viene eseguito <code>hb_notify_lifecycle \"start\"</code>. Se le notifiche sono configurate in Monitor, viene inviato all’utente l’evento <em>Backup dell’host avviato</em>. Non viene inviato nulla se non sono configurati canali."
|
||||
}
|
||||
]
|
||||
},
|
||||
"included": {
|
||||
"heading": "Cosa entra e cosa rimane fuori",
|
||||
"intro": "Ogni percorso nel profilo risolto (predefinito + extra persistenti + selezione personalizzata) viene copiato con <code>rsync -aAXH --numeric-ids</code>. Un elenco di esclusione condiviso si applica a ogni percorso, e due directory portano ulteriori esclusioni specifiche del percorso.",
|
||||
"globalTitle": "Esclusioni globali (applicate ad ogni percorso)",
|
||||
"globalItems": [
|
||||
"<code>images/</code> — dump immagine.",
|
||||
"<code>dump/</code> — output di vzdump.",
|
||||
"<code>tmp/</code> — file temporanei.",
|
||||
"<code>*.log</code> — file di registro."
|
||||
],
|
||||
"rootTitle": "<code>/root/</code> esclusioni",
|
||||
"rootBody": "<code>/root/</code> fa parte del profilo predefinito per includere nell’archivio gli script e la configurazione dell’utente. Sono esclusi i sottopercorsi volatili:",
|
||||
"rootItems": [
|
||||
"<code>.bash_history</code>",
|
||||
"<code>.cache/</code>",
|
||||
"<code>tmp/</code>",
|
||||
"<code>.local/share/Trash/</code>"
|
||||
],
|
||||
"proxmenuxTitle": "<code>/usr/local/share/proxmenux/</code> esclusioni",
|
||||
"proxmenuxBody": "Questa directory spedisce solo stato utente — <code>components_status.json</code>, preferenze, cache post-installazione. Codice che la destinazione avrà già dalla propria installazione ProxMenux è escluso quindi un ripristino non sovrascrive i binari attuali dell'obiettivo con quelli più vecchi:",
|
||||
"proxmenuxItems": [
|
||||
"<code>restore-pending/</code>, <code>scripts/</code>, <code>web/</code>",
|
||||
"<code>monitor-app/</code>, <code>monitor-app.*/</code>, <code>AppImage/</code>",
|
||||
"<code>images/</code>, <code>json/</code>",
|
||||
"<code>utils.sh</code>, <code>helpers_cache.json</code>",
|
||||
"<code>ProxMenux-Monitor.AppImage*</code>, <code>install_proxmenux*.sh</code>"
|
||||
],
|
||||
"notInProfileTitle": "Percorsi fuori dal profilo",
|
||||
"notInProfileBody": "Qualsiasi cosa non elencata in <code>hb_default_profile_paths</code> e non aggiunta come un extra personalizzato o persistente non fa parte del backup. Esempi notevoli:",
|
||||
"notInProfileItems": [
|
||||
"<strong>VM e dischi LXC</strong> — gestiti da <code>vzdump</code>, non da questa funzione. I file di configurazione degli ospiti sotto <code>/etc/pve/nodes/*/qemu-server/*.conf</code> e <code>lxc/*.conf</code> vengono catturati (vivono sotto <code>/etc/pve</code>) in modo che il ripristino riproduca l'inventario; i dischi stessi vengono riattaccati da un backup vzdump/PBS esistente.",
|
||||
"<strong><code>/boot</code> e <code>/boot/efi</code></strong> — binari del kernel, initramfs e la partizione UEFI ESP sono rigenerati dal proprio <code>update-initramfs</code>, <code>update-grub</code> o <code>proxmox-boot-tool refresh</code> dopo il ripristino. Il bootloader non è mai copiato verbatim.",
|
||||
"<strong>Filesystem del kernel e dello stato di esecuzione del sistema</strong> — <code>/proc</code>, <code>/sys</code>, <code>/dev</code> e <code>/run</code> sono pseudo-filesystem generati dal kernel e da udev; non vengono salvati in modo persistente.",
|
||||
"<strong>Binari dei pacchetti in <code>/usr/bin</code>, <code>/usr/lib</code>, <code>/lib</code>, <code>/sbin</code></strong> — reinstallati da APT sul sistema di destinazione a partire da <code>packages.manual.list</code>.",
|
||||
"<strong><code>/var/log/</code>, <code>/var/tmp/</code>, <code>/var/cache/</code></strong> — stato runtime per host, non restaurato.",
|
||||
"<strong><code>/home/USER</code></strong> — non nel profilo predefinito. Aggiungilo come un percorso personalizzato quando un sistema porta directory home degli utenti che devono sopravvivere a un ripristino."
|
||||
],
|
||||
"customPathsTitle": "Come vengono gestiti i percorsi personalizzati",
|
||||
"customPathsBody": "Un percorso personalizzato aggiunto in linea in modalità personalizzata o persistito in <code>backup-extra-paths.txt</code> passa attraverso la stessa pipeline <code>rsync</code> come percorsi di default-profile. Si applicano esclusioni globali. Se il percorso personalizzato avviene sotto <code>/root/</code> o <code>/usr/local/share/proxmenux/</code>, si applicano ancora le esclusioni specifiche del percorso. Ogni percorso archiviato — predefinito o personalizzato — viene registrato in <code>metadata/paths_archived.txt</code>. I percorsi che non esistono sulla sorgente sono registrati in <code>metadata/missing_paths.txt</code> senza interrompere il backup."
|
||||
},
|
||||
"archiveStructure": {
|
||||
"heading": "Struttura dell'archivio",
|
||||
"intro": "La directory di staging prodotta da ogni backend segue lo stesso layout indipendentemente dalla destinazione. Il tarball, PBS <code>.pxar</code> o Borg archivio memorizza questo albero verbatim.",
|
||||
"tree": "backup-[timestamp]/\n├── manifest.json # structured host state (kernel_params, hardware, storage, guests, components, source_host)\n├── metadata/\n│ ├── packages.manual.list # output of apt-mark showmanual\n│ ├── run_info.env # hostname, timestamp, kernel version, pmxcfs method\n│ ├── paths_archived.txt # exact list of paths that reached rootfs/\n│ └── missing_paths.txt # paths from the profile absent on source\n└── rootfs/\n ├── etc/ # /etc/pve, /etc/network, /etc/systemd/network, /etc/ssh, /etc/apt, ...\n ├── root/ # /root without volatile subpaths\n ├── usr/local/ # /usr/local/bin, /usr/local/sbin, /usr/local/share/proxmenux (state only)\n └── var/ # /var/lib/pve-cluster (config.db via sqlite3 .backup), /var/spool/cron/crontabs"
|
||||
},
|
||||
"confirmation": {
|
||||
"heading": "Riepilogo conferma",
|
||||
"body": "Prima che il backend scriva qualcosa alla destinazione, ProxMenux mostra una finestra di dialogo sommaria con la destinazione, l'ID di backup o il nome dell'archivio, lo stato di crittografia e l'elenco dei percorsi da copiare. Cancellando qui interrompe il backup in modo pulito — la directory di staging viene rimossa dal gancio <code>trap</code> impostato sulla funzione backend e nessun dato parziale raggiunge la destinazione."
|
||||
},
|
||||
"writing": {
|
||||
"heading": "Scrivere alla destinazione",
|
||||
"intro": "Dopo la conferma, ogni backend esegue la propria fase di scrittura. Le pagine delle destinazioni ne descrivono il funzionamento; gli elementi comuni sono il log, il file ausiliario e la notifica di completamento.",
|
||||
"rows": [
|
||||
{
|
||||
"topic": "File di registro",
|
||||
"detail": "Ogni backend scrive il suo output completo a <code>/tmp/proxmenux-DESTINATION-backup-YYYYMMDD_HHMMSS.log</code> e, in caso di guasto, offre di aprirlo in una finestra di dialogo scorrevole. Il percorso di log è stampato nel sommario di completamento solo quando il file ha contenuto."
|
||||
},
|
||||
{
|
||||
"topic": "Sidecar (solo locale)",
|
||||
"detail": "<code>hb_write_archive_sidecar</code> scrive un <code>*.proxmenux.json</code> accanto all'archivio locale, quindi il Monitor lo identifica come backup host ProxMenux anche dopo mosse o rinominazioni."
|
||||
},
|
||||
{
|
||||
"topic": "Notifica (completamento/errore)",
|
||||
"detail": "Viene eseguito <code>hb_notify_lifecycle \"complete\"</code> o <code>\"fail\"</code> con durata, dimensione dell’archivio e — in caso di errore — l’ultima riga del log che sembra indicare un errore."
|
||||
}
|
||||
]
|
||||
},
|
||||
"finishedScreens": {
|
||||
"heading": "Che aspetto ha un backup finito",
|
||||
"intro": "Lo stesso evento di completamento viene mostrato da entrambi i punti di accesso. La TUI scrive un riepilogo nel terminale; la scheda Backups di Monitor mostra l’esecuzione nell’elenco degli archivi con dimensione, durata e indicatori di stato.",
|
||||
"scriptsAlt": "ProxMenux Scripts TUI che mostra un backup host finito — destinazione, ID di backup, percorso snapshot, dimensione dei dati, durata e stato di crittografia.",
|
||||
"scriptsCaption": "Backup finito — ProxMenux Scripts (TUI). Il blocco di completamento stampa la destinazione, l'ID di backup, il nome dell'istantanea o dell'archivio risultante, la dimensione dei dati, la durata e lo stato di crittografia.",
|
||||
"monitorAlt": "Scheda di backup ProxMenux Monitor che mostra una voce di backup host finita con dimensioni, durata, indicatore del metodo e indicatore di crittografia.",
|
||||
"monitorCaption": "Backup finito — scheda di backup ProxMenux Monitor. Il nuovo backup appare nell'elenco di archivio con il badge metodo di destinazione, dimensione, durata e - quando applicabile - l'indicatore di blocco di crittografia."
|
||||
},
|
||||
"whereNext": {
|
||||
"heading": "Dove andare dopo",
|
||||
"items": [
|
||||
{
|
||||
"label": "Destinazioni",
|
||||
"href": "/docs/backup-restore/destinations",
|
||||
"tail": "— dettagli di configurazione per Local, PBS e Borg."
|
||||
},
|
||||
{
|
||||
"label": "Lavori programmati",
|
||||
"href": "/docs/backup-restore/scheduled-jobs",
|
||||
"tail": "— eseguire lo stesso backup incustodito su un programma invece di interattivamente."
|
||||
},
|
||||
{
|
||||
"label": "Ripristino",
|
||||
"href": "/docs/backup-restore/restoring",
|
||||
"tail": "— il flusso che consuma ciò che questa pagina produce."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,170 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Ripristino tra versioni del kernel — direzione, filtro sicuro e idratazione | ProxMenux",
|
||||
"description": "Come ProxMenux ripristina un backup host con una versione principale diversa del kernel. Rileva la direzione della differenza, esclude percorsi critici per l’avvio se il kernel di destinazione è più recente e riapplica in quattro fasi IOMMU, ID VFIO e parametri personalizzati senza ricopiare i file legati al kernel.",
|
||||
"ogTitle": "ProxMenux Backup — ripristino tra versioni del kernel e idratazione",
|
||||
"ogDescription": "Ripristino tra versioni del kernel che considera la direzione del cambiamento, con filtro sicuro e idratazione indipendente dal kernel.",
|
||||
"twitterTitle": "Ripristino tra versioni del kernel | ProxMenux",
|
||||
"twitterDescription": "Come ProxMenux gestisce un ripristino quando il kernel di destinazione differisce dal backup."
|
||||
},
|
||||
"header": {
|
||||
"title": "Ripristino tra versioni del kernel",
|
||||
"description": "Come ProxMenux gestisce un ripristino quando l'host di destinazione esegue un kernel diverso da quello registrato nel backup — soprattutto quando il target esegue un kernel più recente. Spiega come viene rilevata la differenza, come i percorsi boot-critical che potrebbero rompere il bersaglio sono filtrati e come la configurazione dell'utente viene riapplicata senza copiare i file legati al kernel verbatim.",
|
||||
"section": "Backup e ripristino"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Ogni salto del kernel viene gestito in modo diverso",
|
||||
"body": "Il kernel di un host Proxmox è identificato da una stringa di versione come <code>6.17.13-2-pve</code>. I primi due numeri (<strong>6.17</strong> in questo esempio) definiscono la versione principale: quando cambiano, alcuni file di configurazione scritti per il kernel precedente potrebbero non essere validi sul nuovo. Quando il ripristino rileva che il backup e l'obiettivo hanno diverse versioni principali del kernel, i rami di flusso in base alla direzione del salto — se il backup è più vecchio o più recente del bersaglio — perché i due casi hanno modalità di guasto opposte. I backup più recenti rispetto al target ripristinano in modo pulito come-è (bench-verified attraverso salti multipli del kernel). I backup più vecchi del target hanno bisogno di un filtro per evitare di rompere il boot del target con la configurazione scritta per un kernel che è cambiato da allora."
|
||||
},
|
||||
"directionCheck": {
|
||||
"heading": "Il controllo della direzione",
|
||||
"intro": "Durante la verifica della compatibilità, <code>hb_compat_check</code> confronta il kernel registrato nel manifesto del backup contro il kernel corrente dell'obiettivo (<code>uname -r</code>) e classifica il ripristino in uno dei tre casi, memorizzato nella variabile interna <code>HB_COMPAT_KERNEL_DIRECTION</code>:",
|
||||
"rows": [
|
||||
{
|
||||
"direction": "same",
|
||||
"condition": "La versione principale del kernel corrisponde tra backup e target.",
|
||||
"behavior": "Il flusso di ripristino completo scorre invariato. Nessun filtro extra, nessuna idratazione, nessun avviso speciale nell'interfaccia utente."
|
||||
},
|
||||
{
|
||||
"direction": "bk_newer",
|
||||
"condition": "Il kernel del backup è PIÙ RECENTE di quello di destinazione (ad esempio: backup su 7.0, destinazione su 6.17).",
|
||||
"behavior": "Il flusso di ripristino completo scorre invariato, esattamente come <code>same</code>. Nessun filtro viene applicato. Verificato empiricamente: i driver auto-reinstallano contro il kernel del target, IOMMU config si applica in modo pulito, le VM con passthrough GPU arrivano senza problemi."
|
||||
},
|
||||
{
|
||||
"direction": "bk_older",
|
||||
"condition": "Il kernel del backup è PIÙ VECCHIO di quello di destinazione (ad esempio: backup su 6.17, destinazione su 7.0).",
|
||||
"behavior": "Il filtro sicuro-sottoset e l'idratazione di quattro fasi qui sotto sono attivati. Il ripristino prosegue — il bersaglio riproduce la fonte, ma i file boot-critical non sono copiati verbatim."
|
||||
}
|
||||
]
|
||||
},
|
||||
"whyBkNewerIsSafe": {
|
||||
"heading": "Perché un backup con un kernel più recente rispetto al target ripristina invariato",
|
||||
"body": "Quando il ripristino viene eseguito contro un obiettivo con un kernel <em>più vecchio</em> rispetto a quello registrato nel backup, ogni meccanismo che il ripristino dipende è indipendente dalla versione del kernel. Gli installatori di driver GPU e altri installatori PCI-device rilevano il kernel in esecuzione con <code>uname -r</code> e compilano DKMS contro qualunque sia l'obiettivo. Il pacchetto APT install tira binari costruiti per la distribuzione del bersaglio. I gettoni cmdline IOMMU come <code>intel_iommu=on</code> sono stabili nelle principali versioni del kernel. Il backup trasporta i percorsi scritti sotto un kernel più recente, ma quei percorsi (module blacklists, GRUB defaults, initramfs config) sono ancora validi sintassi sul vecchio — i kernel ignorano i token che non riconoscono invece di fallire. Questo caso è equivalente in pratica a un ripristino dello stesso kernel, e ProxMenux lo tratta come tale."
|
||||
},
|
||||
"safeSubsetFilter": {
|
||||
"heading": "Il filtro safe-subset (solo quando il kernel di destinazione è più recente)",
|
||||
"intro": "Quando il kernel di destinazione è più recente di quello del backup, il controllo di compatibilità aggiunge percorsi critici di avvio 16 da <code>hb_unsafe_paths_cross_version</code> a <code>RS_SKIP_PATHS</code>. Questi percorsi sono esclusi dal ripristino perché la scrittura di una versione di loro da un kernel più vecchio su un obiettivo che esegue un nuovo ha causato il panico del kernel nei test di panca. I percorsi coprono cinque categorie:",
|
||||
"categoryRows": [
|
||||
{
|
||||
"category": "Caricatore di avvio",
|
||||
"paths": "<code>/etc/default/grub</code>, <code>/etc/kernel</code>",
|
||||
"reason": "GRUB default legati all'ordine del kernel precedente e allo stato proxmox-boot-tool (cmdline, UUID ESP, ganci) che richiama i percorsi e gli identificatori dall'installazione precedente."
|
||||
},
|
||||
{
|
||||
"category": "Moduli del kernel e artefatti del boot",
|
||||
"paths": "<code>/etc/modules-load.d</code>, <code>/etc/modprobe.d</code>, <code>/etc/initramfs-tools</code>",
|
||||
"reason": "Le liste di carico automatico che possono riferire i moduli rinominati tra le major del kernel, le opzioni del modulo che potrebbero non essere applicate, initramfs hooks scritto per il kernel più vecchio."
|
||||
},
|
||||
{
|
||||
"category": "Identità dello stack di stoccaggio e del filesystem",
|
||||
"paths": "<code>/etc/fstab</code>, <code>/etc/multipath</code>, <code>/etc/iscsi</code>, <code>/etc/udev/rules.d</code>, <code>/etc/zfs</code>",
|
||||
"reason": "UUID che potrebbero non esistere su questa installazione, driver multipath che cambiano tra i kernel, iSCSI parametri che si evolvono, regole udev che possono legare a sottosistemi non esistenti, ZFS Stato (<code>zpool.cache</code> + <code>hostid</code>) che può bloccare pool come straniero."
|
||||
},
|
||||
{
|
||||
"category": "Fonti APT",
|
||||
"paths": "<code>/etc/apt</code>",
|
||||
"reason": "Le suite sorgente APT possono attivare un downgrade di pacchetti critici sul prossimo aggiornamento."
|
||||
},
|
||||
{
|
||||
"category": "systemd",
|
||||
"paths": "<code>/etc/systemd/system</code>, <code>/etc/systemd/journald.conf</code>, <code>/etc/systemd/logind.conf</code>, <code>/etc/systemd/system.conf</code>, <code>/etc/systemd/user.conf</code>",
|
||||
"reason": "Override delle unità e collegamenti .wants legati alla precedente versione principale di systemd; chiavi di configurazione che potrebbero non essere valide in una versione più recente."
|
||||
}
|
||||
],
|
||||
"outroBody": "Il filtro viene eseguito PRIMA della finestra di dialogo di conferma in modo che l'utente veda l'elenco esatto dei percorsi che verranno saltati, categorizzati per ragione. Il ripristino continua — tutto il resto (configurazione VM/LXC, rete, /etc/pve, utenti, cron, stato ProxMenux, pacchetti, driver, /root) viene ripristinato normalmente."
|
||||
},
|
||||
"hydration": {
|
||||
"heading": "Idratazione Kernel-agnostic",
|
||||
"intro": "Il filtro omette file critici; l’idratazione riapplica impostazioni selezionate: cmdline IOMMU, ID VFIO, <code>GRUB_TIMEOUT</code> personalizzato e blacklist nvidia. Si esegue se il kernel di destinazione è più recente. La fusione cmdline conserva le chiavi di destinazione e i moduli mancanti vengono aggiunti. Valori GRUB e file consentiti possono sostituire contenuti diversi sul target. Ripetere gli stessi input è idempotente.",
|
||||
"phaseRows": [
|
||||
{
|
||||
"phase": "1a — Via GRUB",
|
||||
"detail": "Per host GRUB (installazioni ext4/lvm). <code>_rs_hyd_grub</code> unisce i parametri di <code>manifest.kernel_params.cmdline_extra</code> del backup in <code>GRUB_CMDLINE_LINUX_DEFAULT</code> del target, saltando le chiavi già presenti. Ripristina poi le chiavi consentite <code>GRUB_*</code> (<code>GRUB_TIMEOUT</code>, <code>GRUB_TIMEOUT_STYLE</code>, <code>GRUB_DEFAULT</code>, <code>GRUB_TERMINAL</code>, <code>GRUB_DISABLE_OS_PROBER</code>, <code>GRUB_SERIAL_COMMAND</code>, <code>GRUB_GFXMODE</code>, <code>GRUB_GFXPAYLOAD_LINUX</code>) da <code>/etc/default/grub</code> del backup se i valori differiscono dal target."
|
||||
},
|
||||
{
|
||||
"phase": "1b — systemd-boot / ZFS",
|
||||
"detail": "Per systemd-boot (tipicamente ZFS alla radice). <code>_rs_hyd_kernel_cmdline</code> unisce i parametri utente di <code>cmdline_extra</code> in <code>/etc/kernel/cmdline</code> del target, mantenendo intatti i parametri di avvio <code>root=</code>, <code>boot=</code> e <code>rootflags=</code> del target."
|
||||
},
|
||||
{
|
||||
"phase": "2 — fusione /etc/modules",
|
||||
"detail": "<code>_rs_hyd_modules</code> aggiunge moduli da <code>manifest.kernel_params.modules_loaded_at_boot</code> che sono nella lista bianca (<code>vfio</code>, <code>vfio_pci</code>, <code>vfio_iommu_type1</code>, <code>vfio_virqfd</code>, <code>kvm</code>, <code>kvm_intel</code>, <code>kvm_amd</code>, <code>nvidia</code>, <code>nvidia_drm</code>, <code>nvidia_modeset</code>, <code>nvidia_uvm</code>, <code>i915</code>, <code>xe</code>) E non già presente nell'obiettivo <code>/etc/modules</code>."
|
||||
},
|
||||
{
|
||||
"phase": "3 — Copia di file whitelist",
|
||||
"detail": "<code>_rs_hyd_files</code> copia i file scritti dall’utente dai rootf di staging al target live quando il contenuto differisce. La whitelist copre i file VFIO/nvidia/blacklist sotto le regole <code>/etc/modprobe.d</code>, <code>/etc/modules-load.d</code>, e la regola di legatura ProxMenux VFIO + le regole nvidia udev sotto le regole <code>/etc/udev/rules.d</code>. I file distribuiti (<code>pve-blacklist.conf</code>, <code>mdadm.conf</code>, <code>nvme.conf</code>) sono intenzionalmente esclusi: i loro contenuti si evolvono tra le versioni."
|
||||
},
|
||||
{
|
||||
"phase": "4 — Forza rigenerazione dopo l’avvio",
|
||||
"detail": "Le quattro fasi scrivono direttamente sul target attivo AL DI FUORI DEL il normale processo di ripristino. Per rendere i gettoni/moduli/file fusi effetto sul prossimo avvio, <code>HB_HYDRATION_APPLIED=1</code> si propaga attraverso <code>plan.env</code> a <code>apply_pending_restore.sh</code>, che forza <code>NEEDS_INITRAMFS=1</code> e <code>NEEDS_GRUB=1</code> indipendentemente da quello che era nell'elenco di applicazione. Il dispatcher post-avvio poi rigenera initramfs e rinfresca il bootloader."
|
||||
}
|
||||
]
|
||||
},
|
||||
"planCommit": {
|
||||
"heading": "Plan vs commit — l'utente vede prima un'anteprima",
|
||||
"body": "L'idratazione scorre in due modi. Prima della finestra di dialogo di conferma, ProxMenux funziona <code>_rs_apply_bk_older_hydration</code> in modalità <code>plan</code>: calcola esattamente ciò che sarebbe stato unito, popola <code>RS_HYDRATION_SUMMARY</code> con un blocco verde che elenca ogni azione, e restituisce senza scrivere. La finestra di dialogo di conferma mostra che il blocco verde accanto all'elenco arancione dei percorsi esclusi, così l'utente vede IN ANTICIPO ciò che verrà riapplicato automaticamente. Dopo la conferma dell'utente, ProxMenux replica lo stesso helper in modalità <code>commit</code> — stesse fasi, stessa logica, ma questa volta ogni fase scrive al target live. Cancellare la finestra di dialogo di conferma lascia il bersaglio intatto."
|
||||
},
|
||||
"flowDiagram": {
|
||||
"heading": "Il flusso quando il kernel di destinazione è più recente di quello del backup",
|
||||
"intro": "I passaggi aggiunti quando il kernel di destinazione è più recente siedono all'interno del normale flusso di ripristino. Tutto il resto — caldo applicare, in attesa di preparare, pacchetto di installazione, post-boot speditore — funziona identicamente a un ripristino dello stesso-kernel.",
|
||||
"diagram": " ┌────────────────────────────────────────────────────────────┐\n │ hb_compat_check │\n │ HB_COMPAT_KERNEL_DIRECTION = bk_older │\n └───────────────────────────┬────────────────────────────────┘\n │\n ▼\n ┌────────────────────────────────────────────────────────────┐\n │ Add 16 boot-critical paths to RS_SKIP_PATHS │\n │ /etc/default/grub, /etc/kernel, /etc/modules-load.d, ... │\n └───────────────────────────┬────────────────────────────────┘\n │\n ▼\n ┌────────────────────────────────────────────────────────────┐\n │ _rs_apply_bk_older_hydration \"plan\" │\n │ Compute what would be merged │\n │ Populate RS_HYDRATION_SUMMARY (green block) │\n │ No writes │\n └───────────────────────────┬────────────────────────────────┘\n │\n ▼\n ┌────────────────────────────────────────────────────────────┐\n │ Confirmation dialog │\n │ Amber: paths skipped by safe-subset filter │\n │ Green: tokens/files reapplied by hydration │\n │ User accepts or cancels │\n └───────────────────────────┬────────────────────────────────┘\n │ (accepted)\n ▼\n ┌────────────────────────────────────────────────────────────┐\n │ _rs_apply_bk_older_hydration \"commit\" │\n │ Phase 1a/1b: merge cmdline tokens + GRUB keys │\n │ Phase 2: append modules to /etc/modules │\n │ Phase 3: copy whitelisted vfio/nvidia files │\n │ Set HB_HYDRATION_APPLIED=1 │\n └───────────────────────────┬────────────────────────────────┘\n │\n ▼\n ┌────────────────────────────────────────────────────────────┐\n │ Rest of the restore runs normally │\n │ _rs_apply hot (skips RS_SKIP_PATHS) │\n │ _rs_prepare_pending_restore (writes plan.env with │\n │ HB_HYDRATION_APPLIED=1) │\n │ packages.manual.list install │\n │ Reboot │\n │ apply_pending_restore.sh (forces NEEDS_INITRAMFS=1, │\n │ NEEDS_GRUB=1 because of the hydration flag) │\n │ apply_cluster_postboot.sh │\n │ update-initramfs -u -k all │\n │ update-grub / proxmox-boot-tool refresh │\n │ component --auto-reinstall │\n └────────────────────────────────────────────────────────────┘"
|
||||
},
|
||||
"concreteExamples": {
|
||||
"heading": "Esempi concreti",
|
||||
"intro": "Il passaggio di idratazione non è astratto — produce risultati osservabili, corretti per scenari comuni. Due esempi che l'idratazione gestisce automaticamente:",
|
||||
"rows": [
|
||||
{
|
||||
"scenario": "GPU passante (VFIO)",
|
||||
"detail": "Fonte aveva <code>intel_iommu=on iommu=pt</code> nel cmdline, <code>vfio</code>/<code>vfio_pci</code>/<code>vfio_iommu_type1</code> in <code>/etc/modules</code>, un <code>/etc/modprobe.d/vfio.conf</code> con <code>options vfio-pci ids=10de:2216</code>, e un <code>/etc/modprobe.d/blacklist-nvidia.conf</code>. L'idratazione fonde i token cmdline nel GRUB o nella cmdline del kernel, aggiunge i moduli vfio a <code>/etc/modules</code> e copia i due file modprobe scritti dall’utente. Sul prossimo avvio, IOMMU è attivo, modulo VFIO carico, il GPU è legato a vfio-pci e il VM viene fornito con il funzionamento passante."
|
||||
},
|
||||
{
|
||||
"scenario": "Predefinizioni personalizzate GRUB",
|
||||
"detail": "Fonte aveva <code>GRUB_TIMEOUT=1</code> e <code>GRUB_DISABLE_OS_PROBER=true</code>. Hydration legge entrambe le chiavi del backup <code>/etc/default/grub</code>, vede che differiscono dalle impostazioni di installazione fresche, e riscrive quelle due linee nel file del bersaglio (lasciando tutto il resto, incluso <code>GRUB_DISTRIBUTOR</code>, intatto)."
|
||||
}
|
||||
]
|
||||
},
|
||||
"callout": {
|
||||
"warningTitle": "Ciò che l'idratazione non riapplica quando il kernel di destinazione è più recente",
|
||||
"warningBody": "L'idratazione si applica solo alla configurazione ProxMenux sa essere sicura nelle versioni del kernel: IOMMU tokens, VFIO IDs, whitelist GRUB chiavi, e moduli da un elenco fisso (<code>vfio*</code>, <code>nvidia*</code>, <code>i915</code>, <code>xe</code>, <code>kvm*</code>). Qualsiasi cosa al di fuori di quel set — initramfs personalizzato ganci sotto <code>/etc/initramfs-tools/hooks/</code>, file non whitelist sotto <code>/etc/modprobe.d/</code>, override unità systemd scritte dall’utente — rimane esclusa. Il motivo è concreto: questi file possono chiamare interfacce kernel-internal (module APIs, <code>/sys</code> layout, <code>udev</code> hooks) che cambiano tra le principali versioni, e applicandoli verbatim sopra il kernel più recente può impedire al bersaglio di avviare. Quando è richiesta la riproduzione esatta della catena di avvio, il ripristino deve essere eseguito su un host con la stessa versione del kernel principale del backup."
|
||||
},
|
||||
"codeReference": {
|
||||
"heading": "Dove vivono i meccanismi",
|
||||
"intro": "Per gli sviluppatori che cercano di tracciare o estendere il comportamento cross-kernel:",
|
||||
"rows": [
|
||||
{
|
||||
"component": "Rilevamento della direzione",
|
||||
"location": "<code>hb_compat_check</code> in <code>lib_host_backup_common.sh</code>. Imposta <code>HB_COMPAT_KERNEL_DIRECTION</code>."
|
||||
},
|
||||
{
|
||||
"component": "Elenco dei percorsi Safe-subset",
|
||||
"location": "<code>hb_unsafe_paths_cross_version</code> in <code>lib_host_backup_common.sh</code>. Emette linee <code>path\\treason</code> utilizzate sia dal filtro CLI che dal endpoint Web <code>/api/host-backups/restore/prepare</code>."
|
||||
},
|
||||
{
|
||||
"component": "Fasi di idratazione",
|
||||
"location": "<code>_rs_hyd_grub</code>, <code>_rs_hyd_kernel_cmdline</code>, <code>_rs_hyd_modules</code>, <code>_rs_hyd_files</code> in <code>backup_host.sh</code>. Orchestrata da <code>_rs_apply_bk_older_hydration</code>."
|
||||
},
|
||||
{
|
||||
"component": "Rigenerazione forzata dopo l’avvio",
|
||||
"location": "<code>apply_pending_restore.sh</code> legge <code>HB_HYDRATION_APPLIED</code> da <code>plan.env</code> e forza <code>NEEDS_INITRAMFS=1</code>/<code>NEEDS_GRUB=1</code>."
|
||||
},
|
||||
{
|
||||
"component": "Anteprima web",
|
||||
"location": "<code>/api/host-backups/restore/prepare</code> in <code>flask_server.py</code>. Carica la libreria helper, esegue <code>_rs_apply_bk_older_hydration</code> in modalità piano, restituisce le azioni al Web modal."
|
||||
}
|
||||
]
|
||||
},
|
||||
"whereNext": {
|
||||
"heading": "Dove andare dopo",
|
||||
"items": [
|
||||
{
|
||||
"label": "Ripristino",
|
||||
"href": "/docs/backup-restore/restoring",
|
||||
"tail": " — il processo completo di ripristino che integra i meccanismi di questa pagina."
|
||||
},
|
||||
{
|
||||
"label": "Come funziona",
|
||||
"href": "/docs/backup-restore/how-it-works",
|
||||
"tail": " — manifesto e raccoglitori che producono il blocco <code>kernel_params</code> letto dall’idratazione."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,234 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Destinazione Borg — tipi di repository, autenticazione SSH, crittografia | ProxMenux",
|
||||
"description": "La destinazione Borg salva i backup host ProxMenux in un repository locale, su un disco esterno montato o su un server remoto via SSH. Descrive la ricerca dell’eseguibile borg, le quattro opzioni iniziali per le chiavi SSH, la crittografia repokey, le destinazioni salvate e la conservazione per attività pianificata.",
|
||||
"ogTitle": "ProxMenux Backup — Destinazione Borg",
|
||||
"ogDescription": "Come ProxMenux salva i backup host nei repository Borg con autenticazione SSH e crittografia repokey.",
|
||||
"twitterTitle": "Destinazione di backup Borg | ProxMenux",
|
||||
"twitterDescription": "Repository Borg locali, su USB e accessibili via SSH per i backup host."
|
||||
},
|
||||
"header": {
|
||||
"title": "Borg",
|
||||
"description": "La destinazione Borg scrive i backup host a un repository Borg. Sono supportati tre tipi di repository: percorso filesystem locale, disco esterno montato o server remoto tramite SSH. Deduplicazione a livello di Chunk in tutti gli archivi del repository e crittografia repokey opzionale.",
|
||||
"section": "Backup e ripristino"
|
||||
},
|
||||
"aboutBorg": {
|
||||
"heading": "Quello che Borg è",
|
||||
"body": "Borg (anche scritto BorgBackup) è uno strumento di backup deduplicante open source mantenuto dalla comunità di Borg Backup. Memorizza ogni archivio come un insieme di blocchi di lunghezza variabile all'interno di un repository; i pezzi sono condivisi in archivi in modo da ri-back up dati invariati ha un costo di archiviazione quasi zero. Borg non è legato a Proxmox — è uno strumento di backup generale utilizzato in molti ambienti. ProxMenux lo utilizza come una delle tre destinazioni per i backup host; ogni meccanismo specifico Borg descritto in questa pagina (tipo di repository, borg-serve su SSH, crittografia di repokey, prune) è il comportamento standard Borg."
|
||||
},
|
||||
"intro": {
|
||||
"title": "Deduplicazione per blocchi con repository locali o accessibili via SSH",
|
||||
"body": "Un repository Borg conserva blocchi condivisi tra tutti i suoi archivi: ripetere il backup di un file invariato non trasferisce né memorizza nuovi dati. ProxMenux usa <code>borg create</code> per il backup e <code>borg extract</code> per il ripristino. Il repository può trovarsi sullo stesso filesystem dell’origine, su un disco esterno montato o su un host remoto accessibile via SSH."
|
||||
},
|
||||
"binarySourcing": {
|
||||
"heading": "Il binario di borg",
|
||||
"intro": "Borg non è una dipendenza di base dell'installatore ProxMenux. Quando un backup viene eseguito, <code>hb_ensure_borg</code> risolve il binario da quattro fonti in ordine e restituisce il primo che funziona:",
|
||||
"rows": [
|
||||
{
|
||||
"priority": "1",
|
||||
"source": "Sistema <code>borg</code>",
|
||||
"detail": "Se l'host ha già installato <code>borg</code> tramite APT (<code>which borg</code> risolve), questo binario viene utilizzato."
|
||||
},
|
||||
{
|
||||
"priority": "2",
|
||||
"source": "cache di stato",
|
||||
"detail": "<code>/usr/local/share/proxmenux/borg</code> — tenuto da un precedente download GitHub su questo host."
|
||||
},
|
||||
{
|
||||
"priority": "3",
|
||||
"source": "Pacchetto AppImage del Monitor",
|
||||
"detail": "<code>/usr/local/share/proxmenux/monitor-app/usr/bin/borg</code> — il AppImage fa un borg-linux64 firmato. Questo è il percorso offline: un host senza internet ha ancora un <code>borg</code> funzionante."
|
||||
},
|
||||
{
|
||||
"priority": "4",
|
||||
"source": "Scarica GitHub",
|
||||
"detail": "<code>wget</code> contro l'URL pinned <code>borg-linux64</code> sotto <code>github.com/borgbackup/borg/releases/</code>, verificatosi contro una costante SHA-256 in <code>lib_host_backup_common.sh</code> (<code>HB_BORG_LINUX64_SHA256</code>). Su checksum sbagliato il binario viene scartato e il backup si interrompe. Il file scaricato viene memorizzato nella cache dello stato, quindi i backup successivi utilizzano il percorso 2."
|
||||
}
|
||||
]
|
||||
},
|
||||
"repoTypes": {
|
||||
"heading": "Tipi di repository",
|
||||
"intro": "Il tipo di repository viene scelto quando viene aggiunto un obiettivo. Ogni tipo si risolve in un altro URL di repository che Borg capisce.",
|
||||
"rows": [
|
||||
{
|
||||
"type": "remote",
|
||||
"url": "ssh://USER@HOST/RPATH",
|
||||
"detail": "Repository vive su un server remoto che esegue <code>borg serve</code>. Richiede una connessione SSH a quel server."
|
||||
},
|
||||
{
|
||||
"type": "usb",
|
||||
"url": "/mnt/MOUNTPOINT/borgbackup",
|
||||
"detail": "Il repository vive su un disco esterno montato (tipicamente USB). Il montaggio viene risolto tramite <code>hb_prompt_mounted_path</code>, che rileva, monta o formatta le partizioni USB come necessario."
|
||||
},
|
||||
{
|
||||
"type": "local",
|
||||
"url": "/backup/borgbackup (any absolute path)",
|
||||
"detail": "Repository vive su una directory locale. Significativo solo quando la directory di destinazione è su un disco fisico separato — un repository sullo stesso disco della fonte protegge dall'errore dell'operatore, ma non dall'errore del disco."
|
||||
}
|
||||
]
|
||||
},
|
||||
"serverSetup": {
|
||||
"heading": "Preparazione del server Borg (lato server)",
|
||||
"intro": "Il tipo di repository <code>remote</code> richiede un server Borg funzionante e accessibile via SSH. ProxMenux non configura il server: autorizza soltanto una chiave per un account esistente. Questa sezione descrive i requisiti del server prima della connessione.",
|
||||
"hostChoicesTitle": "Dove il server può vivere",
|
||||
"hostChoicesBody": "Qualsiasi host Linux con accesso SSH si qualifica. Configurazioni comuni:",
|
||||
"hostChoicesItems": [
|
||||
"Un NAS dedicato o una scatola di backup (Debian, Ubuntu, TrueNAS SCALE con una shell).",
|
||||
"Un contenitore LXC all'interno di un nodo Proxmox. Piccola impronta, isolata dall'host che esegue i backup.",
|
||||
"Un altro host Proxmox sulla stessa LAN, o un VM ovunque raggiungibile tramite SSH."
|
||||
],
|
||||
"lxcWarningTitle": "LXC come server Borg",
|
||||
"lxcWarningBody": "Se il server Borg è in un LXC, generate-auto richiede un account che accetti l’autenticazione SSH con password per installare la chiave. In alternativa, usa l’installazione manuale o generate-pct tramite l’host PVE.",
|
||||
"requirementsTitle": "Requisiti sul server",
|
||||
"requirementsRows": [
|
||||
{
|
||||
"requirement": "Eseguibile borg in <code>/usr/bin/borg</code>",
|
||||
"detail": "La riga <code>command=\"/usr/bin/borg serve ...\"</code> scritta da ProxMenux in <code>authorized_keys</code> usa questo percorso fisso. APT (<code>apt install borgbackup</code>) installa lì l’eseguibile. Per un binario autonomo occorre un collegamento simbolico in <code>/usr/bin/borg</code>."
|
||||
},
|
||||
{
|
||||
"requirement": "Un account utente dedicato (tipicamente <code>borg</code>)",
|
||||
"detail": "Possiede la directory del repository e riceve connessioni SSH in arrivo. Non ha bisogno di sudo o di accesso alla shell — la linea authorized_keys disabilita comunque le shell interattive."
|
||||
},
|
||||
{
|
||||
"requirement": "Una directory di repository writable",
|
||||
"detail": "Il percorso che l'operatore dà a ProxMenux (ad esempio <code>/backup/borgbackup</code>) deve esistere sul server ed essere di proprietà dell'utente borg."
|
||||
},
|
||||
{
|
||||
"requirement": "SSH daemon accetta l'utente borg",
|
||||
"detail": "<code>PubkeyAuthentication yes</code> (default). L'autenticazione della password è necessaria solo per il flusso <em>generate-auto</em> di un colpo — dopo l'installazione della chiave, il server può disabilitare completamente la password."
|
||||
}
|
||||
],
|
||||
"minimalSetupTitle": "Configurazione server Minimal",
|
||||
"minimalSetupBody": "Su un server Debian o Ubuntu Borg, una linea base di lavoro è quattro comandi come root:",
|
||||
"minimalSetupCmd": "apt install borgbackup\nuseradd -m -d /home/borg -s /bin/bash borg\nmkdir -p /backup/borgbackup\nchown borg:borg /backup/borgbackup",
|
||||
"minimalSetupNote": "Con il server pronto e l’autenticazione SSH con password disponibile, <code>generate-auto</code> installa la chiave tramite un account che possa scrivere in authorized_keys dell’utente borg. I backup successivi usano questa chiave, limitata a <code>borg serve</code> sul percorso configurato. Senza accesso con password, installala manualmente o tramite l’host PVE."
|
||||
},
|
||||
"sshAuth": {
|
||||
"heading": "Autenticazione SSH (lato cliente)",
|
||||
"intro": "I repository Borg remoti sono accessibili su SSH. La connessione viene eseguita dall'host ProxMenux a un account utente sul server Borg che esegue <code>borg serve</code>. Questo utente è tipicamente chiamato <code>borg</code>, NON l'utente admin/root del server — la linea di comando borg-serve blocca la connessione a quel percorso di repository specifico (vedere le strategie chiave qui sotto).",
|
||||
"strategiesTitle": "Strategie per le chiavi SSH",
|
||||
"strategiesIntro": "Aggiungendo una destinazione remota, ProxMenux chiede utente SSH, host, porta e percorso remoto, poi offre quattro opzioni di autenticazione. Se l’accesso con password viene rifiutato, propone anche generate-pct. Le modalità sono descritte di seguito:",
|
||||
"strategyRows": [
|
||||
{
|
||||
"mode": "generate-auto",
|
||||
"label": "Consigliato",
|
||||
"detail": "ProxMenux genera o riutilizza una coppia di chiavi ed25519 in <code>~/.ssh/borg_proxmenux_HOST_ed25519</code>, poi usa <code>sshpass</code> per verificare l’accesso e installare la chiave pubblica in <code>~borg/.ssh/authorized_keys</code>. La password appartiene a un account che possa scrivere il file, solitamente root o borg. Serve durante la configurazione e non viene salvata."
|
||||
},
|
||||
{
|
||||
"mode": "generate-manual",
|
||||
"label": "Nessuna password di amministratore su questo host",
|
||||
"detail": "ProxMenux genera il keypair come sopra ma visualizza la linea completa <code>authorized_keys</code> per l'operatore di incollare manualmente nel server. La password di amministratore non lascia mai l'host ProxMenux perché non viene mai chiesto."
|
||||
},
|
||||
{
|
||||
"mode": "generate-pct",
|
||||
"label": "Il server Borg è un PVE LXC",
|
||||
"detail": "Il server Borg viene eseguito all'interno di un LXC su un nodo PVE. ProxMenux autorizza la chiave tramite <code>pct exec</code> dall'host PVE — root sull'host PVE scrive nel LXC <code>~borg/.ssh/authorized_keys</code> senza bisogno di SSH nel LXC stesso."
|
||||
},
|
||||
{
|
||||
"mode": "existing",
|
||||
"label": "Utilizzare una chiave esistente",
|
||||
"detail": "ProxMenux scansiona <code>/root/.ssh/</code> e <code>$HOME/.ssh/</code> per le chiavi private parseable ed25519/RSA e le elenca. L'operatore sceglie uno o naviga manualmente su un percorso non standard."
|
||||
},
|
||||
{
|
||||
"mode": "none",
|
||||
"label": "Configurazione predefinita SSH",
|
||||
"detail": "Nessuna chiave personalizzata — Borg si basa sulla configurazione predefinita SSH dell'host (tipicamente <code>~/.ssh/id_rsa</code> o un agente SSH)."
|
||||
}
|
||||
],
|
||||
"restrictTitle": "La linea authorized_keys",
|
||||
"restrictBody": "Per ogni chiave generata, la riga <code>authorized_keys</code> scritta da ProxMenux sul server limita la chiave a questa invocazione di borg-serve sul percorso configurato del repository:",
|
||||
"restrictLine": "command=\"/usr/bin/borg serve --restrict-to-path RPATH\",restrict PUBKEY",
|
||||
"restrictNote": "Il <code>command=</code> costringe ogni sessione SSH utilizzando questa chiave per eseguire solo il comando borg-serve; <code>restrict</code> disabilita l'inoltro della porta, l'inoltro dell'agente, l'inoltro di X11 e l'allocazione di PTY. La chiave non può essere utilizzata per aprire una shell interattiva sul server o per accedere a qualsiasi altro percorso di repository, anche se l'account ha privilegi più ampi."
|
||||
},
|
||||
"savedTargets": {
|
||||
"heading": "Obiettivi salvati",
|
||||
"intro": "Una destinazione salvata conserva la configurazione del repository con un nome riconoscibile, evitando di reinserire i dati. File nella directory di stato di ProxMenux:",
|
||||
"rows": [
|
||||
{
|
||||
"file": "borg-targets.txt",
|
||||
"content": "Una riga per destinazione: <code>NAME|REPO|SSH_KEY_PATH|ENCRYPT_MODE</code>. <code>hb_collect_borg_configs</code> la legge per compilare il menu di selezione delle destinazioni."
|
||||
},
|
||||
{
|
||||
"file": "borg-pass-NAME.txt",
|
||||
"content": "Passphrase della destinazione indicata sopra come NAME (<code>chmod 600</code>). Presente soltanto se è stata scelta la crittografia repokey."
|
||||
}
|
||||
],
|
||||
"outro": "Salvare la destinazione è facoltativo. Rifiutando non si salva la configurazione con nome, ma una chiave SSH generata non viene eliminata. Se si attiva repokey senza salvare la destinazione, ProxMenux conserva comunque la passphrase nel file preesistente borg-pass.txt."
|
||||
},
|
||||
"encryption": {
|
||||
"heading": "Crittografia",
|
||||
"body": "I repository sono inizializzati con una modalità di crittografia tramite <code>hb_borg_init_if_needed</code>: il moderno <code>borg repo-create -e MODE</code> quando disponibile, o il <code>borg init --encryption=MODE</code> legacy. ProxMenux espone due modalità: <code>repokey</code> (default) e <code>none</code>. In modalità <code>repokey</code> Borg memorizza la chiave di cifratura all'interno del repository stesso; l'accesso richiede una passphrase, che ProxMenux richiede due volte con verifica della corrispondenza e salva in <code>borg-pass-NAME.txt</code> per le destinazioni salvate, altrimenti nel file precedente descritto sopra. Una finestra di dialogo di riconoscimento obbligatoria viene mostrata dopo che il passphrase viene salvato: il passphrase è l'unico modo per accedere agli archivi crittografati, e perderlo rende ogni archivio nel repository non recuperabile."
|
||||
},
|
||||
"runtimeEnv": {
|
||||
"heading": "Ambiente runtime",
|
||||
"intro": "ProxMenux esporta le seguenti variabili ambientali prima di invocare <code>borg</code>. Configurano la connessione e sbloccano il repository senza inserire segreti nella riga di comando.",
|
||||
"rows": [
|
||||
{
|
||||
"var": "BORG_RSH",
|
||||
"value": "ssh -i SSH_KEY_PATH -o IdentitiesOnly=yes -o StrictHostKeyChecking=accept-new [-p PORT]",
|
||||
"purpose": "Comando remoto usato da Borg per i repository SSH. Una chiave selezionata aggiunge le opzioni di identità. Quando una destinazione viene aggiunta con una porta non standard, ProxMenux aggiunge anche -p PORT; le destinazioni salvate, i processi pianificati e il Monitor usano invece la porta dell’URL ssh://. Senza chiave personalizzata, e per una nuova destinazione con la porta predefinita, la variabile resta non impostata e Borg usa la configurazione SSH dell’host."
|
||||
},
|
||||
{
|
||||
"var": "BORG_PASSPHRASE",
|
||||
"value": "(passphrase da borg-pass-NAME.txt)",
|
||||
"purpose": "Sblocca il repokey. Impostare solo quando il target utilizza la crittografia <code>repokey</code>. Non compare mai nell'elenco degli argomenti di processo."
|
||||
},
|
||||
{
|
||||
"var": "BORG_ENCRYPT_MODE",
|
||||
"value": "repokey | none",
|
||||
"purpose": "Utilizzato da <code>hb_borg_init_if_needed</code> quando inizializza un repository che non esiste ancora. Ignorato da <code>borg create</code> su repository esistenti."
|
||||
},
|
||||
{
|
||||
"var": "BORG_RELOCATED_REPO_ACCESS_IS_OK",
|
||||
"value": "yes",
|
||||
"purpose": "Supprime il prompt interattivo Borg solleva quando l'URL del repository differisce dall'URL che originariamente è stato raggiunto da (comune dopo un rinominamento del punto di montaggio o SSH-host raggiungibile tramite nuovo indirizzo)."
|
||||
},
|
||||
{
|
||||
"var": "BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK",
|
||||
"value": "yes",
|
||||
"purpose": "Suppresse il prompt interattivo Borg solleva la prima volta che un repository non crittografato è accessibile da un nuovo client."
|
||||
}
|
||||
]
|
||||
},
|
||||
"archiveFormat": {
|
||||
"heading": "Archivio denominazione e ritenzione",
|
||||
"intro": "Ogni backup crea un nuovo archivio all'interno del repository.",
|
||||
"namePattern": "hostcfg-HOSTNAME-YYYYMMDD_HHMMSS",
|
||||
"retentionBody": "Per i lavori programmati, <code>run_scheduled_backup.sh</code> esegue <code>borg prune</code> contro il repository dopo ogni backup di successo con i valori di ritenzione configurati sul lavoro (<code>--keep-last</code>, <code>--keep-daily</code>, <code>--keep-weekly</code>). I backup interattivi non eliminano le vecchie copie."
|
||||
},
|
||||
"restoreAccess": {
|
||||
"heading": "Recuperare sul lato del ripristino",
|
||||
"body": "Il flusso di ripristino elenca gli archivi con <code>borg list REPO</code> ed estrae quello selezionato con <code>borg extract REPO::ARCHIVE-NAME</code> in una directory di staging che <code>_rs_check_layout</code> si alimenta alla pipeline di ripristino standard. Per il recupero manuale al di fuori di ProxMenux gli stessi comandi funzionano; l'albero estratto è il layout standard a tre payload descritto in <em>Come funziona </em>."
|
||||
},
|
||||
"references": {
|
||||
"heading": "Referenze",
|
||||
"intro": "Documentazione ufficiale di Borg per i componenti usati da ProxMenux.",
|
||||
"items": [
|
||||
{
|
||||
"label": "Documentazione del Borg",
|
||||
"href": "https://borgbackup.readthedocs.io/",
|
||||
"tail": "— punto di ingresso principale che copre concetti, distribuzione, avvio rapido e ogni comando."
|
||||
},
|
||||
{
|
||||
"label": "borg create",
|
||||
"href": "https://borgbackup.readthedocs.io/en/stable/usage/create.html",
|
||||
"tail": " — il comando usato da ProxMenux per ogni backup, con tutte le opzioni supportate."
|
||||
},
|
||||
{
|
||||
"label": "Crittografia del repository",
|
||||
"href": "https://borgbackup.readthedocs.io/en/stable/usage/init.html#encryption-mode",
|
||||
"tail": "— le modalità di crittografia Borg supporta, incluso il repokey che ProxMenux utilizza per impostazione predefinita."
|
||||
},
|
||||
{
|
||||
"label": "borg serve e configurazione tramite SSH",
|
||||
"href": "https://borgbackup.readthedocs.io/en/stable/deployment/central-backup-server.html",
|
||||
"tail": " — configurazione di un server Borg centrale accessibile via SSH, con il comando borg-serve e l’opzione restrict-to-path che ProxMenux scrive in authorized_keys."
|
||||
},
|
||||
{
|
||||
"label": "borg prune",
|
||||
"href": "https://borgbackup.readthedocs.io/en/stable/usage/prune.html",
|
||||
"tail": " — il modello di conservazione di --keep-last / --keep-daily / --keep-weekly che ProxMenux applica a ogni attività pianificata."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,110 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Destinazioni di backup — Locale, Proxmox Backup Server, Borg | ProxMenux",
|
||||
"description": "Tre backend di storage ricevono lo stesso payload di backup ProxMenux: un archivio locale .tar.zst su qualsiasi filesystem scrivibile, un backup PBS in un datastore Proxmox Backup Server o un archivio Borg in un repository Borg locale o remoto. Ogni backend ha le proprie caratteristiche di compressione, deduplicazione, crittografia e rete.",
|
||||
"ogTitle": "Destinazioni di backup ProxMenux",
|
||||
"ogDescription": "Locale, Proxmox Backup Server e Borg — tre backend di archiviazione per lo stesso carico di backup host.",
|
||||
"twitterTitle": "Destinazioni di backup ProxMenux | ProxMenux",
|
||||
"twitterDescription": "Archivio locale, backend Proxmox Backup Server e Borg per i backup host."
|
||||
},
|
||||
"header": {
|
||||
"title": "Destinazioni",
|
||||
"description": "Tre backend di storage supportati da ProxMenux Backup: archivio locale, Proxmox Backup Server (consigliato) e Borg. Ognuno riceve lo stesso archivio con tre blocchi di dati; differiscono in formato di archiviazione, deduplicazione, modello di crittografia e requisiti di rete.",
|
||||
"section": "Backup e ripristino"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Stesso contenuto, tre backend",
|
||||
"body": "Ogni backup produce gli stessi tre payload (rootfs, manifest, applicazioni). Ciò che cambia tra le destinazioni è il modo in cui questi carichi sono memorizzati e come l'operatore li recupera per un ripristino. Ogni backend viene implementato come funzione separata in <code>backup_host.sh</code> — <code>_bk_local</code>, <code>_bk_pbs</code>, <code>_bk_borg</code> — ma tutti e tre condividono lo stesso passo di staging (<code>hb_prepare_staging</code>) e lo stesso percorso del codice di ripristino. La scelta della destinazione colpisce solo la scrittura e il recupero; non cambia ciò che un ripristino fa o come consuma l'archivio."
|
||||
},
|
||||
"comparison": {
|
||||
"heading": "Confronto delle caratteristiche",
|
||||
"intro": "La tabella seguente elenca le differenze concrete tra i tre backend come si comportano oggi in ProxMenux. Tutti i valori descrivono il comportamento osservato del backend stesso, non raccomandazioni editoriali.",
|
||||
"rows": [
|
||||
{
|
||||
"feature": "Formato di archiviazione",
|
||||
"local": "File <code>.tar.zst</code> singolo (o <code>.tar.gz</code> se <code>zstd</code> è assente).",
|
||||
"pbs": "Backup PBS (blocchi <code>.pxar</code> nel datastore).",
|
||||
"borg": "Archivio Borg all'interno di un repository Borg (file di segmento)."
|
||||
},
|
||||
{
|
||||
"feature": "Compressione",
|
||||
"local": "zstd (livello predefinito) tramite <code>tar --zstd</code>. gzip fallback.",
|
||||
"pbs": "Gestita da proxmox-backup-client. ProxMenux non modifica le impostazioni di compressione.",
|
||||
"borg": "Compressione integrata di Borg. ProxMenux richiama borg create senza modificare le impostazioni di compressione."
|
||||
},
|
||||
{
|
||||
"feature": "Deduplicazione",
|
||||
"local": "Nessuno. Ogni backup è un archivio completamente indipendente.",
|
||||
"pbs": "Deduplicazione completa a livello di blocchi tra tutti i backup nel datastore.",
|
||||
"borg": "Deduplicazione completa a livello di blocchi tra tutti gli archivi del repository."
|
||||
},
|
||||
{
|
||||
"feature": "Crittografia a riposo",
|
||||
"local": "Nessuno (si basa sulla protezione a livello di filesystem).",
|
||||
"pbs": "Crittografia opzionale lato client mediante un file di chiave. Se abilitata, il blob di recupero viene caricato in un gruppo di backup separato.",
|
||||
"borg": "Crittografia repokey opzionale (chiave memorizzata nel repo, sbloccata da una passphrase)."
|
||||
},
|
||||
{
|
||||
"feature": "Conservazione / eliminazione delle vecchie copie",
|
||||
"local": "Applicata a ogni attività pianificata tramite <code>KEEP_LAST</code>. I vecchi archivi vengono eliminati insieme ai file ausiliari e ai log di esecuzione. I backup interattivi non eliminano le vecchie copie.",
|
||||
"pbs": "Applicato per lavoro programmato tramite <code>proxmox-backup-client prune --keep-last / --keep-daily / --keep-weekly</code>. I backup interattivi non eliminano le vecchie copie.",
|
||||
"borg": "Applicato per lavoro programmato tramite <code>borg prune --keep-last / --keep-daily / --keep-weekly</code>. I backup interattivi non eliminano le vecchie copie."
|
||||
},
|
||||
{
|
||||
"feature": "Rete",
|
||||
"local": "Nessuno. Scrive a un punto di montaggio locale (tipicamente un disco interno o un'unità USB).",
|
||||
"pbs": "TCP al server PBS (porta di default 8007). Richiede credenziali PBS + impronta digitale.",
|
||||
"borg": "percorso filesystem locale o tunnel SSH a un host Borg remoto."
|
||||
},
|
||||
{
|
||||
"feature": "Dipendenze",
|
||||
"local": "<code>tar</code>, <code>zstd</code> (presente su Proxmox per impostazione predefinita).",
|
||||
"pbs": "Pacchetto <code>proxmox-backup-client</code> (incluso in Proxmox VE 8+).",
|
||||
"borg": "binario <code>borg</code>. Auto-provisionato da ProxMenux dal pacchetto Monitor AppImage quando manca."
|
||||
},
|
||||
{
|
||||
"feature": "Accesso per il ripristino",
|
||||
"local": "Qualsiasi host con tar+zstd può estrarre l'archivio. Non è necessario PBS/Borg.",
|
||||
"pbs": "Richiede <code>proxmox-backup-client</code>, le credenziali PBS e il file di chiave (se il backup è crittografato).",
|
||||
"borg": "Richiede <code>borg</code> + il percorso del repository + la passphrase (se crittografato)."
|
||||
}
|
||||
],
|
||||
"captionCode": "feature",
|
||||
"captionLocal": "Locale",
|
||||
"captionPbs": "Proxmox Backup Server (consigliato)",
|
||||
"captionBorg": "Borg"
|
||||
},
|
||||
"sameArchive": {
|
||||
"heading": "Il layout dell'archivio non cambia con la destinazione",
|
||||
"body": "All'interno di una delle tre destinazioni, lo stesso layout <code>rootfs/</code> + <code>metadata/</code> + <code>manifest.json</code> descritto in <em>Come funziona</em> è presente. Un <code>.tar.zst</code> estratto da un archivio locale, un <code>.pxar</code> restaurato da PBS, e un archivio Borg estratto con <code>borg extract</code> producono tutti un albero di directory identico. Il percorso del codice di ripristino (<code>_rs_check_layout</code>, <code>_rs_apply</code>, <code>_rs_prepare_pending_restore</code>) legge gli stessi tre blocchi di dati senza sapere da quale destinazione provenivano."
|
||||
},
|
||||
"extractStandalone": {
|
||||
"heading": "Estrazione di un backup al di fuori di ProxMenux",
|
||||
"intro": "Tutti i tre formati di archivio possono essere letti con strumenti standard senza ProxMenux installati sull'host di lettura. I comandi sottostanti producono lo stesso albero di directory che un ripristino consuma internamente.",
|
||||
"localCmd": "# From a local .tar.zst archive:\ntar --zstd -xf hostcfg-HOST-TIMESTAMP.tar.zst\n\n# From a .tar.gz fallback:\ntar -xzf hostcfg-HOST-TIMESTAMP.tar.gz",
|
||||
"pbsCmd": "# From a PBS backup (requires proxmox-backup-client):\nproxmox-backup-client restore \\\n --repository USER@REALM@HOST:DATASTORE \\\n host/hostcfg-HOST/BACKUP-TIME \\\n hostcfg.pxar /tmp/hostcfg\n\n# Add --keyfile KEY-PATH when the backup is encrypted.",
|
||||
"borgCmd": "# Da un archivio Borg (richiede borg e la passphrase per i repository crittografati):\nborg extract REPO-PATH::ARCHIVE-NAME\n\n# Su un repository remoto accessibile via SSH:\nborg extract ssh://USER@HOST:PORT/REPO-PATH::ARCHIVE-NAME",
|
||||
"note": "L'albero estratto può quindi essere ispezionato manualmente o alimentato a un ripristino manuale. Vedere le singole pagine di destinazione per l'esatto flusso di recupero ProxMenux utilizza sotto il cofano."
|
||||
},
|
||||
"whereNext": {
|
||||
"heading": "Dettagli per destinazione",
|
||||
"intro": "Ogni destinazione ha una propria pagina che copre il flusso di configurazione, il formato on-disk e il comando di recupero utilizzato dal ripristino.",
|
||||
"items": [
|
||||
{
|
||||
"label": "Archivio locale",
|
||||
"href": "/docs/backup-restore/destinations/local",
|
||||
"tail": "— preconfigurazione di un target locale, montaggio dell'unità USB, controllo di sicurezza contro la scrittura dell'archivio in sé, la sidecar JSON che consente al Monitor di identificare il file."
|
||||
},
|
||||
{
|
||||
"label": "Proxmox Backup Server (consigliato)",
|
||||
"href": "/docs/backup-restore/destinations/pbs",
|
||||
"tail": "— selezione di datastore, credenziali e impronte digitali, ciclo di vita del keyfile di crittografia, passphrase di recupero, caricando il blob di recupero a PBS per il recupero di installazione fresca."
|
||||
},
|
||||
{
|
||||
"label": "Borg",
|
||||
"href": "/docs/backup-restore/destinations/borg",
|
||||
"tail": " — repository locali o accessibili via SSH, provenienza del binario Borg (sistema / cache / pacchetto AppImage di Monitor / download GitHub), inizializzazione del repository, gestione delle passphrase e configurazione delle chiavi SSH per i repository remoti."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Destinazione dell'archivio locale — tar.zst su un filesystem o unità USB | ProxMenux",
|
||||
"description": "La destinazione di backup locale scrive un singolo archivio .tar.zst a qualsiasi directory scrivibile: un disco interno, un punto di montaggio Proxmox, una condivisione NFS o un'unità USB. Documenta il flusso di configurazione, la logica di rilevamento e montaggio USB, il controllo di sicurezza contro la scrittura dell'archivio in un percorso incluso nel backup, e il file ausiliario JSON che identifica il file.",
|
||||
"ogTitle": "ProxMenux Backup — Destinazione dell'archivio locale",
|
||||
"ogDescription": "Come ProxMenux scrive i backup locali come archivi .tar.zst e come configurare la directory di destinazione o unità USB.",
|
||||
"twitterTitle": "Destinazione di backup locale | ProxMenux",
|
||||
"twitterDescription": "Come ProxMenux scrive i backup locali come archivi .tar.zst su un filesystem o unità USB."
|
||||
},
|
||||
"header": {
|
||||
"title": "Archivio locale",
|
||||
"description": "La destinazione locale scrive un unico archivio tar compresso in una directory scrivibile sull’host: su un disco interno, un filesystem NFS o SMB montato oppure un’unità USB.",
|
||||
"section": "Backup e ripristino"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Un file, autocontenuto",
|
||||
"body": "Un backup locale produce un singolo file <code>hostcfg-HOST-TIMESTAMP.tar.zst</code> (o <code>.tar.gz</code> quando <code>zstd</code> è assente). Il file contiene l'intero albero di archivio — <code>manifest.json</code>, <code>metadata/</code> e <code>rootfs/</code> — e può essere ripristinato su qualsiasi host Proxmox con il flusso di ripristino ProxMenux o estratto manualmente con <code>tar --zstd -xf</code> su qualsiasi sistema Linux. Nessun server, nessuna inizializzazione del repository, nessuna dipendenza esterna. Questa è la destinazione con il percorso di recupero più breve quando non è disponibile né PBS né Borg."
|
||||
},
|
||||
"targetConfig": {
|
||||
"heading": "Configurazione della directory target",
|
||||
"intro": "La destinazione locale è una <strong>unica directory di destinazione salvata in modo persistente</strong> — non un elenco. ProxMenux memorizza la scelta dell'operatore su <code>/usr/local/share/proxmenux/local-target.conf</code> e la legge su ogni backup. Quando non è stato configurato alcun obiettivo, viene utilizzato il <code>HB_LOCAL_TARGET_DEFAULT = /var/lib/vz/dump</code> predefinito (la stessa directory Proxmox utilizza per le proprie uscite <code>vzdump</code>). L'obiettivo è configurato da <em>Configura destinazioni di backup → Destinazioni locali</em>:",
|
||||
"options": [
|
||||
"<strong>Utilizzo predefinito (<code>/var/lib/vz/dump</code>).</strong> Lo storage locale Proxmox. Presente su ogni installazione Proxmox; l'archivio si trova accanto alle uscite vzdump e viene ritirato dalla scheda Monitor Backups automaticamente.",
|
||||
"<strong>Inserisci un percorso personalizzato.</strong> Puoi usare qualsiasi percorso assoluto del filesystem: un montaggio NFS, una condivisione SMB montata tramite <code>fstab</code>, un dataset ZFS dedicato o un secondo disco interno. Prima di salvarlo, ProxMenux verifica che il percorso esista e sia una directory.",
|
||||
"<strong>Scegli un’unità USB.</strong> Apre il sottomenu USB (sotto), che rileva dispositivi rimovibili e offre di montare o formattarne uno."
|
||||
]
|
||||
},
|
||||
"usbFlow": {
|
||||
"heading": "Rilevamento dell'unità USB e montaggio",
|
||||
"intro": "Il sottomenu USB elenca le partizioni su dispositivi rimovibili segnalate da <code>lsblk</code>. Ogni partizione è presentata con la sua dimensione, l'etichetta del filesystem e lo stato corrente. Lo stato determina l’azione proposta da ProxMenux.",
|
||||
"statesTitle": "I tre stati del dispositivo",
|
||||
"stateRows": [
|
||||
{
|
||||
"state": "montato",
|
||||
"shown": "Dimensione · etichetta · [fstype] · → /mount/point",
|
||||
"action": "La partizione è già montata da qualche parte. La selezione salva il punto di montaggio corrente come obiettivo locale. Nessun montaggio viene eseguito."
|
||||
},
|
||||
{
|
||||
"state": "non montato",
|
||||
"shown": "Dimensione · etichetta · [fstype] · (non montato — sarà montato)",
|
||||
"action": "Un filesystem è presente ma non montato. A conferma, ProxMenux gestisce <code>hb_mount_usb_partition</code>: crea <code>/mnt/backup-LABEL</code> (o un percorso basato su UUID se non c'è etichetta), monta la partizione e persiste il punto di montaggio come obiettivo locale."
|
||||
},
|
||||
{
|
||||
"state": "vuoto",
|
||||
"shown": "Dimensione · disco USB grezzo — nessun filesystem (verrà FORMATTATO)",
|
||||
"action": "Il dispositivo non ha un filesystem. Questa operazione distruttiva è protetta da due conferme. Prima una finestra Sì/No spiega che il disco verrà cancellato. Poi una casella di input richiede di <strong>digitare il percorso esatto del dispositivo</strong> (ad esempio <code>/dev/sdb</code>) prima che ProxMenux crei una nuova tabella GPT con una partizione ext4 e la monti."
|
||||
}
|
||||
],
|
||||
"notMountedFallback": "Quando non viene rilevato alcun dispositivo USB, il submenu rientra in una semplice casella di input. L'operatore può immettere un percorso di mount point arbitrario; se il percorso non è un punto di montaggio registrato, una finestra di dialogo di conferma avvisa prima di procedere."
|
||||
},
|
||||
"safetyCheck": {
|
||||
"heading": "Controllo di sicurezza — destinazione all'interno di un percorso di backup",
|
||||
"body": "Prima di scrivere l'archivio, <code>_bk_local</code> verifica che la directory di destinazione sia <strong>non</strong> un sottopercorso di qualsiasi directory di cui viene eseguito il backup. Un errore comune sarebbe aggiungere <code>/root</code> al profilo e scegliere <code>/root/backups</code> come destinazione: l'archivio quindi includerebbe se stesso, producendo un archivio corrotto o crescendo senza limiti finché il disco non si riempie. Il controllo risolve entrambi i percorsi con <code>readlink -m</code>, li confronta e, in caso di conflitto, interrompe il backup con una finestra di dialogo che nomina il percorso in conflitto ed elenca tre modi per risolverlo: scegliere una destinazione al di fuori del percorso in conflitto, rimuovere la voce personalizzata che contiene la destinazione o utilizzare la modalità personalizzata per deselezionare il percorso in conflitto per questa esecuzione."
|
||||
},
|
||||
"archiveFormat": {
|
||||
"heading": "Formato archivio e compressione",
|
||||
"intro": "Il nome del file di output include il nome host di origine e la data e ora del backup, per consentire l’ordinamento cronologico delle varie copie nella directory e identificare ogni file.",
|
||||
"namePattern": "hostcfg-HOSTNAME-YYYYMMDD_HHMMSS.tar.zst",
|
||||
"compressionTitle": "Compressione",
|
||||
"compressionBody": "Il metodo principale usa <code>tar --zstd -cf</code>: un singolo comando che comprime al livello predefinito di zstd. Se <code>zstd</code> non è presente sull’origine (raro su Proxmox, ma possibile nelle installazioni minime), ProxMenux ripiega su <code>gzip</code>. In questo caso, se <code>pv</code> è disponibile, viene aggiunta una barra di avanzamento per mostrare la crescita dell’archivio in tempo reale; senza <code>pv</code>, viene usato il semplice <code>tar -czf</code> senza output di avanzamento.",
|
||||
"sourceTitle": "Cosa viene incluso nell’archivio",
|
||||
"sourceBody": "Il comando tar viene richiamato con <code>-C \"$staging_root\" .</code> e archivia <strong>l’intera radice della directory temporanea</strong>: <code>rootfs/</code>, <code>metadata/</code> e <code>manifest.json</code>. I tre blocchi di dati si trovano affiancati al livello superiore dell’archivio tar. L’estrazione produce esattamente lo stesso albero utilizzato dal codice di ripristino."
|
||||
},
|
||||
"sidecar": {
|
||||
"heading": "Il sidecar JSON",
|
||||
"intro": "Ogni backup locale di successo produce un file compagno: <code>HOSTNAME-TIMESTAMP.tar.zst.proxmenux.json</code>, scritto accanto all'archivio da <code>hb_write_archive_sidecar</code>. Questo piccolo file JSON consente a ProxMenux Monitor di identificare l'archivio come ProxMenux backup host anche se in seguito viene spostato, rinominato o archiviato altrove.",
|
||||
"contentTitle": "Contenuto del sidecar",
|
||||
"contentBody": "Il sidecar memorizza la versione schema, se il backup proveniva da un run interattivo o da un lavoro programmato (<code>kind</code>), l'ID di lavoro per le esecuzioni pianificate, la modalità profilo utilizzata (<code>default</code> o <code>custom</code>), il nome host sorgente, il nome base originale dell'archivio, un timestamp di creazione ISO-8601 e la dimensione dell'archivio in byte.",
|
||||
"whyBody": "La scheda Backups di Monitor cerca i file ausiliari <code>*.proxmenux.json</code> nelle directory locali configurate, non i file <code>*.tar.zst</code>, perché un <code>.tar.zst</code> senza file ausiliario potrebbe non essere un backup ProxMenux. La scansione è veloce (i file JSON sono piccoli) e l’associazione resta valida quando l’archivio viene rinominato, purché anche il file ausiliario venga rinominato di conseguenza."
|
||||
},
|
||||
"restoreAccess": {
|
||||
"heading": "Ripristino da un archivio locale",
|
||||
"body": "Il flusso di ripristino ProxMenux scopre gli archivi locali scansionando l'obiettivo locale configurato per sidecars e visualizzandoli nell'elenco Archivi. Selezionando uno si attiva <code>_rs_check_layout</code>, che estrae il tarball in una directory di staging e conferma il layout a tre payload prima di procedere. Per estrazione manuale al di fuori di ProxMenux, <code>tar --zstd -xf hostcfg-HOSTNAME-TIMESTAMP.tar.zst -C /tmp/hostcfg</code> produce lo stesso albero che il codice di ripristino consuma."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,113 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "destinazione Proxmox Backup Server — repository, crittografia, ripristino | ProxMenux",
|
||||
"description": "La destinazione PBS salva i backup host di ProxMenux come backup PBS. Descrive il rilevamento dei repository da /etc/pve/storage.cfg, la configurazione manuale, il caricamento .pxar, la crittografia lato client con file di chiave e la sua copia di recupero facoltativa protetta da passphrase, e il recupero della chiave da più fonti su un host appena installato.",
|
||||
"ogTitle": "ProxMenux Backup — destinazione Proxmox Backup Server",
|
||||
"ogDescription": "Come ProxMenux scrive i backup host a Proxmox Backup Server con la crittografia del keyfile lato client e l'escrow di recupero.",
|
||||
"twitterTitle": "Destinazione di backup PBS | ProxMenux",
|
||||
"twitterDescription": "Destinazione Proxmox Backup Server con crittografia tramite file di chiave e copia di recupero protetta da passphrase."
|
||||
},
|
||||
"header": {
|
||||
"title": "Proxmox Backup Server",
|
||||
"description": "La destinazione PBS carica l’intera directory di preparazione come un unico backup .pxar in un datastore Proxmox Backup Server, con crittografia facoltativa lato client tramite file di chiave. Facoltativamente, accanto a ogni backup viene caricata anche una copia della chiave protetta da passphrase per il recupero.",
|
||||
"section": "Backup e ripristino"
|
||||
},
|
||||
"recommendedBadge": "Destinazione consigliata",
|
||||
"aboutPbs": {
|
||||
"heading": "Ciò che Proxmox Backup Server è",
|
||||
"body": "Proxmox Backup Server (PBS) è il prodotto server di backup di Proxmox, sviluppato e mantenuto dallo stesso team che gli autori Proxmox VE. È un server di backup dedicato progettato per ricevere i backup da host Proxmox VE (VMs, LXCs e - via <code>proxmox-backup-client</code> - directory host arbitrari) con deduplicazione basata su blocchi, crittografia lato client e politiche di conservazione applicate lato server. ProxMenux utilizza PBS come una delle tre destinazioni per i backup host; ogni meccanismo specifico PBS descritto in questa pagina (gruppi di backup, archivi <code>.pxar</code>, <code>--backup-id</code>, crittografia keyfile) è un comportamento standard PBS."
|
||||
},
|
||||
"intro": {
|
||||
"title": "Un backup per esecuzione, deduplicazione a livello di blocchi",
|
||||
"body": "Un backup PBS crea una sola voce nel datastore, sotto l’ID <code>host/hostcfg-HOSTNAME/BACKUP-TIME</code>. I dati sono un archivio <code>.pxar</code> con la stessa struttura in tre blocchi descritta in <em>Come funziona</em>. PBS deduplica i blocchi tra tutti i backup del datastore: i backup successivi dello stesso host trasferiscono e memorizzano soltanto i blocchi modificati. Per le attività pianificate, ProxMenux applica direttamente la conservazione: dopo ogni esecuzione riuscita, <code>run_scheduled_backup.sh</code> esegue <code>proxmox-backup-client prune</code> con <code>--keep-last</code> / <code>--keep-daily</code> / <code>--keep-weekly</code> usando i valori configurati nell’attività."
|
||||
},
|
||||
"repoSelection": {
|
||||
"heading": "Selezione dei repository",
|
||||
"intro": "ProxMenux scopre i repository PBS da due fonti su ogni backup. L'operatore sceglie uno da un menu unificato; la scelta determina <code>HB_PBS_REPOSITORY</code>, <code>HB_PBS_SECRET</code> e <code>HB_PBS_FINGERPRINT</code> per l'esecuzione.",
|
||||
"sourceRows": [
|
||||
{
|
||||
"source": "storage.cfg di Proxmox (rilevamento automatico)",
|
||||
"path": "/etc/pve/storage.cfg + /etc/pve/priv/storage/NAME.pw",
|
||||
"content": "Ogni strofa <code>pbs:</code> nella configurazione di storage di Proxmox viene rilevata automaticamente. Server, datastore, nome utente e impronta digitale provengono dalla stanza. La password viene letta dalla directory delle credenziali di Proxmox. Nessun rientro necessario sul lato ProxMenux — il repository è disponibile non appena è configurato in Proxmox."
|
||||
},
|
||||
{
|
||||
"source": "Configurazione manuale ProxMenux",
|
||||
"path": "/usr/local/share/proxmenux/pbs-manual-configs.txt + pbs-pass-NAME.txt + pbs-fingerprint-NAME.txt",
|
||||
"content": "Aggiunto da <em>Configure destinazioni di backup → PBS destinazioni → Aggiungi PBS</em>. Prompts per un nome, nome utente (<code>root@pam</code> o <code>user@pbs!token</code>), host o IP, datastore e password. I re-prompt password su input vuoto — un salvataggio vuoto altrimenti persisterebbe silenziosamente e ogni backup successivo fallirebbe con un errore di autenticazione opaco. Questo percorso viene utilizzato quando il target PBS non è registrato come storage Proxmox."
|
||||
}
|
||||
],
|
||||
"menuTitle": "Menu di selezione",
|
||||
"menuBody": "Entrambe le fonti sono mostrate in un unico menu, ciascuna riga contrassegnata con la sua origine (<code>[proxmox]</code> o <code>[manual]</code>). Le voci di cui la password non poteva essere risolta sono contrassegnate con un avviso <code>⚠ no password</code> — selezionando uno attiva un rientro password prima dell'avvio del backup. L'impronta digitale viene passata a <code>proxmox-backup-client</code> tramite la variabile di ambiente <code>PBS_FINGERPRINT</code>; quando assente, il client chiede all'operatore di accettare il certificato del server in modo interattivo sul primo backup."
|
||||
},
|
||||
"backupCommand": {
|
||||
"heading": "Il comando di backup",
|
||||
"intro": "Il caricamento avviene con una sola invocazione di <code>proxmox-backup-client backup</code>. ProxMenux usa <code>env</code> per passare al client password, password di crittografia e impronta digitale come variabili d’ambiente.",
|
||||
"cmd": "env \\\n PBS_PASSWORD=\"$HB_PBS_SECRET\" \\\n PBS_ENCRYPTION_PASSWORD=\"$HB_PBS_ENC_PASS\" \\\n PBS_FINGERPRINT=\"$HB_PBS_FINGERPRINT\" \\\n proxmox-backup-client backup \\\n hostcfg.pxar:$staging_root \\\n --repository USER@REALM@HOST:DATASTORE \\\n --backup-type host \\\n --backup-id hostcfg-HOSTNAME \\\n --backup-time BACKUP-EPOCH \\\n [--keyfile /usr/local/share/proxmenux/pbs-key.conf]",
|
||||
"backupIdTitle": "Nome ID di backup",
|
||||
"backupIdBody": "L’ID di backup predefinito è <code>hostcfg-HOSTNAME</code>. Prima del caricamento, l’operatore lo conferma o modifica; vengono eliminati i caratteri non compresi in <code>[A-Za-z0-9_-]</code> e i trattini finali. Riutilizzare lo stesso ID è intenzionale: PBS lo tratta come un <em>gruppo</em> e ogni backup successivo compare come nuova voce al suo interno, condividendo la deduplicazione con i precedenti.",
|
||||
"pxarTitle": "Perché la fonte è la radice di staging completa",
|
||||
"pxarBody": "La sorgente <code>.pxar</code> è l'intero <code>staging_root</code> — <code>rootfs/</code>, <code>metadata/</code> e <code>manifest.json</code> insieme. Le versioni precedenti hanno superato <code>$staging_root/rootfs</code> come fonte; che ha lasciato <code>metadata/</code> fuori dall'archivio e il controllo di compatibilità del ripristino non aveva nulla da leggere, degradando a avvisi cross-host anche su ristabilimenti dello stesso host. I vecchi backup creati con la fonte rootfs-solo ripristinano ancora correttamente tramite il ramo case-<code>_rs_check_layout</code> di 3, che avvolge un albero <code>etc/var/root/usr</code> piatto di nuovo in una gerarchia <code>rootfs/</code>."
|
||||
},
|
||||
"encryption": {
|
||||
"heading": "Crittografia lato cliente",
|
||||
"glossaryHint": "Questa sezione usa i termini <em>file di chiave</em>, <em>passphrase</em> e <em>involucro di recupero</em>. Il <glosarioLink>glossario</glosarioLink> ne riassume le differenze con una frase per termine.",
|
||||
"intro": "La crittografia PBS lato client con file di chiave cifra i blocchi sull’host di origine prima del caricamento. In ProxMenux è facoltativa. Se attivata, durante la configurazione l’operatore sceglie esplicitamente sì o no se caricare su PBS anche una copia di recupero del file di chiave protetta da passphrase; la scelta è modificabile in seguito dal Monitor. Il file di chiave risiede sempre nel percorso canonico <code>/usr/local/share/proxmenux/pbs-key.conf</code> e viene riutilizzato senza nuove richieste per ogni backup crittografato successivo.",
|
||||
"keyfileTitle": "Impostazione del keyfile",
|
||||
"keyfileBody": "Il dialogo di crittografia compare al primo backup crittografato dell’host. Prima chiede se crittografare il backup: <em>No</em> prosegue senza crittografia, <em>Sì</em> passa alla seconda fase. Questa dipende dalla presenza di un file di chiave in <code>/usr/local/share/proxmenux/pbs-key.conf</code>. Se esiste, viene riutilizzato senza altre domande e il backup prosegue; i backup successivi non lo chiedono più. Altrimenti, un menu offre due opzioni. <em>Genera un nuovo file di chiave</em> esegue <code>proxmox-backup-client key create --kdf none</code>. <em>Usa un file di chiave esistente</em> rileva automaticamente una chiave gestita da PVE: se il repository PBS scelto è registrato in Proxmox con una chiave di crittografia in <code>/etc/pve/priv/storage/<NAME>.enc</code>, il file viene copiato senza altre domande nel percorso canonico di ProxMenux. Se nessuna chiave PVE corrisponde al repository, viene richiesto il percorso assoluto dove l’operatore ha già collocato il file sull’host. In entrambi i casi, il file viene installato nel percorso canonico con <code>chmod 600</code>.",
|
||||
"modesTitle": "Per-host o keyfile condiviso",
|
||||
"modesIntro": "Entrambi i modelli sono supportati e nessuno è obbligatorio: l’operatore sceglie in base all’organizzazione dei propri host.",
|
||||
"modesPerHostTitle": "File di chiave per host (predefinito)",
|
||||
"modesPerHostBody": "Ogni host genera un proprio keyfile la prima volta che consente la crittografia PBS. L'isolamento è il massimo: compromettere il keyfile di un host non espone i backup di qualsiasi altro. Consigliato per flotte di produzione e per ambienti in cui gli host hanno diversi proprietari o confini di conformità.",
|
||||
"modesSharedTitle": "Keyfile condiviso (importa su ogni host)",
|
||||
"modesSharedBody": "Un master keyfile generato una volta e installato su ogni host tramite l’opzione <em>Usa un file di chiave esistente</em>. La gestione è più semplice: un singolo segreto per salvaguardare, e qualsiasi host può decifrare gli archivi di qualsiasi altro (utile per il consolidamento, le esercitazioni di ripristino cross-host o la verifica centralizzata di backup). Il trade-off è che una perdita del keyfile condiviso espone ogni host contemporaneamente. Raccomandato per homelabs e per flotte dove tutti gli host hanno lo stesso proprietario e il limite di fiducia.",
|
||||
"recoveryTitle": "Caricare la chiave su PBS: decide l’operatore",
|
||||
"recoveryBody": "Subito dopo la scelta del file di chiave, ProxMenux pone la domanda esplicita <em>Caricare la chiave su PBS?</em>, con due risposte. <strong>Nessun artefatto di recupero viene caricato su PBS finché l’operatore non risponde Sì.</strong> L’opzione predefinita è <em>No, conserva solo in locale</em>: la chiave resta nel percorso canonico locale, ProxMenux non carica artefatti di recupero su PBS e l’operatore gestisce personalmente la copia esterna. Il pulsante <em>Scarica il file di chiave</em> del Monitor, nella riga della destinazione PBS, la fornisce su richiesta. Scegliendo <em>Sì, carica</em>, viene chiesta due volte una passphrase di recupero, verificandone la corrispondenza. ProxMenux protegge il file con AES-256-CBC e PBKDF2 (600.000 iterazioni, salt casuale), producendo <code>pbs-key.recovery.enc</code>. Ogni backup crittografato successivo carica questo involucro su PBS in un gruppo di backup associato. Questi caricamenti non inviano a PBS né la passphrase né il file di chiave in chiaro. La scelta può essere modificata in qualsiasi momento nel Monitor: il controllo nella riga PBS permette Sì o No e applica subito Avvia caricamento, Interrompi caricamento o Aggiorna passphrase in base allo stato corrente.",
|
||||
"blobUploadTitle": "Gruppo di backup abbinato su PBS",
|
||||
"blobUploadBody1": "Quando la modalità escrow è <em>Sì, carica</em>, ProxMenux carica la busta di recupero a PBS dopo ogni backup crittografato come secondo, gruppo di backup abbinato con lo stesso nome del gruppo host ma terminando in <code>-keyrecovery</code>. I due gruppi siedono l'uno accanto all'altro nella lista datastore — uno per i backup host, uno per le buste di recupero. <strong>La busta non lascia mai l'host in plaintext</strong>: la crittografia avviene sull'host stesso con AES-256-CBC e PBKDF2 prima che i byte vadano sul filo (<code>openssl enc -aes-256-cbc -pbkdf2 -iter 600000 -salt</code>). PBS riceve solo la busta già crittografata.",
|
||||
"envelopeSecurityTitle": "Caricare il file keyrecovery a PBS è un rischio di sicurezza?",
|
||||
"envelopeSecurityBody": "Il file keyrecovery è crittografato in transito e a riposo. Il passphrase di recupero non lascia mai l'host: la crittografia avviene localmente prima del caricamento, e PBS vede solo il risultato già crittografato. Un amministratore PBS — o chiunque abbia accesso al datastore — può scaricare il file di keyrecovery, ma senza la passphrase di recupero non può leggere il keyfile all'interno: è un codice opaco. Ricostruire il keyfile richiede entrambi i pezzi contemporaneamente, il file keyrecovery e la passphrase, e solo l'operatore tiene entrambi.",
|
||||
"blobUploadConstraintTitle": "Perché servono due gruppi anziché un unico gruppo crittografato",
|
||||
"blobUploadConstraintBody": "Una singola invocazione di <code>proxmox-backup-client backup</code> cifra tutti i suoi archivi con lo stesso file di chiave oppure nessuno: non è possibile mescolare i due casi. Il backup host deve essere cifrato con la chiave dell’host, ma l’involucro di recupero non può accompagnarlo nello stesso caricamento, perché verrebbe cifrato con la chiave che contiene. Su un host appena reinstallato non sarebbe possibile aprirlo: servirebbe la chiave per decifrare la chiave stessa. Per questo i due elementi vengono caricati indipendentemente e appaiono in due gruppi. Il client PBS cifra il backup host con il file di chiave, mentre ProxMenux cifra l’involucro con la passphrase prima del caricamento. Due livelli di crittografia diversi proteggono due elementi distinti.",
|
||||
"blobUploadImageAlt": "PBS UI che mostra i gruppi di backup hostcfg-HOSTNAME e hostcfg-HOSTNAME-keyrecovery adiacenti nell'elenco dei datastore.",
|
||||
"blobUploadImageCaption": "PBS UI — i gruppi di backup accoppiati. Il gruppo principale contiene i backup host; il gruppo -keyrecovery detiene il keyfile passphrase-wrapped.",
|
||||
"recoverTitle": "Recupero su un host fresco",
|
||||
"recoverBody": "Quando il file di chiave manca nel percorso canonico, dopo una reinstallazione o una rimozione esplicita, il ripristino prova tre fonti in ordine e si ferma alla prima che fornisce una chiave utilizzabile. Prima, se il repository PBS selezionato ha una chiave corrispondente gestita da PVE in <code>/etc/pve/priv/storage/<NAME>.enc</code>, questa viene copiata senza domande nel percorso canonico. Poi, se su PBS esiste un gruppo <code>-keyrecovery</code>, viene scaricata la sua istantanea più recente e viene chiesta la passphrase di recupero per decifrarla. Infine, se le prime due opzioni non funzionano o vengono rifiutate, il dialogo chiede il percorso assoluto del file di chiave sull’host e lo copia nel percorso canonico. Il Monitor offre lo stesso flusso di importazione nella finestra dei dettagli del backup. In alto compare un pannello ambra quando Ripristina, Scarica o Visualizza contenuto richiede una chiave assente. Se la chiave installata non corrisponde a quella usata per cifrare il backup, PBS restituisce <code>wrong key — manifest's key XX does not match provided key YY</code>. Le stesse tre azioni mostrano allora un pannello strutturato con l’impronta richiesta dal manifesto in evidenza, per identificare quale chiave importare per aprire quel backup.",
|
||||
"monitorManagementTitle": "Gestione del keyfile dal Monitor",
|
||||
"monitorManagementBody": "Il Monitor mostra i controlli del file di chiave direttamente in ogni riga di destinazione PBS nella configurazione dei backup. Sono disponibili tre azioni: <em>Scarica</em> esporta il file attuale nel browser; <em>Carica</em> sostituisce il file installato con quello fornito dall’operatore, sovrascrivendo il precedente solo dopo l’installazione riuscita del nuovo nel percorso canonico; <em>Elimina</em> rimuove il file dall’host. Accanto si trova il controllo della copia di recupero: una scelta Sì/No per <em>Caricare la chiave su PBS?</em>, un campo passphrase se si sceglie Sì e un pulsante di applicazione contestuale con <em>Avvia caricamento</em>, <em>Interrompi caricamento</em> o <em>Aggiorna passphrase</em>. Ogni azione usa gli stessi endpoint Flask dell’interfaccia di terminale, quindi gli effetti su disco e lo stato su PBS sono identici dalle due interfacce."
|
||||
},
|
||||
"restoreAccess": {
|
||||
"heading": "Recuperare sul lato del ripristino",
|
||||
"body": "Il ripristino individua i backup host ProxMenux su PBS elencando i gruppi del repository configurato e filtrandoli per modello dell’ID. La scheda Backup del Monitor mostra lo stesso elenco. Scegliere un backup esegue <code>proxmox-backup-client restore</code> con gli stessi repository, password e impronta, oltre a <code>--keyfile</code> se il backup è crittografato. L’archivio <code>.pxar</code> viene estratto in una directory di preparazione che <code>_rs_check_layout</code> passa al normale processo di ripristino. Fuori da ProxMenux, lo stesso comando estrae l’archivio nel percorso desiderato per esaminare l’albero o procedere a un ripristino manuale."
|
||||
},
|
||||
"references": {
|
||||
"heading": "Referenze",
|
||||
"intro": "Documentazione ufficiale di Proxmox Backup Server per i componenti usati da ProxMenux.",
|
||||
"items": [
|
||||
{
|
||||
"label": "Documentazione Proxmox Backup Server",
|
||||
"href": "https://pbs.proxmox.com/docs/",
|
||||
"tail": "— punto di ingresso principale che copre l'installazione, l'amministrazione, lo stoccaggio, gli utenti e i ruoli."
|
||||
},
|
||||
{
|
||||
"label": "proxmox-backup-client",
|
||||
"href": "https://pbs.proxmox.com/docs/backup-client.html",
|
||||
"tail": " — lo strumento da riga di comando che ProxMenux usa per ogni backup e ripristino. Descrive ID e tipi di backup, archivi, sintassi dei repository e variabili d’ambiente."
|
||||
},
|
||||
{
|
||||
"label": "Crittografia lato cliente",
|
||||
"href": "https://pbs.proxmox.com/docs/backup-client.html#encryption",
|
||||
"tail": " — creazione del file di chiave, modalità --kdf e modello di crittografia che ProxMenux estende con una copia di recupero protetta da passphrase."
|
||||
},
|
||||
{
|
||||
"label": "Gestione dei datastore",
|
||||
"href": "https://pbs.proxmox.com/docs/storage.html",
|
||||
"tail": "— la creazione e la gestione dei datastores che ricevono i backup degli host, incluso il layout di chunk-store e le autorizzazioni."
|
||||
},
|
||||
{
|
||||
"label": "Eliminazione delle vecchie copie e garbage collection",
|
||||
"href": "https://pbs.proxmox.com/docs/maintenance.html#pruning",
|
||||
"tail": " — il modello di conservazione di --keep-last / --keep-daily / --keep-weekly che ProxMenux applica a ogni attività pianificata, e il recupero dei blocchi inutilizzati da parte di PBS dopo l’eliminazione delle vecchie copie."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,230 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Glossario — Backup & Ripristino | ProxMenux",
|
||||
"description": "Glossario di termini e definizioni per lo stack di backup e ripristino ProxMenux: crittografia, keyfile, passphrase, busta di recupero, PBS, chunks, rootfs, manifesto, runner e cross-kernel idratazione.",
|
||||
"ogTitle": "Backup & ripristino glossario | ProxMenux",
|
||||
"ogDescription": "Definizioni chiare per il vocabolario utilizzato attraverso la documentazione di backup e ripristino ProxMenux.",
|
||||
"twitterTitle": "Backup & ripristino glossario | ProxMenux",
|
||||
"twitterDescription": "Passphrase, keyfile, busta di recupero, rootfs, manifesto, PBS, chunks — tutto definito in un unico luogo."
|
||||
},
|
||||
"header": {
|
||||
"title": "Glossario",
|
||||
"description": "Termini utilizzati attraverso la documentazione di backup e ripristino, con la loro definizione.",
|
||||
"section": "Backup e ripristino"
|
||||
},
|
||||
"intro": {
|
||||
"body": "I termini sono raggruppati per tema. Ogni voce dà il termine e una breve definizione."
|
||||
},
|
||||
"groups": [
|
||||
{
|
||||
"title": "Crittografia e recupero chiave",
|
||||
"intro": "Vocabolario per il blocco di crittografia PBS. Si tratta di due segreti distinti: un keyfile binario e un passphrase scritto.",
|
||||
"entries": [
|
||||
{
|
||||
"id": "passphrase-recuperacion",
|
||||
"term": "Passphrase di ripristino",
|
||||
"def": "Password di testo che l'utente sceglie per proteggere la <a href=\"#sobre-recuperacion\">busta di recupero</a>. Viene richiesto due volte con un controllo match, ed è utilizzato solo per crittografare la busta e decifrarla se il keyfile ha bisogno di essere recuperato. <strong>Non è la passphrase che sblocca il keyfile stesso</strong>, e non viene mai inviata a PBS. Durante un backup normale non lascia mai l'host."
|
||||
},
|
||||
{
|
||||
"id": "clave-cifrado",
|
||||
"term": "Keyfile (chiave di crittografia)",
|
||||
"def": "File di chiave usato da proxmox-backup-client per cifrare i <a href=\"#chunk\">blocchi</a> prima dell’invio a PBS. Senza la chiave corrispondente i dati cifrati non sono leggibili. ProxMenux lo salva in <code>/usr/local/share/proxmenux/pbs-key.conf</code> con modalità <code>600</code>. Proteggilo: la <a href=\"#sobre-recuperacion\">busta di recupero</a> serve a recuperarlo in caso di perdita."
|
||||
},
|
||||
{
|
||||
"id": "contrasena-keyfile",
|
||||
"term": "Passphrase Keyfile (KDF passphrase)",
|
||||
"def": "Passphrase opzionale che il keyfile stesso può trasportare, distinto dal <a href=\"#passphrase-recuperacion\">passphrase di recupero</a>. Esiste solo quando il keyfile è stato creato con <code>--kdf scrypt</code> (tipicamente un keyfile importato). Senza di esso, il keyfile non può essere sbloccato per l'uso. ProxMenux persiste in forma crittografata sull'host in modo che i backup programmati possano funzionare senza un prompt interattivo."
|
||||
},
|
||||
{
|
||||
"id": "sobre-recuperacion",
|
||||
"term": "Busta di recupero",
|
||||
"def": "Il <a href=\"#clave-cifrado\">keyfile</a> avvolto in uno strato aggiuntivo: viene crittografato con il <a href=\"#passphrase-recuperacion\">passphrase di recupero</a> utilizzando <a href=\"#aes-256-cbc\">AES-256-CBC</a> e <a href=\"#pbkdf2\">PBKDF2</a> prima che lasci l'host. È ciò che viene caricato su PBS come gruppo <code>-keyrecovery</code>. Senza la passphrase, la busta è opaca: scaricarla da PBS non rivela il keyfile."
|
||||
},
|
||||
{
|
||||
"id": "cifrado-cliente",
|
||||
"term": "Crittografia lato cliente",
|
||||
"def": "Modello di crittografia in cui i dati vengono crittografati sull'host sorgente prima di essere caricati. PBS riceve solo e memorizza il testo cifrario; nemmeno un amministratore PBS con accesso al datastore può leggerlo senza il keyfile. ProxMenux si basa su questo modello e aggiunge la <a href=\"#sobre-recuperacion\">busta di recupero</a> in cima."
|
||||
},
|
||||
{
|
||||
"id": "kdf-none",
|
||||
"term": "--kdf none",
|
||||
"def": "Opzione a <code>proxmox-backup-client key create</code> che produce un keyfile senza passphrase allegato. Il keyfile può essere utilizzato direttamente senza un prompt, che è essenziale per i lavori programmati in esecuzione incustodito. Questo è ciò che ProxMenux utilizza per impostazione predefinita quando si genera un nuovo keyfile."
|
||||
},
|
||||
{
|
||||
"id": "kdf-scrypt",
|
||||
"term": "--kdf scrypt",
|
||||
"def": "Opzione a <code>proxmox-backup-client key create</code> che produce un keyfile protetto da un <a href=\"#contrasena-keyfile\">passphrase del file di chiave</a>. Ogni utilizzo del keyfile richiede di sbloccarlo con quel passphrase. ProxMenux accetta questo stile di keyfile sull'importazione e memorizza il passphrase crittografato in modo che i backup programmati possano ancora essere eseguiti incustoditi."
|
||||
},
|
||||
{
|
||||
"id": "aes-256-cbc",
|
||||
"term": "AES-256-CBC",
|
||||
"def": "Cifra simmetrica standard. ProxMenux lo utilizza (tramite <code>openssl enc -aes-256-cbc</code>) per avvolgere il <a href=\"#clave-cifrado\">keyfile</a> con il <a href=\"#passphrase-recuperacion\">passphrase di recupero</a> e produrre il <a href=\"#sobre-recuperacion\">busta</a>."
|
||||
},
|
||||
{
|
||||
"id": "pbkdf2",
|
||||
"term": "PBKDF2",
|
||||
"def": "Funzione crittografica che trasforma un passphrase di tipo umano in una chiave binaria adatta alla crittografia. Rallenta i tentativi di forza bruta applicando molte iterazioni. ProxMenux lo utilizza con iterazioni 600 000 e un sale casuale durante la crittografia della busta di recupero."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Struttura di backup",
|
||||
"intro": "Termini che descrivono cosa vive all'interno di un backup, indipendentemente dalla destinazione.",
|
||||
"entries": [
|
||||
{
|
||||
"id": "rootfs",
|
||||
"term": "rootfs / filesystem radice",
|
||||
"def": "Copia dei file dell’host sorgente prodotta da <code>rsync</code> secondo il <a href=\"#perfil-defecto\">profilo predefinito</a> e i <a href=\"#rutas-personalizadas\">percorsi personalizzati</a>. Non è un’immagine dell’intero disco: vengono copiati solo percorsi con configurazione o stato che Proxmox non può rigenerare da sé."
|
||||
},
|
||||
{
|
||||
"id": "manifiesto",
|
||||
"term": "Manifesto (manifest.json)",
|
||||
"def": "Documento strutturato JSON che descrive l'host sorgente in tempo di backup: hardware, storage, kernel, componenti ProxMenux installati e inventario di VM e LXC. È prodotto da sei raccoglitori di dati indipendenti. Il flusso di ripristino lo utilizza per confrontare sorgente e obiettivo."
|
||||
},
|
||||
{
|
||||
"id": "staging",
|
||||
"term": "Directory di preparazione",
|
||||
"def": "directory temporanea in cui ProxMenux assembla i tre blocchi (rootfs, metadati e manifest) prima di imballarli e caricare alla destinazione. Viene rimosso automaticamente quando il backup termina, anche abortito."
|
||||
},
|
||||
{
|
||||
"id": "perfil-defecto",
|
||||
"term": "Profilo predefinito",
|
||||
"def": "Set di percorsi che ProxMenux copia per impostazione predefinita in ogni backup. Copre PVE config, rete, SSH, kernel, apt, strumenti ProxMenux e altro ancora. È definito in codice e documentato sul <em>Come funziona</em> pagina."
|
||||
},
|
||||
{
|
||||
"id": "rutas-personalizadas",
|
||||
"term": "Percorsi personalizzati",
|
||||
"def": "Percorsi extra l'utente aggiunge in cima al profilo <a href=\"#perfil-defecto\">default</a>. O persistente (conservato in <code>backup-extra-paths.txt</code>) o per-run (in modalità personalizzata)."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Destinazioni e stoccaggio",
|
||||
"intro": "Termini legati a dove il backup atterra — server PBS, archivio locale o repository Borg — e come PBS organizza i dati.",
|
||||
"entries": [
|
||||
{
|
||||
"id": "repositorio-pbs",
|
||||
"term": "Repository PBS",
|
||||
"def": "Combinazione di Proxmox Backup Server + <a href=\"#datastore\">datastore</a> + utente che riceve il backup. Identificata dalla stringa <code>user@realm@host:datastore</code>. Un singolo server PBS può ospitare diversi repository."
|
||||
},
|
||||
{
|
||||
"id": "datastore",
|
||||
"term": "Datastore",
|
||||
"def": "Spazio di archiviazione specifico su un server PBS che contiene backup e relativi blocchi. Ogni datastore risiede su un file system del server PBS con propri permessi e criteri."
|
||||
},
|
||||
{
|
||||
"id": "chunk",
|
||||
"term": "Blocco (chunk) / deduplicazione dei blocchi",
|
||||
"def": "PBS divide ogni backup in blocchi di dimensioni variabili, identifica ogni pezzo dal suo hash e memorizza ogni pezzo solo una volta, anche se appare in molti backup diversi. Ciò significa backup successivi dello stesso host — o attraverso host simili — prendere molto poco spazio aggiuntivo."
|
||||
},
|
||||
{
|
||||
"id": "fingerprint",
|
||||
"term": "Impronta digitale",
|
||||
"def": "Impronte crittografica del certificato PBS del server TLS. Consente al client di verificare che stia parlando con il server previsto senza affidarsi a un'autorità di certificazione pubblica. ProxMenux passa a <code>proxmox-backup-client</code> tramite la variabile ambiente <code>PBS_FINGERPRINT</code>."
|
||||
},
|
||||
{
|
||||
"id": "grupo-copia",
|
||||
"term": "Gruppo backup",
|
||||
"def": "Contenitore logico all'interno di PBS in cui si accumulano backup successivi dello stesso asset. Ogni nuovo backup condivide la deduplica con quelli precedenti nello stesso gruppo. ProxMenux utilizza due gruppi per host quando la crittografia è abilitata: uno per il backup host e uno con un suffisso <code>-keyrecovery</code> per la <a href=\"#sobre-recuperacion\">busta di recupero</a>."
|
||||
},
|
||||
{
|
||||
"id": "backup-id",
|
||||
"term": "ID backup",
|
||||
"def": "Nome del gruppo <a href=\"#grupo-copia\">backup</a>. ProxMenux predefinisce <code>hostcfg-HOSTNAME</code> e consente all'utente di modificarlo prima del caricamento; i caratteri non supportati vengono rimossi automaticamente."
|
||||
},
|
||||
{
|
||||
"id": "pxar",
|
||||
"term": ".pxar",
|
||||
"def": "Formato di archivio nativo di PBS per directory. Si comporta come un archivio tar ottimizzato per la deduplicazione del pezzo: piuttosto che memorizzare un file opaco, PBS rompe il suo contenuto in pezzi riutilizzabili."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Esecuzione e pianificazione",
|
||||
"intro": "Termini utilizzati dal sistema di lavoro programmato ProxMenux.",
|
||||
"entries": [
|
||||
{
|
||||
"id": "runner",
|
||||
"term": "Processo di esecuzione",
|
||||
"def": "Lo script <code>run_scheduled_backup.sh</code> che esegue un backup programmato. Legge la configurazione del lavoro, lancia il backend corrispondente (Local, PBS o Borg), applica la ritenzione sul successo e invia le notifiche configurate."
|
||||
},
|
||||
{
|
||||
"id": "trabajo-programado",
|
||||
"term": "Lavoro programmato",
|
||||
"def": "Configurazione persistente di un backup ricorrente. Contiene destinazione, credenziali, crittografia, pianificazione e conservazione. È salvata in <code>/var/lib/proxmenux/backup-jobs/<id>.env</code>."
|
||||
},
|
||||
{
|
||||
"id": "modo-adjunto",
|
||||
"term": "Modalità allegato",
|
||||
"def": "Processo senza timer proprio. Un hook job-end PVE di <code>vzdump</code> lo avvia dopo i backup dei guest se lo storage corrisponde. Il processo padre fornisce destinazione e conservazione, riletta dal processo padre a ogni esecuzione, ma il hook confronta lo storage, non l’ID padre. Anche un altro processo sullo stesso storage può attivarlo. Solo Local e PBS."
|
||||
},
|
||||
{
|
||||
"id": "timer-systemd",
|
||||
"term": "Timer di systemd",
|
||||
"def": "Meccanismo standard systemd che accende un comando su un calendario. ProxMenux crea un timer per <em>indipendente</em> lavoro programmato; <a href=\"#modo-adjunto\">attach-mode</a> posti di lavoro non utilizzano timer, vengono eseguiti tramite lo script-hook PVE."
|
||||
},
|
||||
{
|
||||
"id": "retencion",
|
||||
"term": "Retenzione (keep-last, keep-daily...)",
|
||||
"def": "Politica che decide quali backup più vecchi mantenere e quali prune. Definito per lavoro con parametri come <code>keep-last</code>, <code>keep-daily</code>, <code>keep-weekly</code>, <code>keep-monthly</code>. Applicato dal processo di esecuzione dopo ogni backup di successo."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Ripristina",
|
||||
"intro": "Termini dal flusso di ripristino.",
|
||||
"entries": [
|
||||
{
|
||||
"id": "restauracion-universal",
|
||||
"term": "Ripristino universale",
|
||||
"def": "Il flusso di ripristino ProxMenux non si limita a estrarre il filesystem: legge il manifesto per individuare le differenze tra sorgente e obiettivo, riproduce la configurazione del sistema e riattiva gli installatori per i componenti gestiti da ProxMenux. L'obiettivo è quello di riprodurre l'host sorgente, non solo l'archivio."
|
||||
},
|
||||
{
|
||||
"id": "hidratacion",
|
||||
"term": "Idratazione (cross-kernel)",
|
||||
"def": "Passo di ripristino che fonde la propria configurazione dell'utente dalla sorgente (token IOMMU, ID dispositivo VFIO, quirk personalizzati, chiavi GRUB) in cima alla configurazione di avvio fresco del bersaglio, senza copiare i file legati al kernel della fonte verbatim. Esegue quando il kernel di destinazione è più nuovo di quello del backup."
|
||||
},
|
||||
{
|
||||
"id": "cross-kernel",
|
||||
"term": "Ripristino tra versioni del kernel",
|
||||
"def": "Ripristino in cui il kernel di destinazione è diverso, di solito più recente, da quello sorgente. Il passaggio di <a href=\"#hidratacion\">idratazione</a> evita di trascinare file incompatibili con il kernel di destinazione."
|
||||
},
|
||||
{
|
||||
"id": "instalador-postboot",
|
||||
"term": "Installatore post-boot",
|
||||
"def": "Componenti reinstallati dopo il primo avvio dell'host ripristinato ( driver NVIDIA, driver Coral TPU, strumenti AMD GPU, strumenti Intel GPU). Ogni installatore viene eseguito contro il kernel del bersaglio, quindi l'host ripristinato non dipende dal kernel della sorgente presente."
|
||||
},
|
||||
{
|
||||
"id": "compatibility-check",
|
||||
"term": "Controllo di compatibilità",
|
||||
"def": "Confronto tra il manifesto sorgente e lo stato del bersaglio che ProxMenux esegue all'inizio del ripristino. Decide quali parti sono copiate verbatim, che hanno bisogno di idratazione e che sono ricreati da un installatore."
|
||||
},
|
||||
{
|
||||
"id": "equipo-recien-instalado",
|
||||
"term": "Installazione da zero",
|
||||
"def": "Host appena reinstallato da zero, senza <a href=\"#clave-cifrado\">keyfile</a> locale. Ripristino di un backup crittografato richiede prima di recuperare il file chiave dal <a href=\"#sobre-recuperacion\">busta</a> memorizzato su PBS, utilizzando il <a href=\"#passphrase-recuperacion\">passphrase di recupero</a>."
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"whereNext": {
|
||||
"heading": "Dove proseguire",
|
||||
"items": [
|
||||
{
|
||||
"label": "Come funziona",
|
||||
"href": "/docs/backup-restore/how-it-works",
|
||||
"tail": " — come rootfs, manifesto e inventario applicazioni si inseriscono nel backup."
|
||||
},
|
||||
{
|
||||
"label": "Destinazione Proxmox Backup Server",
|
||||
"href": "/docs/backup-restore/destinations/pbs",
|
||||
"tail": "— in cui la crittografia lato client, keyfile, passphrase di recupero e busta sono documentati in profondità."
|
||||
},
|
||||
{
|
||||
"label": "Ripristino",
|
||||
"href": "/docs/backup-restore/restoring",
|
||||
"tail": " — procedura di ripristino e uso del manifesto."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,205 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Come funziona il backup ProxMenux internamente — rootfs, manifesto, applicazioni",
|
||||
"description": "Contenuto dettagliato di un backup ProxMenux: il rootfs copiato con rsync secondo il profilo di percorsi predefinito, il manifesto strutturato creato da sei moduli di raccolta indipendenti e l’inventario delle applicazioni che guida la reinstallazione automatica di pacchetti e componenti dopo il ripristino.",
|
||||
"ogTitle": "Come funziona ProxMenux Backup internamente",
|
||||
"ogDescription": "Le tre parti di un backup ProxMenux: rootfs, manifesto e applicazioni.",
|
||||
"twitterTitle": "Come funziona ProxMenux Backup | ProxMenux",
|
||||
"twitterDescription": "I tre payload di un backup ProxMenux e come il ripristino riproduce l'host sorgente da loro."
|
||||
},
|
||||
"header": {
|
||||
"title": "Come funziona",
|
||||
"description": "La ripartizione interna di un backup ProxMenux — filesystem, inventario manifesto e di applicazione — e come il ripristino consuma tutti e tre per riprodurre l'host sorgente su un obiettivo che potrebbe non condividere lo stesso kernel.",
|
||||
"section": "Backup e ripristino"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Un archivio, tre parti",
|
||||
"body": "Ogni backup crea tre parti definite sotto un’unica directory di preparazione. L’archivio caricato sulla destinazione (<code>.tar.zst</code> locale, backup PBS o archivio Borg) conserva questa struttura. Il ripristino usa tutte e tre: <strong>il manifesto</strong> viene consultato prima delle modifiche per rilevare differenze e decidere cosa escludere; <strong>rootfs</strong> fornisce i file di configurazione, applicati subito o dopo il riavvio; <strong>l’inventario delle applicazioni</strong> guida l’installazione dei pacchetti e la reinstallazione dei componenti dopo l’avvio. Ogni parte può essere esaminata o estratta indipendentemente."
|
||||
},
|
||||
"layout": {
|
||||
"heading": "Disposizione dell'archivio",
|
||||
"intro": "Ogni archivio segue lo stesso layout albero indipendentemente dalla destinazione. La sottodirectory <code>metadata/</code> contiene i dati strutturati; la sottodirectory <code>rootfs/</code> contiene la copia del filesystem.",
|
||||
"treeCaption": "La directory di preparazione creata durante il backup. Tutte le destinazioni ricevono lo stesso albero nel proprio formato nativo: tar per i backup locali, blocchi PBS per PBS e segmenti Borg per Borg.",
|
||||
"tree": "backup-[timestamp]/\n├── manifest.json # structured host state\n├── metadata/\n│ ├── packages.manual.list # apt-mark showmanual\n│ ├── run_info.env # backup run identity + kernel version + pmxcfs method\n│ ├── paths_archived.txt # exact list of paths that reached rootfs/\n│ └── missing_paths.txt # paths from the profile absent on source\n└── rootfs/\n ├── etc/ # /etc/pve, /etc/network, /etc/systemd/network, /etc/ssh, …\n ├── root/ # /root (with volatile subdirs excluded)\n ├── usr/local/ # /usr/local/bin, /usr/local/share/proxmenux, …\n └── var/ # /var/lib/pve-cluster (config.db via sqlite3 .backup), /var/spool/cron/…"
|
||||
},
|
||||
"rootfs": {
|
||||
"heading": "La parte rootfs",
|
||||
"intro": "L’albero <code>rootfs/</code> è una <strong>semplice copia del filesystem</strong> prodotta da <code>rsync</code> dall’host di origine. Contiene un <strong>profilo predefinito</strong> di percorsi scelti per il ripristino Proxmox e gli eventuali <strong>percorsi personalizzati</strong> aggiunti all’attività o alla sessione interattiva. La selezione è volutamente limitata ai percorsi che <em>contengono configurazione</em> o <em>conservano uno stato che Proxmox non può rigenerare da solo</em>.",
|
||||
"defaultProfileTitle": "Il profilo predefinito",
|
||||
"defaultProfileBody": "Il profilo predefinito è definito da <code>hb_default_profile_paths</code> in <code>lib_host_backup_common.sh</code>. Copre otto categorie fisse e, se necessario, lo stato ZFS, che insieme descrivono un host Proxmox operativo:",
|
||||
"categoriesTitle": "Categorie dei percorsi",
|
||||
"categoryRows": [
|
||||
{
|
||||
"category": "Nucleo PVE",
|
||||
"paths": "/etc/pve, /var/lib/pve-cluster, /etc/vzdump.conf",
|
||||
"why": "Contenuto del filesystem Cluster e default vzdump. Il database PMxcfs (<code>config.db</code>) viene catturato come un'istantanea coerente tramite <code>sqlite3 .backup</code> senza interrompere il cluster, e i sidecar <code>.db-wal</code> / <code>.db-shm</code> sono esclusi dal rsync. Quando <code>sqlite3</code> non è disponibile, viene creato <code>config.db.raw-fallback</code>, che il ripristino usa automaticamente come database."
|
||||
},
|
||||
{
|
||||
"category": "Identità e rete host",
|
||||
"paths": "/etc/hostname, /etc/hosts, /etc/timezone, /etc/resolv.conf, /etc/network, /etc/systemd/network",
|
||||
"why": "Tutto ciò che serve all’host per tornare in rete con la stessa identità. I file <code>.link</code> in <code>/etc/systemd/network</code> associano i nomi delle schede alle rispettive MAC, mantenendo i nomi durante reinstallazioni e modifiche hardware."
|
||||
},
|
||||
{
|
||||
"category": "Accesso e autenticazione",
|
||||
"paths": "/etc/ssh, /etc/sudoers, /etc/sudoers.d, /etc/pam.d, /etc/security",
|
||||
"why": "Chiavi SSH, regole sudo e configurazione PAM. Perderle impedisce all’utente di accedere all’host ripristinato."
|
||||
},
|
||||
{
|
||||
"category": "Kernel e avvio",
|
||||
"paths": "/etc/default/grub, /etc/kernel, /etc/modules, /etc/modules-load.d, /etc/modprobe.d, /etc/sysctl.conf, /etc/sysctl.d, /etc/udev/rules.d, /etc/fstab, /etc/iscsi, /etc/multipath",
|
||||
"why": "Parametri IOMMU, blacklist dei moduli, ID dei dispositivi VFIO, tabella dei montaggi e configurazione dello stack di archiviazione."
|
||||
},
|
||||
{
|
||||
"category": "Shell e impostazioni locali",
|
||||
"paths": "/etc/environment, /etc/bash.bashrc, /etc/inputrc, /etc/profile, /etc/profile.d, /etc/locale.gen, /etc/locale.conf",
|
||||
"why": "Configurazione di shell a livello di sistema, variabili di ambiente, configurazione di generazione locale."
|
||||
},
|
||||
{
|
||||
"category": "Gestione pacchetti e cron",
|
||||
"paths": "/etc/apt, /etc/cron.d, /etc/cron.{daily,hourly,weekly,monthly}, /etc/cron.allow, /etc/cron.deny, /var/spool/cron/crontabs",
|
||||
"why": "Fonti APT per una risoluzione coerente dei pacchetti, attività pianificate definite dall'utente."
|
||||
},
|
||||
{
|
||||
"category": "ProxMenux stati e strumenti",
|
||||
"paths": "/etc/proxmenux, /etc/systemd/system, /etc/log2ram.conf, /etc/logrotate.conf, /etc/logrotate.d, /etc/lm-sensors, /etc/sensors3.conf, /etc/fail2ban, /etc/snmp, /etc/postfix, /etc/wireguard, /etc/openvpn, /etc/grafana, /etc/influxdb, /etc/prometheus, /etc/telegraf, /etc/zabbix",
|
||||
"why": "Utensili Proxmox opzionali ma comuni. I percorsi mancanti sono segnalati in <code>metadata/missing_paths.txt</code> senza interrompere il backup."
|
||||
},
|
||||
{
|
||||
"category": "ProxMenux binari e root",
|
||||
"paths": "/usr/local/bin, /usr/local/sbin, /usr/local/share/proxmenux, /var/lib/proxmenux, /root (sottodiri volatili esclusi)",
|
||||
"why": "File binari ProxMenux e configurazione per utente sotto <code>/root</code>. I percorsi volatili (<code>.bash_history</code>, <code>.cache/</code>, <code>tmp/</code>, <code>.local/share/Trash/</code>) sono esclusi dalla copia. <code>/var/lib/proxmenux</code> detiene i lavori di backup programmati e lo stato dell’host tenuto da ProxMenux; la messa in scena di ripristino, le copie rollback e i marcatori post-restore sono esclusi, perché appartengono all'host che gestisce un ripristino."
|
||||
},
|
||||
{
|
||||
"category": "Stato ZFS (condizionato)",
|
||||
"paths": "/etc/zfs",
|
||||
"why": "Solo incluso quando l'host sorgente esegue ZFS. Contiene <code>zpool.cache</code> e <code>hostid</code>."
|
||||
}
|
||||
],
|
||||
"customTitle": "Estendere il profilo con percorsi personalizzati",
|
||||
"customBody": "Oltre al profilo predefinito, ProxMenux offre due modi per includere ulteriori percorsi in un backup. Si compone senza conflitti ed entrambi si applicano a backup interattivi e lavori programmati.",
|
||||
"customExtrasTitle": "1. Extra persistenti (file per host)",
|
||||
"customExtrasBody": "Un file di testo a <code>/usr/local/share/proxmenux/backup-extra-paths.txt</code> contiene un elenco di percorsi assoluti che l'utente ha contrassegnato come \"sempre includere\" su questo host. Quando un backup viene eseguito in modalità <strong>Default</strong>, ProxMenux aggiunge questi percorsi al profilo predefinito automaticamente senza chiedere. Il file viene modificato dall'interfaccia — nessuna modifica manuale necessaria — e persiste attraverso riavvimenti e aggiornamenti. Un percorso assoluto per linea; sono consentiti commenti <code>#</code>.",
|
||||
"customModeTitle": "2. Modalità personalizzata (per-run)",
|
||||
"customModeBody": "Avviare un backup in modalità <strong>Custom</strong> sostituisce l'applicazione automatica del profilo predefinito con una lista di controllo che mostra ogni percorso: le voci del profilo predefinito e gli extra persistenti (prefissati con <code>[+]</code> e già selezionati). L'utente seleziona o deseleziona le voci per tale esecuzione specifica, e può anche premere <em>Aggiungi percorso personalizzato</em> per inserire un nuovo percorso — che viene poi persistito al file extra per i backup futuri.",
|
||||
"customMissingTitle": "Sentieri assenti dalla fonte",
|
||||
"customMissingBody": "Qualsiasi percorso dal profilo (default o aggiunto) che non esiste sull'host sorgente viene registrato in <code>metadata/missing_paths.txt</code> all'interno dell'archivio. Il backup non fallisce né si ferma — l'utente vede un riassunto di percorsi archiviati e percorsi mancanti alla fine. In pratica questo accade per percorsi di utensile opzionali come <code>/etc/wireguard</code> o <code>/etc/prometheus</code> quando questi strumenti non sono installati."
|
||||
},
|
||||
"manifest": {
|
||||
"heading": "La parte manifesto",
|
||||
"intro": "<code>manifest.json</code> è un documento strutturato JSON che descrive l'host sorgente al momento del backup. È prodotto da <strong>sei moduli di raccolta indipendenti</strong> orchestrati da <code>build_manifest.sh</code>. Ogni collettore è in sola lettura, produce un frammento JSON ben definito, e rientra in un default vuoto sicuro se non riesce — il manifesto è ancora utilizzabile se una sezione è incompleta.",
|
||||
"orchestratorCaption": "I sei moduli di raccolta compongono il manifesto. Ogni collettore funziona nel proprio sottoprocesso; un guasto in uno rientra in un documento di default sicuro e avverte ma non interrompe il backup.",
|
||||
"collectorRows": [
|
||||
{
|
||||
"collector": "collect_source_host.sh",
|
||||
"produces": "source_host",
|
||||
"content": "Hostname, versione PVE (<code>pveversion</code>), versione PBS se l'host esegue il ruolo di backup-server, kernel (<code>uname -r</code>), modalità boot (efi/bios), tipo filesystem root, modello CPU + architettura, memoria in KB."
|
||||
},
|
||||
{
|
||||
"collector": "collect_hardware.sh",
|
||||
"produces": "hardware_inventory",
|
||||
"content": "GPU (con il fornitore e la mappatura dell'installatore ProxMenux), TPU (Coral USB + M.2 con il rilevamento di <code>lsusb</code>/<code>lspci</code>), NIC (con MAC, slot PCI e ponti), dispositivi wireless. Le voci GPU portano un'euristica <code>passthrough_eligible</code>."
|
||||
},
|
||||
{
|
||||
"collector": "collect_storage.sh",
|
||||
"produces": "storage_inventory",
|
||||
"content": "Pool ZFS con relativo tipo e dischi membri identificati tramite <code>/dev/disk/by-id/*</code>, <code>/dev/disk/by-partuuid/*</code> o percorsi diretti <code>/dev/sdX</code>, a seconda di come il pool è stato creato; gruppi di volumi e thin pool LVM; dischi fisici con supporto SMART; voci PVE di <code>storage.cfg</code>; montaggi esterni."
|
||||
},
|
||||
{
|
||||
"collector": "collect_kernel.sh",
|
||||
"produces": "kernel_params",
|
||||
"content": "Parametri aggiunti dall’operatore in <code>/proc/cmdline</code>, esclusi quelli standard come <code>BOOT_IMAGE=</code>, <code>root=</code>, <code>ro/rw</code>, <code>quiet</code> e <code>splash</code>; moduli caricati all’avvio da <code>/etc/modules</code>; percorsi dei file <code>/etc/modprobe.d/*.conf</code> con direttive effettive (<code>options</code>, <code>blacklist</code>, <code>install</code>, <code>alias</code>, <code>softdep</code>)."
|
||||
},
|
||||
{
|
||||
"collector": "collect_proxmenux_state.sh",
|
||||
"produces": "proxmenux_installed_components",
|
||||
"content": "Leggi <code>/usr/local/share/proxmenux/managed_installs.json</code> (registry di tutto ciò che ProxMenux ha installato) e <code>installed_tools.json</code>. Ogni voce mantiene il percorso di installazione (<code>menu_script</code>) in modo che il ripristino possa attivare lo stesso flusso di installazione."
|
||||
},
|
||||
{
|
||||
"collector": "collect_guests.sh",
|
||||
"produces": "vms_lxcs_at_backup",
|
||||
"content": "Elenca le VM (<code>qm list</code>) e i container LXC (<code>pct list</code>) presenti al momento del backup: VMID, nome e stato. È soltanto l’inventario; il backup dei dati effettivi dei guest spetta a <code>vzdump</code> / PBS."
|
||||
}
|
||||
],
|
||||
"schemaTitle": "Validazione schema",
|
||||
"schemaBody": "Il manifesto convalida contro <code>scripts/backup_restore/schema/manifest.schema.json</code>. L'esecuzione di <code>build_manifest.sh --validate</code> attiva una validazione dello schema JSON (richiede <code>python3</code> + <code>jsonschema</code>). Se il modulo non è presente, il controllo è saltato silenziosamente — la validazione è principalmente un aiuto sviluppatore, non una dipendenza runtime."
|
||||
},
|
||||
"applications": {
|
||||
"heading": "inventario delle applicazioni",
|
||||
"intro": "Due inventari elencano il software aggiunto ai pacchetti base di Proxmox VE: la lista dei pacchetti in <code>metadata/</code> e il registro dei componenti in rootfs, descritti di seguito. Il ripristino usa APT o gli installatori ProxMenux per riprodurre il software dell’utente secondo il metodo originale di installazione.",
|
||||
"packagesTitle": "packages.manual.list",
|
||||
"packagesBody": "Una lista alfabetica in testo semplice prodotta da <code>apt-mark showmanual</code> con tutti i pacchetti APT <em>installati esplicitamente</em> sull’host di origine. Sono escluse le dipendenze del sistema Proxmox VE di base, che APT installa automaticamente sul destinatario. Durante il ripristino, <code>_rs_run_complete_extras</code> legge la lista e applica un <em>filtro contro le rimozioni a cascata</em> in tre passaggi: <code>dpkg -s</code> rileva i pacchetti già installati, vengono rilevate altre versioni principali delle librerie e <code>apt-get install --simulate</code> verifica il rischio di rimozioni a cascata. Infine usa <code>apt-get install -y</code> per i pacchetti rimasti.",
|
||||
"componentsTitle": "components_status.json (parte di rootfs)",
|
||||
"componentsBody": "Un registro JSON sotto <code>/usr/local/share/proxmenux/</code> che registra ogni componente ProxMenux installato con il suo stato esatto: versione, bandiere ProxMenux-specifiche (per NVIDIA: <code>patched</code> boolean; per Coral: versione DKMS). Questo file vive all'interno dei rootfs — non in <code>metadata/</code> — perché è <em>letto dopo</em> la copia di rootfs al bersaglio. Il distaccatore post-boot (<code>apply_cluster_postboot.sh</code>) itera sulle sue voci ed esegue il gancio <code>--auto-reinstall</code> di ciascun componente, che legge lo stato registrato e riproduce l'installazione contro il kernel corrente dell'obiettivo.",
|
||||
"componentInstallersTitle": "Installatori di componenti",
|
||||
"componentInstallersBody": "Quattro installatori ProxMenux attualmente espongono un punto di ingresso <code>--auto-reinstall</code>:",
|
||||
"installerRows": [
|
||||
{
|
||||
"component": "nvidia_driver",
|
||||
"installer": "gpu_tpu/nvidia_installer.sh",
|
||||
"action": "Leggi <code>version</code> + <code>patched</code>. Scarica lo stesso runfile NVIDIA, costruisce moduli DKMS contro il kernel dell'obiettivo, riapplica la patch ProxMenux se la sorgente lo avesse."
|
||||
},
|
||||
{
|
||||
"component": "coral_driver",
|
||||
"installer": "gpu_tpu/install_coral.sh",
|
||||
"action": "Legge la versione del driver Coral. Compili il modulo DKMS contro il kernel dell'obiettivo."
|
||||
},
|
||||
{
|
||||
"component": "amdgpu_top",
|
||||
"installer": "gpu_tpu/amd_gpu_tools.sh",
|
||||
"action": "Legge la versione registrata. Ricarica l'esatta <code>.deb</code> dalla versione GitHub."
|
||||
},
|
||||
{
|
||||
"component": "intel_gpu_tools",
|
||||
"installer": "gpu_tpu/intel_gpu_tools.sh",
|
||||
"action": "APT-installa il pacchetto. Idemponte se già presente da <code>packages.manual.list</code>."
|
||||
}
|
||||
]
|
||||
},
|
||||
"restoreFlow": {
|
||||
"heading": "Come il ripristino usa le tre parti",
|
||||
"intro": "Il restauro e' una pipeline di sei stadi. Ogni fase legge un sottoinsieme specifico dell'archivio e aggiorna l'host di destinazione. Nessuna fase richiede che l'host sorgente sia raggiungibile — l'archivio è completamente autonomo.",
|
||||
"stagesCaption": "La fase 1 usa il manifesto per decidere cosa modificare. La fase 2 copia i percorsi rootfs applicabili al sistema in esecuzione. La fase 3 prepara quelli rischiosi per il prossimo avvio. La fase 3b importa i pool ZFS di dati che non contengono la radice e hanno tutti i dischi presenti. La fase 4 gestisce i pacchetti. La fase 5 reinstalla i componenti dopo il riavvio per il kernel di destinazione.",
|
||||
"stageRows": [
|
||||
{
|
||||
"stage": "1",
|
||||
"name": "Controllo di compatibilità",
|
||||
"reads": "manifest.json",
|
||||
"action": "Esegue <code>hb_compat_check</code>. Confronta sorgente vs. hardware target (NIC, ID di archiviazione), versione PVE e versione kernel principale. Imposta <code>HB_COMPAT_KERNEL_DIRECTION</code> (<code>same</code>, <code>bk_newer</code> o <code>bk_older</code>) e popola <code>RS_SKIP_PATHS</code> con esclusione hardware-drift e cross-kernel."
|
||||
},
|
||||
{
|
||||
"stage": "2",
|
||||
"name": "Applicazione a sistema avviato",
|
||||
"reads": "rootfs/ (solo percorsi sicuri)",
|
||||
"action": "<code>_rs_apply … hot</code> copia le voci <code>hb_classify_path</code>=<code>hot</code> direttamente al target live. Qualsiasi cosa sotto <code>/etc/pve</code>, <code>/etc/network</code> o percorsi classificati come <em>reboot</em>/<em>dangerous</em> è differita."
|
||||
},
|
||||
{
|
||||
"stage": "3",
|
||||
"name": "Preparazione delle modifiche differite",
|
||||
"reads": "rootfs/ (riavvio + percorsi pericolosi)",
|
||||
"action": "<code>_rs_prepare_pending_restore</code> prepara i percorsi rischiosi in <code>/var/lib/proxmenux/pending-restore/</code>, scrive <code>plan.env</code>, <code>apply-on-boot.list</code> e <code>rs-skip-paths.txt</code> e abilita <code>proxmenux-restore-onboot.service</code> per il prossimo avvio."
|
||||
},
|
||||
{
|
||||
"stage": "3b",
|
||||
"name": "Importazione dei pool di dati",
|
||||
"reads": "manifest.storage_inventory + target ZFS stato",
|
||||
"action": "<code>_rs_import_data_pools</code> tenta di importare ogni pool ZFS che non contiene la radice e ha tutti i dischi presenti sul destinatario. Se il pool ha un hostid estraneo, riprova con <code>zpool import -f</code>. Se manca un disco, il pool viene saltato con un avviso. Il risultato per pool è registrato in <code>/var/log/proxmenux/restore-datapools-<timestamp>.log</code>."
|
||||
},
|
||||
{
|
||||
"stage": "4",
|
||||
"name": "Installazione del pacchetto",
|
||||
"reads": "metadata/packages.manual.list",
|
||||
"action": "<code>_rs_run_complete_extras</code> gestisce il filtro a cascata e chiama <code>apt-get install -y</code> con l'elenco dei pacchetti sopravvissuti. L'uscita completa va a <code>/var/log/proxmenux/restore-apt-*.log</code>."
|
||||
},
|
||||
{
|
||||
"stage": "5",
|
||||
"name": "Dopo l'avvio",
|
||||
"reads": "rootfs (già applicato) + components_status.json",
|
||||
"action": "Dopo il riavvio, <code>apply_pending_restore.sh</code> riprende i percorsi differiti e <code>apply_cluster_postboot.sh</code> corre <code>update-initramfs</code>, <code>update-grub</code> (o <code>proxmox-boot-tool refresh</code>) e itera oltre <code>components_status.json</code> sparando il gancio <code>--auto-reinstall</code> di ogni componente."
|
||||
}
|
||||
]
|
||||
},
|
||||
"whyItWorks": {
|
||||
"heading": "Perché suddividere il backup in tre parti",
|
||||
"body": "La suddivisione segue il <strong>ciclo di vita</strong> dei dati. Il filesystem viene trasferito con <code>rsync</code>: rapidamente, in modo trasparente e atomico per file. Lo stato di configurazione da interpretare prima delle modifiche è <strong>JSON strutturato</strong>, leggibile separatamente, versionabile tramite schema e confrontabile automaticamente con lo stato di destinazione. Il software da reinstallare è descritto in un <strong>inventario</strong> di nomi e versioni; il gestore dei pacchetti e gli installatori ProxMenux scelgono i binari adatti. Ogni parte svolge il proprio compito. Insieme mirano a un ripristino coerente ma tollerante agli errori: un manifesto corrotto lascia rootfs ripristinabile, un pacchetto mancante non impedisce l’installazione dei componenti e un errore su una voce non ferma l’installazione della successiva."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "ProxMenux Backup e ripristino — Panoramica | Backup e ripristino completo dell'host per Proxmox VE",
|
||||
"description": "ProxMenux Backup e ripristino acquisisce lo stato completo di un host Proxmox (file system, manifest di configurazione strutturata e pacchetti/componenti installati) e lo riproduce sullo stesso host o su un host diverso. Il backup e il ripristino sono autonomi: nessuna dipendenza esterna e i ripristini tra kernel sono supportati tramite un filtro di sottoinsieme sicuro sensibile alla direzione e un'idratazione indipendente dal kernel.",
|
||||
"ogTitle": "ProxMenux Backup e ripristino - Panoramica",
|
||||
"ogDescription": "Backup e ripristino completo dell'host per Proxmox VE con manifest strutturato, elenco di pacchetti e programmi di reinstallazione dei componenti.",
|
||||
"twitterTitle": "ProxMenux Backup e ripristino | ProxMenux",
|
||||
"twitterDescription": "Backup e ripristino completo dell'host per Proxmox VE con manifest strutturato, elenco di pacchetti e programmi di reinstallazione dei componenti."
|
||||
},
|
||||
"header": {
|
||||
"title": "Backup e ripristino",
|
||||
"description": "Backup e ripristino dell'intero host per Proxmox VE. Cattura filesystem, configurazione e componenti installati in un unico archivio e riproduce l'host sulla stessa o su una diversa installazione Proxmox senza dipendenze esterne.",
|
||||
"section": "Backup e ripristino"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Che cos'è, in un paragrafo",
|
||||
"body": "Un backup di ProxMenux acquisisce lo stato completo di un host Proxmox: <strong>il filesystem</strong>, con le directory pertinenti in <code>/etc</code>, <code>/root</code> e <code>/var/lib/pve-cluster</code> e gli eventuali percorsi personalizzati; <strong>un manifesto strutturato</strong> in JSON con hardware rilevato, parametri del kernel, configurazione di rete, stato di ZFS, utenti e voci cron; e <strong>un inventario delle applicazioni</strong>, con i pacchetti contrassegnati da APT come installati manualmente e i componenti installati da ProxMenux, completi delle versioni esatte. Le tre destinazioni supportate — archivio locale, Proxmox Backup Server (consigliato) e Borg — ricevono lo stesso contenuto autonomo. Ognuna consente di ricostruire l’host di destinazione senza che l’host di origine debba essere raggiungibile durante il ripristino."
|
||||
},
|
||||
"video": {
|
||||
"heading": "Video tutorial",
|
||||
"intro": "Preferisci guardare Backup e ripristino in azione prima di configurarlo? Questa procedura dettagliata copre una demo completa end-to-end della funzionalità in ProxMenux.",
|
||||
"title": "ProxMenux — Procedura dettagliata di backup e ripristino",
|
||||
"caption": "Video esterno su YouTube. Riproduce in modalità di privacy avanzata (nessun cookie finché non premi Riproduci)."
|
||||
},
|
||||
"whatItIsNot": {
|
||||
"heading": "Cosa non è",
|
||||
"intro": "Questa sezione riguarda il backup e il ripristino <strong>dell’host</strong>: l’installazione di Proxmox, non le applicazioni e i sistemi guest che vi vengono eseguiti.",
|
||||
"items": [
|
||||
"<strong>Non è uno strumento di backup delle VM/CT.</strong> Questa funzione non acquisisce i dischi o lo stato della RAM dei guest: a questo serve <code>vzdump</code>. I <strong>file di configurazione</strong> dei guest (<code>/etc/pve/nodes/<node>/qemu-server/*.conf</code> e <code>lxc/*.conf</code>) vengono <strong>invece</strong> salvati. Dopo il ripristino ricompare l’inventario e i dischi possono essere ripristinati o ricollegati da un backup esistente su PBS o in locale.",
|
||||
"<strong>Non è un’operazione sull’intero cluster.</strong> Ogni nodo salva il proprio backup. L’appartenenza al cluster è inclusa in <code>/etc/pve</code>, così un nodo ripristinato può esservi reintegrato; il ripristino di tutto il cluster richiede però il coordinamento dei singoli nodi.",
|
||||
"<strong>Non è un’immagine completa del disco.</strong> Non vengono salvati i binari del kernel, l’initramfs o la partizione di avvio. Durante il ripristino ProxMenux usa i file di avvio dell’host di destinazione, rigenerati automaticamente da <code>update-initramfs</code> e dallo strumento del bootloader, e installa i driver compatibili con il kernel in esecuzione sulla destinazione."
|
||||
]
|
||||
},
|
||||
"threePillars": {
|
||||
"heading": "I tre pilastri di un backup",
|
||||
"intro": "Un archivio ProxMenux è strutturato attorno a tre payload autonomi. Il ripristino li utilizza tutti e tre insieme per riprodurre l'host di origine su una destinazione che potrebbe non avere nemmeno lo stesso kernel installato.",
|
||||
"diagramCaption": "Ogni backup spedisce gli stessi tre payload indipendentemente dalla destinazione. Il ripristino utilizza tutti e tre: rootfs per depositare i file, manifest per rilevare deviazioni e differenze tra kernel e inventario delle applicazioni per reinstallare pacchetti e componenti sul kernel della destinazione.",
|
||||
"pillar1Label": "Filesystem",
|
||||
"pillar1Detail": "rootfs/\n(rsync di /etc,\n/etc/systemd/network,\n/root, più uno\nsnapshot sqlite3\ndi /var/lib/pve-cluster,\n+ percorsi opzionali)",
|
||||
"pillar2Label": "Manifesto",
|
||||
"pillar2Detail": "manifest.json\n(hardware, parametri\ndel kernel, rete,\nZFS, utenti, cron,\npool ZFS, archiviazione)",
|
||||
"pillar3Label": "Applicazioni",
|
||||
"pillar3Detail": "packages.manual.list\n+ components_status.json\n(pacchetti APT manuali + programmi\ndi installazione ProxMenux con versioni)"
|
||||
},
|
||||
"restoreIsUniversal": {
|
||||
"heading": "Il ripristino riproduce l'host di origine, non l'archivio",
|
||||
"body": "Il ripristino di un backup ProxMenux non si limita ad estrarre il filesystem. Il flusso di ripristino legge il manifest per rilevare la deviazione tra l'origine e la destinazione (differenze hardware, rinomina della scheda NIC, versione del kernel, identità del pool ZFS), riproduce il file system, quindi attiva il programma di installazione del componente corretto per ogni servizio installato sull'origine (driver NVIDIA, Coral TPU, strumenti GPU AMD, strumenti Intel GPU). Ogni programma di installazione viene eseguito sul <strong>kernel corrente della destinazione</strong>, quindi l'host ripristinato non dipende dalla presenza del kernel di origine. Quando il kernel della destinazione è più recente di quello del backup, un passaggio di <strong>idratazione</strong> indipendente dal kernel unisce l'ottimizzazione dell'utente (token IOMMU, ID dispositivo VFIO, quirk personalizzati, chiavi GRUB) nella nuova configurazione di avvio della destinazione senza copiare testualmente i file legati al kernel."
|
||||
},
|
||||
"twoInterfaces": {
|
||||
"heading": "Due interfacce, un backend",
|
||||
"intro": "Ogni fase del flusso di lavoro di backup e ripristino è disponibile da due punti di ingresso. Entrambi chiamano la stessa libreria di shell, producono archivi identici e leggono lo stesso registro dei lavori.",
|
||||
"cliLabel": "ProxMenux Scripts (TUI)",
|
||||
"cliDetail": "menu → Utilità →\nBackup/Ripristino dell'host\n\nFlusso basato su dialoghi,\nSSH-friendly, scriptabile\nper uso non presidiato.",
|
||||
"webLabel": "ProxMenux Monitor (Web UI)",
|
||||
"webDetail": "Scheda Backups\nnell’interfaccia web di Monitor.\n\nRipristino con un clic, log\nin tempo reale, integrazione con\nle notifiche e il visualizzatore\ndelle differenze di rollback."
|
||||
},
|
||||
"whereNext": {
|
||||
"heading": "Dove andare da qui",
|
||||
"intro": "Ogni sottosezione seguente copre in modo approfondito un aspetto del flusso di lavoro. Inizia con <em>Come funziona</em> se l'obiettivo è capire cosa contiene l'archivio e perché. Vai a <em>Destinazioni</em> per configurare la destinazione per la copia. Leggi <em>Ripristino</em> e <em>Ripristino cross-kernel</em> per la parte di ripristino.",
|
||||
"items": [
|
||||
{
|
||||
"label": "Come funziona",
|
||||
"href": "/docs/backup-restore/how-it-works",
|
||||
"tail": "— i tre payload (rootfs, manifest, applicazioni) in dettaglio, con i raccoglitori che li producono e il formato di ciascun file."
|
||||
},
|
||||
{
|
||||
"label": "Destinazioni",
|
||||
"href": "/docs/backup-restore/destinations",
|
||||
"tail": " — confronto tra locale, Proxmox Backup Server (consigliato) e Borg e come configurarli."
|
||||
},
|
||||
{
|
||||
"label": "Creazione di backup",
|
||||
"href": "/docs/backup-restore/creating-backups",
|
||||
"tail": " — backup una tantum, profilo di percorso predefinito, aggiunta di percorsi personalizzati, crittografia per PBS."
|
||||
},
|
||||
{
|
||||
"label": "Lavori pianificati",
|
||||
"href": "/docs/backup-restore/scheduled-jobs",
|
||||
"tail": " — nuovi lavori rispetto al collegamento a un lavoro vzdump PVE esistente, formati di pianificazione, finestra dei dettagli del lavoro."
|
||||
},
|
||||
{
|
||||
"label": "Ripristino",
|
||||
"href": "/docs/backup-restore/restoring",
|
||||
"tail": " — le tre azioni su un archivio (visualizzazione, download, ripristino), ripristino completo e personalizzato, il dispatcher post-avvio e perché gli ultimi dieci minuti sono importanti."
|
||||
},
|
||||
{
|
||||
"label": "Ripristino tra kernel",
|
||||
"href": "/docs/backup-restore/cross-kernel",
|
||||
"tail": " — comportamento che tiene conto della direzione del cambio di versione quando il kernel di destinazione è diverso da quello del backup, filtro del sottoinsieme sicuro e quattro fasi di idratazione."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,152 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Attività pianificate — timer, modalità di collegamento, conservazione | ProxMenux",
|
||||
"description": "Attività pianificate di backup dell’host ProxMenux. Due modalità di creazione (timer systemd dedicato o collegamento a un’attività vzdump PVE esistente), regole di conservazione applicate per attività tramite proxmox-backup-client, Borg o pulizia locale, file in /var/lib/proxmenux/backup-jobs e script di esecuzione che produce gli stessi archivi del flusso interattivo.",
|
||||
"ogTitle": "ProxMenux Backup — lavori programmati",
|
||||
"ogDescription": "Backup host programmati non presidiati con modalità di aggancio, ritenzione e le stesse tre destinazioni del flusso interattivo.",
|
||||
"twitterTitle": "Lavori programmati | ProxMenux",
|
||||
"twitterDescription": "Attività pianificate di backup dell’host senza intervento, con modalità di collegamento e conservazione."
|
||||
},
|
||||
"header": {
|
||||
"title": "Lavori programmati",
|
||||
"description": "Lavori di backup incustoditi. Due modelli di creazione: un nuovo lavoro indipendente con il proprio programma, o un lavoro collegato ad un'attività PVE vzdump esistente che eredita il programma e la ritenzione di tale attività. Entrambi producono archivi identici al flusso interattivo.",
|
||||
"section": "Backup e ripristino"
|
||||
},
|
||||
"intro": {
|
||||
"title": "I due modelli di lavoro programmati",
|
||||
"body": "Un lavoro programmato può essere creato seguendo uno dei due modelli:",
|
||||
"modelsList": [
|
||||
"<strong>Nuovo lavoro indipendente</strong> — ProxMenux definisce il programma di lavoro stesso con il proprio timer systemd, indipendente da qualsiasi altra attività sull'host. Compatibile con tutte e tre le destinazioni: Locale, PBS e Borg.",
|
||||
"<strong>Collega a un’attività vzdump PVE esistente</strong> — l’attività non ha una pianificazione propria; viene eseguita automaticamente quando si attiva l’attività vzdump PVE principale che già esegue il backup di VM e LXC sull’host. Ne eredita pianificazione e conservazione. Compatibile con Locale e PBS (Borg non è supportato perché PVE non ha un pianificatore nativo per Borg)."
|
||||
]
|
||||
},
|
||||
"attachBadge": {
|
||||
"title": "Modalità di aggancio — consigliato quando esiste già un compito PVE vzdump",
|
||||
"body": "Se esiste già un’attività vzdump PVE per VM e LXC del nodo, collegare il backup dell’host lo fa eseguire dopo il backup dei guest, nello <strong>stesso ciclo di backup</strong>. Nel ripristino, le configurazioni dei guest provengono dal backup dell’host (in <code>/etc/pve</code>) e i dischi dai backup vzdump dello stesso ciclo. Questo aiuta a coordinare il recupero dell’intero nodo, ma non è uno snapshot atomico: modifiche durante il ciclo possono lasciare differenze tra configurazione dell’host e stato dei dischi dei guest."
|
||||
},
|
||||
"frequencyBadge": {
|
||||
"title": "Frequenza raccomandata",
|
||||
"body": "Per massimizzare la compatibilità tra backup dell’host e ripristino futuro, esegui backup frequenti. Più la copia è vicina allo stato attuale dell’host, meno differenze di configurazione, pacchetti e componenti dovrà riconciliare il ripristino."
|
||||
},
|
||||
"modes": {
|
||||
"heading": "Le due modalità",
|
||||
"rows": [
|
||||
{
|
||||
"mode": "Nuova attività pianificata",
|
||||
"backends": "Locale, PBS, Borg",
|
||||
"schedule": "Espressione <code>OnCalendar</code> propria (sintassi del calendario systemd, ad esempio <code>daily</code> o <code>Mon..Fri 03:00</code>).",
|
||||
"retention": "Richiesti separatamente: <code>keep-last</code>, <code>keep-hourly</code>, <code>keep-daily</code>, <code>keep-weekly</code>, <code>keep-monthly</code>, <code>keep-yearly</code>. Applicato dallo script di esecuzione dopo ogni backup di successo."
|
||||
},
|
||||
{
|
||||
"mode": "Attaccare a un lavoro PVE vzdump",
|
||||
"backends": "Locale, PBS (Borg non ha pianificatore lato PVE)",
|
||||
"schedule": "Ereditata dall’attività PVE principale. Non viene installato alcun timer systemd sul lato ProxMenux.",
|
||||
"retention": "Ereditata dalla configurazione <code>prune-backups</code> dell’attività principale (mappata uno a uno alle variabili <code>KEEP_*</code> dello script di esecuzione tramite <code>hb_pve_prune_to_keep_env</code>)."
|
||||
}
|
||||
]
|
||||
},
|
||||
"attachDetail": {
|
||||
"heading": "Come funziona la modalità di collegamento",
|
||||
"intro": "PVE scrive le attività <code>vzdump</code> in <code>/etc/pve/jobs.cfg</code>, con una sezione per attività che indica lo storage dei backup VM e LXC. La modalità di collegamento richiede un backend supportato da ProxMenux (Locale o PBS). Il backup dell’host parte dall’hook job-end dopo il completamento dell’attività di backup dei guest.",
|
||||
"steps": [
|
||||
{
|
||||
"step": "1",
|
||||
"detail": "Durante la creazione dell’attività, ProxMenux elenca le attività PVE genitoriali compatibili tramite <code>hb_pve_list_vzdump_jobs_for_backend</code>. L'utente ne sceglie uno."
|
||||
},
|
||||
{
|
||||
"step": "2",
|
||||
"detail": "Il file <code>.env</code> dell’attività è scritto con <code>PVE_PARENT_JOB</code>, <code>PVE_STORAGE</code> e i valori ereditati <code>KEEP_*</code>; non viene creato alcun timer systemd."
|
||||
},
|
||||
{
|
||||
"step": "3",
|
||||
"detail": "<code>hb_install_vzdump_hook</code> registra un hook in <code>/etc/vzdump.conf</code>. Nella fase job-end di qualsiasi attività vzdump confronta il <code>$STOREID</code> ricevuto con il <code>PVE_STORAGE</code> di ogni attività collegata e abilitata, avviando lo script di esecuzione per quelle corrispondenti. Il confronto usa lo storage, non l’ID dell’attività principale selezionata."
|
||||
},
|
||||
{
|
||||
"step": "4",
|
||||
"detail": "L’archivio viene salvato nello stesso storage dei backup vzdump: <code>path/dump/</code> per Locale oppure il repository PBS configurato nella voce di storage PVE."
|
||||
}
|
||||
],
|
||||
"outroBody": "La modalità di collegamento non ha un timer proprio. Disabilitare o eliminare l’attività PVE principale selezionata ferma quel trigger, ma un’altra attività vzdump sullo stesso storage può ancora avviare il backup dell’host. Per impedirlo, disabilita o elimina l’attività ProxMenux stessa. Se disabilitata, la voce resta su disco e può essere riabilitata o ricollegata."
|
||||
},
|
||||
"storageLayout": {
|
||||
"heading": "File che compongono un lavoro",
|
||||
"intro": "Ogni lavoro programmato è completamente descritto da tre o quattro file sul disco. Leggerli dà la configurazione completa del lavoro senza fare affidamento sull'interfaccia.",
|
||||
"rows": [
|
||||
{
|
||||
"path": "/var/lib/proxmenux/backup-jobs/JOB_ID.env",
|
||||
"content": "Backend, ID di backup o destinazione, pianificazione (Nuova modalità) o genitore PVE (Modalità allegato), abilitato flag, ritenzione valori <code>KEEP_*</code>, puntatori di credenziali."
|
||||
},
|
||||
{
|
||||
"path": "/var/lib/proxmenux/backup-jobs/JOB_ID.paths",
|
||||
"content": "Un percorso assoluto per riga: la selezione ricavata dal profilo e fissata alla creazione dell’attività. Modificare il file fa usare la nuova selezione alla successiva attivazione del timer."
|
||||
},
|
||||
{
|
||||
"path": "/etc/systemd/system/proxmenux-backup-JOB_ID.timer + .service",
|
||||
"content": "Solo modalità nuova attività. Il servizio invoca <code>run_scheduled_backup.sh JOB_ID</code>. Il timer lo programma con <code>Persistent=true</code> (esecuzioni saltate recuperate al prossimo avvio) e un piccolo <code>RandomizedDelaySec=120</code> per diffondere il carico quando più attività condividono la stessa espressione OnCalendar."
|
||||
},
|
||||
{
|
||||
"path": "/etc/vzdump.conf script-hook",
|
||||
"content": "Solo modalità di collegamento. Installato una volta da <code>hb_install_vzdump_hook</code>; confronta <code>PVE_STORAGE</code> di ogni attività collegata con <code>$STOREID</code>, passato da PVE allo script hook."
|
||||
}
|
||||
]
|
||||
},
|
||||
"runner": {
|
||||
"heading": "Cosa fa un’attività quando si avvia",
|
||||
"intro": "Ogni lavoro — se nuovo modello o allegato — esegue la stessa sequenza a tre fasi:",
|
||||
"steps": [
|
||||
"<strong>Prepara il backup.</strong> Legge la configurazione del lavoro (destinazione, profilo, percorsi) e assembla l'albero dell'archivio esattamente come fa il flusso interattivo. Il risultato è lo stesso archivio un backup manuale con quelle impostazioni produrrebbe.",
|
||||
"<strong>Scrivi nella destinazione.</strong> Carica o scrive l'archivio alla destinazione configurata — un file <code>.tar.zst</code> locale, un backup PBS o un archivio Borg — utilizzando esattamente gli stessi strumenti e le credenziali che un backup manuale alla stessa destinazione avrebbe utilizzato.",
|
||||
"<strong>Applica la conservazione.</strong> Rimuove i vecchi backup dalla destinazione, mantenendo i conti <code>keep-last</code> / <code>keep-daily</code> / <code>keep-weekly</code> configurati sul lavoro. La potatura viene eseguita dalla destinazione stessa: PBS applica la propria ritenzione, Borg esegue <code>borg prune</code>, e per Local ProxMenux elimina i file che cadono fuori dalla finestra <code>keep-last</code>."
|
||||
]
|
||||
},
|
||||
"management": {
|
||||
"heading": "Gestione dei lavori",
|
||||
"intro": "Il menu scheduler (Script TUI) e la scheda Monitor Backups espongono le stesse azioni su qualsiasi lavoro.",
|
||||
"rows": [
|
||||
{
|
||||
"action": "Esegui ora",
|
||||
"detail": "Richiama subito lo script di esecuzione, senza attendere il timer o l’hook vzdump. Utile per verificare la configurazione senza aspettare la prossima esecuzione pianificata."
|
||||
},
|
||||
{
|
||||
"action": "Attivare / disattivare",
|
||||
"detail": "Nuova modalità: <code>systemctl enable/disable --now</code> il timer. Modalità di aggancio: cambia il flag <code>ENABLED</code> nel job env — lo script gancio lo onora alla prossima esecuzione PVE."
|
||||
},
|
||||
{
|
||||
"action": "Modifica",
|
||||
"detail": "Riapre le richieste di destinazione, pianificazione, profilo e ritenzione e riscrive i file di lavoro. Conserva l'ID del lavoro."
|
||||
},
|
||||
{
|
||||
"action": "Elimina",
|
||||
"detail": "Rimuove il job env, il file dei percorsi, il timer + servizio systemd (Nuova modalità), e disabilita il binding del gancio (Modalità allegato). Non tocca archivi già sulla destinazione."
|
||||
},
|
||||
{
|
||||
"action": "Visualizza log",
|
||||
"detail": "Mostra in tempo reale <code>/var/log/proxmenux/backup-jobs/JOB_ID-YYYYMMDD_HHMMSS.log</code>: un file di registro per esecuzione. Lo script di esecuzione emette anche una riga di stato compatta a journald sotto il servizio systemd."
|
||||
}
|
||||
]
|
||||
},
|
||||
"notifications": {
|
||||
"heading": "Notifiche",
|
||||
"body": "Ogni esecuzione programmata genera gli stessi eventi <code>hb_notify_lifecycle</code> del flusso interattivo (<code>start</code>, <code>complete</code>, <code>fail</code>). Se i canali di notifica sono configurati nel Monitor, i lavori incustoditi mostrano i risultati come fanno i backup manuali — un utente non ha bisogno di controllare il registro per sapere se un lavoro è riuscito."
|
||||
},
|
||||
"whereNext": {
|
||||
"heading": "Dove andare dopo",
|
||||
"items": [
|
||||
{
|
||||
"label": "Creazione di backup",
|
||||
"href": "/docs/backup-restore/creating-backups",
|
||||
"tail": "— il flusso interattivo che condivide il backend con il pianificatore."
|
||||
},
|
||||
{
|
||||
"label": "Destinazioni",
|
||||
"href": "/docs/backup-restore/destinations",
|
||||
"tail": "— configurazione per-backend utilizzata sia dal flusso interattivo che dal pianificatore."
|
||||
},
|
||||
{
|
||||
"label": "Ripristino",
|
||||
"href": "/docs/backup-restore/restoring",
|
||||
"tail": " — il flusso che utilizza i backup prodotti dalle attività."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,175 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Creare VM su Proxmox VE: assistenti Synology, Windows, Linux e NAS | ProxMenux",
|
||||
"description": "Crea e configura VM su Proxmox VE con ProxMenux. Procedure guidate per NAS (Synology DSM, TrueNAS, OpenMediaVault, XigmaNAS, ecc.), Windows, distribuzioni Linux e un installatore macOS esterno. Impostazioni adatte per hardware, storage e rete.",
|
||||
"ogTitle": "Creare VM su Proxmox VE: assistenti Synology, Windows, Linux e NAS",
|
||||
"ogDescription": "Procedure guidate ProxMenux per creare VM Synology DSM, TrueNAS, OMV, XigmaNAS, Windows e Linux su Proxmox VE.",
|
||||
"ogImageAlt": "Menu Crea VM di ProxMenux",
|
||||
"twitterTitle": "Creare VM su Proxmox VE | ProxMenux",
|
||||
"twitterDescription": "Procedure guidate per VM Synology, TrueNAS, OMV, XigmaNAS, Windows e Linux su Proxmox VE."
|
||||
},
|
||||
"header": {
|
||||
"title": "Creare VM",
|
||||
"description": "ProxMenux riunisce la creazione delle VM in un menu interattivo. Scegli la famiglia del sistema operativo e la procedura corrispondente gestisce ISO, CPU, RAM, BIOS, rete, storage e, facoltativamente, passthrough GPU.",
|
||||
"section": "Macchine virtuali"
|
||||
},
|
||||
"intro": {
|
||||
"title": "A cosa serve questo menu",
|
||||
"body": "Il menu Crea VM indirizza a più procedure guidate. Chiede la famiglia del sistema operativo e carica selettore ISO e configuratore adatti. Il percorso predefinito usa impostazioni ragionevoli; quello avanzato mostra tutte le opzioni disponibili prima della creazione."
|
||||
},
|
||||
"opening": {
|
||||
"heading": "Apertura del menu",
|
||||
"body": "Nel menu principale di ProxMenux seleziona <strong>Crea VM</strong>. Vedrai:",
|
||||
"imageAlt": "Menu Crea VM con tre opzioni ProxMenux (NAS/Windows/Linux) e la sezione Community Scripts sotto (macOS/Altri)"
|
||||
},
|
||||
"families": {
|
||||
"heading": "Tre famiglie OS",
|
||||
"intro": "Le tre voci ProxMenux nella parte superiore del menu condividono lo stesso motore sottostante e il flusso post-ISO — si indirizzano a diversi selettori ISO e applicano i default sintonizzati per ogni famiglia. Scegli quello che corrisponde all'ospite che vuoi installare.",
|
||||
"routes": [
|
||||
{
|
||||
"key": "nas",
|
||||
"title": "Sistema NAS",
|
||||
"icon": "HardDrive",
|
||||
"href": "/docs/create-vm/system-nas",
|
||||
"accent": "border-emerald-300 bg-emerald-50",
|
||||
"iconBg": "bg-emerald-100 text-emerald-700",
|
||||
"description": "Otto sistemi NAS come VM dedicate. La maggior parte usa il flusso ISO automatico; Synology DSM ha una procedura specializzata con loader.",
|
||||
"bullets": [
|
||||
"Synology DSM (Arc / RR / Alpine RedPill M-shell caricatori)",
|
||||
"TrueNAS SCALE e CORE (ZFS)",
|
||||
"OpenMediaVault (basato su Debian)",
|
||||
"XigmaNAS (FreeBSD ZFS)",
|
||||
"Rockstor (openSUSE / Btrfs), ZimaOS, FygoOS"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "windows",
|
||||
"title": "Sistema Windows",
|
||||
"icon": "MonitorCog",
|
||||
"href": "/docs/create-vm/system-windows",
|
||||
"accent": "border-blue-300 bg-blue-50",
|
||||
"iconBg": "bg-blue-100 text-blue-700",
|
||||
"description": "Edizioni Windows 10, 11 e Server con default Windows (q35 + OVMF + TPM 2.0) e driver VirtIO pre-montati.",
|
||||
"bullets": [
|
||||
"UUP Dump per le ISO aggiornate",
|
||||
"O ISO locale da /var/lib/vz/template/iso",
|
||||
"TPM 2.0 aggiunto automaticamente",
|
||||
"ISO dei driver VirtIO collegata a ide3",
|
||||
"Canale agente ospite abilitato"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "linux",
|
||||
"title": "Sistema Linux",
|
||||
"icon": "Laptop",
|
||||
"href": "/docs/create-vm/system-linux",
|
||||
"accent": "border-amber-300 bg-amber-50",
|
||||
"iconBg": "bg-amber-100 text-amber-700",
|
||||
"description": "Catalogo selezionato di ISO Linux ufficiali scaricate automaticamente dai progetti originali, più un selettore di ISO locali per le altre immagini.",
|
||||
"bullets": [
|
||||
"Ubuntu (Desktop / Server, 20.04–25.10)",
|
||||
"Debian (Desktop / Netinst, 11–13)",
|
||||
"Fedora, Arch, Rocky, Mint, openSUSE",
|
||||
"Alpine, Kali, Manjaro",
|
||||
"Percorso ISO locale per immagini personalizzate"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"community": {
|
||||
"title": "Script della comunità (non documentati qui)",
|
||||
"intro": "Le due voci sotto il separatore <em>Community Scripts</em> eseguono codice che <strong>non fa parte di ProxMenux</strong>, quindi sono volutamente escluse da questa documentazione:",
|
||||
"macosRich": "<strong>Sistema macOS</strong>: esegue l’installatore esterno <osxLink>OSX-PROXMOX</osxLink>. Clona il repository originale, prepara l’host e <strong>lo riavvia automaticamente al termine</strong>. Consulta la documentazione del progetto.",
|
||||
"othersRich": "<strong>Altri sistemi (basati su Linux)</strong>: carica una selezione di installatori della comunità per server domestici, router, firewall e simili. Ogni script viene mantenuto fuori da ProxMenux."
|
||||
},
|
||||
"afterPick": {
|
||||
"heading": "Cosa succede dopo aver scelto un sistema operativo",
|
||||
"intro": "Dopo la scelta dell’ISO, il menu segue lo stesso percorso per ogni famiglia di sistemi:",
|
||||
"items": [
|
||||
"<strong>Predefinito o avanzato.</strong> Un dialogo consente di accettare le impostazioni ProxMenux o aprire il configuratore completo: modello e core CPU, RAM, BIOS/UEFI, scheda di rete e tipo di macchina.",
|
||||
"<strong>Piano di archiviazione.</strong> Combina dischi virtuali, importati e dispositivi PCI passthrough come interi controller o NVMe nella stessa VM.",
|
||||
"<strong>Passthrough GPU facoltativo.</strong> Se viene rilevata una GPU compatibile, ProxMenux propone l’assistente GPU dopo la creazione della VM. Può servire un riavvio.",
|
||||
"<strong>Creazione della VM.</strong> La VM viene creata, taggata e dotata di una descrizione HTML formattata per consultarla nell’interfaccia Proxmox."
|
||||
],
|
||||
"tipTitle": "Preferisci Advanced per le VM che intendi mantenere",
|
||||
"tipBody": "Preimpostazioni predefinite funzionano bene per i test rapidi. Per un VM si intende mantenere, il percorso Avanzato consente di prendere il giusto BIOS (SeaBIOS vs OVMF/UEFI), tipo di macchina (<code>i440fx</code> vs <code>q35</code>) e controller disco (VirtIO SCSI singolo vs SATA) davanti — questi sono dolorosi di cambiare in seguito."
|
||||
},
|
||||
"scripts": {
|
||||
"heading": "Scripts coinvolti",
|
||||
"intro": "Il menu carica tramite source vari script condivisi senza una pagina dedicata. Sono elencati qui come riferimento. Ogni sottopagina collega lo script principale della propria procedura.",
|
||||
"headerScript": "Script",
|
||||
"headerRole": "Ruolo",
|
||||
"rows": [
|
||||
{
|
||||
"path": "menus/create_vm_menu.sh",
|
||||
"role": "Punto di ingresso e instradamento."
|
||||
},
|
||||
{
|
||||
"path": "vm/select_nas_iso.sh",
|
||||
"role": "Selettore ISO e sistemi NAS (Synology, TrueNAS, OMV, Rockstor, XigmaNAS, ZimaOS, FygoOS)."
|
||||
},
|
||||
{
|
||||
"path": "vm/select_windows_iso.sh",
|
||||
"role": "Selettore ISO Windows. Delega al costruttore UUP Dump quando necessario."
|
||||
},
|
||||
{
|
||||
"path": "vm/select_linux_iso.sh",
|
||||
"role": "Selettore ISO Linux per il flusso Linux (distribuzioni mainstream)."
|
||||
},
|
||||
{
|
||||
"path": "vm/synology.sh",
|
||||
"role": "Procedura Synology DSM: scarica loader e immagine DSM e prepara il profilo della VM."
|
||||
},
|
||||
{
|
||||
"path": "vm/zimaos.sh",
|
||||
"role": "Flusso ZimaOS: scarica l'immagine e la collega nella definizione VM."
|
||||
},
|
||||
{
|
||||
"path": "vm/vm_configurator.sh",
|
||||
"role": "Default vs Advanced wizard: modello/core CPU, RAM, BIOS, NIC, tipo di macchina."
|
||||
},
|
||||
{
|
||||
"path": "vm/disk_selector.sh",
|
||||
"role": "Piano di stoccaggio: disco virtuale, importazione disco, o passaggio Controller/NVMe."
|
||||
},
|
||||
{
|
||||
"path": "vm/vm_creator.sh",
|
||||
"role": "Creazione finale VM: applica la configurazione, allega lo storage, scrive la descrizione HTML."
|
||||
},
|
||||
{
|
||||
"path": "vm/guest_agent_config.sh",
|
||||
"role": "aggancio opzionale QEMU agente ospite, utilizzato da diversi flussi."
|
||||
}
|
||||
]
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/disk-manager",
|
||||
"label": "Gestione disco",
|
||||
"tail": "— allegare dischi fisici esistenti o importare immagini disco nelle VM."
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils/UUp-Dump-ISO-Creator",
|
||||
"label": "Creatore di ISO UUP Dump",
|
||||
"tail": " — crea ISO di installazione Windows pronte come supporto di avvio."
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils/import-vm",
|
||||
"label": "Importa VM da OVA / OVF",
|
||||
"tail": "— portare le VM pre-costruite dalle esportazioni VMware / VirtualBox / ProxMenux."
|
||||
},
|
||||
{
|
||||
"href": "/docs/hardware/gpu-vm-passthrough",
|
||||
"label": "Aggiungi GPU a VM (Passthrough)",
|
||||
"tail": "— passare un GPU in un VM appena creato."
|
||||
},
|
||||
{
|
||||
"href": "/docs/help-info/vm-ct-commands",
|
||||
"label": "Comandi di gestione VM e CT",
|
||||
"tail": "— riferimento qm per il lato CLI."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,453 @@
|
||||
{
|
||||
"title": "Script per creare una VM Synology",
|
||||
"stepLabel": "Passaggio",
|
||||
"intro": {
|
||||
"heading": "Introduzione",
|
||||
"intro": "ProxMenux fornisce uno script automatizzato che crea e configura una macchina virtuale (VM) per installare Synology DSM (DiskStation Manager) su Proxmox VE. Questo script semplifica il processo scaricando e aggiungendo uno dei caricatori disponibili al boot VM, dando l'opzione tra quattro diverse scelte:",
|
||||
"loaders": [
|
||||
{
|
||||
"name": "AuxXxilium Arc",
|
||||
"url": "https://github.com/AuxXxilium/arc",
|
||||
"extra": ""
|
||||
},
|
||||
{
|
||||
"name": "RedPill RR",
|
||||
"url": "https://github.com/RROrg/rr",
|
||||
"extra": ""
|
||||
},
|
||||
{
|
||||
"name": "Alpine RedPill M-shell (progetto TinyCore)",
|
||||
"url": "https://github.com/PeterSuh-Q3/tinycore-redpill",
|
||||
"extra": ""
|
||||
}
|
||||
],
|
||||
"customLoader": "Custom Loader – opzione per utilizzare un caricatore personalizzato se si preferisce modificare o creare la propria configurazione",
|
||||
"simplifiesIntro": "Lo script semplifica il processo di creazione VM offrendo le seguenti opzioni:",
|
||||
"simplifies": [
|
||||
"Selezione di configurazione predefinita o avanzata",
|
||||
"Configurazione di CPU, RAM, BIOS, e tipo di macchina",
|
||||
"Scelta tra disco virtuale o passaggio del disco fisico"
|
||||
]
|
||||
},
|
||||
"config": {
|
||||
"heading": "Configurazione predefinita e avanzata",
|
||||
"intro": "Lo script offre due modalità di configurazione:",
|
||||
"defaultHeading": "Configurazione predefinita",
|
||||
"defaultIntro": "Se si seleziona la configurazione predefinita, lo script applicherà automaticamente i seguenti valori:",
|
||||
"headerParam": "Parametro",
|
||||
"headerValue": "Valore predefinito",
|
||||
"defaultRows": [
|
||||
{
|
||||
"param": "Tipo macchina",
|
||||
"value": "q35"
|
||||
},
|
||||
{
|
||||
"param": "Tipo BIOS",
|
||||
"value": "OVMF (UEFI)"
|
||||
},
|
||||
{
|
||||
"param": "Tipo CPU",
|
||||
"value": "Host"
|
||||
},
|
||||
{
|
||||
"param": "Numero di core",
|
||||
"value": "2"
|
||||
},
|
||||
{
|
||||
"param": "Dimensione RAM",
|
||||
"value": "4096 MB"
|
||||
},
|
||||
{
|
||||
"param": "Ponte",
|
||||
"value": "vmbr0"
|
||||
},
|
||||
{
|
||||
"param": "Indirizzo MAC",
|
||||
"value": "Generazione automatica"
|
||||
},
|
||||
{
|
||||
"param": "Avvia la VM al termine",
|
||||
"value": "No"
|
||||
}
|
||||
],
|
||||
"defaultOutro": "Se si desidera personalizzare la configurazione, selezionare l'opzione Impostazioni avanzate nel menu.",
|
||||
"advancedHeading": "Configurazione avanzata",
|
||||
"advancedIntro": "Se si seleziona la configurazione avanzata, lo script vi permetterà di personalizzare ogni parametro:",
|
||||
"headerOptions": "Opzioni",
|
||||
"advancedRows": [
|
||||
{
|
||||
"param": "Tipo macchina",
|
||||
"options": "q35 o i440fx"
|
||||
},
|
||||
{
|
||||
"param": "Tipo BIOS",
|
||||
"options": "OVMF (UEFI) o SeaBIOS (Legacy)"
|
||||
},
|
||||
{
|
||||
"param": "Tipo CPU",
|
||||
"options": "Host o KVM64"
|
||||
},
|
||||
{
|
||||
"param": "Numero di core",
|
||||
"options": "Numero di core CPU"
|
||||
},
|
||||
{
|
||||
"param": "Dimensione RAM",
|
||||
"options": "Quantità di memoria assegnata alla VM"
|
||||
},
|
||||
{
|
||||
"param": "Ponte",
|
||||
"options": "Ponte di rete per il collegamento"
|
||||
},
|
||||
{
|
||||
"param": "Indirizzo MAC",
|
||||
"options": "Indirizzo MAC personalizzato"
|
||||
},
|
||||
{
|
||||
"param": "VLAN",
|
||||
"options": "VLAN tag (se usato)"
|
||||
},
|
||||
{
|
||||
"param": "MTU",
|
||||
"options": "Dimensione massima dell'unità di trasmissione"
|
||||
}
|
||||
]
|
||||
},
|
||||
"diskSelection": {
|
||||
"heading": "Selezione disco",
|
||||
"intro": "Il piano di archiviazione permette di aggiungere dischi virtuali, dischi fisici e controller PCI o dispositivi NVMe. Le opzioni dei dischi sono illustrate di seguito.",
|
||||
"virtualHeading": "Disco virtuale",
|
||||
"virtualItems": [
|
||||
"Lo script elenca le opzioni di archiviazione disponibili in Proxmox",
|
||||
"L'utente seleziona il disco e le dimensioni in GB",
|
||||
"I dischi virtuali vengono collegati come <strong>SATA</strong> (sata0, sata1, ecc.). I dischi dati virtuali e fisici condividono le sei posizioni SATA numerate da 0 a 5; il loader usa una posizione IDE separata."
|
||||
],
|
||||
"physicalHeading": "Passaggio del disco fisico",
|
||||
"physicalItems": [
|
||||
"Lo script rileva tutti i dischi fisici disponibili",
|
||||
"L'utente seleziona il disco fisico o i dischi che desidera utilizzare.",
|
||||
"I dischi fisici vengono collegati come dispositivi <strong>SATA</strong>. Condividono le sei posizioni SATA numerate da 0 a 5 con i dischi dati virtuali; non ci sono altre sei posizioni riservate ai dischi fisici."
|
||||
]
|
||||
},
|
||||
"loaderInstall": {
|
||||
"heading": "Installazione Loader",
|
||||
"intro1": "Lo script scarica automaticamente ed estrae il caricatore dal repository dello sviluppatore. Se il download fallisce, lo script visualizzerà un messaggio di errore.",
|
||||
"intro2Rich": "<strong>AuxXxilium Arc</strong>, <strong>RedPill RR</strong> e <strong>Alpine RedPill M-shell</strong> vengono scaricati ed estratti automaticamente.",
|
||||
"customRich": "Per <strong>Custom Loader</strong>, lo script cerca i file in <code>/var/lib/vz/template/iso</code>. Se si trovano più file, verrà richiesto di selezionare il file desiderato.",
|
||||
"uploadIntro": "È possibile caricare caricatori personalizzati dalle opzioni di archiviazione locali:",
|
||||
"imageAlt": "Aggiungi Loader personalizzato",
|
||||
"imageCaption": "Aggiungi Loader personalizzato"
|
||||
},
|
||||
"vmCreation": {
|
||||
"heading": "Creazione della VM",
|
||||
"intro": "Una volta scaricato il caricatore, lo script crea il VM utilizzando i seguenti comandi:",
|
||||
"items": [
|
||||
"<code>qm create</code> – Crea la macchina virtuale con i parametri configurati",
|
||||
"<code>qm importdisk</code> importa l’immagine del loader nello storage Proxmox. Lo script la collega poi alla VM come ide0 per compatibilità.",
|
||||
"<code>qm set</code> – Assegna valori di configurazione come CPU, RAM, e storage",
|
||||
"<code>qm set VMID --boot order=ide0</code> imposta il loader come dispositivo di avvio. Sostituisci VMID con l’ID della VM."
|
||||
]
|
||||
},
|
||||
"stepGuide": {
|
||||
"heading": "Guida di configurazione del boot Loader passo-passo",
|
||||
"intro": "Ogni loader ha menu e metodi di configurazione propri. I sei passaggi seguenti spiegano il processo comune; segui le indicazioni del loader attuale se differiscono. Le schermate M-shell mostrano una precedente interfaccia TinyCore, mentre lo script attuale scarica Alpine RedPill M-shell.",
|
||||
"selectorHeading": "Seleziona il tipo di loader:",
|
||||
"loaderButtons": {
|
||||
"arc": "Arc Loader",
|
||||
"rr": "RR Loader",
|
||||
"tinycore": "TinyCore Loader"
|
||||
}
|
||||
},
|
||||
"steps": [
|
||||
{
|
||||
"id": "step1",
|
||||
"title": "Avvia la VM e accedi al menu principale",
|
||||
"intro": "Dopo aver creato la VM, avviala. Al primo avvio si apre il menu principale del loader per scegliere e configurare il modello DSM. Dopo la creazione del loader, questo passaggio viene saltato salvo una riconfigurazione forzata dal menu di avvio. Tutti i loader offrono anche una configurazione tramite interfaccia web.",
|
||||
"loaders": {
|
||||
"arc": [
|
||||
{
|
||||
"htmlBefore": "<strong>Interfaccia web</strong>: apri un browser e inserisci l’indirizzo IP mostrato nella console della VM. Nel nostro esempio: http://192.169.0.32.",
|
||||
"src": "https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_0_1.png",
|
||||
"alt": "Interfaccia web di Arc Loader",
|
||||
"caption": "Interfaccia web di Arc Loader"
|
||||
},
|
||||
{
|
||||
"htmlBefore": "<strong>Interfaccia terminale</strong>: accedi direttamente dalla console della VM.",
|
||||
"src": "https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_1_1.png",
|
||||
"alt": "Interfaccia del terminale di Arc Loader",
|
||||
"caption": "Interfaccia del terminale di Arc Loader"
|
||||
}
|
||||
],
|
||||
"rr": [
|
||||
{
|
||||
"htmlBefore": "<strong>Interfaccia web</strong>: apri un browser e inserisci l’indirizzo IP mostrato nella console della VM, seguito dalla porta <strong>7681</strong>. Nel nostro esempio: <code>http://192.169.0.33:7681</code>.",
|
||||
"src": "https://macrimi.github.io/ProxMenux/vm/synology/rr/rr_2_0_2.png",
|
||||
"alt": "Esempio di comando RR",
|
||||
"caption": "Interfaccia web RR Loader"
|
||||
},
|
||||
{
|
||||
"htmlBefore": "<strong>Interfaccia terminale</strong>: digita <strong>menu.sh</strong> nella console della VM per aprirla.",
|
||||
"src": "https://macrimi.github.io/ProxMenux/vm/synology/rr/rr_2_1_1.png",
|
||||
"alt": "Interfaccia RR Loader",
|
||||
"caption": "Interfaccia RR Loader Terminal"
|
||||
}
|
||||
],
|
||||
"tinycore": [
|
||||
{
|
||||
"htmlBefore": "<strong>Interfaccia web</strong>: apri un browser e inserisci l’indirizzo IP mostrato nella console della VM, seguito dalla porta <strong>7681</strong>. Nel nostro esempio: <code>http://192.169.0.35:7681</code>.",
|
||||
"src": "https://macrimi.github.io/ProxMenux/vm/synology/tinycore/tinycore_3_0_1.png",
|
||||
"alt": "Interfaccia di TinyCore Loader",
|
||||
"caption": "Interfaccia web di Loader di TinyCore"
|
||||
},
|
||||
{
|
||||
"htmlBefore": "<strong>Interfaccia terminale</strong>: accedi direttamente dalla console della VM. Osserva lo schermo: potrebbe chiederti di premere un tasto per continuare o di cambiare lingua.",
|
||||
"src": "https://macrimi.github.io/ProxMenux/vm/synology/tinycore/tinycore_3_1_1.png",
|
||||
"alt": "Interfaccia di TinyCore Loader",
|
||||
"caption": "Interfaccia terminale di TinyCore Loader"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "step2",
|
||||
"title": "Selezionare il modello",
|
||||
"intro": "Dopo aver caricato il menu, selezionare il modello Synology DSM che si desidera installare. A seconda del caricatore, a volte è necessario espandere le opzioni per vedere più modelli.",
|
||||
"outro": "Nel nostro esempio, sceglieremo il modello SA6400.",
|
||||
"loaders": {
|
||||
"arc": [
|
||||
{
|
||||
"src": "https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_2_1.png",
|
||||
"alt": "Selezione del modello in Arc",
|
||||
"caption": "Selezione del modello in Arc"
|
||||
}
|
||||
],
|
||||
"rr": [
|
||||
{
|
||||
"src": "https://macrimi.github.io/ProxMenux/vm/synology/rr/rr_2_2_1.png",
|
||||
"alt": "Selezione modello RR",
|
||||
"caption": "Selezione modello RR"
|
||||
}
|
||||
],
|
||||
"tinycore": [
|
||||
{
|
||||
"src": "https://macrimi.github.io/ProxMenux/vm/synology/tinycore/tinycore_3_2_1.png",
|
||||
"alt": "Selezione modello TinyCore",
|
||||
"caption": "Selezione modello TinyCore"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "step3",
|
||||
"title": "Selezionare la versione DSM",
|
||||
"intro": "Dopo aver selezionato il modello, è necessario scegliere la versione DSM che si desidera installare.",
|
||||
"loaders": {
|
||||
"arc": [
|
||||
{
|
||||
"src": "https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_3_1.png",
|
||||
"alt": "Selezione versione Arc - Passo 1",
|
||||
"caption": "Selezione versione Arc - Passo 1"
|
||||
},
|
||||
{
|
||||
"src": "https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_3_2.png",
|
||||
"alt": "Selezione versione Arc - Passo 2",
|
||||
"caption": "Selezione versione Arc - Passo 2"
|
||||
}
|
||||
],
|
||||
"rr": [
|
||||
{
|
||||
"src": "https://macrimi.github.io/ProxMenux/vm/synology/rr/rr_2_3_1.png",
|
||||
"alt": "Selezione versione RR - Passo 1",
|
||||
"caption": "Selezione versione RR - Passo 1"
|
||||
},
|
||||
{
|
||||
"src": "https://macrimi.github.io/ProxMenux/vm/synology/rr/rr_2_3_2.png",
|
||||
"alt": "Selezione versione RR - Passo 2",
|
||||
"caption": "Selezione versione RR - Passo 2"
|
||||
},
|
||||
{
|
||||
"src": "https://macrimi.github.io/ProxMenux/vm/synology/rr/rr_2_3_3.png",
|
||||
"alt": "Selezione versione RR - Passo 3",
|
||||
"caption": "Selezione versione RR - Passo 3"
|
||||
}
|
||||
],
|
||||
"tinycore": [
|
||||
{
|
||||
"src": "https://macrimi.github.io/ProxMenux/vm/synology/tinycore/tinycore_3_3_1.png",
|
||||
"alt": "Selezione versione TinyCore - Passo 1",
|
||||
"caption": "Selezione versione TinyCore - Passo 1"
|
||||
},
|
||||
{
|
||||
"src": "https://macrimi.github.io/ProxMenux/vm/synology/tinycore/tinycore_3_3_2.png",
|
||||
"alt": "Selezione versione TinyCore - Passo 2",
|
||||
"caption": "Selezione versione TinyCore - Passo 2"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "step4",
|
||||
"title": "Selezionare Addons",
|
||||
"intro": "Questo passaggio consente di aggiungere funzionalità aggiuntive o configurazioni personalizzate al caricatore.",
|
||||
"loaders": {
|
||||
"arc": [
|
||||
{
|
||||
"htmlBefore": "<strong>Arc</strong> consente di configurare automaticamente o manualmente le impostazioni. Se viene selezionata la configurazione automatica, il caricatore inizierà ad applicare le impostazioni necessarie e riavvierà automaticamente una volta che il processo sarà completato.",
|
||||
"src": "https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_4_1.png",
|
||||
"alt": "Configurazione automatica di Arc",
|
||||
"caption": "Configurazione automatica di Arc"
|
||||
},
|
||||
{
|
||||
"htmlBefore": "Se scegliamo di non usare la modalità automatica, entriamo nel menu per configurare diverse opzioni necessarie per il caricatore:",
|
||||
"src": "https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_4_2.png",
|
||||
"alt": "Configurazione manuale di Arc",
|
||||
"caption": "Configurazione manuale di Arc"
|
||||
},
|
||||
{
|
||||
"src": "https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_4_3.png",
|
||||
"alt": "Configurazione Arc SN/Mac",
|
||||
"caption": "Configurazione Arc SN/Mac"
|
||||
},
|
||||
{
|
||||
"src": "https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_4_4.png",
|
||||
"alt": "Arc Sata Portmap",
|
||||
"caption": "Arc Sata Portmap (usare l'opzione consigliata)"
|
||||
},
|
||||
{
|
||||
"src": "https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_4_5.png",
|
||||
"alt": "Selezione dei componenti aggiuntivi in Arc",
|
||||
"caption": "Selezione dei componenti aggiuntivi in Arc"
|
||||
}
|
||||
],
|
||||
"rr": [
|
||||
{
|
||||
"src": "https://macrimi.github.io/ProxMenux/vm/synology/rr/rr_2_4_1.png",
|
||||
"alt": "RR Addon passo 1",
|
||||
"caption": "RR Addon passo 1"
|
||||
},
|
||||
{
|
||||
"src": "https://macrimi.github.io/ProxMenux/vm/synology/rr/rr_2_4_2.png",
|
||||
"alt": "RR Addon passo 2",
|
||||
"caption": "Componente aggiuntivo RR — passo 2: fai clic per aggiungerlo."
|
||||
},
|
||||
{
|
||||
"src": "https://macrimi.github.io/ProxMenux/vm/synology/rr/rr_2_4_3.png",
|
||||
"alt": "RR Addon passo 3",
|
||||
"caption": "Componente aggiuntivo RR — passo 3: fai clic su quello desiderato. Per aggiungerne altri, ripeti le operazioni delle immagini 2.4.2 e 2.4.3."
|
||||
}
|
||||
],
|
||||
"tinycore": [
|
||||
{
|
||||
"src": "https://macrimi.github.io/ProxMenux/vm/synology/tinycore/tinycore_3_4_1.png",
|
||||
"alt": "Configurazione TinyCore SN",
|
||||
"caption": "Configurazione TinyCore SN"
|
||||
},
|
||||
{
|
||||
"src": "https://macrimi.github.io/ProxMenux/vm/synology/tinycore/tinycore_3_4_2.png",
|
||||
"alt": "TinyCore Opzione casuale",
|
||||
"caption": "TinyCore Opzione casuale - Si raccomanda l'opzione casuale"
|
||||
},
|
||||
{
|
||||
"src": "https://macrimi.github.io/ProxMenux/vm/synology/tinycore/tinycore_3_4_3.png",
|
||||
"alt": "Configurazione MAC TinyCore",
|
||||
"caption": "Configurazione MAC TinyCore"
|
||||
},
|
||||
{
|
||||
"src": "https://macrimi.github.io/ProxMenux/vm/synology/tinycore/tinycore_3_4_4.png",
|
||||
"alt": "TinyCore VM MAC",
|
||||
"caption": "TinyCore VM MAC - Scegli di utilizzare il MAC di VM o uno casuale"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "step5",
|
||||
"title": "Costruisci il Loader",
|
||||
"intro": "Una volta selezionato il modello, la versione DSM e gli addons, procedere alla costruzione del caricatore. Questo processo potrebbe richiedere alcuni minuti a seconda del caricatore e della configurazione selezionata. Per iniziare, selezionare l'opzione \"Build the Loader\".",
|
||||
"loaders": {
|
||||
"arc": [
|
||||
{
|
||||
"src": "https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_5_1.png",
|
||||
"alt": "Creazione del loader in Arc",
|
||||
"caption": "Creazione del loader in Arc"
|
||||
}
|
||||
],
|
||||
"rr": [
|
||||
{
|
||||
"src": "https://macrimi.github.io/ProxMenux/vm/synology/rr/rr_2_5_1.png",
|
||||
"alt": "Creazione del loader in RR",
|
||||
"caption": "Creazione del loader in RR"
|
||||
}
|
||||
],
|
||||
"tinycore": [
|
||||
{
|
||||
"src": "https://macrimi.github.io/ProxMenux/vm/synology/tinycore/tinycore_3_5_1.png",
|
||||
"alt": "Creazione del loader in TinyCore",
|
||||
"caption": "Creazione del loader in TinyCore"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "step6",
|
||||
"title": "Avvia il loader",
|
||||
"intro": "Una volta che il caricatore è stato costruito, ti chiederà di avviare. Il VM riavvia con la configurazione che hai creato e avvia l'installazione DSM.",
|
||||
"loaders": {
|
||||
"arc": [
|
||||
{
|
||||
"src": "https://macrimi.github.io/ProxMenux/vm/synology/arc/arc_1_6_1.png",
|
||||
"alt": "Avvio del loader in Arc",
|
||||
"caption": "Avvio del loader in Arc"
|
||||
}
|
||||
],
|
||||
"rr": [
|
||||
{
|
||||
"src": "https://macrimi.github.io/ProxMenux/vm/synology/rr/rr_2_6_1.png",
|
||||
"alt": "Avvio del loader in RR",
|
||||
"caption": "Avvio del loader in RR"
|
||||
}
|
||||
],
|
||||
"tinycore": [
|
||||
{
|
||||
"src": "https://macrimi.github.io/ProxMenux/vm/synology/tinycore/tinycore_3_6_1.png",
|
||||
"alt": "Avvio del loader in TinyCore",
|
||||
"caption": "Avvio del loader in TinyCore"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"dsmInstall": {
|
||||
"heading": "Avvio dell'installazione DSM",
|
||||
"intro": "Una volta avviato il caricatore, è possibile trovare il dispositivo Synology utilizzando:",
|
||||
"afterCode": "Segui i passaggi sullo schermo per completare l'installazione di DSM.",
|
||||
"setupAlt": "Configurazione di DSM",
|
||||
"setupCaption": "Schermata di configurazione DSM",
|
||||
"patience": "Si prega di essere paziente – Il processo può richiedere alcuni minuti per completare. La percentuale di progresso si aggiornerà automaticamente mentre la configurazione progredisce. Un conto alla rovescia inizierà una volta che l'installazione si sta avvicinando al completamento.",
|
||||
"finishAlt": "Installazione completata",
|
||||
"finishCaption": "Installazione completata"
|
||||
},
|
||||
"tips": {
|
||||
"heading": "Consigli",
|
||||
"introItem": "Tenete a mente che le opzioni disponibili possono cambiare a seconda della versione del caricatore e degli aggiornamenti dello sviluppatore. Se incontri problemi durante il processo di creazione del caricatore, consulta la documentazione del caricatore:",
|
||||
"docLinks": [
|
||||
{
|
||||
"label": "Documentazione Arc",
|
||||
"url": "https://github.com/AuxXxilium/arc"
|
||||
},
|
||||
{
|
||||
"label": "Documentazione RR",
|
||||
"url": "https://github.com/RROrg/rr"
|
||||
},
|
||||
{
|
||||
"label": "Documentazione TinyCore",
|
||||
"url": "https://github.com/PeterSuh-Q3/tinycore-redpill"
|
||||
}
|
||||
],
|
||||
"olderModels": "Alcuni modelli DSM vecchi possono avere problemi di riconoscimento dei dischi o della scheda di rete. Si consiglia di utilizzare modelli più recenti.",
|
||||
"updateLabel": "Aggiornamento:",
|
||||
"updateBody": "Alcuni caricatori offrono la possibilità di aggiornare il caricatore direttamente dal menu.",
|
||||
"importantLabel": "Importante:",
|
||||
"importantBody": "ProxMenux non fornisce supporto per i diversi caricatori."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,292 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Crea VM: sistema Linux | Documentazione ProxMenux",
|
||||
"description": "Crea macchine virtuali Linux su Proxmox VE con ProxMenux. La guida descrive il catalogo di ISO ufficiali (Ubuntu, Debian, Fedora, Arch, Rocky, Mint, openSUSE, Alpine, Kali, Manjaro), il piano di archiviazione comune, il passthrough GPU facoltativo e i consigli dopo l’installazione.",
|
||||
"ogTitle": "Crea VM: sistema Linux | Documentazione ProxMenux",
|
||||
"ogDescription": "Crea VM Linux su Proxmox VE: catalogo di ISO ufficiali, archiviazione, passthrough GPU e consigli dopo l’installazione.",
|
||||
"ogImageAlt": "Menu ProxMenux Linux VM"
|
||||
},
|
||||
"header": {
|
||||
"title": "Crea VM: sistema Linux",
|
||||
"description": "Crea una VM Linux su Proxmox VE. ProxMenux offre un catalogo di ISO Linux ufficiali da scaricare e un selettore di ISO locali. Tutti i percorsi usano la procedura guidata VM comune, il piano di archiviazione e l’assistente facoltativo per il passthrough GPU.",
|
||||
"section": "Macchine virtuali"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Cosa fa questo script",
|
||||
"body": "Scegli una ISO Linux ufficiale da scaricare automaticamente o una ISO locale già caricata. La procedura guidata comune passa quindi per CPU, RAM e BIOS, piano di archiviazione, passthrough GPU facoltativo e creazione della VM."
|
||||
},
|
||||
"image": {
|
||||
"alt": "Opzioni di installazione ProxMenux Linux",
|
||||
"caption": "Opzioni di installazione Linux"
|
||||
},
|
||||
"config": {
|
||||
"heading": "Configurazione predefinita vs Avanzata",
|
||||
"intro": "Dopo la selezione dell'ISO, ProxMenux chiede se utilizzare il profilo predefinito VM o aprire la procedura guidata avanzata.",
|
||||
"defaultHeading": "Configurazione predefinita",
|
||||
"headerParam": "Parametro",
|
||||
"headerValue": "Valore predefinito",
|
||||
"defaultRows": [
|
||||
{
|
||||
"param": "Tipo di macchina",
|
||||
"valueRich": "<code>q35</code>"
|
||||
},
|
||||
{
|
||||
"param": "BIOS",
|
||||
"value": "OVMF (UEFI)"
|
||||
},
|
||||
{
|
||||
"param": "Tipo di CPU",
|
||||
"value": "Host"
|
||||
},
|
||||
{
|
||||
"param": "Core",
|
||||
"value": "2"
|
||||
},
|
||||
{
|
||||
"param": "RAM",
|
||||
"value": "4096 MB"
|
||||
},
|
||||
{
|
||||
"param": "Ponte",
|
||||
"valueRich": "<code>vmbr0</code>"
|
||||
},
|
||||
{
|
||||
"param": "Indirizzo MAC",
|
||||
"value": "Autogenerata"
|
||||
},
|
||||
{
|
||||
"param": "Avvia al termine",
|
||||
"value": "No"
|
||||
}
|
||||
],
|
||||
"advancedHeading": "Configurazione avanzata",
|
||||
"advancedIntro": "La procedura guidata avanzata espone ogni parametro singolarmente:",
|
||||
"headerOptions": "Opzioni",
|
||||
"advancedRows": [
|
||||
{
|
||||
"param": "Tipo di macchina",
|
||||
"optionsRich": "<code>q35</code> o <code>i440fx</code>"
|
||||
},
|
||||
{
|
||||
"param": "BIOS",
|
||||
"options": "OVMF (UEFI) o SeaBIOS (Legacy)"
|
||||
},
|
||||
{
|
||||
"param": "Tipo di CPU",
|
||||
"options": "Host, KVM64 e altri modelli CPU elencati"
|
||||
},
|
||||
{
|
||||
"param": "Core",
|
||||
"options": "Numero di core CPU"
|
||||
},
|
||||
{
|
||||
"param": "RAM",
|
||||
"options": "Memoria assegnata al VM"
|
||||
},
|
||||
{
|
||||
"param": "Ponte",
|
||||
"options": "Bridge di rete"
|
||||
},
|
||||
{
|
||||
"param": "Indirizzo MAC",
|
||||
"options": "MAC personalizzato"
|
||||
},
|
||||
{
|
||||
"param": "VLAN",
|
||||
"options": "Tag VLAN (opzionale)"
|
||||
},
|
||||
{
|
||||
"param": "MTU",
|
||||
"options": "MTU misura"
|
||||
}
|
||||
]
|
||||
},
|
||||
"storagePlan": {
|
||||
"heading": "Piano di archiviazione",
|
||||
"body": "Dopo CPU / RAM, ProxMenux apre il menu <strong>Storage Plan</strong>, dove è possibile combinare dischi virtuali, dischi importati e dispositivi passanti PCI nello stesso VM, aggiungendo elementi uno alla volta e terminando quando si è fatto.",
|
||||
"virtualDiskTitle": "a. Aggiungere disco virtuale",
|
||||
"virtualDiskItems": [
|
||||
"Elenca i volumi di archiviazione Proxmox disponibili sull'host.",
|
||||
"Scegli lo storage di destinazione e la dimensione in GB.",
|
||||
"Il disco usa il bus scelto: SCSI (predefinito), SATA, VirtIO o IDE. SATA offre sei posizioni numerate da 0 a 5: <code>sata0</code>, <code>sata1</code>, …."
|
||||
],
|
||||
"importDiskTitle": "b. Aggiungere disco di importazione",
|
||||
"importDiskItems": [
|
||||
"Rileva i dischi fisici che sono sicuri da importare (sistema e dischi protetti sono nascosti).",
|
||||
"Seleziona uno o più dischi tramite una lista di controllo.",
|
||||
"I dischi importati usano il bus scelto e vengono collegati tramite <code>qm set</code>."
|
||||
],
|
||||
"pciTitle": "C. Aggiungi controller o NVMe (passthrough PCI)",
|
||||
"pciItems": [
|
||||
"Rileva HBA SATA/SAS e dispositivi NVMe e consente di assegnare un <em>intero controller</em> alla VM. IOMMU deve essere attivo; lo script propone l’attivazione e un riavvio se necessario.",
|
||||
"Un passo di conferma avverte il rischio a livello del controller (l'intera carta, compreso ogni disco su di esso, lascia l'host).",
|
||||
"I dispositivi PCI vengono assegnati con comandi come <code>qm set VMID --hostpci0 PCI_ADDRESS,pcie=1</code>. Sostituisci VMID e PCI_ADDRESS con ID della VM e indirizzo PCI e usa un indice hostpci libero per ogni dispositivo."
|
||||
],
|
||||
"resetTitle": "Azzera e termina",
|
||||
"resetBody": "Il menu offre anche <strong>r</strong> (riimpostare la selezione attuale e ricominciare da capo) e <strong>d</strong> (finire e continuare). Non puoi finire con un piano vuoto."
|
||||
},
|
||||
"gpu": {
|
||||
"heading": "Passaggio opzionale GPU",
|
||||
"body": "Dopo il piano di archiviazione, se viene rilevato un GPU compatibile sull'host ProxMenux offre di lanciare l'assistente passthrough GPU. Vedere <gpuLink>Add GPU a un VM (Passthrough)</gpuLink> per come funziona l'assistente - un riavvio host può essere richiesto."
|
||||
},
|
||||
"autoFeatures": {
|
||||
"heading": "Caratteristiche automatiche VM",
|
||||
"efiTitle": "Disco EFI",
|
||||
"efiBody": "Quando scegli OVMF (UEFI), ProxMenux crea un disco EFI da 4 MB sullo storage scelto per conservare le variabili del firmware.",
|
||||
"isoTitle": "Montaggio ISO",
|
||||
"isoBody": "L'installazione ISO è collegata a <code>ide2</code> come CD-ROM, pronto per il primo avvio.",
|
||||
"guestTitle": "Agente ospite QEMU",
|
||||
"guestBody": "Il canale dell'agente ospite è abilitato nella configurazione VM. È ancora necessario installare l'agente all'interno dell'ospite — vedere i suggerimenti qui sotto."
|
||||
},
|
||||
"installOptions": {
|
||||
"heading": "Opzioni di installazione Linux",
|
||||
"officialHeading": "ISO ufficiale (installazione tradizionale)",
|
||||
"officialBody": "ProxMenux offre una selezione di ISO Linux ufficiali. Scegline una: lo script la scarica dal mirror del progetto in <code>/var/lib/vz/template/iso</code> e la collega alla VM.",
|
||||
"officialImageAlt": "Selezione di distribuzione Linux",
|
||||
"officialImageCaption": "Selezione di distribuzione Linux",
|
||||
"localHeading": "ISO locale",
|
||||
"localBody": "Utilizza qualsiasi ISO Linux già presente in <code>/var/lib/vz/template/iso</code>. Lo script elenca ogni <code>*.iso</code> che trova e ti permette di sceglierne uno.",
|
||||
"localImageAlt": "Menu di selezione ISO locale",
|
||||
"localImageCaption": "Menu di selezione ISO locale",
|
||||
"distros": [
|
||||
{
|
||||
"name": "Ubuntu",
|
||||
"variants": [
|
||||
"25.10 Desktop",
|
||||
"24.04 Desktop",
|
||||
"22.04 Desktop",
|
||||
"20.04 Desktop",
|
||||
"25.10 Server",
|
||||
"24.04 Server",
|
||||
"22.04 Server",
|
||||
"20.04 Server"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Debian",
|
||||
"variants": [
|
||||
"13 Desktop",
|
||||
"12 Desktop",
|
||||
"11 Desktop",
|
||||
"13 Netinst",
|
||||
"12 Netinst",
|
||||
"11 Netinst"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Fedora",
|
||||
"variants": [
|
||||
"Workstation 42"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Arch Linux",
|
||||
"variants": [
|
||||
"versione più recente"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Rocky Linux",
|
||||
"variants": [
|
||||
"9"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Linux Mint",
|
||||
"variants": [
|
||||
"22.1 Cinnamon"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "openSUSE",
|
||||
"variants": [
|
||||
"Leap 15.6"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Alpine Linux",
|
||||
"variants": [
|
||||
"3.21"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Kali Linux",
|
||||
"variants": [
|
||||
"2026.1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Manjaro",
|
||||
"variants": [
|
||||
"25.0 GNOME"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"endToEnd": {
|
||||
"heading": "Cosa fa lo script end-to-end",
|
||||
"items": [
|
||||
"Ottiene l’ISO Linux tramite download ufficiale o da un file locale.",
|
||||
"Applica le impostazioni predefinite o avanzate di CPU, RAM, BIOS e tipo di macchina.",
|
||||
"Apre il piano di archiviazione e allega i dischi virtuali selezionati, i dischi importati e i dispositivi PCI.",
|
||||
"Crea il disco EFI quando viene selezionato UEFI.",
|
||||
"Monta l'ISO Linux su <code>ide2</code>.",
|
||||
"Imposta l'ordine di avvio (disco prima, poi ISO).",
|
||||
"Abilita il canale Agente Ospite QEMU.",
|
||||
"Opzionalmente gestisce l'assistente passante GPU.",
|
||||
"Genera una descrizione HTML stilizzata collegata al VM.",
|
||||
"Avvia la VM se hai scelto di farlo."
|
||||
]
|
||||
},
|
||||
"postInstall": {
|
||||
"heading": "Consigli di post-installazione",
|
||||
"guestAgentHeading": "Installa il QEMU Guest Agent nella VM",
|
||||
"guestAgentBody": "ProxMenux abilita il canale dell’agente nella configurazione VM, ma devi installare l’agente nel sistema ospite. Supporta l’arresto controllato e il congelamento dei filesystem durante i backup per migliorare la coerenza dei dati.",
|
||||
"debian": "Debian / Ubuntu",
|
||||
"fedora": "Fedora / Rocky / RHEL",
|
||||
"arch": "Arch Linux",
|
||||
"opensuse": "openSUSE",
|
||||
"virtioHeading": "Supporto VirtIO in Linux",
|
||||
"virtioBody": "Le distribuzioni Linux moderne includono normalmente i driver VirtIO per dischi e rete. Scegli <code>virtio</code> per dischi a blocchi VirtIO oppure <code>scsi</code> con il controller VirtIO SCSI configurato; anche la scheda di rete usa <code>virtio</code>. Verifica il supporto dei driver negli installatori più vecchi.",
|
||||
"virtioWarnTitle": "Distribuzioni molto vecchie",
|
||||
"virtioWarnBody": "Gli installatori molto vecchi potrebbero non includere i driver VirtIO necessari. Usa quindi un controller SATA / SCSI emulato o fornisci driver adatti.",
|
||||
"trimHeading": "Abilita TRIM / discard sullo storage SSD",
|
||||
"trimBody": "Se la VM risiede su storage Proxmox basato su SSD e il disco è stato collegato con l’opzione <code>discard</code>, puoi inoltrare i comandi TRIM dal sistema ospite. Due possibilità:",
|
||||
"trimItems": [
|
||||
"Eseguire <code>fstrim -av</code> periodicamente (o abilitare l'unità <code>fstrim.timer</code> sulle distribuzioni systemd).",
|
||||
"Oppure montare filesystem con l'opzione <code>discard</code> in <code>/etc/fstab</code>."
|
||||
],
|
||||
"balloonHeading": "Memoria dinamica (ballooning)",
|
||||
"balloonBody": "I kernel Linux moderni includono normalmente il driver <code>virtio_balloon</code>. Con il dispositivo balloon abilitato, Proxmox può raccogliere statistiche sulla memoria. Il recupero dinamico richiede inoltre una memoria minima inferiore al massimo configurato; valori uguali mantengono l’allocazione fissa."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/disk-manager/import-disk-image-vm",
|
||||
"label": "Importa immagine disco nella VM",
|
||||
"tail": " — collega un’immagine Linux esistente .qcow2 / .img / .raw a una nuova VM."
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils/import-vm",
|
||||
"label": "Importa VM da OVA / OVF",
|
||||
"tail": " — importa una VM Linux esportata da VMware / VirtualBox / Proxmox."
|
||||
},
|
||||
{
|
||||
"href": "/docs/hardware/gpu-vm-passthrough",
|
||||
"label": "Aggiungi GPU a VM (Passthrough)",
|
||||
"tail": "— per le VM Linux che hanno bisogno di accelerazione GPU."
|
||||
},
|
||||
{
|
||||
"href": "/docs/help-info/vm-ct-commands",
|
||||
"label": "Comandi di gestione VM e CT",
|
||||
"tail": "— riferimento qm CLI."
|
||||
},
|
||||
{
|
||||
"href": "/docs/create-vm",
|
||||
"label": "Panoramica della creazione di VM",
|
||||
"tail": "."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,147 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Creare VM: Sistema NAS | Documentazione ProxMenux",
|
||||
"description": "Crea VM NAS su Proxmox VE con ProxMenux: Synology DSM con loader, TrueNAS SCALE/CORE, OpenMediaVault, XigmaNAS, Rockstor, ZimaOS e FygoOS. Umbrel OS è disponibile tramite uno script della comunità.",
|
||||
"ogTitle": "Creare VM: Sistema NAS | Documentazione ProxMenux",
|
||||
"ogDescription": "Creare macchine virtuali NAS su Proxmox VE con ProxMenux. Supporta Synology DSM (loader), TrueNAS SCALE / CORE, OpenMediaVault, XigmaNAS, Rockstor, ZimaOS e FygoOS.",
|
||||
"ogImageAlt": "Menu NAS di sistema ProxMenux"
|
||||
},
|
||||
"header": {
|
||||
"title": "Crea VM: sistema NAS",
|
||||
"description": "ProxMenux supporta otto sistemi NAS come VM dedicate, più un percorso Umbrel OS tramite script della comunità. La maggior parte usa il flusso automatico ISO; Synology DSM ha una procedura specializzata con loader.",
|
||||
"section": "Macchine virtuali"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Come funziona il selettore NAS",
|
||||
"body": "Nel flusso ISO generico, il selettore cerca l’ultima versione stabile sul mirror del progetto, usa una versione di ripiego se necessario, scarica l’ISO e apre il configuratore comune per CPU, RAM, dischi e rete. Synology DSM e ZimaOS hanno procedure dedicate."
|
||||
},
|
||||
"image": {
|
||||
"alt": "Selettore NAS di sistema ProxMenux",
|
||||
"caption": "Selettore NAS di sistema"
|
||||
},
|
||||
"flowBadges": {
|
||||
"loader": "Procedura con loader",
|
||||
"auto-iso": "Flusso auto-ISO",
|
||||
"dedicated": "script dedicato"
|
||||
},
|
||||
"labels": {
|
||||
"base": "Base",
|
||||
"fileSystem": "Filesystem",
|
||||
"viewDetails": "Visualizza dettagli"
|
||||
},
|
||||
"supported": {
|
||||
"heading": "Sistemi NAS supportati",
|
||||
"cards": [
|
||||
{
|
||||
"name": "Synology DSM",
|
||||
"tagline": "DiskStation Manager con caricatore ARC / RR. Richiede la configurazione del caricatore prima del primo avvio.",
|
||||
"icon": "HardDrive",
|
||||
"base": "Linux (personalizzato)",
|
||||
"fileSystem": "Btrfs, ext4",
|
||||
"href": "/docs/create-vm/system-nas/synology",
|
||||
"flow": "loader"
|
||||
},
|
||||
{
|
||||
"name": "TrueNAS SCALE",
|
||||
"tagline": "TrueNAS basato su Debian con app Docker nelle versioni attuali e ZFS come filesystem principale. Le vecchie versioni SCALE usavano Kubernetes.",
|
||||
"icon": "Database",
|
||||
"base": "Debian Linux",
|
||||
"fileSystem": "ZFS",
|
||||
"href": "/docs/create-vm/system-nas/system-nas-others#truenas-scale",
|
||||
"flow": "auto-iso"
|
||||
},
|
||||
{
|
||||
"name": "TrueNAS CORE",
|
||||
"tagline": "TrueNAS basato su FreeBSD e dedicato allo storage ZFS. Jail e plugin di CORE 13.3 sono obsoleti e non supportati.",
|
||||
"icon": "Database",
|
||||
"base": "FreeBSD",
|
||||
"fileSystem": "ZFS",
|
||||
"href": "/docs/create-vm/system-nas/system-nas-others#truenas-core",
|
||||
"flow": "auto-iso"
|
||||
},
|
||||
{
|
||||
"name": "OpenMediaVault",
|
||||
"tagline": "NAS basato su Debian leggero con un'architettura modulare del plugin. Ottimo per l'hardware più vecchio.",
|
||||
"icon": "Server",
|
||||
"base": "Debian Linux",
|
||||
"fileSystem": "ext4, XFS, Btrfs",
|
||||
"href": "/docs/create-vm/system-nas/system-nas-others#openmediavault",
|
||||
"flow": "auto-iso"
|
||||
},
|
||||
{
|
||||
"name": "XigmaNAS",
|
||||
"tagline": "NAS basato su FreeBSD — il successore originale di FreeNAS, focalizzato su ZFS e semplicità.",
|
||||
"icon": "Database",
|
||||
"base": "FreeBSD",
|
||||
"fileSystem": "ZFS, UFS",
|
||||
"href": "/docs/create-vm/system-nas/system-nas-others#xigmanas",
|
||||
"flow": "auto-iso"
|
||||
},
|
||||
{
|
||||
"name": "Rockstor",
|
||||
"tagline": "NAS basato su openSUSE e costruito attorno a Btrfs. I Rock-on, app Docker, ne estendono le funzioni.",
|
||||
"icon": "HardDrive",
|
||||
"base": "openSUSE Leap",
|
||||
"fileSystem": "Btrfs",
|
||||
"href": "/docs/create-vm/system-nas/system-nas-others#rockstor",
|
||||
"flow": "auto-iso"
|
||||
},
|
||||
{
|
||||
"name": "ZimaOS",
|
||||
"tagline": "Sistema NAS leggero per contenuti multimediali, app Docker e domotica. Usa un installatore dedicato.",
|
||||
"icon": "MonitorIcon",
|
||||
"base": "Buildroot (evoluzione di CasaOS)",
|
||||
"fileSystem": "ext4",
|
||||
"href": "/docs/create-vm/system-nas/system-nas-others#zimaos",
|
||||
"flow": "dedicated"
|
||||
},
|
||||
{
|
||||
"name": "FygoOS",
|
||||
"tagline": "Edizione internazionale di fnOS: un NAS basato su Debian con volumi di archiviazione, app e streaming multimediale, gestito dalla sua interfaccia web e dalle app Fygo.",
|
||||
"icon": "Server",
|
||||
"base": "Debian Linux",
|
||||
"fileSystem": "Btrfs, ext4",
|
||||
"href": "/docs/create-vm/system-nas/system-nas-others#fygoos",
|
||||
"flow": "auto-iso"
|
||||
}
|
||||
]
|
||||
},
|
||||
"umbrel": {
|
||||
"title": "Opzione della comunità: Umbrel OS",
|
||||
"bodyRich": "La nona voce del menu NAS è <strong>Umbrel OS</strong>. Avvia un <umbrelLink>installatore community-scripts</umbrelLink> mantenuto fuori da ProxMenux e non documentato qui. L’installatore gestisce l’intero processo e mostra alla fine le credenziali predefinite."
|
||||
},
|
||||
"zfsMem": {
|
||||
"title": "Indicazione pratica sulla memoria ZFS",
|
||||
"bodyRich": "Per TrueNAS assegna almeno <strong>8 GB di RAM</strong> per l’uso di base, di più per carichi intensi. ZFS usa RAM per la cache ARC, ma non esiste una soglia universale di 8 GB per ogni NAS ZFS. Controlla i requisiti della distribuzione e dimensiona secondo dischi, servizi e app; configurazioni leggere OMV o Rockstor possono richiedere meno."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/create-vm/system-nas/synology",
|
||||
"label": "VM Synology",
|
||||
"tail": "— installatore dedicato per Synology DSM (Xpenology) su Proxmox."
|
||||
},
|
||||
{
|
||||
"href": "/docs/create-vm/system-nas/system-nas-others",
|
||||
"label": "Altri NAS di sistema",
|
||||
"tail": "— TrueNAS, OpenMediaVault, Rockstor, XigmaNAS, FygoOS e simili."
|
||||
},
|
||||
{
|
||||
"href": "/docs/disk-manager/import-disk-vm",
|
||||
"label": "Importa disco nella VM",
|
||||
"tail": " — collega dischi fisici alla VM NAS, preferibili ai dischi virtuali per un uso in produzione."
|
||||
},
|
||||
{
|
||||
"href": "/docs/help-info/zfs-commands",
|
||||
"label": "Comandi di gestione ZFS",
|
||||
"tail": "— utile se la distribuzione del NAS utilizza ZFS sotto."
|
||||
},
|
||||
{
|
||||
"href": "/docs/create-vm",
|
||||
"label": "Panoramica della creazione di VM",
|
||||
"tail": "."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,400 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Crea VM: Synology DSM | Documentazione ProxMenux",
|
||||
"description": "Crea una VM Synology DSM su Proxmox VE. ProxMenux scarica il loader scelto (Arc, RR, Alpine RedPill M-shell o un’immagine personalizzata), lo importa come disco di avvio e configura CPU, RAM e storage con la procedura guidata predefinita o avanzata.",
|
||||
"ogTitle": "Crea VM: Synology DSM | Documentazione ProxMenux",
|
||||
"ogDescription": "Creare una macchina virtuale Synology DSM su Proxmox VE con ProxMenux."
|
||||
},
|
||||
"header": {
|
||||
"title": "Creare VM: Synology DSM",
|
||||
"description": "Crea una VM Synology DSM su Proxmox VE. ProxMenux scarica il loader scelto (Arc, RR, Alpine RedPill M-shell o un’immagine personalizzata), lo importa come disco di avvio e configura CPU, RAM e storage con la procedura guidata predefinita o avanzata.",
|
||||
"section": "Macchine virtuali · NAS"
|
||||
},
|
||||
"loaderLabels": {
|
||||
"arc": "Arc Loader",
|
||||
"rr": "RR Loader",
|
||||
"tinycore": "TinyCore Loader"
|
||||
},
|
||||
"whatThisDoes": {
|
||||
"title": "Cosa fa questo script",
|
||||
"bodyRich": "ProxMenux automatizza la preparazione della VM per Synology DSM: scarica un loader supportato, lo importa come disco di avvio IDE e applica le impostazioni scelte per CPU, RAM, rete e storage. La creazione del loader, la scelta del modello e l’installazione DSM avvengono <strong>nella VM</strong> tramite l’interfaccia web o terminale del loader. Questi passaggi sono mantenuti dalla comunità e cambiano spesso; la pagina offre una base di partenza."
|
||||
},
|
||||
"supportedLoaders": {
|
||||
"heading": "Caricatori supportati",
|
||||
"intro": "Lo script permette di scegliere tra quattro origini del loader:",
|
||||
"loaders": [
|
||||
{
|
||||
"name": "AuxXxilium Arc",
|
||||
"url": "https://github.com/AuxXxilium/arc"
|
||||
},
|
||||
{
|
||||
"name": "RedPill RR",
|
||||
"url": "https://github.com/RROrg/rr"
|
||||
},
|
||||
{
|
||||
"name": "Alpine RedPill M-shell (progetto TinyCore)",
|
||||
"url": "https://github.com/PeterSuh-Q3/tinycore-redpill"
|
||||
}
|
||||
],
|
||||
"customRich": "<strong>Custom Loader</strong> — salva la tua immagine del loader in <code>/var/lib/vz/template/iso</code> e lo script la rileverà."
|
||||
},
|
||||
"config": {
|
||||
"heading": "Configurazione predefinita vs Avanzata",
|
||||
"intro": "Quando si esegue lo script si chiede se utilizzare il profilo ProxMenux predefinito VM o aprire la procedura guidata avanzata. I valori di default sono sintonizzati per DSM e lavorano per la maggior parte delle installazioni.",
|
||||
"defaultHeading": "Configurazione predefinita",
|
||||
"headerParam": "Parametro",
|
||||
"headerValue": "Valore predefinito",
|
||||
"defaultRowsRich": [
|
||||
{
|
||||
"param": "Tipo di macchina",
|
||||
"valueRich": "<code>q35</code>"
|
||||
},
|
||||
{
|
||||
"param": "BIOS",
|
||||
"valueRich": "OVMF (UEFI)"
|
||||
},
|
||||
{
|
||||
"param": "Tipo di CPU",
|
||||
"valueRich": "Host"
|
||||
},
|
||||
{
|
||||
"param": "Core",
|
||||
"valueRich": "2"
|
||||
},
|
||||
{
|
||||
"param": "RAM",
|
||||
"valueRich": "4096 MB"
|
||||
},
|
||||
{
|
||||
"param": "Ponte",
|
||||
"valueRich": "<code>vmbr0</code>"
|
||||
},
|
||||
{
|
||||
"param": "Indirizzo MAC",
|
||||
"valueRich": "Autogenerata"
|
||||
},
|
||||
{
|
||||
"param": "Avvia al termine",
|
||||
"valueRich": "No"
|
||||
}
|
||||
],
|
||||
"advancedHeading": "Configurazione avanzata",
|
||||
"advancedIntro": "La procedura guidata avanzata mostra ogni impostazione separatamente. Puoi modificare i seguenti valori:",
|
||||
"headerOptions": "Opzioni",
|
||||
"advancedRowsRich": [
|
||||
{
|
||||
"param": "Tipo di macchina",
|
||||
"optionsRich": "<code>q35</code> o <code>i440fx</code>"
|
||||
},
|
||||
{
|
||||
"param": "BIOS",
|
||||
"optionsRich": "OVMF (UEFI) o SeaBIOS (Legacy)"
|
||||
},
|
||||
{
|
||||
"param": "Tipo di CPU",
|
||||
"optionsRich": "Host o KVM64"
|
||||
},
|
||||
{
|
||||
"param": "Core",
|
||||
"optionsRich": "Numero di core CPU"
|
||||
},
|
||||
{
|
||||
"param": "RAM",
|
||||
"optionsRich": "Memoria assegnata alla VM"
|
||||
},
|
||||
{
|
||||
"param": "Ponte",
|
||||
"optionsRich": "Bridge di rete"
|
||||
},
|
||||
{
|
||||
"param": "Indirizzo MAC",
|
||||
"optionsRich": "MAC personalizzato"
|
||||
},
|
||||
{
|
||||
"param": "VLAN",
|
||||
"optionsRich": "Tag VLAN (opzionale)"
|
||||
},
|
||||
{
|
||||
"param": "MTU",
|
||||
"optionsRich": "MTU misura"
|
||||
}
|
||||
]
|
||||
},
|
||||
"storagePlan": {
|
||||
"heading": "Piano di archiviazione",
|
||||
"introRich": "Dopo CPU e RAM, ProxMenux apre il menu <strong>Piano di archiviazione</strong>. Puoi <strong>combinare</strong> dischi virtuali, dischi importati e dispositivi PCI passthrough nella stessa VM. Aggiungi gli elementi uno alla volta e termina quando hai finito.",
|
||||
"virtualHeading": "a. Aggiungere disco virtuale",
|
||||
"virtualItemsRich": [
|
||||
"Elenca i volumi di archiviazione Proxmox disponibili sull'host.",
|
||||
"Scegli lo storage di destinazione e la dimensione in GB.",
|
||||
"Il disco viene collegato come SATA (<code>sata0</code>, <code>sata1</code>, …). I dischi dati virtuali e fisici condividono le sei posizioni SATA numerate da 0 a 5."
|
||||
],
|
||||
"importHeading": "b. Aggiungere disco di importazione",
|
||||
"importItemsRich": [
|
||||
"Rileva i dischi fisici che sono sicuri da importare (sistema e dischi protetti sono nascosti).",
|
||||
"Seleziona uno o più dischi tramite una lista di controllo.",
|
||||
"I dischi importati sono collegati come SATA tramite <code>qm set</code>."
|
||||
],
|
||||
"pciHeading": "C. Aggiungi controller o NVMe (passthrough PCI)",
|
||||
"pciItemsRich": [
|
||||
"Rileva HBA SATA/SAS e dispositivi NVMe e consente di assegnare un <em>intero controller</em> alla VM. IOMMU deve essere attivo; lo script propone l’attivazione e un riavvio se necessario.",
|
||||
"Un passo di conferma avverte il rischio a livello del controller (l'intera carta, compreso ogni disco su di esso, lascia l'host).",
|
||||
"I dispositivi PCI vengono assegnati con comandi come <code>qm set VMID --hostpci0 PCI_ADDRESS,pcie=1</code>. Sostituisci VMID e PCI_ADDRESS con ID della VM e indirizzo PCI e usa un indice hostpci libero per ogni dispositivo."
|
||||
],
|
||||
"resetCalloutTitle": "Azzera e termina",
|
||||
"resetCalloutBodyRich": "Il menu offre <strong>r</strong> per azzerare la selezione e ricominciare e <strong>d</strong> per terminare e continuare. Il piano non può essere vuoto: Synology richiede almeno un disco per installare DSM."
|
||||
},
|
||||
"gpu": {
|
||||
"heading": "Passaggio opzionale GPU",
|
||||
"bodyRich": "Dopo il piano di archiviazione, se lo script rileva un GPU compatibile sull'host chiede se si desidera passare a questo VM. Vedere <link>Add GPU a un VM (Passthrough)</link> per il modo in cui l'assistente funziona — un riavvio host può essere richiesto."
|
||||
},
|
||||
"loaderInstall": {
|
||||
"heading": "Installazione Loader",
|
||||
"intro1Rich": "<strong>Arc</strong>, <strong>RR</strong> e <strong>Alpine RedPill M-shell</strong> vengono scaricati ed estratti automaticamente dai repository GitHub originali. Se il download fallisce, lo script si interrompe con un messaggio chiaro.",
|
||||
"intro2Rich": "Per l'opzione <strong>Custom Loader</strong> lo script scansiona <code>/var/lib/vz/template/iso</code>. Se si trova più di un candidato si viene invitati a scegliere quello che si desidera.",
|
||||
"uploadIntro": "È possibile caricare caricatori personalizzati dallo storage locale Proxmox:",
|
||||
"imageAlt": "Aggiungi loader personalizzato",
|
||||
"imageCaption": "Aggiungi loader personalizzato"
|
||||
},
|
||||
"vmCreation": {
|
||||
"heading": "Creazione VM — che cosa esegue lo script",
|
||||
"introRich": "Una volta confermato il caricatore, ProxMenux esegue l'equivalente di questi comandi <code>qm</code>:",
|
||||
"itemsRich": [
|
||||
"<code>qm create</code> — crea la VM con CPU, RAM, BIOS e tipo di macchina scelti.",
|
||||
"<code>qm importdisk</code> importa l’immagine del loader nello storage Proxmox. Lo script la collega poi alla VM come disco <strong>IDE</strong> su ide0 per compatibilità.",
|
||||
"<code>qm set VMID --sata0 DISK_REFERENCE</code> collega un disco dati del piano. Sostituisci VMID e DISK_REFERENCE con ID della VM e riferimento del disco; usa un indice SATA libero da 0 a 5. La rete viene configurata da qm create.",
|
||||
"<code>qm set VMID --hostpci0 PCI_ADDRESS,pcie=1</code> assegna un controller PCI o dispositivo NVMe selezionato. Sostituisci VMID e PCI_ADDRESS con ID della VM e indirizzo PCI e usa un indice hostpci libero per ogni dispositivo.",
|
||||
"<code>qm set VMID --boot order=ide0</code> imposta il loader come dispositivo di avvio. Sostituisci VMID con l’ID della VM."
|
||||
]
|
||||
},
|
||||
"stepByStep": {
|
||||
"heading": "Configurazione del caricatore passo-passo",
|
||||
"intro": "I sei passaggi comuni sono: avviare la VM, scegliere modello, versione DSM e componenti aggiuntivi, creare e avviare il loader. Menu e opzioni variano per versione. Le schermate M-shell mostrano una vecchia interfaccia TinyCore; lo script attuale scarica Alpine RedPill M-shell, quindi segui le sue indicazioni attuali.",
|
||||
"warnCalloutTitle": "I loader non sono mantenuti da ProxMenux",
|
||||
"warnCalloutBody": "Arc, RR e Alpine RedPill M-shell sono progetti comuni con la loro cadenza di rilascio. Se un passo sembra diverso dagli screenshot qui sotto, il caricatore è probabilmente aggiornato — controlla la documentazione del caricatore (link in fondo a questa pagina)."
|
||||
},
|
||||
"stepBadge": "Passaggio",
|
||||
"step1": {
|
||||
"title": "Avvia la VM e accedi al menu principale",
|
||||
"intro": "Avvia la VM creata. Al primo avvio si apre la configurazione del loader per scegliere e creare il modello DSM. Gli avvii successivi saltano questo passaggio, salvo una riconfigurazione forzata dal menu di avvio del loader. Tutti e tre i loader offrono un’interfaccia terminale e una web.",
|
||||
"arc": {
|
||||
"webRich": "<strong>Interfaccia web.</strong> Apri un browser e inserisci l’IP mostrato nella console della VM (nel nostro esempio: <code>http://192.168.0.32</code>).",
|
||||
"webAlt": "Interfaccia web Arc loader",
|
||||
"webCaption": "Interfaccia web Arc loader",
|
||||
"termRich": "<strong>Interfaccia terminale</strong>: accedi direttamente dalla console della VM.",
|
||||
"termAlt": "Interfaccia terminale Arc loader",
|
||||
"termCaption": "Interfaccia terminale Arc loader"
|
||||
},
|
||||
"rr": {
|
||||
"webRich": "<strong>Interfaccia web.</strong> Apri un browser e inserisci l’IP della console VM seguito dalla porta <strong>7681</strong> (esempio: <code>http://192.168.0.33:7681</code>).",
|
||||
"webAlt": "Interfaccia web del caricatore RR",
|
||||
"webCaption": "Interfaccia web del caricatore RR",
|
||||
"termRich": "<strong>Interfaccia terminale.</strong> Digita <code>menu.sh</code> nella console della VM per aprirla.",
|
||||
"termAlt": "Interfaccia terminale caricatore RR",
|
||||
"termCaption": "Interfaccia terminale caricatore RR"
|
||||
},
|
||||
"tinycore": {
|
||||
"webRich": "<strong>Interfaccia web.</strong> Apri un browser e inserisci l’IP della console VM seguito dalla porta <strong>7681</strong> (esempio: <code>http://192.168.0.35:7681</code>).",
|
||||
"webAlt": "Interfaccia web del caricatore TinyCore",
|
||||
"webCaption": "Interfaccia web del caricatore TinyCore",
|
||||
"termRich": "<strong>Interfaccia terminale</strong>: accedi direttamente dalla console della VM. Osserva lo schermo: potrebbe chiederti di premere un tasto per continuare o di cambiare lingua.",
|
||||
"termAlt": "Interfaccia terminale di TinyCore Loader",
|
||||
"termCaption": "Interfaccia terminale di TinyCore Loader"
|
||||
}
|
||||
},
|
||||
"step2": {
|
||||
"title": "Seleziona modello",
|
||||
"introRich": "Scegli il modello Synology DSM che vuoi installare. A seconda del caricatore potrebbe essere necessario espandere le opzioni per visualizzare l'elenco completo. Negli screenshot qui sotto utilizziamo il modello <strong>SA6400</strong> come esempio.",
|
||||
"arc": {
|
||||
"alt": "Selezione del modello in Arc",
|
||||
"caption": "Selezione del modello in Arc"
|
||||
},
|
||||
"rr": {
|
||||
"alt": "Selezione modello RR",
|
||||
"caption": "Selezione modello RR"
|
||||
},
|
||||
"tinycore": {
|
||||
"alt": "Selezione modello TinyCore",
|
||||
"caption": "Selezione modello TinyCore"
|
||||
}
|
||||
},
|
||||
"step3": {
|
||||
"title": "Selezionare la versione DSM",
|
||||
"intro": "Dopo aver scelto il modello, scegliere la versione DSM da installare.",
|
||||
"arc": [
|
||||
{
|
||||
"alt": "Selezione versione Arc - Passo 1",
|
||||
"caption": "Selezione versione Arc - Passo 1"
|
||||
},
|
||||
{
|
||||
"alt": "Selezione versione Arc - Passo 2",
|
||||
"caption": "Selezione versione Arc - Passo 2"
|
||||
}
|
||||
],
|
||||
"rr": [
|
||||
{
|
||||
"alt": "Selezione versione RR - Passo 1",
|
||||
"caption": "Selezione versione RR - Passo 1"
|
||||
},
|
||||
{
|
||||
"alt": "Selezione versione RR - Passo 2",
|
||||
"caption": "Selezione versione RR - Passo 2"
|
||||
},
|
||||
{
|
||||
"alt": "Selezione versione RR - Passo 3",
|
||||
"caption": "Selezione versione RR - Passo 3"
|
||||
}
|
||||
],
|
||||
"tinycore": [
|
||||
{
|
||||
"alt": "Selezione versione TinyCore - Passo 1",
|
||||
"caption": "Selezione versione TinyCore - Passo 1"
|
||||
},
|
||||
{
|
||||
"alt": "Selezione versione TinyCore - Passo 2",
|
||||
"caption": "Selezione versione TinyCore - Passo 2"
|
||||
}
|
||||
]
|
||||
},
|
||||
"step4": {
|
||||
"title": "Selezionare addons",
|
||||
"intro": "Questo passaggio consente di aggiungere funzionalità extra o configurazione personalizzata al caricatore.",
|
||||
"arc": {
|
||||
"autoRich": "<strong>Arc</strong> offre una modalità automatica (consigliata) e una modalità manuale. In modalità automatica il caricatore applica predefinizioni ragionevoli e riavvia da solo quando fatto.",
|
||||
"autoAlt": "Configurazione auto Arc",
|
||||
"autoCaption": "Configurazione auto Arc",
|
||||
"manualRich": "In modalità manuale, imposti le opzioni una alla volta:",
|
||||
"manualAlt": "Configurazione manuale Arc",
|
||||
"manualCaption": "Configurazione manuale Arc",
|
||||
"snMacAlt": "Arc SN/MAC",
|
||||
"snMacCaption": "Configurazione Arc SN / MAC",
|
||||
"portmapAlt": "Arc SATA portmap",
|
||||
"portmapCaption": "Arc SATA portmap (usare l'opzione consigliata)",
|
||||
"addonsAlt": "Componenti aggiuntivi di Arc",
|
||||
"addonsCaption": "Selezione dei componenti aggiuntivi in Arc"
|
||||
},
|
||||
"rr": [
|
||||
{
|
||||
"alt": "RR addon - passo 1",
|
||||
"caption": "RR addon - passo 1"
|
||||
},
|
||||
{
|
||||
"alt": "RR addon - passo 2",
|
||||
"caption": "RR addon — passo 2: premere per aggiungere un addon"
|
||||
},
|
||||
{
|
||||
"alt": "RR addon - passo 3",
|
||||
"caption": "RR addon — passo 3: fare clic sull'addon che si desidera. Ripetere i due screenshot precedenti per aggiungere di più."
|
||||
}
|
||||
],
|
||||
"tinycore": [
|
||||
{
|
||||
"alt": "Configurazione TinyCore SN",
|
||||
"caption": "Configurazione TinyCore SN"
|
||||
},
|
||||
{
|
||||
"alt": "TinyCore opzione casuale",
|
||||
"caption": "TinyCore opzione casuale (consigliato)"
|
||||
},
|
||||
{
|
||||
"alt": "Configurazione MAC TinyCore",
|
||||
"caption": "Configurazione MAC TinyCore"
|
||||
},
|
||||
{
|
||||
"alt": "TinyCore VM MAC",
|
||||
"caption": "TinyCore — scegli il MAC di VM o uno casuale"
|
||||
}
|
||||
]
|
||||
},
|
||||
"step5": {
|
||||
"title": "Costruisci il caricatore",
|
||||
"introRich": "Dopo aver scelto modello, versione DSM e componenti aggiuntivi, seleziona <strong>Build the Loader</strong>. Potrebbe richiedere alcuni minuti, secondo il loader e le opzioni scelte.",
|
||||
"arc": {
|
||||
"alt": "Creazione del loader in Arc",
|
||||
"caption": "Creazione del loader in Arc"
|
||||
},
|
||||
"rr": {
|
||||
"alt": "Creazione del loader in RR",
|
||||
"caption": "Creazione del loader in RR"
|
||||
},
|
||||
"tinycore": {
|
||||
"alt": "Creazione del loader in TinyCore",
|
||||
"caption": "Creazione del loader in TinyCore"
|
||||
}
|
||||
},
|
||||
"step6": {
|
||||
"title": "Avvia il loader",
|
||||
"intro": "Una volta costruito il caricatore, il VM si riavvia con la configurazione creata e inizia l'installazione DSM.",
|
||||
"arc": {
|
||||
"alt": "Avvio del loader in Arc",
|
||||
"caption": "Avvio del loader in Arc"
|
||||
},
|
||||
"rr": {
|
||||
"alt": "Avvio del loader in RR",
|
||||
"caption": "Avvio del loader in RR"
|
||||
},
|
||||
"tinycore": {
|
||||
"alt": "Avvio del loader in TinyCore",
|
||||
"caption": "Avvio del loader in TinyCore"
|
||||
}
|
||||
},
|
||||
"dsmInstall": {
|
||||
"heading": "Avviare l'installazione DSM",
|
||||
"intro": "Dopo aver avviato il loader, puoi trovare la VM DSM aprendo:",
|
||||
"afterCode": "Segui i passaggi sullo schermo per completare l'installazione di DSM.",
|
||||
"setupAlt": "Configurazione DSM",
|
||||
"setupCaption": "Schermo di configurazione DSM",
|
||||
"patience": "Attendi qualche minuto. L’avanzamento si aggiorna automaticamente e appare un conto alla rovescia quando l’installazione sta per terminare.",
|
||||
"finishAlt": "Installazione completa",
|
||||
"finishCaption": "Installazione completa"
|
||||
},
|
||||
"tips": {
|
||||
"heading": "Consigli",
|
||||
"recentTitle": "Utilizzare i modelli DSM recenti",
|
||||
"recentBody": "Alcuni modelli DSM più vecchi hanno difficoltà a riconoscere i dischi o la scheda di rete. Preferire modelli recenti (ad es. SA6400) per un'esperienza di primo avvio più liscia.",
|
||||
"updateTitle": "Aggiornare il caricatore",
|
||||
"updateBody": "Alcuni caricatori offrono la possibilità di aggiornarsi direttamente dal loro menu di configurazione — non è necessario distruggere e ricreare il VM.",
|
||||
"warnTitle": "ProxMenux non supporta i caricatori",
|
||||
"warnBody": "ProxMenux automatizza la preparazione della VM. Per problemi del loader, come modello assente, componenti aggiuntivi non installabili o DSM che non si avvia, consulta il sistema di segnalazione problemi e la documentazione del loader.",
|
||||
"docsHeading": "Documentazione Loader",
|
||||
"docLinks": [
|
||||
{
|
||||
"label": "Documentazione di Arc",
|
||||
"url": "https://github.com/AuxXxilium/arc"
|
||||
},
|
||||
{
|
||||
"label": "Documentazione RR",
|
||||
"url": "https://github.com/RROrg/rr"
|
||||
},
|
||||
{
|
||||
"label": "Documentazione TinyCore",
|
||||
"url": "https://github.com/PeterSuh-Q3/tinycore-redpill"
|
||||
}
|
||||
]
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"itemsRich": [
|
||||
{
|
||||
"href": "/docs/create-vm/system-nas",
|
||||
"label": "Panoramica del NAS di sistema",
|
||||
"tail": "— confronto di Synology vs TrueNAS / OMV / Rockstor / XigmaNAS."
|
||||
},
|
||||
{
|
||||
"href": "/docs/create-vm/system-nas/system-nas-others",
|
||||
"label": "Altri NAS di sistema",
|
||||
"tail": " — distribuzioni NAS diverse da Synology."
|
||||
},
|
||||
{
|
||||
"href": "/docs/disk-manager/import-disk-vm",
|
||||
"label": "Importa disco nella VM",
|
||||
"tail": " — assegna dischi fisici alla VM Synology, consigliato per le prestazioni di archiviazione."
|
||||
},
|
||||
{
|
||||
"href": "/docs/create-vm",
|
||||
"label": "Panoramica della creazione di VM",
|
||||
"tail": "."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,312 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Creare VM: Altri sistemi NAS | Documentazione ProxMenux",
|
||||
"description": "Creare TrueNAS SCALE, TrueNAS CORE, OpenMediaVault, XigmaNAS, Rockstor, ZimaOS e FygoOS macchine virtuali su Proxmox VE con ProxMenux. Copre la configurazione predefinita / avanzata, il nuovo piano di archiviazione, passthrough opzionale GPU e specifiche consigliate per sistema.",
|
||||
"ogTitle": "Creare VM: Altri sistemi NAS | Documentazione ProxMenux",
|
||||
"ogDescription": "Creare TrueNAS SCALE / CORE, OpenMediaVault, XigmaNAS, Rockstor, ZimaOS e FygoOS VM su Proxmox VE con ProxMenux.",
|
||||
"ogImageAlt": "Selettore NAS ProxMenux"
|
||||
},
|
||||
"header": {
|
||||
"title": "Creare VM: Altri sistemi NAS",
|
||||
"description": "ProxMenux può creare un VM pronto per l'installazione per TrueNAS SCALE, TrueNAS CORE, OpenMediaVault, XigmaNAS, Rockstor, ZimaOS e FygoOS. Questa pagina copre il flusso di creazione condiviso (configurazione predefinita / avanzata, il nuovo piano di archiviazione, passthrough opzionale GPU) più note per sistema e specifiche consigliate.",
|
||||
"section": "Macchine virtuali · NAS"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Come vengono creati questi sistemi",
|
||||
"bodyRich": "Tutti e sette i sistemi condividono lo stesso wizard ProxMenux. Il selettore NAS sceglie l'installatore corrispondente (rilevando automaticamente l'ultima versione stabile per TrueNAS, OMV, XigmaNAS, Rockstor e FygoOS) e poi consegna al configuratore generico VM e al piano di archiviazione. ZimaOS utilizza il proprio script di installazione (<code>vm/zimaos.sh</code>) ma segue la stessa sequenza CPU / RAM / storage / optional-GPU."
|
||||
},
|
||||
"config": {
|
||||
"heading": "Configurazione predefinita vs Avanzata",
|
||||
"intro": "Quando viene selezionato un NAS, ProxMenux chiede se utilizzare il profilo predefinito VM o aprire la procedura guidata avanzata. I default sono sintonizzati per i carichi di lavoro NAS — più RAM di un normale Linux VM perché i sistemi basati su ZFS ne hanno bisogno per la cache ARC.",
|
||||
"defaultHeading": "Configurazione predefinita",
|
||||
"headerParam": "Parametro",
|
||||
"headerValue": "Valore predefinito",
|
||||
"defaultRowsRich": [
|
||||
{
|
||||
"param": "Tipo di macchina",
|
||||
"valueRich": "<code>q35</code>"
|
||||
},
|
||||
{
|
||||
"param": "BIOS",
|
||||
"valueRich": "OVMF (UEFI)<note> — SeaBIOS per OpenMediaVault</note>"
|
||||
},
|
||||
{
|
||||
"param": "Tipo di CPU",
|
||||
"valueRich": "Host"
|
||||
},
|
||||
{
|
||||
"param": "Core",
|
||||
"valueRich": "2"
|
||||
},
|
||||
{
|
||||
"param": "RAM",
|
||||
"valueRich": "8192 MB<note> — 4096 MB per ZimaOS</note>"
|
||||
},
|
||||
{
|
||||
"param": "Ponte",
|
||||
"valueRich": "<code>vmbr0</code>"
|
||||
},
|
||||
{
|
||||
"param": "Indirizzo MAC",
|
||||
"valueRich": "Autogenerata"
|
||||
},
|
||||
{
|
||||
"param": "Avvia al termine",
|
||||
"valueRich": "No"
|
||||
}
|
||||
],
|
||||
"advancedHeading": "Configurazione avanzata",
|
||||
"advancedIntro": "La procedura guidata avanzata espone ogni parametro singolarmente:",
|
||||
"headerOptions": "Opzioni",
|
||||
"advancedRowsRich": [
|
||||
{
|
||||
"param": "Tipo di macchina",
|
||||
"optionsRich": "<code>q35</code> o <code>i440fx</code>"
|
||||
},
|
||||
{
|
||||
"param": "BIOS",
|
||||
"optionsRich": "OVMF (UEFI) o SeaBIOS (Legacy)"
|
||||
},
|
||||
{
|
||||
"param": "Tipo di CPU",
|
||||
"optionsRich": "Host, KVM64 e altri modelli CPU elencati (ZimaOS: Host o KVM64)"
|
||||
},
|
||||
{
|
||||
"param": "Core",
|
||||
"optionsRich": "Numero di core CPU"
|
||||
},
|
||||
{
|
||||
"param": "RAM",
|
||||
"optionsRich": "Memoria assegnata al VM"
|
||||
},
|
||||
{
|
||||
"param": "Ponte",
|
||||
"optionsRich": "Bridge di rete"
|
||||
},
|
||||
{
|
||||
"param": "Indirizzo MAC",
|
||||
"optionsRich": "MAC personalizzato"
|
||||
},
|
||||
{
|
||||
"param": "VLAN",
|
||||
"optionsRich": "Tag VLAN (opzionale)"
|
||||
},
|
||||
{
|
||||
"param": "MTU",
|
||||
"optionsRich": "MTU misura"
|
||||
}
|
||||
],
|
||||
"zfsCalloutTitle": "ZFS e RAM",
|
||||
"zfsCalloutBody": "TrueNAS SCALE/CORE e XigmaNAS usano ZFS, la cui cache ARC beneficia della RAM. TrueNAS richiede almeno 8 GB per l’uso di base; 16 GB o più aiutano con servizi e app impegnativi. Dimensiona la VM secondo distribuzione e carico: 8 GB non è un minimo universale di ZFS. Configurazioni leggere OMV, Rockstor o ZimaOS possono richiedere meno."
|
||||
},
|
||||
"storagePlan": {
|
||||
"heading": "Piano di archiviazione",
|
||||
"intro": "Dopo CPU / RAM, ProxMenux apre il menu Storage Plan, dove è possibile combinare dischi virtuali, dischi importati e dispositivi passanti PCI nello stesso VM, aggiungendo elementi uno alla volta e terminando quando si è fatto.",
|
||||
"virtualHeading": "a. Aggiungere disco virtuale",
|
||||
"virtualItemsRich": [
|
||||
"Elenca i volumi di archiviazione Proxmox disponibili sull'host.",
|
||||
"Scegli lo storage di destinazione e la dimensione in GB.",
|
||||
"Il disco usa il bus scelto: SCSI (predefinito), SATA, VirtIO o IDE (ZimaOS: SCSI o SATA). SATA offre sei posizioni numerate da 0 a 5: <code>sata0</code>, <code>sata1</code>, …."
|
||||
],
|
||||
"importHeading": "b. Aggiungere disco di importazione",
|
||||
"importItemsRich": [
|
||||
"Rileva i dischi fisici che sono sicuri da importare (sistema e dischi protetti sono nascosti).",
|
||||
"Seleziona uno o più dischi tramite una lista di controllo.",
|
||||
"I dischi importati usano il bus scelto e vengono collegati tramite <code>qm set</code>."
|
||||
],
|
||||
"pciHeading": "C. Aggiungi controller o NVMe (passthrough PCI)",
|
||||
"pciItemsRich": [
|
||||
"Rileva HBA SATA/SAS e dispositivi NVMe e consente di assegnare un <em>intero controller</em> alla VM. IOMMU deve essere attivo; lo script propone l’attivazione e un riavvio se necessario.",
|
||||
"Un passo di conferma avverte il rischio a livello del controller (l'intera carta, compreso ogni disco su di esso, lascia l'host).",
|
||||
"I dispositivi PCI vengono assegnati con comandi come <code>qm set VMID --hostpci0 PCI_ADDRESS,pcie=1</code>. Sostituisci VMID e PCI_ADDRESS con ID della VM e indirizzo PCI e usa un indice hostpci libero per ogni dispositivo."
|
||||
],
|
||||
"resetCalloutTitle": "Azzera e termina",
|
||||
"resetCalloutBodyRich": "Il menu offre anche <strong>r</strong> (riimpostare la selezione attuale e ricominciare da capo) e <strong>d</strong> (finire e continuare). Non puoi finire con un piano vuoto."
|
||||
},
|
||||
"gpu": {
|
||||
"heading": "Passaggio opzionale GPU",
|
||||
"bodyRich": "Dopo il piano di archiviazione, se viene rilevato un GPU compatibile sull'host, ProxMenux offre di lanciare l'assistente passthrough GPU. Vedere <link>Add GPU a un VM (Passthrough)</link> per come funziona l'assistente - un riavvio host può essere richiesto."
|
||||
},
|
||||
"autoFeatures": {
|
||||
"heading": "Caratteristiche automatiche VM",
|
||||
"efiTitle": "Disco EFI",
|
||||
"efiBody": "Con OVMF (UEFI), ProxMenux crea automaticamente un disco EFI da 4 MB sullo storage scelto, nel formato adatto al tipo di storage: raw per quello basato su directory.",
|
||||
"isoTitle": "Montaggio ISO",
|
||||
"isoBodyRich": "L'installazione ISO viene scaricata (se necessario) e attaccata a <code>ide2</code> come CD-ROM, pronta per il primo avvio.",
|
||||
"guestTitle": "Agente ospite QEMU",
|
||||
"guestBody": "Il canale dell'agente ospite è abilitato nella configurazione VM. È ancora necessario installare l'agente all'interno dell'ospite dopo che il sistema operativo NAS è in funzione."
|
||||
},
|
||||
"endToEnd": {
|
||||
"heading": "Cosa fa lo script end-to-end",
|
||||
"itemsRich": [
|
||||
"Rileva e scarica l'ultima ISO stabile (o utilizza la versione fallback se il upstream non è raggiungibile).",
|
||||
"Applica le impostazioni predefinite o avanzate di CPU, RAM, BIOS e tipo di macchina.",
|
||||
"Apre il piano di archiviazione e allega i dischi virtuali selezionati, i dischi importati e i dispositivi PCI.",
|
||||
"Crea un disco EFI se viene selezionato UEFI.",
|
||||
"Monta l'installazione ISO su <code>ide2</code>.",
|
||||
"Imposta l'ordine di avvio (disco prima, poi ISO).",
|
||||
"Abilita il canale Agente Ospite QEMU.",
|
||||
"Opzionalmente gestisce l'assistente passante GPU.",
|
||||
"Genera una descrizione HTML stilizzata collegata al VM.",
|
||||
"Avvia il VM se hai scelto di farlo."
|
||||
]
|
||||
},
|
||||
"perSystem": {
|
||||
"heading": "Note per sistema",
|
||||
"shellLabel": "Interfaccia di Shell",
|
||||
"webLabel": "Interfaccia web"
|
||||
},
|
||||
"systems": {
|
||||
"truenasScale": {
|
||||
"id": "truenas-scale",
|
||||
"title": "TrueNAS SCALE",
|
||||
"icon": "Database",
|
||||
"officialName": "TrueNAS SCALE",
|
||||
"officialUrl": "https://www.truenas.com/truenas-scale/",
|
||||
"description": "TrueNAS basato su Debian con app Docker nelle versioni attuali, Linux KVM e ZFS come filesystem principale. Le vecchie versioni SCALE usavano Kubernetes. Combina storage ZFS e un ecosistema di contenitori.",
|
||||
"specs": [
|
||||
"Interfaccia consigliata: SATA o SCSI, entrambe con supporto discard/TRIM",
|
||||
"Minimo RAM: 8 GB (16 GB+ consigliato per carichi di lavoro reali)",
|
||||
"Minimo CPU core: 2 (4+ consigliato)",
|
||||
"UEFI (OVMF) boot consigliato",
|
||||
"Scheda di rete VirtIO per una maggiore velocità di trasferimento"
|
||||
],
|
||||
"shellImg": "/vm/truenas/truenas-scale-shell.png",
|
||||
"webImg": "/vm/truenas/truenas-scale-web.png",
|
||||
"shellAlt": "TrueNAS Interfaccia shell SCALE",
|
||||
"webAlt": "Interfaccia web SCALE TrueNAS"
|
||||
},
|
||||
"truenasCore": {
|
||||
"id": "truenas-core",
|
||||
"title": "TrueNAS CORE",
|
||||
"icon": "Database",
|
||||
"officialName": "TrueNAS CORE",
|
||||
"officialUrl": "https://www.truenas.com/truenas-core/",
|
||||
"description": "TrueNAS basato su FreeBSD, in precedenza FreeNAS, dedicato a ZFS. Jail, plugin e virtualizzazione di CORE 13.3 sono obsoleti e non supportati; lo sviluppo attuale si concentra sulle edizioni Linux.",
|
||||
"specs": [
|
||||
"Interfaccia consigliata: SATA",
|
||||
"Minimo RAM: 8 GB (16 GB+ consigliato)",
|
||||
"Minimo CPU core: 2 (4+ consigliato)",
|
||||
"UEFI (OVMF) boot consigliato",
|
||||
"Scheda di rete VirtIO per una maggiore velocità di trasferimento"
|
||||
],
|
||||
"shellImg": "/vm/truenas/truenas-core-shell.png",
|
||||
"webImg": "/vm/truenas/truenas-core-web.png",
|
||||
"shellAlt": "Interfaccia con shell CORE TrueNAS",
|
||||
"webAlt": "Interfaccia web TrueNAS CORE"
|
||||
},
|
||||
"openmediavault": {
|
||||
"id": "openmediavault",
|
||||
"title": "OpenMediaVault",
|
||||
"icon": "Server",
|
||||
"officialName": "openmediavault.org",
|
||||
"officialUrl": "https://www.openmediavault.org",
|
||||
"description": "NAS basato su Debian con plugin modulari. Richiede poche risorse e funziona su hardware modesto, adatto quando non serve ZFS.",
|
||||
"specs": [
|
||||
"Interfaccia consigliata: SATA o VirtIO",
|
||||
"Minimo RAM: 2 GB (4 GB+ consigliato)",
|
||||
"Minimo CPU core: 1 (2+ consigliato)",
|
||||
"BIOS: ProxMenux predefinito a SeaBIOS per OMV (override in Advanced se necessario)",
|
||||
"Scheda di rete VirtIO per una maggiore velocità di trasferimento"
|
||||
],
|
||||
"shellImg": "/vm/openmediavault/openmediavault-shell.png",
|
||||
"webImg": "/vm/openmediavault/openmediavault-web.png",
|
||||
"shellAlt": "Interfaccia shell di OpenMediaVault",
|
||||
"webAlt": "Interfaccia web OpenMediaVault"
|
||||
},
|
||||
"xigmanas": {
|
||||
"id": "xigmanas",
|
||||
"title": "XigmaNAS",
|
||||
"icon": "Database",
|
||||
"officialName": "xigmanas.com",
|
||||
"officialUrl": "https://www.xigmanas.com",
|
||||
"description": "NAS basato su FreeBSD — la continuazione diretta della base di codice originale FreeNAS (0.7). Concentrato su ZFS e semplicità, con un'impronta più leggera di TrueNAS.",
|
||||
"specs": [
|
||||
"Interfaccia consigliata: SATA o SCSI",
|
||||
"Minimo RAM: 4 GB (8 GB+ consigliato per ZFS)",
|
||||
"Nuclei CPU minimi: 2",
|
||||
"UEFI (OVMF) boot consigliato",
|
||||
"Scheda di rete VirtIO per una maggiore velocità di trasferimento"
|
||||
]
|
||||
},
|
||||
"rockstor": {
|
||||
"id": "rockstor",
|
||||
"title": "Rockstor",
|
||||
"icon": "HardDrive",
|
||||
"officialName": "rockstor.com",
|
||||
"officialUrl": "https://rockstor.com",
|
||||
"description": "NAS basato su openSUSE Leap e costruito attorno a Btrfs. Snapshot, sottovolumi e piattaforma Rock-on con app Docker per contenuti multimediali, condivisione e backup.",
|
||||
"specs": [
|
||||
"Interfaccia consigliata: SATA o VirtIO",
|
||||
"Minimo RAM: 2 GB (4 GB+ consigliato)",
|
||||
"Nuclei CPU minimi: 2",
|
||||
"UEFI (OVMF) boot consigliato",
|
||||
"Scheda di rete VirtIO per una maggiore velocità di trasferimento"
|
||||
],
|
||||
"shellImg": "/vm/rockstor/rockstor-shell.png",
|
||||
"webImg": "/vm/rockstor/rockstor-web.png",
|
||||
"shellAlt": "Interfaccia della shell Rockstor",
|
||||
"webAlt": "Interfaccia web Rockstor"
|
||||
},
|
||||
"zimaos": {
|
||||
"id": "zimaos",
|
||||
"title": "ZimaOS",
|
||||
"icon": "MonitorIcon",
|
||||
"officialName": "zimaspace.com",
|
||||
"officialUrl": "https://www.zimaspace.com/zimaos",
|
||||
"description": "Sistema NAS/server domestico leggero costruito con Buildroot, evoluto da CasaOS, per contenuti multimediali, app Docker e domotica. L’installatore ProxMenux dedicato (vm/zimaos.sh) scarica un’immagine pronta e offre impostazioni CPU, RAM e storage.",
|
||||
"specs": [
|
||||
"Interfaccia consigliata: SATA o VirtIO",
|
||||
"RAM predefinita: 4 GB, per contenuti multimediali e app ospitate in proprio",
|
||||
"Nuclei CPU minimi: 2",
|
||||
"Avvio UEFI (OVMF)",
|
||||
"Scheda di rete VirtIO per una maggiore velocità di trasferimento"
|
||||
]
|
||||
},
|
||||
"fygoos": {
|
||||
"id": "fygoos",
|
||||
"title": "FygoOS",
|
||||
"icon": "Server",
|
||||
"officialName": "fygonas.com",
|
||||
"officialUrl": "https://fygonas.com",
|
||||
"description": "Edizione internazionale di fnOS, un NAS basato su Debian. ProxMenux scarica l'ultimo installatore ISO pubblicato su fygonas.com e lo monta nel VM. L'installatore mette il sistema su un disco; lo spazio lasciato su quel disco può contenere volumi per applicazioni e file. Dopo l'installazione, la console mostra l'indirizzo dell'interfaccia web, sulla porta 5666 (porta 80 reindirizza ad essa): aprirlo in un browser per nominare il dispositivo e creare l'account amministratore.",
|
||||
"specs": [
|
||||
"Disco di sistema: FygoOS propone una partizione di sistema 64 GB, che può essere più piccola in un VM",
|
||||
"Installazione: Graphical Install, oppure Rescuing Install se la modalità grafica non funziona",
|
||||
"UEFI (OVMF) boot senza chiavi Secure Boot, come richiede l'installatore",
|
||||
"Rete: Ethernet con DHCP per impostazione predefinita",
|
||||
"Scheda di rete VirtIO per una maggiore velocità di trasferimento"
|
||||
]
|
||||
}
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"itemsRich": [
|
||||
{
|
||||
"href": "/docs/create-vm/system-nas",
|
||||
"label": "Panoramica del NAS di sistema",
|
||||
"tail": "— un rapido confronto tra tutte le opzioni NAS."
|
||||
},
|
||||
{
|
||||
"href": "/docs/create-vm/system-nas/synology",
|
||||
"label": "VM Synology",
|
||||
"tail": " — procedura Synology DSM (Xpenology)."
|
||||
},
|
||||
{
|
||||
"href": "/docs/disk-manager/import-disk-vm",
|
||||
"label": "Importa disco nella VM",
|
||||
"tail": "— consigliata per i casi di utilizzo del NAS (dischi reali > dischi virtuali)."
|
||||
},
|
||||
{
|
||||
"href": "/docs/help-info/zfs-commands",
|
||||
"label": "Comandi di gestione ZFS",
|
||||
"tail": " — se scegli TrueNAS o un’altra distribuzione basata su ZFS."
|
||||
},
|
||||
{
|
||||
"href": "/docs/create-vm",
|
||||
"label": "Panoramica della creazione di VM",
|
||||
"tail": "."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,259 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Crea VM: sistema Windows | Documentazione ProxMenux",
|
||||
"description": "Creare e configurare macchine virtuali Windows su Proxmox VE con ProxMenux. Include UUP Dump ISO e percorsi ISO locali, configurazione predefinita / avanzata, piano di archiviazione unificato, passthrough GPU opzionale, configurazione TPM 2.0 e installazione driver VirtIO.",
|
||||
"ogTitle": "Crea VM: sistema Windows | Documentazione ProxMenux",
|
||||
"ogDescription": "Crea VM Windows su Proxmox VE con ProxMenux. UUP Dump o ISO locale, piano di archiviazione unificato, passthrough opzionale GPU, driver TPM 2.0 e VirtIO.",
|
||||
"ogImageAlt": "ProxMenux menu Windows VM"
|
||||
},
|
||||
"header": {
|
||||
"title": "Crea VM: sistema Windows",
|
||||
"description": "Crea una VM Windows su Proxmox VE. ProxMenux gestisce la scelta dell’ISO (UUP Dump o locale), CPU, RAM, tipo di macchina, piano di archiviazione comune, passthrough GPU facoltativo, TPM 2.0 e installazione dei driver VirtIO.",
|
||||
"section": "Macchine virtuali"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Cosa fa questo script",
|
||||
"body": "Il percorso Windows chiede l’origine dell’ISO: UUP Dump o copia locale in <code>/var/lib/vz/template/iso</code>. Avvia poi la procedura guidata VM comune con impostazioni adatte a Windows: <code>q35</code>, OVMF e TPM 2.0. L’ISO dei driver VirtIO viene collegata come secondo CD-ROM e la VM è pronta ad avviare l’installatore Windows."
|
||||
},
|
||||
"image": {
|
||||
"alt": "ProxMenux Opzioni di installazione di Windows",
|
||||
"caption": "Opzioni di installazione di Windows"
|
||||
},
|
||||
"config": {
|
||||
"heading": "Configurazione predefinita vs Avanzata",
|
||||
"intro": "Dopo la selezione dell'ISO, ProxMenux chiede se utilizzare il profilo predefinito VM o aprire la procedura guidata avanzata. Il profilo predefinito è sintonizzato per le moderne edizioni desktop e server Windows.",
|
||||
"defaultHeading": "Configurazione predefinita",
|
||||
"headerParam": "Parametro",
|
||||
"headerValue": "Valore predefinito",
|
||||
"defaultRows": [
|
||||
{
|
||||
"param": "Tipo di macchina",
|
||||
"valueRich": "<code>q35</code>"
|
||||
},
|
||||
{
|
||||
"param": "BIOS",
|
||||
"value": "OVMF (UEFI)"
|
||||
},
|
||||
{
|
||||
"param": "Tipo di CPU",
|
||||
"value": "Host"
|
||||
},
|
||||
{
|
||||
"param": "Core",
|
||||
"value": "4"
|
||||
},
|
||||
{
|
||||
"param": "RAM",
|
||||
"value": "8192 MB"
|
||||
},
|
||||
{
|
||||
"param": "Ponte",
|
||||
"valueRich": "<code>vmbr0</code>"
|
||||
},
|
||||
{
|
||||
"param": "Indirizzo MAC",
|
||||
"value": "Autogenerata"
|
||||
},
|
||||
{
|
||||
"param": "TPM",
|
||||
"value": "Abilitato (v2.0)"
|
||||
},
|
||||
{
|
||||
"param": "Avvia al termine",
|
||||
"value": "No"
|
||||
}
|
||||
],
|
||||
"advancedHeading": "Configurazione avanzata",
|
||||
"advancedIntro": "La procedura guidata avanzata mostra ogni impostazione separatamente:",
|
||||
"headerOptions": "Opzioni",
|
||||
"advancedRows": [
|
||||
{
|
||||
"param": "Tipo di macchina",
|
||||
"optionsRich": "<code>q35</code> o <code>i440fx</code>"
|
||||
},
|
||||
{
|
||||
"param": "BIOS",
|
||||
"options": "OVMF (UEFI) o SeaBIOS (Legacy)"
|
||||
},
|
||||
{
|
||||
"param": "Tipo di CPU",
|
||||
"options": "Host, KVM64 e altri modelli CPU elencati"
|
||||
},
|
||||
{
|
||||
"param": "Core",
|
||||
"options": "Numero di core CPU"
|
||||
},
|
||||
{
|
||||
"param": "RAM",
|
||||
"options": "Memoria assegnata alla VM"
|
||||
},
|
||||
{
|
||||
"param": "Ponte",
|
||||
"options": "Bridge di rete"
|
||||
},
|
||||
{
|
||||
"param": "Indirizzo MAC",
|
||||
"options": "MAC personalizzato"
|
||||
},
|
||||
{
|
||||
"param": "VLAN",
|
||||
"options": "Tag VLAN (opzionale)"
|
||||
},
|
||||
{
|
||||
"param": "MTU",
|
||||
"options": "MTU misura"
|
||||
},
|
||||
{
|
||||
"param": "TPM",
|
||||
"options": "TPM 2.0 viene aggiunto automaticamente per Windows; la procedura guidata non offre un interruttore TPM."
|
||||
}
|
||||
],
|
||||
"tpmWarnTitle": "I requisiti TPM dipendono dall’edizione Windows",
|
||||
"tpmWarnBody": "Windows 11 richiede normalmente TPM 2.0. Windows Server 2022 lo richiede per alcune funzioni di sicurezza, non per ogni installazione. ProxMenux aggiunge un TPM virtuale per Windows; la procedura guidata avanzata non consente di disattivarlo."
|
||||
},
|
||||
"storagePlan": {
|
||||
"heading": "Piano di archiviazione",
|
||||
"body": "Dopo CPU / RAM, ProxMenux apre il menu <strong>Storage Plan</strong>, dove è possibile combinare dischi virtuali, dischi importati e dispositivi passanti PCI nello stesso VM, aggiungendo elementi uno alla volta e terminando quando si è fatto.",
|
||||
"virtualDiskTitle": "a. Aggiungere disco virtuale",
|
||||
"virtualDiskItems": [
|
||||
"Elenca i volumi di archiviazione Proxmox disponibili sull'host.",
|
||||
"Scegli lo storage di destinazione e la dimensione in GB.",
|
||||
"Il disco usa il bus scelto: SCSI (predefinito), SATA, VirtIO o IDE. SATA offre sei posizioni numerate da 0 a 5: <code>sata0</code>, <code>sata1</code>, …."
|
||||
],
|
||||
"importDiskTitle": "b. Aggiungere disco di importazione",
|
||||
"importDiskItems": [
|
||||
"Rileva i dischi fisici che sono sicuri da importare (sistema e dischi protetti sono nascosti).",
|
||||
"Seleziona uno o più dischi tramite una lista di controllo.",
|
||||
"I dischi importati usano il bus scelto e vengono collegati tramite <code>qm set</code>."
|
||||
],
|
||||
"pciTitle": "C. Aggiungi controller o NVMe (passthrough PCI)",
|
||||
"pciItems": [
|
||||
"Rileva HBA SATA/SAS e dispositivi NVMe e consente di assegnare un <em>intero controller</em> alla VM. IOMMU deve essere attivo; lo script propone l’attivazione e un riavvio se necessario.",
|
||||
"Un passo di conferma avverte il rischio a livello del controller (l'intera carta, compreso ogni disco su di esso, lascia l'host).",
|
||||
"I dispositivi PCI vengono assegnati con comandi come <code>qm set VMID --hostpci0 PCI_ADDRESS,pcie=1</code>. Sostituisci VMID e PCI_ADDRESS con ID della VM e indirizzo PCI e usa un indice hostpci libero per ogni dispositivo."
|
||||
],
|
||||
"resetTitle": "Azzera e termina",
|
||||
"resetBody": "Il menu offre anche <strong>r</strong> (riimpostare la selezione attuale e ricominciare da capo) e <strong>d</strong> (finire e continuare). Non puoi finire con un piano vuoto."
|
||||
},
|
||||
"gpu": {
|
||||
"heading": "Passaggio opzionale GPU",
|
||||
"body": "Dopo il piano di archiviazione, se viene rilevato un GPU compatibile sull'host ProxMenux offre di lanciare l'assistente passthrough GPU. Vedere <gpuLink>Add GPU a un VM (Passthrough)</gpuLink> per come funziona l'assistente - un riavvio host può essere richiesto."
|
||||
},
|
||||
"autoFeatures": {
|
||||
"heading": "Caratteristiche automatiche VM",
|
||||
"efiTitle": "Disco EFI",
|
||||
"efiBody": "Quando OVMF (UEFI) viene selezionato, ProxMenux crea un disco di sistema EFI 4 MB sullo storage scelto e lo collega al VM in modo che il firmware UEFI abbia un posto per memorizzare le sue variabili.",
|
||||
"tpmTitle": "TPM 2.0",
|
||||
"tpmBody": "ProxMenux aggiunge un TPM 2.0 virtuale alle VM Windows. Soddisfa il requisito TPM di Windows 11 e supporta le funzioni Windows Server che dipendono da TPM.",
|
||||
"isoTitle": "Montaggio ISO",
|
||||
"isoBody": "L’ISO di installazione viene collegata a <code>ide2</code>. L’ISO dei driver VirtIO viene scaricata se necessario e collegata a <code>ide3</code> per il passaggio <em>Carica driver</em>.",
|
||||
"guestTitle": "Agente ospite QEMU",
|
||||
"guestBody": "Il canale dell'agente ospite è abilitato nella configurazione VM. L'agente stesso è installato all'interno di Windows eseguendo <code>virtio-win-guest-tools.exe</code> dopo l'installazione."
|
||||
},
|
||||
"installOptions": {
|
||||
"heading": "Opzioni di installazione di Windows",
|
||||
"intro": "ProxMenux offre due metodi per ottenere il supporto di installazione di Windows:",
|
||||
"uupTitle": "Creatore di ISO UUP Dump",
|
||||
"uupLogoAlt": "logo UUP Dump",
|
||||
"uupBody": "Lo script <strong>UUP Dump ISO Creator</strong> è un’utilità ProxMenux che crea una ISO Windows al momento dai server Windows Update di Microsoft. Scarica file di installazione ufficiali, incluse le build Insider Preview.",
|
||||
"uupItems": [
|
||||
"Accesso alle ultime versioni di Windows.",
|
||||
"Supporta le versioni Insider Preview.",
|
||||
"File di installazione Microsoft ufficiali e non modificati.",
|
||||
"Creazione e montaggio automatico ISO nel VM.",
|
||||
"Supporta le edizioni Home, Pro e Enterprise."
|
||||
],
|
||||
"uupLearnMore": "Scopri di più su UUP Dump ISO Creator",
|
||||
"localTitle": "Installare con ISO locale",
|
||||
"localBody": "Utilizza una ISO di Windows che hai già caricato sullo storage locale dell'host (<code>/var/lib/vz/template/iso</code>). Lo script elenca ogni ISO non-VirtIO che trova e ti permette di sceglierne uno.",
|
||||
"localImageAlt": "Menu di selezione ISO locale",
|
||||
"localImageCaption": "Menu di selezione ISO locale"
|
||||
},
|
||||
"endToEnd": {
|
||||
"heading": "Cosa fa lo script end-to-end",
|
||||
"items": [
|
||||
"Ottiene l’ISO Windows tramite UUP Dump o da una copia locale.",
|
||||
"Applica le impostazioni predefinite o avanzate di CPU, RAM, BIOS e tipo di macchina.",
|
||||
"Apre il piano di archiviazione e allega i dischi virtuali selezionati, i dischi importati e i dispositivi PCI.",
|
||||
"Crea il disco EFI per le installazioni UEFI e collega il dispositivo TPM 2.0.",
|
||||
"Monta l'ISO di Windows su <code>ide2</code>.",
|
||||
"Scarica e monta i driver VirtIO ISO su <code>ide3</code>.",
|
||||
"Imposta l'ordine di avvio (disco prima, poi ISO).",
|
||||
"Abilita il canale Agente Ospite QEMU.",
|
||||
"Opzionalmente gestisce l'assistente passante GPU.",
|
||||
"Genera una descrizione HTML stilizzata collegata al VM.",
|
||||
"Avvia la VM se hai scelto di farlo."
|
||||
]
|
||||
},
|
||||
"virtio": {
|
||||
"heading": "Driver VirtIO durante l'installazione",
|
||||
"body": "Il creatore di VM usa per impostazione predefinita dischi SCSI con controller VirtIO SCSI e una scheda di rete VirtIO. Una ISO Windows standard può richiedere i relativi driver dall’ISO VirtIO montata su <code>ide3</code>. I dischi SATA funzionano normalmente con i driver inclusi in Windows; scegliere SATA non cambia la scheda di rete VirtIO.",
|
||||
"warnTitle": "Carica il driver di rete VirtIO se Windows non ha rete",
|
||||
"warnBody": "La VM usa una scheda di rete VirtIO (<code>virtio</code>). Se Windows non include il driver, caricalo durante l’installazione per accedere alla rete. Altrimenti attivazione e Windows Update potrebbero non essere disponibili al primo avvio.",
|
||||
"stepLabel": "Passaggio",
|
||||
"steps": [
|
||||
{
|
||||
"title": "Accedi alla schermata \"Dove vuoi installare Windows?\"",
|
||||
"body": "Durante la configurazione di Windows, se non vengono mostrati dischi, il driver di archiviazione per l'interfaccia selezionata (SCSI o VirtIO) non è ancora caricato. Caricarlo manualmente dalla ISO VirtIO montata.",
|
||||
"img": "/vm/windows/virtio-step-1.png",
|
||||
"caption": "Configurazione di Windows senza dischi mostrati"
|
||||
},
|
||||
{
|
||||
"title": "Fare clic su \"Carica driver\"",
|
||||
"bodyRich": "Fai clic su <strong>Carica driver</strong>, sfoglia l’ISO VirtIO montata e scegli il driver di archiviazione adatto all’interfaccia selezionata.",
|
||||
"img": "/vm/windows/virtio-step-2.png",
|
||||
"caption": "Fai clic su Carica driver per sfogliare l’ISO VirtIO"
|
||||
},
|
||||
{
|
||||
"title": "Sfoglia nella cartella corretta del driver",
|
||||
"bodyRich": "Nell’ISO VirtIO scegli <code>vioscsi</code> per il controller VirtIO SCSI oppure <code>viostor</code> per i dischi a blocchi VirtIO. Scegli poi la sottocartella per versione Windows e architettura.",
|
||||
"img": "/vm/windows/virtio-step-3.png",
|
||||
"caption": "Sfoglia la cartella driver appropriata"
|
||||
},
|
||||
{
|
||||
"title": "Selezionare il driver",
|
||||
"bodyRich": "Windows elenca i driver disponibili. Scegliere quello che corrisponde alla configurazione (tipicamente <strong>Red Hat VirtIO SCSI controller</strong>) e fare clic su <strong>Next</strong>.",
|
||||
"img": "/vm/windows/virtio-step-4.png",
|
||||
"caption": "Selezionare il driver VirtIO che corrisponde all'interfaccia del disco"
|
||||
},
|
||||
{
|
||||
"title": "(Opzionale) Installare il driver di rete",
|
||||
"bodyRich": "Se hai anche scelto VirtIO come interfaccia di rete, carica il driver di rete dalla cartella <code>NetKVM</code> della stessa ISO, selezionando la sottocartella per la tua versione di Windows. Senza questo passaggio Windows installa senza accesso a Internet.",
|
||||
"img": "/vm/windows/virtio-step-5.png",
|
||||
"caption": "Caricare il driver di rete VirtIO per abilitare internet durante l'installazione"
|
||||
}
|
||||
],
|
||||
"tipTitle": "Post-installazione: eseguire virtio-win-guest-tools.exe",
|
||||
"tipBody": "Dopo aver installato Windows, apri l’ISO VirtIO in Esplora file ed esegui <code>virtio-win-guest-tools.exe</code>. Installa i driver rimanenti (rete, schermo, input, ballooning) e QEMU Guest Agent in un’unica operazione."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/utils/UUp-Dump-ISO-Creator",
|
||||
"label": "Creatore di ISO UUP Dump",
|
||||
"tail": "— generare ISO di installazione di Windows aggiornate sull'host Proxmox."
|
||||
},
|
||||
{
|
||||
"href": "/docs/disk-manager/import-disk-image-vm",
|
||||
"label": "Importa immagine disco nella VM",
|
||||
"tail": " — importa un’immagine disco Windows esistente (.vmdk, .qcow2, .img o .raw) in una VM esistente; converti prima le immagini .vhdx in un formato supportato."
|
||||
},
|
||||
{
|
||||
"href": "/docs/hardware/gpu-vm-passthrough",
|
||||
"label": "Aggiungi GPU a VM (Passthrough)",
|
||||
"tail": "— per le VM Windows con GPU ad accelerazione hardware."
|
||||
},
|
||||
{
|
||||
"href": "/docs/help-info/vm-ct-commands",
|
||||
"label": "Comandi di gestione VM e CT",
|
||||
"tail": "— riferimento qm CLI."
|
||||
},
|
||||
{
|
||||
"href": "/docs/create-vm",
|
||||
"label": "Panoramica della creazione di VM",
|
||||
"tail": "."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,128 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Aggiungi controller o NVMe a VM | Documentazione ProxMenux",
|
||||
"description": "Passthrough PCI di un controller di archiviazione (HBA SATA/SAS) o di un dispositivo NVMe a una VM Proxmox con ProxMenux. Gestisce l’attivazione di IOMMU, il rilevamento dei conflitti e l’assegnazione con qm set --hostpci.",
|
||||
"ogTitle": "Aggiungi controller o NVMe a VM | Documentazione ProxMenux",
|
||||
"ogDescription": "Assegna un intero HBA SATA/SAS o un dispositivo NVMe a una VM Proxmox. ProxMenux gestisce IOMMU, il rilevamento dei conflitti e l’assegnazione hostpci."
|
||||
},
|
||||
"header": {
|
||||
"title": "Aggiungi controller o NVMe a VM",
|
||||
"description": "Assegna un intero adattatore bus host SATA/SAS (HBA) o un dispositivo NVMe a una VM Proxmox tramite passthrough PCI. ProxMenux verifica IOMMU e, con il tuo consenso, lo abilita, elenca i dispositivi idonei, esclude i conflitti e configura l’assegnazione con qm set --hostpci.",
|
||||
"section": "Gestione del disco · VM"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Ciò che fa (e non fa)",
|
||||
"body": "Si tratta di <strong>passthrough a livello di dispositivo</strong>: la scheda PCIe esce dal controllo del kernel dell’host e viene associata a <code>vfio-pci</code>. La VM vede il controller stesso, anziché singoli dischi passati separatamente, e carica il proprio driver per quel modello. Tutti i dischi collegati lo seguono automaticamente, con dati SMART nativi, tutte le funzioni del firmware e nessuno strato Proxmox intermedio."
|
||||
},
|
||||
"howRuns": {
|
||||
"heading": "Come funziona lo script",
|
||||
"body": "Il flusso ha due fasi distinte: raccolta delle informazioni, verifica di IOMMU ed elenco dei candidati; poi assegnazione effettiva del dispositivo PCI. Fino alla conferma finale non viene scritto nulla nella configurazione della VM."
|
||||
},
|
||||
"iommu": {
|
||||
"heading": "Gruppi IOMMU: perché occorre considerare l’intera scheda",
|
||||
"body": "Il confine di isolamento del passthrough PCI è il <strong>gruppo IOMMU</strong>, la più piccola unità isolabile dall’IOMMU della CPU. I dispositivi nello stesso gruppo non possono essere isolati tra loro. Se un controller SATA condivide il gruppo con un controller USB, il passthrough SATA può richiedere di liberare anche l’USB dall’host oppure risultare impossibile. Non assegna automaticamente alla VM tutti i dispositivi del gruppo.",
|
||||
"outro": "ProxMenux mostra il gruppo IOMMU accanto a ogni dispositivo e avvisa se il gruppo comprende altri dispositivi oltre al controller desiderato. Puoi procedere se gli altri dispositivi sono accettabili, ad esempio se sono tutti controller disco, oppure annullare."
|
||||
},
|
||||
"prereqs": {
|
||||
"heading": "Prerequisiti",
|
||||
"items": [
|
||||
"<strong>CPU e scheda madre supportano</strong> VT-d (Intel) o AMD-Vi, e la funzione è abilitata nel firmware (BIOS/UEFI). ProxMenux può abilitare la parte kernel, ma non modificare l’impostazione del firmware.",
|
||||
"La VM di destinazione è <strong>spenta</strong> prima di collegare dispositivi PCI.",
|
||||
"Il controller/NVMe <strong>non ospita il filesystem root di Proxmox</strong>. Lo script nasconde tutto ciò che è in uso dall’host.",
|
||||
"Il sistema operativo guest dispone dei driver per il modello del controller. Linux supporta quasi tutti gli HBA senza driver aggiuntivi; Windows richiede il driver del produttore installato <em>prima</em> di avviare con il controller collegato."
|
||||
],
|
||||
"warnTitle": "La migrazione dal vivo non è possibile",
|
||||
"warnBody": "Un VM con passante PCI è legato al nodo che tiene fisicamente la scheda. La migrazione dal vivo attraverso i nodi fallirà. Pianifica backup / replica di conseguenza."
|
||||
},
|
||||
"steps": {
|
||||
"heading": "Passo dopo passo",
|
||||
"stepLabel": "Passaggio",
|
||||
"list": [
|
||||
{
|
||||
"title": "Scegli la VM di destinazione",
|
||||
"bodyRich": "ProxMenux legge <code>qm list</code> e mostra tutte le VM. Scegli quella che riceverà il controller.",
|
||||
"img": "/disk/nvme-passthrough/vm-selection.png",
|
||||
"alt": "dialogo di selezione VM",
|
||||
"caption": "dialogo di selezione VM"
|
||||
},
|
||||
{
|
||||
"title": "Controllo IOMMU",
|
||||
"bodyRich": "Se IOMMU non è abilitato sul kernel cmdline, ProxMenux offre per abilitarlo. Modifica <code>/etc/kernel/cmdline</code> (per systemd-boot) o <code>/etc/default/grub</code> (per GRUB) e aggiunge il parametro corretto per il tuo CPU:",
|
||||
"items": [
|
||||
"<code>intel_iommu=on</code> per CPU Intel.",
|
||||
"<code>amd_iommu=on</code> per CPU AMD."
|
||||
],
|
||||
"outro": "Un riavvio è richiesto dopo questo cambiamento. Lo script richiede di riavviare ora o più tardi; il passthrough non può continuare fino a quando il nuovo kernel cmdline è attivo.",
|
||||
"img": "/disk/nvme-passthrough/iommu-warning.png",
|
||||
"alt": "Finestra IOMMU richiesto",
|
||||
"caption": "IOMMU richiesto — offerta per abilitare e riavviare"
|
||||
},
|
||||
{
|
||||
"title": "Enumerazione del dispositivo",
|
||||
"body": "ProxMenux elenca ogni controller di archiviazione (SATA / SAS HBA) e ogni dispositivo NVMe sul bus PCI. Per ogni dispositivo mostra:",
|
||||
"items": [
|
||||
"Indirizzo PCI (<code>00:17.0</code>, <code>01:00.0</code>, ...).",
|
||||
"Descrizione del produttore e del dispositivo.",
|
||||
"gruppo IOMMU — e un avviso ⚠ se il gruppo è condiviso con altri dispositivi non correlati.",
|
||||
"I dischi attualmente dietro il controller (quindi sai cosa lo seguirà al VM)."
|
||||
],
|
||||
"img": "/disk/nvme-passthrough/device-list.png",
|
||||
"alt": "Elenco dei controller e dei dispositivi NVMe",
|
||||
"caption": "Elenco dei controller e dei dispositivi NVMe con informazioni sui gruppi IOMMU"
|
||||
},
|
||||
{
|
||||
"title": "Rilevamento dei conflitti",
|
||||
"bodyRich": "Lo script blocca i dispositivi chiaramente non sicuri: quelli già assegnati a un’altra VM tramite <code>hostpci</code> nella relativa configurazione, quelli in uso dall’host come il controller del disco root e quelli in un gruppo IOMMU i cui altri membri non possono essere identificati con sicurezza. I dispositivi idonei sono disponibili per la selezione.",
|
||||
"img": "/disk/nvme-passthrough/conflict-warning.png",
|
||||
"alt": "Avvertenza di rilevamento conflitti",
|
||||
"caption": "Rilevamento di conflitti — dispositivo bloccato con ragione"
|
||||
},
|
||||
{
|
||||
"title": "Assegna e concludi",
|
||||
"bodyRich": "Per ogni dispositivo selezionato ProxMenux esegue <code>qm set <VMID> --hostpciN <pci-addr>,pcie=1</code>, scegliendo il successivo slot <code>hostpci</code> libero. Se IOMMU è stato abilitato durante questa sessione, viene ricordato di riavviare l’host prima di avviare la VM.",
|
||||
"img": "/disk/nvme-passthrough/assignment.png",
|
||||
"alt": "Riepilogo delle assegnazioni",
|
||||
"caption": "Riepilogo delle assegnazioni — slot hostpciN e indirizzi PCI allegati"
|
||||
}
|
||||
]
|
||||
},
|
||||
"manual": {
|
||||
"heading": "Equivalente manuale"
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Risoluzione dei problemi",
|
||||
"noGroupsTitle": "IOMMU abilitato ma nessun gruppo sotto /sys/kernel/iommu_groups/",
|
||||
"noGroupsBody": "È necessario riavviare perché la nuova riga di comando del kernel abbia effetto. Se i gruppi mancano ancora dopo il riavvio, VT-d/AMD-Vi è probabilmente disabilitato nel firmware: controlla le impostazioni BIOS/UEFI.",
|
||||
"busyTitle": "La VM non si avvia: \"hostpciN: device busy\"",
|
||||
"busyBody": "Un altro processo mantiene occupato il dispositivo PCI. Le cause più comuni sono una VM arrestatasi in modo anomalo senza liberarlo o il kernel dell’host che lo ha ripreso all’ultimo avvio. Esegui <code>lspci -nnk -s <addr></code> per vedere il driver associato: dovrebbe essere <code>vfio-pci</code>. Un riavvio completo dell’host solitamente risolve il problema.",
|
||||
"noDisksTitle": "Guest vede il controller ma non i dischi",
|
||||
"noDisksBody": "Nel guest manca il driver per il modello del controller. Su Linux succede raramente, su Windows sì: installa il driver del produttore, ad esempio LSI/Broadcom per i vecchi HBA SAS, mentre la scheda non è assegnata, poi riavvia con la scheda assegnata.",
|
||||
"sharedTitle": "Il gruppo IOMMU include un dispositivo non correlato",
|
||||
"sharedBody": "Opzioni: (a) spostare la scheda in una diversa slot PCIe per cambiare il suo gruppo, (b) abilitare <em>ACS override</em> nel kernel per dividere i gruppi (sicurezza trade-off - ricerca prima di applicare), o (c) scegliere una scheda diversa in un gruppo più pulito."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/disk-manager/import-disk-vm",
|
||||
"label": "Importa disco nella VM",
|
||||
"tail": "— modello alternativo: collegare un disco fisico tramite Proxmox senza passante PCIe completo."
|
||||
},
|
||||
{
|
||||
"href": "/docs/hardware/gpu-vm-passthrough",
|
||||
"label": "Aggiungi GPU a VM (Passthrough)",
|
||||
"tail": "— stessi concetti IOMMU / VFIO applicati a un GPU."
|
||||
},
|
||||
{
|
||||
"href": "/docs/help-info/gpu-commands",
|
||||
"label": "Comandi di passaggio GPU",
|
||||
"tail": "— I comandi di verifica IOMMU si applicano anche al controller / passthrough NVMe."
|
||||
},
|
||||
{
|
||||
"href": "/docs/disk-manager",
|
||||
"label": "Panoramica di Disk Manager",
|
||||
"tail": "."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,142 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Formatta o cancella un disco fisico | Documentazione ProxMenux",
|
||||
"description": "Cancella e formatta dischi fisici su Proxmox VE con ProxMenux. Quattro modalità, filtri rigorosi che escludono i dischi di sistema, montati o in uso e doppia conferma con inserimento del percorso completo.",
|
||||
"ogTitle": "Formatta o cancella un disco fisico | Documentazione ProxMenux",
|
||||
"ogDescription": "Pulire in modo sicuro o formattare un disco fisico su Proxmox. Regole di visibilità sicure, modalità di funzionamento 4, doppia conferma."
|
||||
},
|
||||
"header": {
|
||||
"title": "Formatta o cancella un disco fisico",
|
||||
"description": "Cancella in modo sicuro o formatta un disco fisico sull’host Proxmox. ProxMenux mostra solo i dischi completamente liberi: nessun uso da parte del sistema, nessun riferimento nei guest e nessun filesystem montato. Prima di distruggere i dati richiede una doppia conferma: sì/no e inserimento del percorso completo del disco.",
|
||||
"section": "Disk Manager · Utilità"
|
||||
},
|
||||
"danger": {
|
||||
"title": "Strumento distruttivo",
|
||||
"body": "Ogni operazione scrive sul disco e non può essere annullata. ProxMenux applica filtri e conferme rigorosi, ma la responsabilità di scegliere il disco corretto è tua. Leggi il percorso del disco ad alta voce due volte prima di digitarlo."
|
||||
},
|
||||
"howRuns": {
|
||||
"heading": "Come funziona lo script",
|
||||
"body": "Il flusso ha due fasi con un filtro di sicurezza a tripla porta in mezzo. L'elenco dei dischi, la modalità di funzionamento e i dettagli del file system sono tutti raccolti in Fase 1; nulla è scritto fino a quando la Fase 2 passa una ri-validazione finale prima di eseguire."
|
||||
},
|
||||
"visibility": {
|
||||
"heading": "Regole di visibilità",
|
||||
"intro": "Prima che il menu venga visualizzato, ProxMenux filtra l'elenco dei dischi. Solo i candidati che sono provabilmente sicuri sono mostrati:",
|
||||
"items": [
|
||||
"<strong>Mostrati</strong>: dischi <em>non</em> usati dall’host (pool root, swap, filesystem montati, ZFS/LVM/RAID attivi) e <em>non</em> citati in configurazioni VM/LXC, sia avviate sia arrestate.",
|
||||
"<strong>Nascosti</strong>: dischi dell’host e di sistema.",
|
||||
"<strong>Nascosti</strong>: dischi citati in una configurazione VM/LXC."
|
||||
],
|
||||
"safetyTitle": "Sicurezza alla conferma e all'esecuzione",
|
||||
"safetyItems": [
|
||||
"I dischi con metadati obsoleti o attivi mostrano avvisi dettagliati <em>prima</em> della conferma.",
|
||||
"I dischi usati da una VM <strong>in esecuzione</strong> sono <strong>bloccati senza possibilità di procedere</strong> alla conferma.",
|
||||
"I dischi con partizioni montate sono <strong>bloccati senza possibilità di procedere</strong> all’esecuzione. Una nuova verifica avviene subito prima di qualsiasi scrittura.",
|
||||
"Sono sempre necessarie due conferme: una finestra <em>sì/no</em> e l’inserimento esatto del percorso completo del disco."
|
||||
]
|
||||
},
|
||||
"modes": {
|
||||
"heading": "Modalità di funzionamento",
|
||||
"intro": "Dopo aver scelto un disco si sceglie una delle quattro modalità. Essi differiscono in quello che distruggono e ciò che lasciano dietro:",
|
||||
"headerMode": "Modalità",
|
||||
"headerPart": "Tabella delle partizioni",
|
||||
"headerData": "Dati",
|
||||
"headerUseCase": "Caso di utilizzo",
|
||||
"rows": [
|
||||
{
|
||||
"mode": "1. Pulisci tutto",
|
||||
"part": "Distrutto",
|
||||
"data": "Firme cancellate",
|
||||
"useCase": "Rimuove la tabella delle partizioni e i metadati di file system e RAID, azzera i primi e gli ultimi 16 MiB e, sulle unità che supportano discard, esegue il TRIM dell’intero disco. Il resto dei dati non viene sovrascritto e su un HDD potrebbe essere ancora recuperabile; non è una cancellazione sicura."
|
||||
},
|
||||
{
|
||||
"mode": "2. Rimuovere le etichette FS",
|
||||
"part": "Conservato",
|
||||
"data": "Conservato",
|
||||
"useCase": "Rimuove le vecchie firme ZFS / LVM / RAID per evitare l’acquisizione automatica del disco. I dati utente non vengono sovrascritti in massa, ma la rimozione delle firme può renderli inaccessibili."
|
||||
},
|
||||
{
|
||||
"mode": "3. Sovrascrivi i dati con zeri",
|
||||
"part": "Conservato",
|
||||
"data": "Distrutti (sovrascritti con zeri)",
|
||||
"useCase": "Sovrascrive con zeri le partizioni esistenti conservando la tabella delle partizioni. Non comprende lo spazio non allocato e le aree di riserva degli SSD; non garantisce una sanificazione completa del dispositivo."
|
||||
},
|
||||
{
|
||||
"mode": "4. Formattazione completa",
|
||||
"part": "Nuovo GPT",
|
||||
"data": "Distrutto",
|
||||
"useCase": "Disco pronto all'uso con una singola nuova partizione e un filesystem fresco."
|
||||
}
|
||||
],
|
||||
"fullFormatOutro": "<strong>Formattazione completa</strong> prosegue con altre due finestre:",
|
||||
"fullFormatItems": [
|
||||
"<strong>Filesystem</strong>: <code>ext4</code>, <code>xfs</code>, <code>exfat</code> (portabile) o <code>btrfs</code>. Se mancano strumenti come <code>mkfs.btrfs</code>, l’operazione si interrompe con un messaggio chiaro.",
|
||||
"<strong>Etichetta</strong>: etichetta facoltativa del filesystem per identificarlo."
|
||||
]
|
||||
},
|
||||
"steps": {
|
||||
"heading": "Passo dopo passo",
|
||||
"stepLabel": "Passaggio",
|
||||
"list": [
|
||||
{
|
||||
"title": "Scegli un disco libero",
|
||||
"body": "ProxMenux elenca ogni disco che passa i filtri di visibilità sopra. I dischi con marcatori ⚠ portano metadati stanti e vengono mostrati con i dettagli in modo da sapere cosa stai per sovrascrivere."
|
||||
},
|
||||
{
|
||||
"title": "Scegli una modalità di funzionamento",
|
||||
"bodyRich": "Scegli <strong>Pulisci tutto</strong>, <strong>Rimuovere le etichette FS</strong>, <strong>Sovrascrivi i dati con zeri</strong> o <strong>Formattazione completa</strong> secondo la tabella sopra."
|
||||
},
|
||||
{
|
||||
"title": "(Solo formattazione completa) Scegli filesystem ed etichetta",
|
||||
"body": "ext4 / xfs / exfat / btrfs, più un'etichetta opzionale."
|
||||
},
|
||||
{
|
||||
"title": "Confermare due volte",
|
||||
"bodyRich": "ProxMenux mostra un riassunto di ciò che accadrà. Si accetta con una finestra di dialogo sì/no e <strong> digitare il percorso completo del disco</strong> esattamente come mostrato (ad esempio <code>/dev/sdc</code>). Tutto il resto si interrompe."
|
||||
},
|
||||
{
|
||||
"title": "Nuova verifica ed esecuzione",
|
||||
"body": "Subito prima di scrivere, lo script ricontrolla lo stato del disco. Se nel frattempo è stata montata una partizione o avviata una VM, l’esecuzione viene annullata. Altrimenti viene eseguita l’operazione scelta e mostrato un riepilogo finale."
|
||||
}
|
||||
]
|
||||
},
|
||||
"manual": {
|
||||
"heading": "Equivalenti manuali",
|
||||
"body": "Se si preferisce eseguire i comandi equivalenti a mano:"
|
||||
},
|
||||
"troubleshoot": {
|
||||
"notListedTitle": "Disco non elencato nel menu",
|
||||
"notListedBody": "È stato filtrato per la sicurezza. Motivi comuni: è montato (anche a <code>/mnt/tmp</code>), è un membro attivo ZFS / LVM / RAID, è riferito da una configurazione VM o LXC, o è il disco radice Proxmox. Eseguire <code>lsblk -f</code> e <code>cat /proc/mdstat</code> sull'host per capire perché.",
|
||||
"busyTitle": "\"Disk may be busy\" / smontaggio non riuscito",
|
||||
"busyBody": "Un processo mantiene aperto un file in una partizione del disco, spesso un contenitore o una shell la cui directory corrente si trova nel punto di mount. Identificalo con <code>lsof | grep /dev/sdX</code> o <code>fuser -vm /dev/sdX1</code>, arrestalo e riesegui lo strumento."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/disk-manager/smart-disk-test",
|
||||
"label": "Integrità e test disco SMART",
|
||||
"tail": "— controllare un disco prima / dopo aver pulito per confermare che è sano."
|
||||
},
|
||||
{
|
||||
"href": "/docs/disk-manager/import-disk-vm",
|
||||
"label": "Importa disco nella VM",
|
||||
"tail": "— passare un disco appena formattato a un VM."
|
||||
},
|
||||
{
|
||||
"href": "/docs/storage-share/host-local-disk",
|
||||
"label": "Aggiungere disco locale come archiviazione Proxmox",
|
||||
"tail": "— registrare un disco cancellato come un pool di archiviazione Proxmox."
|
||||
},
|
||||
{
|
||||
"href": "/docs/help-info/storage-commands",
|
||||
"label": "Comandi di archiviazione e dischi",
|
||||
"tail": " — riferimento per lsblk, blkid e parted."
|
||||
},
|
||||
{
|
||||
"href": "/docs/disk-manager",
|
||||
"label": "Panoramica di Disk Manager",
|
||||
"tail": "."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,110 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Importa immagine del disco a VM | Documentazione ProxMenux",
|
||||
"description": "Importa un file immagine disco (.img / .qcow2 / .vmdk / .raw) in una VM Proxmox esistente con ProxMenux. Interfaccia, emulazione SSD e opzione di avvio per ogni immagine, tramite qm importdisk.",
|
||||
"ogTitle": "Importa immagine del disco a VM | Documentazione ProxMenux",
|
||||
"ogDescription": "Importare .img / .qcow2 / .vmdk / .raw immagini disco in un VM esistente con ProxMenux. Utilizza qm importdisk sotto il cofano."
|
||||
},
|
||||
"header": {
|
||||
"title": "Importa immagine disco nella VM",
|
||||
"description": "Importa un file immagine disco (.img, .qcow2, .vmdk o .raw) in una VM Proxmox esistente. ProxMenux raccoglie prima tutte le scelte: VM di destinazione, storage Proxmox, directory sorgente, interfaccia, emulazione SSD e ordine di avvio. Poi esegue qm importdisk per ogni immagine selezionata.",
|
||||
"section": "Gestione del disco · VM"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Che cosa fa",
|
||||
"body": "A differenza di <em>Importa disco nella VM</em>, che collega un disco fisico direttamente, questa procedura usa un <strong>file</strong> sull’host, esportato da un altro hypervisor, scaricato come immagine cloud o estratto da un backup. Lo converte in un disco di VM Proxmox sullo storage scelto. Il file originale viene conservato: ProxMenux lo copia senza spostarlo."
|
||||
},
|
||||
"howRuns": {
|
||||
"heading": "Come funziona lo script",
|
||||
"body": "Il flusso ha due fasi. La prima raccoglie tutte le scelte tramite finestre di dialogo: VM, storage, directory sorgente, immagini e opzioni per ciascuna immagine. La seconda esegue <code>qm importdisk</code> per ogni immagine selezionata. Prima della seconda fase non viene copiato nulla né modificata la configurazione della VM."
|
||||
},
|
||||
"prereqs": {
|
||||
"heading": "Prerequisiti",
|
||||
"items": [
|
||||
"Almeno una VM è definita sull’host. La VM di destinazione dovrebbe essere <strong>spenta</strong>.",
|
||||
"Almeno un file di immagine di un formato supportato nella directory sorgente. Supportato: <code>.img</code>, <code>.qcow2</code>, <code>.vmdk</code>, <code>.raw</code>.",
|
||||
"Abbastanza spazio libero sullo storage Proxmox di destinazione per tenere ogni disco importato.",
|
||||
"ProxMenux cerca le immagini in <code>/var/lib/vz/template/iso</code> per impostazione predefinita. È possibile indicarlo a qualsiasi altra directory sull'host quando chiede."
|
||||
]
|
||||
},
|
||||
"steps": {
|
||||
"heading": "Passo dopo passo",
|
||||
"stepLabel": "Passaggio",
|
||||
"list": [
|
||||
{
|
||||
"title": "Scegli la VM di destinazione",
|
||||
"bodyRich": "ProxMenux legge <code>qm list</code> e mostra tutte le VM. Scegli quella che riceverà i dischi importati."
|
||||
},
|
||||
{
|
||||
"title": "Scegli lo storage Proxmox",
|
||||
"bodyRich": "L'elenco contiene ogni archiviazione che ha il tipo di contenuto <code>images</code> abilitato. Se c'è solo un candidato è selezionato automaticamente e la finestra di dialogo è saltata."
|
||||
},
|
||||
{
|
||||
"title": "Scegli la directory sorgente",
|
||||
"bodyRich": "Scegliere la directory predefinita (<code>/var/lib/vz/template/iso</code>) o digitare un percorso personalizzato — in genere dove hai scaricato / caricato l'immagine. Lo script rifiuta i percorsi che non esistono."
|
||||
},
|
||||
{
|
||||
"title": "Scegli una o più immagini",
|
||||
"bodyRich": "La directory viene scansionata per i file <code>.img</code> / <code>.qcow2</code> / <code>.vmdk</code> / <code>.raw</code>. È possibile selezionare diversi in una sola volta; ognuno passerà attraverso le opzioni per-immagine nella fase successiva."
|
||||
},
|
||||
{
|
||||
"title": "Opzioni per immagine",
|
||||
"intro": "Per ogni immagine selezionata ProxMenux chiede:",
|
||||
"items": [
|
||||
"<strong>Interface</strong> — <code>scsi</code> (default), <code>virtio</code>, <code>sata</code> o <code>ide</code>. Corrisponde a come l'ospite vedrà il disco.",
|
||||
"<strong>Emulazione SSD</strong>: disponibile solo per interfacce diverse da VirtIO. Aggiunge <code>ssd=1</code> affinché il guest riconosca un disco a stato solido. Il supporto discard/TRIM va configurato separatamente.",
|
||||
"<strong>Avviabile</strong>: scegliendo sì, ProxMenux aggiunge il disco all’ordine di avvio come dispositivo principale della VM."
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Importa e collega",
|
||||
"bodyRich": "ProxMenux esegue <code>qm importdisk</code> per ogni immagine, convertendo il formato se necessario, e collega il disco al successivo slot libero (<code>scsiN</code>, <code>sataN</code>, …) con le opzioni scelte. Se hai segnato un disco come avviabile, aggiorna l’ordine di avvio. L’avanzamento compare nel terminale."
|
||||
}
|
||||
]
|
||||
},
|
||||
"manual": {
|
||||
"heading": "Equivalente manuale",
|
||||
"body": "L’importazione di una singola immagine corrisponde a tre comandi <code>qm</code>:",
|
||||
"warnTitle": "Conversione formato immagine",
|
||||
"warnBody": "Quando lo storage di destinazione non può contenere il formato sorgente in modo nativo (ad esempio, lo storage LVM non può contenere <code>.qcow2</code>), <code>qm importdisk</code> converte l'immagine in modo trasparente. Questo può richiedere diversi minuti per immagini multi-GB; pianificare di conseguenza e non interrompere lo script."
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Risoluzione dei problemi",
|
||||
"noImagesTitle": "\"Non sono state trovate immagini disco compatibili\"",
|
||||
"noImagesBody": "Lo script non ha trovato file <code>.img</code>, <code>.qcow2</code>, <code>.vmdk</code> o <code>.raw</code>. Controlla l’estensione, distinguendo maiuscole e minuscole, che il file sia direttamente nella directory scelta (le sottodirectory non vengono cercate) e che root possa leggerlo.",
|
||||
"slowTitle": "L'importazione è lenta",
|
||||
"slowBody": "Le conversioni tra VMDK, QCOW2 e raw possono essere limitate da CPU e I/O. La velocità dipende dalle letture all’origine, dalle scritture a destinazione e dall’eventuale decompressione. Preferisci sorgenti raw o qcow2 quando possibile.",
|
||||
"uefiTitle": "Il disco importato si avvia nella shell UEFI",
|
||||
"uefiBody": "L'immagine è stata costruita per legacy (SeaBIOS) ma il VM utilizza OVMF (o viceversa). O commutare il VM di BIOS in Proxmox per abbinare l'immagine, o ricostruire l'immagine nella modalità corretta prima dell'importazione."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/disk-manager/import-disk-vm",
|
||||
"label": "Importa disco nella VM",
|
||||
"tail": "— stesso flusso ma per dischi fisici grezzi (passthrough)."
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils/import-vm",
|
||||
"label": "Importa VM da OVA / OVF",
|
||||
"tail": "— quando hai un pacchetto completo VM, non solo un'immagine del disco."
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils/UUp-Dump-ISO-Creator",
|
||||
"label": "Creatore di ISO UUP Dump",
|
||||
"tail": "— generare una ISO di Windows se ne avete bisogno per una nuova installazione."
|
||||
},
|
||||
{
|
||||
"href": "/docs/help-info/storage-commands",
|
||||
"label": "Comandi di archiviazione e dischi",
|
||||
"tail": " — riferimento per qm importdisk e qemu-img convert."
|
||||
},
|
||||
{
|
||||
"href": "/docs/disk-manager",
|
||||
"label": "Panoramica di Disk Manager",
|
||||
"tail": "."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,115 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Importa disco in LXC | Documentazione ProxMenux",
|
||||
"description": "Collega un disco fisico a un contenitore LXC esistente su Proxmox VE con ProxMenux. Gestisce rilevamento e formattazione del filesystem, punto di mount, conversione da non privilegiato a privilegiato e percorsi persistenti dei dispositivi.",
|
||||
"ogTitle": "Importa disco in LXC | Documentazione ProxMenux",
|
||||
"ogDescription": "Collega un disco fisico a un contenitore LXC esistente. Gestisce filesystem, punto di mount e conversione da non privilegiato a privilegiato."
|
||||
},
|
||||
"header": {
|
||||
"title": "Importa disco su LXC",
|
||||
"description": "Collegare un disco fisico a un contenitore LXC esistente sull'host Proxmox. ProxMenux rileva dischi liberi, li formatta facoltativamente con un filesystem supportato, e collega la partizione a un punto di montaggio all'interno del contenitore utilizzando percorsi di dispositivo persistenti.",
|
||||
"section": "Gestione del disco · LXC"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Passthrough VM e passthrough LXC",
|
||||
"body": "Questo passthrough LXC <strong>non fornisce un dispositivo a blocchi grezzo</strong>. Il contenitore riceve un <em>punto di mount</em>, cioè una directory su una partizione scelta nell’host. A differenza di una VM, usa il kernel dell’host: il filesystem (ext4/xfs/btrfs) viene quindi letto e gestito dall’host Proxmox ed esposto al contenitore."
|
||||
},
|
||||
"howRuns": {
|
||||
"heading": "Come funziona lo script",
|
||||
"body": "Il flusso ha due fasi distinte: raccolta di informazioni e scelte, poi modifica effettiva della configurazione del contenitore. Fino alla conferma finale non viene montato nulla nel CT.",
|
||||
"summary": "ProxMenux esclude il disco root, i dischi montati e quelli citati in configurazioni VM/LXC. I membri attivi ZFS/LVM/RAID sono nascosti; le vecchie firme sono segnalate con ⚠ per poterle cancellare prima della formattazione."
|
||||
},
|
||||
"prereqs": {
|
||||
"heading": "Prerequisiti",
|
||||
"items": [
|
||||
"Almeno un contenitore LXC definito sull'host.",
|
||||
"Il contenitore è <strong>privilegiato</strong> oppure accetti la conversione proposta dallo script.",
|
||||
"Almeno un disco fisico non in uso dall'host o da qualsiasi altro ospite."
|
||||
],
|
||||
"warnTitle": "Contenitore privilegiato richiesto",
|
||||
"warnBody": "Questo script richiede un contenitore <strong>privilegiato</strong> per collegare direttamente il disco. Se rileva <code>unprivileged: 1</code>, propone di modificare <code>/etc/pve/lxc/<CTID>.conf</code> sul posto. Ciò cambia il modello di sicurezza senza rimappare i proprietari dei file esistenti. Salva un backup e verifica i proprietari prima di accettare, oppure ricrea il contenitore come privilegiato."
|
||||
},
|
||||
"steps": {
|
||||
"heading": "Passo dopo passo",
|
||||
"stepLabel": "Passaggio",
|
||||
"list": [
|
||||
{
|
||||
"title": "Scegli il contenitore di destinazione",
|
||||
"img": "/disk/select-container.png",
|
||||
"caption": "Menu di selezione del contenitore",
|
||||
"bodyRich": "ProxMenux elenca tutti i contenitori LXC sull’host (<code>pct list</code>). Scegli quello che riceverà il disco. Se non è privilegiato, viene proposta la conversione."
|
||||
},
|
||||
{
|
||||
"title": "Scegli il disco fisico",
|
||||
"img": "/disk/disk-selection-ct.png",
|
||||
"caption": "Dischi liberi rilevati sull’host, con ⚠ per i metadati obsoleti",
|
||||
"bodyRich": "Vengono mostrati solo candidati sicuri. A differenza della procedura per VM, questo script collega <strong>un disco per esecuzione</strong>. Rieseguilo per ogni disco aggiuntivo."
|
||||
},
|
||||
{
|
||||
"title": "Formatta o riutilizza",
|
||||
"intro": "Lo script ispeziona il disco:",
|
||||
"items": [
|
||||
"Se già trasporta un filesystem supportato (ext4 / xfs / btrfs) è possibile riutilizzarlo come-è (i file esistenti sono conservati).",
|
||||
"Se non ha un filesystem supportato, ti viene offerto di formattarlo. Scegli ext4 / xfs / btrfs."
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Scegli il punto di montaggio",
|
||||
"bodyRich": "Inserisci il percorso in cui il contenitore vedrà il disco, ad esempio <code>/mnt/data</code> o <code>/mnt/disk_passthrough</code>. È il percorso <em>all’interno</em> del contenitore; l’host vede già la partizione in <code>/dev/disk/by-id/…</code>."
|
||||
},
|
||||
{
|
||||
"title": "Collega e verifica",
|
||||
"img": "/disk/assignment-ct.png",
|
||||
"caption": "Assegnazione a CT",
|
||||
"bodyRich": "ProxMenux aggiunge una nuova voce <code>mpN:</code> alla configurazione del container, evitando gli indici già in uso, quindi rilegge la configurazione per verificarla. Se il container è in esecuzione, il montaggio viene applicato subito; altrimenti entrerà in funzione al prossimo avvio.",
|
||||
"extraImg": "/disk/result-point.png",
|
||||
"extraAlt": "Punto di montaggio creato con successo",
|
||||
"extraCaption": "Punto di montaggio creato e verificato"
|
||||
}
|
||||
]
|
||||
},
|
||||
"manual": {
|
||||
"heading": "Equivalente manuale",
|
||||
"body": "Lo script avvolge <code>pct set</code>. Un'invocazione diretta per un singolo disco sembra:"
|
||||
},
|
||||
"important": {
|
||||
"heading": "Considerazioni importanti",
|
||||
"items": [
|
||||
"<strong>Un disco per esecuzione</strong>. Riesegui lo script per ogni disco aggiuntivo.",
|
||||
"<strong>non</strong> collegare la stessa partizione a diversi contenitori che potrebbero montarla simultaneamente: le scritture simultanee corrompono il filesystem.",
|
||||
"<strong>I vecchi metadati</strong> (firme RAID/ZFS/LVM) vanno cancellati manualmente prima che lo script consenta di formattare, altrimenti <code>mkfs</code> rifiuta di sovrascrivere. Usa <wipeLink>Formatta o cancella un disco fisico</wipeLink>."
|
||||
]
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Risoluzione dei problemi",
|
||||
"unprivTitle": "\"Impossibile proseguire con un contenitore non privilegiato\"",
|
||||
"unprivBody": "Hai rifiutato la conversione, quindi lo script si è fermato senza modificare nulla. Per continuare, eseguilo di nuovo e accetta: lo script arresta il contenitore, salva la sua configurazione in <code>/etc/pve/lxc/<CTID>.conf.bak</code> e sostituisce <code>unprivileged: 1</code> con <code>unprivileged: 0</code>. Questa modifica da sola non converte la proprietà UID/GID dei file esistenti: esegui prima un backup del contenitore e correggi i proprietari, oppure ripristina o ricrea il contenitore come privilegiato.",
|
||||
"permsTitle": "Le autorizzazioni all'interno del contenitore sono sbagliate",
|
||||
"permsBody": "Montare una partizione in un contenitore privilegiato conserva i proprietari esistenti; un filesystem appena formattato appartiene spesso a <code>root:root</code>. Se il servizio usa un altro utente, ad esempio <code>www-data</code> per Nextcloud, controlla UID/GID e modifica i file necessari con <code>chown</code>/<code>chmod</code>. Le modifiche agiscono anche sul disco sottostante."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/disk-manager/import-disk-vm",
|
||||
"label": "Importa disco nella VM",
|
||||
"tail": "— flusso equivalente per le VM."
|
||||
},
|
||||
{
|
||||
"href": "/docs/storage-share/lxc-mount-points",
|
||||
"label": "Punti di montaggio LXC (Host ↔ CT)",
|
||||
"tail": "— condividere directory host con un CT invece di allegare un disco intero."
|
||||
},
|
||||
{
|
||||
"href": "/docs/help-info/vm-ct-commands",
|
||||
"label": "Comandi di gestione VM e CT",
|
||||
"tail": "— pct config / push / pull reference."
|
||||
},
|
||||
{
|
||||
"href": "/docs/disk-manager",
|
||||
"label": "Panoramica di Disk Manager",
|
||||
"tail": "."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,113 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Importa disco in una VM | Documentazione ProxMenux",
|
||||
"description": "Collegare un disco fisico a un Proxmox VM esistente con ProxMenux. Rilevamento sicuro del disco (esclude il sistema, montato, in-uso, ZFS/RAID/LVM), persistenti percorsi /dev/disk/by-id e interfacce SATA / SCSI / VirtIO / IDE.",
|
||||
"ogTitle": "Importa disco in una VM | Documentazione ProxMenux",
|
||||
"ogDescription": "Collegare un disco fisico a un Proxmox VM esistente. Utilizza percorsi /dev/disk/by-id persistenti e supporta SATA / SCSI / VirtIO / IDE."
|
||||
},
|
||||
"header": {
|
||||
"title": "Importa disco nella VM",
|
||||
"description": "Collegare un disco fisico che esiste già sull'host Proxmox ad una macchina virtuale esistente. ProxMenux rileva dischi liberi, consente di scegliere il target VM, il tipo di bus (SATA / SCSI / VirtIO / IDE) e allega tutto utilizzando percorsi /dev/disk/by-id persistenti in modo che la mappatura sopravviva ai riavvimenti e alle modifiche dell'ordine del dispositivo.",
|
||||
"section": "Gestione del disco · VM"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Che cosa fa",
|
||||
"body": "Collega un disco fisico grezzo come supporto di un’interfaccia disco virtuale. Il guest non riceve automaticamente i dati SMART nativi o le funzioni del controller fisico; usa il passthrough PCI del controller se servono. Il disco viene collegato tramite il suo percorso <code>/dev/disk/by-id/…</code> quando esiste, così un diverso ordine di enumerazione all’avvio non interrompe l’assegnazione; altrimenti si usa <code>/dev/sdX</code>."
|
||||
},
|
||||
"howRuns": {
|
||||
"heading": "Come funziona lo script",
|
||||
"body": "Il flusso ha due fasi distinte: raccolta delle informazioni e delle scelte, poi collegamento effettivo dei dischi alla VM. La configurazione resta invariata fino alla conferma finale.",
|
||||
"summary": "ProxMenux esclude i candidati non sicuri: disco root, dischi montati sull’host, membri attivi ZFS/LVM/RAID e dischi citati in configurazioni VM/LXC. I dischi con metadati <em>obsoleti</em>, cioè vecchie firme ZFS/RAID/LVM non più in uso, sono segnalati con ⚠ ma non bloccati."
|
||||
},
|
||||
"prereqs": {
|
||||
"heading": "Prerequisiti",
|
||||
"items": [
|
||||
"Almeno un VM definito sull'host (lo script invia direttamente a <code>qm list</code>).",
|
||||
"La <strong>VM di destinazione è spenta</strong>. Se è in esecuzione, lo script si interrompe con un messaggio; l’aggiunta a caldo dei dischi non rientra in questa procedura.",
|
||||
"Almeno un disco fisico sull'host che non è in uso dall'host o da qualsiasi altro ospite."
|
||||
]
|
||||
},
|
||||
"steps": {
|
||||
"heading": "Passo dopo passo",
|
||||
"stepLabel": "Passaggio",
|
||||
"list": [
|
||||
{
|
||||
"title": "Scegli la VM di destinazione",
|
||||
"bodyRich": "ProxMenux elenca tutte le VM dell’host con <code>qm list</code>. Scegli quella che riceverà il disco. Se è in esecuzione, lo script si interrompe e chiede di spegnerla prima."
|
||||
},
|
||||
{
|
||||
"title": "Scegli i dischi fisici da collegare",
|
||||
"img": "/disk/disk-selection.png",
|
||||
"caption": "Dischi liberi rilevati sull’host, con ⚠ per i metadati obsoleti",
|
||||
"body": "Lo script esamina i dischi dell’host e propone solo quelli collegabili senza conflitti. Puoi selezionarne più di uno. I dischi con vecchie firme ZFS/LVM/RAID restano visibili con ⚠, per indicare che occorre cancellare le firme prima che il guest li formatti."
|
||||
},
|
||||
{
|
||||
"title": "Scegli l’interfaccia bus",
|
||||
"img": "/disk/disk-assigment.png",
|
||||
"caption": "Selezione dell'interfaccia bus",
|
||||
"intro": "Scegliere come l'ospite dovrebbe vedere il disco:",
|
||||
"items": [
|
||||
"<strong>SCSI</strong> — default moderno per Linux e Windows con driver VirtIO-SCSI installati.",
|
||||
"<strong>SATA</strong> — ampia compatibilità, funziona fuori dalla scatola praticamente ogni ospite.",
|
||||
"<strong>VirtIO</strong>: dispositivo a blocchi paravirtualizzato efficiente; richiede driver nel guest.",
|
||||
"<strong>IDE</strong> — per ospiti legacy che non hanno nessuno dei driver di cui sopra."
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Collega e verifica",
|
||||
"bodyRich": "ProxMenux collega ogni disco selezionato con il suo migliore percorso <code>/dev/disk/by-id/</code>, salta gli indici di slot che sono già in uso nella configurazione VM (<code>scsi0</code>, <code>sata0</code>, ...) e rilegge la configurazione per confermare l'assegnazione. Alla fine viene stampato un riassunto."
|
||||
}
|
||||
]
|
||||
},
|
||||
"manual": {
|
||||
"heading": "Equivalente manuale",
|
||||
"body": "Lo script è un wrapper intorno a <code>qm set</code>. Il comando esatto per un singolo disco sembra questo:",
|
||||
"migrationTitle": "La migrazione dal vivo non è possibile",
|
||||
"migrationBody": "Una VM con un disco fisico collegato direttamente è <strong>legata all’host che espone quel disco</strong>. Un altro nodo normalmente non ha lo stesso percorso <code>/dev/disk/by-id/…</code> né i dati. Salva e trasferisci i dati separatamente, oppure usa dischi virtuali gestiti su storage condiviso o con replica supportata. Non presumere che la replica storage di Proxmox includa questo dispositivo.",
|
||||
"shareTitle": "Non condividere un disco fisico tra VM",
|
||||
"shareBody": "Attaccare lo stesso disco fisico a due VM allo stesso tempo corromperà i dati sulla prossima scrittura. ProxMenux rileva questa situazione e lo blocca, ma se si bypassa lo script (diretto <code>qm set</code>), assicurarsi che solo un ospite monta mai il disco."
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Risoluzione dei problemi",
|
||||
"noDisksTitle": "\"Nessun disco disponibile per questo VM\"",
|
||||
"noDisksIntro": "Lo script ha trovato dei dischi, ma ogni candidato è stato filtrato. Motivi comuni:",
|
||||
"noDisksItems": [
|
||||
"Ogni disco rimanente è già citato nella configurazione di destinazione VM.",
|
||||
"Ogni disco rimanente è montato sull'host o fa parte di un ZFS attivo / LVM / RAID.",
|
||||
"L'host ha installato solo il disco root."
|
||||
],
|
||||
"noDisksOutro": "Eseguire <code>lsblk -f</code> sull'host per rivedere lo stato di ogni disco.",
|
||||
"noVisibleTitle": "VM non vede il disco dopo il boot",
|
||||
"noVisibleBody": "Con <strong>SCSI</strong> o <strong>VirtIO</strong> il guest richiede il driver corrispondente. Linux lo include nel kernel; su Windows installalo dall’ISO VirtIO (vedi <winLink>Crea VM: Windows</winLink>). Passare a SATA nella scheda Hardware della VM è una prova rapida per verificare l’assegnazione del disco."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/disk-manager/import-disk-image-vm",
|
||||
"label": "Importa immagine disco nella VM",
|
||||
"tail": "— stesso flusso ma per file di immagine (qcow2 / vmdk / raw / img)."
|
||||
},
|
||||
{
|
||||
"href": "/docs/disk-manager/import-disk-lxc",
|
||||
"label": "Importa disco su LXC",
|
||||
"tail": "— flusso equivalente per contenitori LXC."
|
||||
},
|
||||
{
|
||||
"href": "/docs/disk-manager/add-controller-nvme-vm",
|
||||
"label": "Aggiungi controller o NVMe a VM",
|
||||
"tail": "— quando è necessario PCIe completo / NVMe passante piuttosto che attaccare disco."
|
||||
},
|
||||
{
|
||||
"href": "/docs/help-info/storage-commands",
|
||||
"label": "Comandi di archiviazione e dischi",
|
||||
"tail": "— qm importdisk e relativo riferimento shell."
|
||||
},
|
||||
{
|
||||
"href": "/docs/disk-manager",
|
||||
"label": "Panoramica di Disk Manager",
|
||||
"tail": "."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,135 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Gestione dischi Proxmox: VM/LXC, test SMART e cancellazione | ProxMenux",
|
||||
"description": "Gestisci i dischi fisici di un host Proxmox VE con ProxMenux: collega dischi a VM o LXC (qm set scsi/sata/virtio, pct mp), importa immagini img / qcow2 / vmdk / raw, assegna interi HBA o controller NVMe, cancella dischi con controlli di sicurezza ed esegui autotest SMART.",
|
||||
"ogTitle": "Proxmox Disk Manager — Collegare dischi a VM / LXC, SMART Test, Wipe",
|
||||
"ogDescription": "Collega dischi a VM/LXC, importa immagini, usa il passthrough PCI dei controller, cancella con controlli di sicurezza ed esegui test SMART su Proxmox VE.",
|
||||
"twitterTitle": "Gestore dischi Proxmox | ProxMenux",
|
||||
"twitterDescription": "Collega dischi a VM/LXC, importa immagini, usa passthrough PCI, cancella con controlli di sicurezza ed esegui test SMART."
|
||||
},
|
||||
"header": {
|
||||
"title": "Gestione disco",
|
||||
"description": "Il menu Disk Manager raggruppa gli strumenti ProxMenux per la gestione di dischi fisici su un host Proxmox: collegare dischi a VM e contenitori LXC, importare immagini disco, passare attraverso un intero controller o dispositivo NVMe, pulire i dischi in modo sicuro ed eseguire test di salute SMART.",
|
||||
"section": "Gestione disco"
|
||||
},
|
||||
"intro": {
|
||||
"title": "A cosa serve questo menu",
|
||||
"body": "Questi strumenti operano su <strong>dischi fisici visibili all’host Proxmox e file immagine conservati su di esso</strong>. Il menu ha tre gruppi: <strong>VM</strong> (collegare dischi o importare immagini), <strong>LXC</strong> (collegare dischi a contenitori) e <strong>Utilità</strong> (formattazione e stato SMART). Collegamento e cancellazione nascondono o bloccano i dischi di sistema e in uso; SMART può esaminarli senza cancellarli."
|
||||
},
|
||||
"opening": {
|
||||
"heading": "Apertura del menu",
|
||||
"body": "Dal menu principale di ProxMenux, selezionare <strong>Disk Manager</strong>. Vedrai questo:",
|
||||
"imageAlt": "Menu Gestione disco con blocchi VM, LXC e Utilities"
|
||||
},
|
||||
"groups": {
|
||||
"heading": "Tre gruppi di utensili",
|
||||
"intro": "Il menu Disk Manager è organizzato in tre gruppi — <strong>VM</strong>, <strong>LXC</strong> e <strong>Utilities</strong>. Fare clic su una scheda per saltare dritto agli strumenti in quel gruppo.",
|
||||
"vmTitle": "VM",
|
||||
"vmBody": "Strumenti che operano su macchine virtuali esistenti. Il VM deve essere spento; ProxMenux lo convalida prima di toccare la configurazione.",
|
||||
"vmItems": [
|
||||
"Importa disco nella VM",
|
||||
"Importa immagine disco nella VM",
|
||||
"Aggiungi controller o NVMe a VM"
|
||||
],
|
||||
"lxcTitle": "LXC",
|
||||
"lxcBody": "Strumenti per contenitori LXC esistenti. Questo script richiede un contenitore privilegiato e propone di cambiare l’impostazione se necessario. Leggi prima le indicazioni su conversione e proprietari dei file nella pagina dello strumento.",
|
||||
"lxcItems": [
|
||||
"Importa disco su LXC"
|
||||
],
|
||||
"utilitiesTitle": "Utilità",
|
||||
"utilitiesBody": "Strumenti lato host che operano sui dischi stessi, indipendentemente da qualsiasi VM o contenitore.",
|
||||
"utilitiesItems": [
|
||||
"Formatta o cancella un disco fisico",
|
||||
"Integrità e test disco SMART"
|
||||
]
|
||||
},
|
||||
"vm": {
|
||||
"heading": "VM",
|
||||
"intro": "Strumenti che operano su macchine virtuali esistenti. Il VM deve essere spento; ProxMenux lo convalida prima di toccare la configurazione.",
|
||||
"options": [
|
||||
{
|
||||
"icon": "HardDrive",
|
||||
"href": "/docs/disk-manager/import-disk-vm",
|
||||
"title": "Importa disco nella VM",
|
||||
"description": "Collega un disco fisico non assegnato a una VM esistente. Supporta SATA/SCSI/VirtIO/IDE e usa percorsi persistenti /dev/disk/by-id."
|
||||
},
|
||||
{
|
||||
"icon": "FileDown",
|
||||
"href": "/docs/disk-manager/import-disk-image-vm",
|
||||
"title": "Importa immagine disco nella VM",
|
||||
"description": "Importa file di immagine del disco (.img / .qcow2 / .vmdk / .raw) in un VM esistente. Flusso bifase, qm importdisk sotto il cappuccio."
|
||||
},
|
||||
{
|
||||
"icon": "Cpu",
|
||||
"href": "/docs/disk-manager/add-controller-nvme-vm",
|
||||
"title": "Aggiungi controller o NVMe a VM",
|
||||
"description": "Passthrough PCI di un intero HBA SATA/SAS o dispositivo NVMe a una VM. Gestisce l’attivazione di IOMMU e il rilevamento dei conflitti."
|
||||
}
|
||||
]
|
||||
},
|
||||
"lxc": {
|
||||
"heading": "LXC",
|
||||
"intro": "Strumenti per contenitori LXC esistenti. Questo script richiede un contenitore privilegiato e propone di cambiare l’impostazione se necessario. Leggi prima le indicazioni su conversione e proprietari dei file nella pagina dello strumento.",
|
||||
"options": [
|
||||
{
|
||||
"icon": "Boxes",
|
||||
"href": "/docs/disk-manager/import-disk-lxc",
|
||||
"title": "Importa disco su LXC",
|
||||
"description": "Collega un disco fisico non assegnato a un contenitore LXC come punto di mount. Gestisce rilevamento e formattazione del filesystem e il passaggio alla modalità privilegiata."
|
||||
}
|
||||
]
|
||||
},
|
||||
"utilities": {
|
||||
"heading": "Utilità",
|
||||
"intro": "Strumenti lato host che operano sui dischi stessi, indipendentemente da qualsiasi VM o contenitore.",
|
||||
"options": [
|
||||
{
|
||||
"icon": "Eraser",
|
||||
"href": "/docs/disk-manager/format-disk",
|
||||
"title": "Formatta/Cancella disco fisico (sicuro)",
|
||||
"description": "Cancella dischi con controlli rigorosi: vengono mostrati solo dischi completamente liberi ed è sempre richiesta una doppia conferma."
|
||||
},
|
||||
{
|
||||
"icon": "Activity",
|
||||
"href": "/docs/disk-manager/smart-disk-test",
|
||||
"title": "Integrità e test disco SMART",
|
||||
"description": "Eseguire controlli sanitari SMART e test brevi / lunghi su drive SATA, SAS e NVMe. Esporta JSON per il Monitor."
|
||||
}
|
||||
]
|
||||
},
|
||||
"safety": {
|
||||
"title": "Regole di sicurezza per collegamento e cancellazione dei dischi",
|
||||
"intro": "Le operazioni di collegamento e cancellazione escludono i dispositivi che potrebbero danneggiare l’host:",
|
||||
"items": [
|
||||
"Il <strong>disco di sistema</strong>, il pool root, lo swap e i membri attivi ZFS/LVM/RAID sono sempre nascosti.",
|
||||
"I dischi <strong>montati</strong> in qualsiasi punto dell’host sono nascosti o bloccati all’esecuzione.",
|
||||
"I dischi <strong>riferiti da un VM in esecuzione o LXC</strong> non possono essere riassegnati o cancellati.",
|
||||
"Le operazioni che modificano lo stato dell’host, come attivare IOMMU o cancellare dischi, richiedono una conferma esplicita."
|
||||
]
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/storage-share",
|
||||
"label": "Gestore storage e condivisioni",
|
||||
"tail": "— registrare lo storage in Proxmox stesso (NFS / Samba / iSCSI / locale) e condividere le cartelle tra host e CT."
|
||||
},
|
||||
{
|
||||
"href": "/docs/help-info/storage-commands",
|
||||
"label": "Comandi di archiviazione e dischi",
|
||||
"tail": "— dispositivi di blocco, LVM, pvesm, riferimento SMART."
|
||||
},
|
||||
{
|
||||
"href": "/docs/help-info/zfs-commands",
|
||||
"label": "Comandi di gestione ZFS",
|
||||
"tail": " — per ZFS pools e set di dati."
|
||||
},
|
||||
{
|
||||
"href": "/docs/hardware/gpu-vm-passthrough",
|
||||
"label": "Aggiungi GPU a VM (Passthrough)",
|
||||
"tail": "— stessi concetti IOMMU / VFIO applicati alle GPU."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,146 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Stato e test SMART del disco | Documentazione ProxMenux",
|
||||
"description": "Esegui controlli SMART e test dei dischi su Proxmox VE con ProxMenux. Supporta SATA/SAS con smartmontools e NVMe con nvme-cli, autotest brevi e lunghi ed esportazione JSON per ProxMenux Monitor.",
|
||||
"ogTitle": "Stato e test SMART del disco | Documentazione ProxMenux",
|
||||
"ogDescription": "SMART controlli di salute e auto-test per unità SATA / SAS e NVMe su Proxmox. Esportazione JSON per il Monitor."
|
||||
},
|
||||
"header": {
|
||||
"title": "Integrità e test disco SMART",
|
||||
"description": "Leggi i dati SMART e avvia autotest sui dischi fisici dell’host Proxmox. ProxMenux installa automaticamente smartmontools per SATA/SAS e nvme-cli per NVMe, avvia i test nel firmware del disco (i test lunghi continuano dopo la chiusura del terminale) ed esporta risultati JSON per ProxMenux Monitor.",
|
||||
"section": "Disk Manager · Utilità"
|
||||
},
|
||||
"intro": {
|
||||
"title": "A cosa serve",
|
||||
"body": "SMART (Self-Monitoring, Analysis and Reporting Technology) consente al disco di segnalare il proprio stato ed eseguire autotest. Lo strumento mostra questi dati senza dover ricordare il comando <code>smartctl</code> o <code>nvme</code> corretto e conserva l’output in JSON perché il Monitor possa mostrare le tendenze nel tempo."
|
||||
},
|
||||
"howRuns": {
|
||||
"heading": "Come funziona lo script",
|
||||
"body": "Tutte le azioni qui non distruttive — SMART legge i contatori del firmware dell'unità, e i test di auto sono in coda all'interno dell'unità stessa. Non è necessaria alcuna separazione di fase. Il flusso è: controllo di dipendenza → selezione del disco → selezione di azione → invocazione degli strumenti (smartctl o nvme-cli a seconda del bus del disco) → uscita stampata più esportazione JSON per il monitor."
|
||||
},
|
||||
"deps": {
|
||||
"heading": "Dipendenze",
|
||||
"body": "Lo strumento installa automaticamente ciò di cui ha bisogno in prima esecuzione. Le unità SATA / SAS si basano su <code>smartmontools</code>; le unità NVMe si basano su <code>nvme-cli</code>. Entrambi:"
|
||||
},
|
||||
"actions": {
|
||||
"heading": "Azioni disponibili",
|
||||
"headerAction": "Azione",
|
||||
"headerWhat": "Che cosa legge o esegue",
|
||||
"headerDur": "Durata",
|
||||
"rows": [
|
||||
{
|
||||
"action": "Situazione rapida della salute",
|
||||
"whatRich": "Complessivamente PASSED/FAILED + attributi chiave.<br /><code>smartctl -H</code> + <code>-A</code> (SATA/SAS) o <code>nvme smart-log</code> (NVMe).",
|
||||
"dur": "istantaneamente"
|
||||
},
|
||||
{
|
||||
"action": "Rapporto completo",
|
||||
"whatRich": "Dati SMART completi, scorrevoli. <code>smartctl -x</code> per SATA/SAS o <code>nvme smart-log</code> + <code>id-ctrl</code> per NVMe.",
|
||||
"dur": "istantaneamente"
|
||||
},
|
||||
{
|
||||
"action": "Test breve",
|
||||
"what": "Superficie di base e controllo elettrico, in coda all'interno del firmware dell'unità.",
|
||||
"dur": "~2 minuti"
|
||||
},
|
||||
{
|
||||
"action": "Test lungo",
|
||||
"what": "Controllo completo dell'intera superficie. Funziona sull'hardware dell'unità — persiste anche se si chiude il terminale.",
|
||||
"dur": "Ore (dipendenti dalle dimensioni del disco)"
|
||||
},
|
||||
{
|
||||
"action": "Verificare i progressi dei test",
|
||||
"what": "Stato dell'autotest attivo o più recente.",
|
||||
"dur": "istantaneamente"
|
||||
}
|
||||
],
|
||||
"tipTitle": "I test lunghi sopravvivono alla chiusura del terminale",
|
||||
"tipBody": "Un test lungo viene eseguito <em>nel disco</em> e non dipende dal processo ProxMenux. Puoi chiudere il terminale e tornare a <strong>Verifica avanzamento test</strong>. Un riavvio dell’host, un reset del controller o una perdita di alimentazione può interrompere il test e la raccolta dei risultati; non presumere che riprenda automaticamente."
|
||||
},
|
||||
"json": {
|
||||
"heading": "JSON export per il Monitor",
|
||||
"intro": "Le azioni di stato, test breve e avanzamento scrivono un JSON con data e ora in <code>/usr/local/share/proxmenux/smart/<disk>/</code>; i risultati dei test lunghi sono raccolti in background. Il rapporto completo viene solo visualizzato. La struttura è:",
|
||||
"outro": "ProxMenux Monitor usa questi file per mostrare l’andamento dello stato dei dischi. I vecchi file vengono rimossi automaticamente al raggiungimento del limite di conservazione."
|
||||
},
|
||||
"steps": {
|
||||
"heading": "Passo dopo passo",
|
||||
"stepLabel": "Passaggio",
|
||||
"list": [
|
||||
{
|
||||
"title": "Scegli un disco",
|
||||
"body": "ProxMenux elenca ogni disco fisico sull'host con il suo modello e dimensione. A differenza dello strumento Formato, questo elenco non è filtrato dalla sicurezza — la lettura SMART è un'operazione non distruttiva.",
|
||||
"img": "/disk/smart/disk-selection.png",
|
||||
"alt": "Menu di selezione del disco SMART",
|
||||
"caption": "Menu di selezione del disco SMART"
|
||||
},
|
||||
{
|
||||
"title": "Scegli un'azione",
|
||||
"body": "Scegliere tra stato di salute rapido, rapporto completo, test breve, test lungo o verifica progressi. Il menu rimane aperto dopo ogni azione in modo da poter incatenare diverse query contro lo stesso disco.",
|
||||
"img": "/disk/smart/action-menu.png",
|
||||
"alt": "Menu di azione SMART",
|
||||
"caption": "SMART menu di azione (5 azioni + cancellazione)"
|
||||
},
|
||||
{
|
||||
"title": "(Solo test lungo) Conferma l’esecuzione in background",
|
||||
"body": "ProxMenux avvisa che il test continuerà dopo la chiusura del terminale e mostra dove verrà salvato il risultato JSON. Accetta per avviarlo.",
|
||||
"img": "/disk/smart/long-test-warning.png",
|
||||
"alt": "Finestra di conferma di prova lunga",
|
||||
"caption": "Conferma di prova lunga — corre in background, risultato salvato a JSON"
|
||||
},
|
||||
{
|
||||
"title": "Controlla i risultati",
|
||||
"bodyRich": "Stato, test e avanzamento compaiono nel terminale; <strong>Rapporto completo</strong> si apre in una finestra scorrevole. L’esportazione JSON avviene per le azioni indicate sopra, non per Rapporto completo. Per i test lunghi torna a <strong>Verifica avanzamento test</strong> sullo stesso disco.",
|
||||
"img": "/disk/smart/quick-status.png",
|
||||
"alt": "Uscita rapida dello stato di salute",
|
||||
"caption": "Uscita rapida dello stato di salute (SATA — smartctl -H + -A)"
|
||||
}
|
||||
]
|
||||
},
|
||||
"manual": {
|
||||
"heading": "Equivalenti manuali",
|
||||
"nvmeWarnTitle": "Gli autotest NVMe dipendono dal firmware del disco",
|
||||
"nvmeWarnBody": "Non ogni unità NVMe supporta il comando breve/lungo self-test. Se un'unità rifiuta il test, il registro SMART e i dati del controller ID (<code>nvme smart-log</code> + <code>id-ctrl</code>) sono ancora il segnale sanitario più affidabile."
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Risoluzione dei problemi",
|
||||
"noSmartTitle": "\"Impossibile leggere i dati SMART da /dev/sdX\"",
|
||||
"noSmartBody": "Il disco è probabilmente dietro un controller RAID / SAS che non passa SMART attraverso. Con le carte a base di megaraid, prova a <code>smartctl -d megaraid,N /dev/sdX</code>. Per HBA in modalità IT l'invocazione diretta funziona.",
|
||||
"longTitle": "Il lungo test non completa mai",
|
||||
"longBody": "Il test viene eseguito nel firmware e un carico I/O elevato può ritardarlo. Prova in un periodo di inattività, ad esempio di notte. Su SATA, <code>smartctl -c</code> mostra la percentuale rimanente, su SAS <code>smartctl -l selftest</code>; il log degli autotest indica esito ed eventuali LBA difettosi. Un errore di lettura va indagato; la lentezza da sola non prova un settore danneggiato."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/disk-manager/format-disk",
|
||||
"label": "Formatta o cancella un disco fisico",
|
||||
"tail": "— riutilizzare un disco dopo aver confermato che è sano."
|
||||
},
|
||||
{
|
||||
"href": "/docs/help-info/storage-commands",
|
||||
"label": "Comandi di archiviazione e dischi → Stato SMART",
|
||||
"tail": "— riferimento copiabile smartctl / nvme."
|
||||
},
|
||||
{
|
||||
"href": "/docs/help-info/zfs-commands",
|
||||
"label": "Comandi di gestione ZFS",
|
||||
"tail": " — zpool scrub verifica i checksum dei dati ZFS e affianca i test SMART dell’hardware."
|
||||
},
|
||||
{
|
||||
"href": "/docs/monitor/dashboard/storage",
|
||||
"label": "ProxMenux Monitor — scheda Archiviazione",
|
||||
"tail": " — vista dettagliata del disco che usa il JSON esportato qui: tabella SMART completa, cronologia e rapporto PDF."
|
||||
},
|
||||
{
|
||||
"href": "/docs/monitor/dashboard/hardware",
|
||||
"label": "ProxMenux Monitor — Scheda hardware",
|
||||
"tail": "— Riepilogo di stoccaggio con modello, capacità e velocità di collegamento negoziata (corrente vs massima su NVMe)."
|
||||
},
|
||||
{
|
||||
"href": "/docs/disk-manager",
|
||||
"label": "Panoramica di Disk Manager",
|
||||
"tail": "."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Repository esterni | Documentazione ProxMenux",
|
||||
"description": "ProxMenux integra repository di script esterni selezionati, come community-scripts e ZimaOS, come alternative in alcune sezioni del menu. Ogni script indica la propria origine; i bug vanno segnalati al manutentore originale.",
|
||||
"ogTitle": "Repository esterni | Documentazione ProxMenux",
|
||||
"ogDescription": "Repository di script esterni integrati come alternative nei menu di ProxMenux."
|
||||
},
|
||||
"header": {
|
||||
"title": "Repository esterni",
|
||||
"description": "ProxMenux integra repository di script esterni selezionati come alternative in alcune sezioni del menu. Gli script provengono da fonti di terze parti attendibili, indicate chiaramente nel menu.",
|
||||
"section": "Repository esterni"
|
||||
},
|
||||
"practice": {
|
||||
"title": "Ciò che significa in pratica",
|
||||
"body": "Quando un’opzione usa uno script esterno anziché codice proprio di ProxMenux, il menu ne indica l’origine e il repository caricato. ProxMenux avvia questi script senza modificarli. I problemi relativi al loro funzionamento competono al manutentore del repository originale."
|
||||
},
|
||||
"integrated": {
|
||||
"heading": "Repository attualmente integrati",
|
||||
"usedInLabel": "Usato in:",
|
||||
"items": [
|
||||
{
|
||||
"name": "community-scripts / ProxmoxVE",
|
||||
"url": "https://community-scripts.github.io/ProxmoxVE/",
|
||||
"description": "Erede dei helper script di tteck. Ampio catalogo di script per distribuire in una sola esecuzione LXC (Home Assistant, Plex, Frigate…), VM, componenti aggiuntivi e modifiche a PVE.",
|
||||
"usedIn": "Avvio di Helper Scripts e Rete (correzione dell’offloading della scheda Intel e1000e)"
|
||||
}
|
||||
]
|
||||
},
|
||||
"attribution": {
|
||||
"heading": "Attribuzione e riconoscimenti",
|
||||
"items": [
|
||||
"Gli autori originali sono sempre citati nel menu e nella pagina che documenta l’integrazione dello script.",
|
||||
"Il collegamento al repository originale viene mostrato prima di eseguire lo script e nella relativa pagina di documentazione.",
|
||||
"Puoi sostenere gli sviluppatori di questi progetti esterni con una ⭐, una sponsorizzazione o segnalazioni di bug ben documentate."
|
||||
]
|
||||
},
|
||||
"report": {
|
||||
"title": "Dove segnalare problemi con gli script esterni",
|
||||
"body": "Se uno script esterno non funziona come previsto, <strong>segnalalo direttamente nel suo repository</strong>, non in ProxMenux. ProxMenux lo scarica e lo esegue senza modificarne il codice. Il manutentore originale può analizzare e correggere il problema. Usa le issue di ProxMenux per problemi del comando di avvio o dell’integrazione dello script."
|
||||
},
|
||||
"suggest": {
|
||||
"heading": "Suggerimento di nuovi repository esterni",
|
||||
"intro": "Trovato uno script o un repository che si adatta bene a un menu ProxMenux? Suggeriscilo via:",
|
||||
"discussionTitle": "💬 Apri una discussione",
|
||||
"discussionBody": "Ideale per le idee: raccogli i pareri della comunità prima di trasformarle in una richiesta di funzionalità.",
|
||||
"issueTitle": "🐛 Apri una issue",
|
||||
"issueBody": "Per richieste di funzionalità specifiche con un ambito ben definito."
|
||||
},
|
||||
"candidate": {
|
||||
"title": "Cosa rende un buon candidato di integrazione",
|
||||
"items": [
|
||||
"Codice aperto con un manutentore attivo.",
|
||||
"Idempotente: può essere eseguito più volte in sicurezza.",
|
||||
"Non modifica la configurazione principale di Proxmox senza avvisare.",
|
||||
"Risolve un problema non ancora coperto da ProxMenux, evitando di duplicare le funzionalità."
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,677 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Glossario | Documentazione ProxMenux",
|
||||
"description": "Definizioni dei termini usati nella documentazione ProxMenux: Proxmox, archiviazione, reti e virtualizzazione.",
|
||||
"ogTitle": "Glossario | Documentazione ProxMenux",
|
||||
"ogDescription": "Breve riferimento per i termini tecnici utilizzati nella documentazione ProxMenux."
|
||||
},
|
||||
"header": {
|
||||
"title": "Glossario",
|
||||
"description": "Brevi definizioni dei termini usati in ProxMenux e per descrivere il funzionamento di Proxmox.",
|
||||
"section": "Glossario"
|
||||
},
|
||||
"callout": {
|
||||
"title": "Come utilizzare questa pagina",
|
||||
"bodyRich": "Ogni voce include una categoria e una breve definizione. I collegamenti <em>Vedi anche</em> aprono la documentazione pertinente. Usa la navigazione A–Z per passare direttamente a una lettera."
|
||||
},
|
||||
"jumpHeading": "Vai alla lettera",
|
||||
"seeAlsoLabel": "Vedi anche:",
|
||||
"aliasesLabel": "anche:",
|
||||
"missingCallout": {
|
||||
"title": "Manca un termine?",
|
||||
"leadRich": "Se manca un termine, apri una issue o una PR su <ext>GitHub</ext>. Il glossario si trova in <code>web/messages/en/docs/glossary.json</code>, con i cataloghi corrispondenti per ogni lingua."
|
||||
},
|
||||
"entries": [
|
||||
{
|
||||
"term": "ACS",
|
||||
"aliases": [
|
||||
"Access Control Services",
|
||||
"Sovrascrittura ACS"
|
||||
],
|
||||
"category": "Virtualizzazione",
|
||||
"definitionRich": "Funzioni di controllo degli accessi PCIe che aiutano a isolare il traffico tra dispositivi. I gruppi IOMMU dipendono da hardware e topologia. La patch <em>ACS override</em> può suddividere i gruppi rilevati da Linux, ma non aggiunge isolamento hardware; assegnarli a VM diverse comporta un rischio di sicurezza.",
|
||||
"seeAlso": [
|
||||
{
|
||||
"label": "Aggiungi controller o NVMe a VM",
|
||||
"href": "/docs/disk-manager/add-controller-nvme-vm"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"term": "ARC",
|
||||
"aliases": [
|
||||
"Adaptive Replacement Cache"
|
||||
],
|
||||
"category": "Archiviazione",
|
||||
"definitionRich": "Cache di lettura ZFS nella RAM dell’host, per i blocchi usati di recente o frequentemente. Il limite predefinito dipende dalla versione e dall’installazione di Proxmox. Le opzioni successive all’installazione di ProxMenux permettono di limitarla.",
|
||||
"seeAlso": [
|
||||
{
|
||||
"label": "Dopo l’installazione: archiviazione",
|
||||
"href": "/docs/post-install/storage"
|
||||
},
|
||||
{
|
||||
"label": "Comandi ZFS",
|
||||
"href": "/docs/help-info/zfs-commands"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"term": "Bind mount",
|
||||
"category": "Linux",
|
||||
"definitionRich": "Funzione Linux che rende accessibile una parte del file system da un altro percorso. ProxMenux usa i bind mount per condividere directory dell’host con i container LXC tramite <code>pct set -mpN</code>.",
|
||||
"seeAlso": [
|
||||
{
|
||||
"label": "Punti di montaggio LXC",
|
||||
"href": "/docs/storage-share/lxc-mount-points"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"term": "Bond di rete",
|
||||
"aliases": [
|
||||
"Aggregazione di interfacce di rete",
|
||||
"Aggregazione dei collegamenti"
|
||||
],
|
||||
"category": "Rete",
|
||||
"definitionRich": "Raggruppa più interfacce fisiche in una logica per offrire ridondanza (active-backup), maggiore capacità complessiva (LACP / 802.3ad) o entrambe. Si configura in <code>/etc/network/interfaces</code>."
|
||||
},
|
||||
{
|
||||
"term": "Ponte",
|
||||
"aliases": [
|
||||
"vmbrX",
|
||||
"vmbr0",
|
||||
"Bridge Linux"
|
||||
],
|
||||
"category": "Rete",
|
||||
"definitionRich": "Switch virtuale di livello 2 sull’host. <code>vmbr0</code> collega normalmente le macchine ospiti alla rete fisica. Altri bridge (<code>vmbr1</code>, <code>vmbr2</code>...) possono separare le reti in base ai collegamenti fisici e alla configurazione.",
|
||||
"seeAlso": [
|
||||
{
|
||||
"label": "Analisi ponte e riparazione guidata",
|
||||
"href": "/docs/network/bridge-analysis"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"term": "Ceph",
|
||||
"category": "Archiviazione",
|
||||
"definitionRich": "Sistema di archiviazione distribuito integrato con Proxmox per cluster iperconvergenti. Gli OSD (Object Storage Daemons) sono alla base dell’archiviazione a oggetti, a blocchi e di file. La versione Ceph richiesta dipende dalla versione Proxmox e dal percorso di aggiornamento: consulta la guida corrispondente.",
|
||||
"seeAlso": [
|
||||
{
|
||||
"label": "Aggiorna PVE 8 a PVE 9",
|
||||
"href": "/docs/utils/upgrade-pve8-pve9"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"term": "CT",
|
||||
"aliases": [
|
||||
"contenitore",
|
||||
"Container LXC"
|
||||
],
|
||||
"category": "Proxmox",
|
||||
"definitionRich": "Abbreviazione di «container» usata da Proxmox per un’istanza LXC. Il CTID numerico corrisponde a <code>/etc/pve/lxc/<CTID>.conf</code>. Vedi anche <strong>LXC</strong>.",
|
||||
"seeAlso": [
|
||||
{
|
||||
"label": "Gestione di VM e container",
|
||||
"href": "/docs/help-info/vm-ct-commands"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"term": "deb822",
|
||||
"category": "Linux",
|
||||
"definitionRich": "Formato moderno delle sorgenti APT: file <code>.sources</code> con blocchi strutturati e campi Types, URIs, Suites, Components e Signed-By. Sostituisce il formato a riga singola <code>.list</code>; è lo standard da PVE 9 / Debian Trixie.",
|
||||
"seeAlso": [
|
||||
{
|
||||
"label": "Aggiorna PVE 8 a PVE 9",
|
||||
"href": "/docs/utils/upgrade-pve8-pve9"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"term": "dGPU",
|
||||
"aliases": [
|
||||
"GPU dedicata"
|
||||
],
|
||||
"category": "Virtualizzazione",
|
||||
"definitionRich": "Scheda grafica separata, normalmente collegata tramite PCIe, diversamente da una <strong>iGPU</strong>. Può essere assegnata a una VM con VFIO o utilizzata da più container LXC tramite i nodi di dispositivo e il driver dell’host, se hardware e applicazioni lo supportano.",
|
||||
"seeAlso": [
|
||||
{
|
||||
"label": "Aggiungere GPU a VM (passthrough)",
|
||||
"href": "/docs/hardware/gpu-vm-passthrough"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"term": "Dialog",
|
||||
"category": "Linux",
|
||||
"definitionRich": "Strumento basato su ncurses per mostrare menu, richieste e barre di avanzamento nel terminale. ProxMenux usa i menu di dialog."
|
||||
},
|
||||
{
|
||||
"term": "DKMS",
|
||||
"aliases": [
|
||||
"Supporto del modulo del kernel dinamico"
|
||||
],
|
||||
"category": "Linux",
|
||||
"definitionRich": "Sistema per ricompilare moduli esterni registrati, come NVIDIA o ZFS, quando cambia il kernel. Servono sorgenti del modulo compatibili e gli header del kernel corrispondenti.",
|
||||
"seeAlso": [
|
||||
{
|
||||
"label": "Installare Coral TPU (Host)",
|
||||
"href": "/docs/hardware/install-coral-tpu-host"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"term": "Fail2Ban",
|
||||
"category": "Linux",
|
||||
"definitionRich": "Servizio che rileva errori di autenticazione ripetuti nei registri e blocca gli IP responsabili tramite il firewall. ProxMenux include jail preconfigurate per SSH, l’interfaccia Proxmox e Monitor.",
|
||||
"seeAlso": [
|
||||
{
|
||||
"label": "Fail2Ban",
|
||||
"href": "/docs/security/fail2ban"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"term": "Fastfetch",
|
||||
"category": "Linux",
|
||||
"definitionRich": "Strumento di informazioni di sistema con grafica ASCII mostrata all’accesso alla shell. Sostituisce <code>neofetch</code> ed è attivabile nelle opzioni successive all’installazione di ProxMenux.",
|
||||
"seeAlso": [
|
||||
{
|
||||
"label": "Dopo l'installazione: opzioni",
|
||||
"href": "/docs/post-install/optional"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"term": "GRUB",
|
||||
"aliases": [
|
||||
"GRand Unified Bootloader"
|
||||
],
|
||||
"category": "Linux",
|
||||
"definitionRich": "Boot loader delle installazioni Linux basate su GRUB. Configurazione in <code>/etc/default/grub</code> e <code>/boot/grub/</code>; applica le modifiche con <code>update-grub</code>. Proxmox può anche usare systemd-boot: verifica il boot loader attivo prima di modificare i parametri del kernel.",
|
||||
"seeAlso": [
|
||||
{
|
||||
"label": "Comandi di passaggio GPU",
|
||||
"href": "/docs/help-info/gpu-commands"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"term": "iGPU",
|
||||
"aliases": [
|
||||
"GPU integrata"
|
||||
],
|
||||
"category": "Virtualizzazione",
|
||||
"definitionRich": "Processore grafico integrato nel package della CPU, come Intel UHD / Iris o Radeon nelle APU Ryzen. Spesso viene condiviso tra più LXC tramite <code>/dev/dri</code>, anziché assegnato esclusivamente a una VM.",
|
||||
"seeAlso": [
|
||||
{
|
||||
"label": "Aggiungi GPU a LXC",
|
||||
"href": "/docs/hardware/igpu-acceleration-lxc"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"term": "ifupdown / ifupdown2",
|
||||
"category": "Rete",
|
||||
"definitionRich": "Sistema classico di configurazione di rete Debian, basato su <code>/etc/network/interfaces</code>. Proxmox usa normalmente la versione riscritta <code>ifupdown2</code>, che permette di ricaricare la configurazione senza riavviare con <code>ifreload -a</code>."
|
||||
},
|
||||
{
|
||||
"term": "initramfs",
|
||||
"category": "Linux",
|
||||
"definitionRich": "File system iniziale in RAM usato dal kernel prima di montare la radice reale. Contiene i driver necessari all’avvio. Dopo modifiche a VFIO, IOMMU o driver di archiviazione, si rigenera con <code>update-initramfs -u -k all</code>."
|
||||
},
|
||||
{
|
||||
"term": "IOMMU",
|
||||
"aliases": [
|
||||
"Unità di gestione della memoria di input/output",
|
||||
"VT-d",
|
||||
"AMD-Vi"
|
||||
],
|
||||
"category": "Virtualizzazione",
|
||||
"definitionRich": "Funzione hardware (Intel VT-d / AMD-Vi) necessaria per assegnare dispositivi PCIe alle VM. Attivala nel firmware e verifica il supporto nel kernel. A seconda della piattaforma e delle impostazioni predefinite, possono servire <code>intel_iommu=on</code> o <code>amd_iommu=on</code>.",
|
||||
"seeAlso": [
|
||||
{
|
||||
"label": "Post-Install: Virtualizzazione",
|
||||
"href": "/docs/post-install/virtualization"
|
||||
},
|
||||
{
|
||||
"label": "Aggiungere GPU a VM (passthrough)",
|
||||
"href": "/docs/hardware/gpu-vm-passthrough"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"term": "Gruppo IOMMU",
|
||||
"category": "Virtualizzazione",
|
||||
"definitionRich": "Gruppo di dispositivi che costituisce l’unità minima di isolamento IOMMU. I membri non sono necessariamente isolati tra loro: controllali tutti prima di assegnare dispositivi con VFIO. Elenco con <code>find /sys/kernel/iommu_groups/ -type l | sort -V</code>."
|
||||
},
|
||||
{
|
||||
"term": "iSCSI",
|
||||
"aliases": [
|
||||
"Internet SCSI"
|
||||
],
|
||||
"category": "Archiviazione",
|
||||
"definitionRich": "Protocollo di archiviazione a blocchi su IP: un disco remoto appare come un dispositivo SCSI locale. Si aggiunge a Proxmox con <code>pvesm add iscsi</code>.",
|
||||
"seeAlso": [
|
||||
{
|
||||
"label": "Aggiungere l'obiettivo iSCSI come storage Proxmox",
|
||||
"href": "/docs/storage-share/host-iscsi"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"term": "KVM",
|
||||
"aliases": [
|
||||
"Macchina virtuale a base di Kernel"
|
||||
],
|
||||
"category": "Virtualizzazione",
|
||||
"definitionRich": "Modulo del kernel Linux che trasforma l’host in un hypervisor. Insieme a <strong>QEMU</strong> per l’emulazione dei dispositivi, costituisce la base delle VM Proxmox."
|
||||
},
|
||||
{
|
||||
"term": "LVM",
|
||||
"aliases": [
|
||||
"Logical Volume Manager"
|
||||
],
|
||||
"category": "Archiviazione",
|
||||
"definitionRich": "Gestione dei volumi Linux che raggruppa lo spazio fisico in gruppi (VG) contenenti volumi logici (LV). Le installazioni Proxmox basate su LVM usano spesso LVM-thin per i dischi ospiti; esistono altri sistemi di archiviazione. Strumenti: <code>pvs</code>, <code>vgs</code> e <code>lvs</code>.",
|
||||
"seeAlso": [
|
||||
{
|
||||
"label": "Comandi per archiviazione e dischi",
|
||||
"href": "/docs/help-info/storage-commands"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"term": "LXC",
|
||||
"aliases": [
|
||||
"Linux Containers"
|
||||
],
|
||||
"category": "Linux",
|
||||
"definitionRich": "Virtualizzazione a livello di sistema operativo: istanze isolate dello spazio utente condividono il kernel dell’host. Generalmente comporta meno overhead delle VM, con un diverso isolamento. Proxmox gestisce i container LXC con <code>pct</code>.",
|
||||
"seeAlso": [
|
||||
{
|
||||
"label": "Gestione di VM e container",
|
||||
"href": "/docs/help-info/vm-ct-commands"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"term": "Lynis",
|
||||
"category": "Linux",
|
||||
"definitionRich": "Strumento di audit di sicurezza open source di CISOfy. Analizza l’host e mostra un punteggio di sicurezza e suggerimenti concreti. ProxMenux installa la versione dal repository GitHub originale al posto del pacchetto Debian più vecchio.",
|
||||
"seeAlso": [
|
||||
{
|
||||
"label": "Lynis",
|
||||
"href": "/docs/security/lynis"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"term": "Indirizzo MAC",
|
||||
"aliases": [
|
||||
"Indirizzo hardware"
|
||||
],
|
||||
"category": "Rete",
|
||||
"definitionRich": "Identificatore di un’interfaccia Ethernet, normalmente a 48 bit, assegnato da hardware o software. I <em>Nomi di rete persistenti</em> di ProxMenux associano le MAC a nomi stabili (<code>eno1</code>, <code>enp3s0</code>) anche dopo una nuova enumerazione PCI.",
|
||||
"seeAlso": [
|
||||
{
|
||||
"label": "Nomi di interfaccia persistenti",
|
||||
"href": "/docs/network/persistent-names"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"term": "MOTD",
|
||||
"aliases": [
|
||||
"Messaggio del Giorno"
|
||||
],
|
||||
"category": "Linux",
|
||||
"definitionRich": "Testo mostrato dopo l’accesso SSH, memorizzato in <code>/etc/motd</code>. ProxMenux può aggiungere un banner dopo l’installazione; la disinstallazione ripristina il file precedente se ne esiste una copia."
|
||||
},
|
||||
{
|
||||
"term": "NFS",
|
||||
"aliases": [
|
||||
"Sistema di file di rete"
|
||||
],
|
||||
"category": "Archiviazione",
|
||||
"definitionRich": "Protocollo di condivisione file in rete nato su Unix. Si aggiunge come archiviazione Proxmox con <code>pvesm add nfs</code>; ProxMenux offre anche procedure per client e server NFS in LXC.",
|
||||
"seeAlso": [
|
||||
{
|
||||
"label": "Gestore storage e condivisioni",
|
||||
"href": "/docs/storage-share"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"term": "nftables / iptables",
|
||||
"category": "Rete",
|
||||
"definitionRich": "Strumenti firewall Linux. <code>nftables</code> è l’infrastruttura moderna; <code>iptables</code> può usare backend classici o compatibili con nft. Il servizio classico <code>pve-firewall</code> usa iptables, mentre l’alternativa proxmox-firewall usa nftables.",
|
||||
"seeAlso": [
|
||||
{
|
||||
"label": "Comandi di rete",
|
||||
"href": "/docs/help-info/network-commands"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"term": "nouveau",
|
||||
"category": "Linux",
|
||||
"definitionRich": "Driver grafico NVIDIA open source incluso in Linux. Installando il driver proprietario, impedisci che nouveau gestisca la stessa GPU, normalmente bloccandone il caricamento e rigenerando initramfs.",
|
||||
"seeAlso": [
|
||||
{
|
||||
"label": "Guida all'installazione NVIDIA",
|
||||
"href": "/guides/nvidia"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"term": "Repository no-subscription",
|
||||
"category": "Proxmox",
|
||||
"definitionRich": "Repository di pacchetti Proxmox disponibile senza abbonamento enterprise. I pacchetti ricevono meno verifiche rispetto al repository enterprise, consigliato da Proxmox per la produzione. ProxMenux offre la configurazione dei repository dopo l’installazione.",
|
||||
"seeAlso": [
|
||||
{
|
||||
"label": "Post-Install: Impostazioni di base",
|
||||
"href": "/docs/post-install/basic-settings"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"term": "OVA / OVF",
|
||||
"aliases": [
|
||||
"Open Virtualization Format"
|
||||
],
|
||||
"category": "Virtualizzazione",
|
||||
"definitionRich": "Formati DMTF per distribuire VM portabili. <strong>OVA</strong> raccoglie i file in un archivio TAR; <strong>OVF</strong> descrive la VM in XML con file disco associati, spesso VMDK. Il supporto all’importazione dipende dall’hypervisor di destinazione e dalla configurazione.",
|
||||
"seeAlso": [
|
||||
{
|
||||
"label": "Esportazione VM a OVA / OVF",
|
||||
"href": "/docs/utils/export-vm"
|
||||
},
|
||||
{
|
||||
"label": "Importa VM da OVA / OVF",
|
||||
"href": "/docs/utils/import-vm"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"term": "OVMF",
|
||||
"aliases": [
|
||||
"firmware UEFI",
|
||||
"Open Virtual Machine Firmware"
|
||||
],
|
||||
"category": "Virtualizzazione",
|
||||
"definitionRich": "Firmware UEFI per VM, selezionato con <code>qm set <vmid> -bios ovmf</code>. Si usa per ospiti UEFI, inclusi Windows 11 e configurazioni Secure Boot. <code>efidisk0</code> conserva le variabili EFI; molti altri ospiti possono ancora usare il BIOS tradizionale.",
|
||||
"seeAlso": [
|
||||
{
|
||||
"label": "Aggiungere GPU a VM (passthrough)",
|
||||
"href": "/docs/hardware/gpu-vm-passthrough"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"term": "PBS",
|
||||
"aliases": [
|
||||
"Proxmox Backup Server"
|
||||
],
|
||||
"category": "Proxmox",
|
||||
"definitionRich": "Prodotto di backup Proxmox separato con trasferimenti incrementali, deduplicazione e crittografia facoltativa lato client per VM e CT. Può essere una destinazione vzdump; è preferibile un server separato al salvataggio sullo stesso host protetto."
|
||||
},
|
||||
{
|
||||
"term": "pct",
|
||||
"category": "Proxmox",
|
||||
"definitionRich": "Strumento da riga di comando per gestire container LXC in Proxmox: <code>pct list / start / stop / shutdown / config / enter / exec / push / pull / destroy</code>.",
|
||||
"seeAlso": [
|
||||
{
|
||||
"label": "Gestione di VM e container",
|
||||
"href": "/docs/help-info/vm-ct-commands"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"term": "pmxcfs",
|
||||
"aliases": [
|
||||
"Proxmox Cluster Filesystem"
|
||||
],
|
||||
"category": "Proxmox",
|
||||
"definitionRich": "File system virtuale basato su FUSE, montato in <code>/etc/pve/</code>. Replica la configurazione tra i nodi del cluster: le modifiche in <code>/etc/pve/</code> vengono propagate automaticamente."
|
||||
},
|
||||
{
|
||||
"term": "pveam",
|
||||
"aliases": [
|
||||
"Gestore delle appliance Proxmox VE"
|
||||
],
|
||||
"category": "Proxmox",
|
||||
"definitionRich": "Strumento per il catalogo locale dei modelli CT. <code>pveam update</code> aggiorna l’indice; <code>pveam available</code> elenca i modelli e <code>pveam download <storage> <template></code> ne scarica uno."
|
||||
},
|
||||
{
|
||||
"term": "pveproxy",
|
||||
"category": "Proxmox",
|
||||
"definitionRich": "Servizio HTTPS dell’interfaccia e del terminale web Proxmox, sulla porta 8006. Viene riavviato durante gli aggiornamenti principali; per questo ProxMenux impedisce l’aggiornamento PVE 8 → 9 dal terminale web."
|
||||
},
|
||||
{
|
||||
"term": "pvesm",
|
||||
"aliases": [
|
||||
"Gestore dello spazio di archiviazione Proxmox"
|
||||
],
|
||||
"category": "Proxmox",
|
||||
"definitionRich": "Strumento CLI per la gestione dello storage Proxmox. <code>pvesm status</code> mostra tutti gli storage configurati; <code>pvesm add <type></code> registra quelli nuovi (NFS, Samba, iSCSI, dir, ZFS, LVM, ...).",
|
||||
"seeAlso": [
|
||||
{
|
||||
"label": "Comandi per archiviazione e dischi",
|
||||
"href": "/docs/help-info/storage-commands"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"term": "Container privilegiato",
|
||||
"category": "Linux",
|
||||
"definitionRich": "Container LXC il cui root <em>corrisponde all’UID 0 dell’host</em>, pur mantenendo namespace e altre restrizioni. È meno isolato di un container non privilegiato. GPU, USB e Samba non richiedono sempre questa modalità: contano permessi e mappature UID."
|
||||
},
|
||||
{
|
||||
"term": "ProxMenux Monitor",
|
||||
"category": "ProxMenux",
|
||||
"definitionRich": "Pannello web facoltativo di ProxMenux. Mostra statistiche dell’host in tempo reale (CPU, RAM, dischi e rete), una panoramica di VM e LXC e accesso con 2FA, sulla porta TCP <code>8008</code>.",
|
||||
"seeAlso": [
|
||||
{
|
||||
"label": "ProxMenux Monitor",
|
||||
"href": "/docs/settings/proxmenux-monitor"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"term": "qcow2",
|
||||
"aliases": [
|
||||
"QEMU Copy-On-Write v2"
|
||||
],
|
||||
"category": "Archiviazione",
|
||||
"definitionRich": "Formato di immagine disco VM comune nelle archiviazioni di tipo directory. Supporta allocazione su richiesta, snapshot e copy-on-write. Conversione con <code>qemu-img convert -O qcow2 ...</code>."
|
||||
},
|
||||
{
|
||||
"term": "qm",
|
||||
"aliases": [
|
||||
"Gestore QEMU"
|
||||
],
|
||||
"category": "Proxmox",
|
||||
"definitionRich": "Strumento per gestire VM in Proxmox: <code>qm list / start / stop / shutdown / config / set / destroy / importdisk / migrate</code>. Equivale a <code>pct</code> per i container.",
|
||||
"seeAlso": [
|
||||
{
|
||||
"label": "Gestione di VM e container",
|
||||
"href": "/docs/help-info/vm-ct-commands"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"term": "Q35",
|
||||
"category": "Virtualizzazione",
|
||||
"definitionRich": "Tipo di macchina QEMU che emula il chipset Intel Q35 con PCIe. Consigliato rispetto a i440FX per passthrough PCIe e sistemi ospiti moderni. Si imposta con <code>qm set <vmid> -machine q35</code>."
|
||||
},
|
||||
{
|
||||
"term": "QEMU",
|
||||
"category": "Virtualizzazione",
|
||||
"definitionRich": "Emulatore di macchine e virtualizzatore open source. Proxmox lo combina con KVM per eseguire VM con prestazioni vicine a quelle native."
|
||||
},
|
||||
{
|
||||
"term": "rclone",
|
||||
"category": "Linux",
|
||||
"definitionRich": "Strumento da riga di comando compatibile con numerosi servizi, tra cui Google Drive, Dropbox, OneDrive, Mega e S3. La guida ai backup cloud lo usa per montare uno spazio remoto come directory per gli archivi vzdump.",
|
||||
"seeAlso": [
|
||||
{
|
||||
"label": "Backup su cloud personale",
|
||||
"href": "/guides/backup_cloud"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"term": "Samba / SMB / CIFS",
|
||||
"category": "Archiviazione",
|
||||
"definitionRich": "Famiglia di protocolli Microsoft per condividere file. <strong>SMB</strong> è il protocollo, <strong>Samba</strong> l’implementazione open source per Linux e <strong>CIFS</strong> un vecchio dialetto SMB. Si aggiunge a Proxmox con <code>pvesm add cifs</code>.",
|
||||
"seeAlso": [
|
||||
{
|
||||
"label": "Gestore storage e condivisioni",
|
||||
"href": "/docs/storage-share"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"term": "SeaBIOS",
|
||||
"category": "Virtualizzazione",
|
||||
"definitionRich": "Implementazione open source del BIOS tradizionale usata da QEMU. Firmware predefinito delle nuove VM, salvo scelta di OVMF. Adatto a sistemi datati e installazioni Linux che non richiedono UEFI."
|
||||
},
|
||||
{
|
||||
"term": "smartctl / SMART",
|
||||
"aliases": [
|
||||
"Self-Monitoring, Analysis and Reporting Technology"
|
||||
],
|
||||
"category": "Archiviazione",
|
||||
"definitionRich": "Diagnostica integrata nei dischi per stato, errori e risultati degli autotest. Lo strumento è <code>smartctl</code>, del pacchetto <code>smartmontools</code>; <code>nvme-cli</code> aggiunge comandi specifici per NVMe.",
|
||||
"seeAlso": [
|
||||
{
|
||||
"label": "Integrità e test disco SMART",
|
||||
"href": "/docs/disk-manager/smart-disk-test"
|
||||
},
|
||||
{
|
||||
"label": "Comandi di archiviazione → sezione SMART",
|
||||
"href": "/docs/help-info/storage-commands"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"term": "systemd / systemctl / journalctl",
|
||||
"category": "Linux",
|
||||
"definitionRich": "Sistema di inizializzazione Debian / Proxmox. <code>systemctl</code> gestisce i servizi: avvio, arresto, abilitazione e stato. <code>journalctl</code> legge il registro binario prodotto da <code>systemd-journald</code>."
|
||||
},
|
||||
{
|
||||
"term": "sysctl",
|
||||
"category": "Linux",
|
||||
"definitionRich": "Strumento per leggere e modificare parametri del kernel. Le impostazioni persistenti risiedono normalmente in <code>/etc/sysctl.d/*.conf</code>; il supporto a <code>/etc/sysctl.conf</code> dipende dal servizio di caricamento. ProxMenux offre un profilo sysctl dopo l’installazione.",
|
||||
"seeAlso": [
|
||||
{
|
||||
"label": "Post-Install: Rete",
|
||||
"href": "/docs/post-install/network"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"term": "trixie",
|
||||
"category": "Linux",
|
||||
"definitionRich": "Nome in codice di Debian 13, base di Proxmox VE 9. Il predecessore è <em>bookworm</em> (Debian 12 / PVE 8).",
|
||||
"seeAlso": [
|
||||
{
|
||||
"label": "Aggiorna PVE 8 a PVE 9",
|
||||
"href": "/docs/utils/upgrade-pve8-pve9"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"term": "udev",
|
||||
"category": "Linux",
|
||||
"definitionRich": "Gestore dei dispositivi Linux. Risponde agli eventi hardware e crea o rimuove voci in <code>/dev</code>. Le regole in <code>/etc/udev/rules.d/</code> possono fissare nomi di interfaccia tramite MAC, creare dispositivi NVIDIA al caricamento del driver e altro."
|
||||
},
|
||||
{
|
||||
"term": "UID / GID idmap",
|
||||
"aliases": [
|
||||
"Cambio UID"
|
||||
],
|
||||
"category": "Linux",
|
||||
"definitionRich": "Con la mappatura predefinita dei LXC <strong>non privilegiati</strong>, UID e GID sull’host sono traslati di <code>+100000</code>: UID 0 corrisponde a 100000 e 1000 a 101000. Le mappature personalizzate possono differire; i proprietari dei file nei bind mount devono essere coerenti.",
|
||||
"seeAlso": [
|
||||
{
|
||||
"label": "Punti di montaggio LXC",
|
||||
"href": "/docs/storage-share/lxc-mount-points"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"term": "Container non privilegiato",
|
||||
"category": "Linux",
|
||||
"definitionRich": "Container LXC il cui root corrisponde a un UID non privilegiato sull’host, normalmente 100000. Riduce i privilegi sull’host pur condividendone il kernel. L’accesso hardware resta configurabile con permessi e mappature adeguati; la modalità privilegiata non è sempre necessaria."
|
||||
},
|
||||
{
|
||||
"term": "VFIO",
|
||||
"aliases": [
|
||||
"Funzione virtuale I/O"
|
||||
],
|
||||
"category": "Virtualizzazione",
|
||||
"definitionRich": "Infrastruttura del kernel Linux per driver sicuri nello spazio utente, usata per assegnare direttamente dispositivi PCIe alle VM. Coinvolge <code>vfio</code>, <code>vfio_iommu_type1</code> e <code>vfio_pci</code>, configurati in <code>/etc/modprobe.d/vfio.conf</code>.",
|
||||
"seeAlso": [
|
||||
{
|
||||
"label": "Post-Install: Virtualizzazione",
|
||||
"href": "/docs/post-install/virtualization"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"term": "VirtIO",
|
||||
"category": "Virtualizzazione",
|
||||
"definitionRich": "Famiglia di driver paravirtualizzati per rete, archiviazione, memoria dinamica e GPU. Evitano l’overhead dell’hardware emulato tradizionale, come e1000 o IDE. L’ospite richiede i driver corrispondenti: integrati in Linux e disponibili su ISO separata per Windows."
|
||||
},
|
||||
{
|
||||
"term": "VLAN",
|
||||
"aliases": [
|
||||
"Rete locale virtuale"
|
||||
],
|
||||
"category": "Rete",
|
||||
"definitionRich": "Tag 802.1Q che suddividono una rete fisica in più reti logiche. Si configurano per bridge o interfaccia in <code>/etc/network/interfaces</code>."
|
||||
},
|
||||
{
|
||||
"term": "VM",
|
||||
"aliases": [
|
||||
"Macchina virtuale"
|
||||
],
|
||||
"category": "Proxmox",
|
||||
"definitionRich": "Macchina virtuale gestita da Proxmox con QEMU/KVM, dotata di kernel proprio. Il VMID numerico corrisponde a <code>/etc/pve/qemu-server/<VMID>.conf</code>. Generalmente comporta più overhead di LXC, con isolamento tramite un kernel separato.",
|
||||
"seeAlso": [
|
||||
{
|
||||
"label": "Gestione di VM e container",
|
||||
"href": "/docs/help-info/vm-ct-commands"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"term": "vzdump",
|
||||
"category": "Proxmox",
|
||||
"definitionRich": "Strumento di backup Proxmox per VM e CT. Gli archivi su file <strong>non sono incrementali</strong>; le destinazioni PBS supportano trasferimenti incrementali. Ogni attività configura modalità (snapshot / suspend / stop), compressione (come zstd, gzip o lzo), conservazione e notifiche.",
|
||||
"seeAlso": [
|
||||
{
|
||||
"label": "Comandi di backup e ripristino",
|
||||
"href": "/docs/help-info/backup-commands"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"term": "ZFS",
|
||||
"aliases": [
|
||||
"Zettabyte File System"
|
||||
],
|
||||
"category": "Archiviazione",
|
||||
"definitionRich": "File system e gestore di volumi con snapshot, replica send/receive, checksum e compressione. Può riparare dati corrotti se esiste una copia ridondante valida. La cache <strong>ARC</strong> usa RAM e può essere limitata.",
|
||||
"seeAlso": [
|
||||
{
|
||||
"label": "Comandi di gestione ZFS",
|
||||
"href": "/docs/help-info/zfs-commands"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,235 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Comandi di backup Proxmox — vzdump, qmrestore, pct restore | ProxMenux",
|
||||
"description": "Riferimento dei comandi di backup e ripristino Proxmox VE: vzdump per VM e container LXC, qmrestore per VM, pct restore per container, backup pianificati in /etc/pve/jobs.cfg, hook script e percorsi da escludere.",
|
||||
"ogTitle": "Comandi di backup Proxmox — vzdump, qmrestore, pct restore",
|
||||
"ogDescription": "Riferimento dei comandi vzdump, qmrestore e pct restore per salvare e ripristinare VM e container LXC Proxmox.",
|
||||
"twitterTitle": "Comandi di backup Proxmox | ProxMenux",
|
||||
"twitterDescription": "Comandi vzdump, qmrestore e pct restore per salvare e ripristinare VM e container Proxmox."
|
||||
},
|
||||
"header": {
|
||||
"title": "Backup e ripristino",
|
||||
"description": "Riferimento ragionato dei comandi vzdump, qmrestore e pct restore per i backup Proxmox. Include pianificazione, opzioni avanzate come hook script, percorsi da escludere e priorità I/O, oltre alla gestione dei file di backup.",
|
||||
"section": "Aiuto e informazioni"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Tre modalità di backup",
|
||||
"body": "Per le VM, <strong>snapshot</strong> esegue un backup a caldo senza richiedere snapshot dello storage. <strong>suspend</strong> sospende prima la VM, senza necessariamente migliorare la coerenza. <strong>stop</strong> la spegne prima; se era attiva, può riprendere dopo l’inizio del backup. In LXC è diverso: snapshot richiede uno storage con snapshot, suspend usa due passaggi rsync e stop mantiene il container fermo per tutto il backup."
|
||||
},
|
||||
"commandGroups": [
|
||||
{
|
||||
"title": "Backup VM",
|
||||
"commands": [
|
||||
{
|
||||
"command": "vzdump <vmid>",
|
||||
"description": "Creare un backup di una specifica VM/CT"
|
||||
},
|
||||
{
|
||||
"command": "vzdump <vmid> --storage <storage>",
|
||||
"description": "Backup VM per lo storage specifico"
|
||||
},
|
||||
{
|
||||
"command": "vzdump <vmid> --mode snapshot",
|
||||
"description": "Crea backup snapshot (per VM)"
|
||||
},
|
||||
{
|
||||
"command": "vzdump <vmid> --mode suspend",
|
||||
"description": "Sospendi la VM prima del backup a caldo, modalità suspend precedente"
|
||||
},
|
||||
{
|
||||
"command": "vzdump <vmid> --mode stop",
|
||||
"description": "Spegni la VM prima di iniziare il backup"
|
||||
},
|
||||
{
|
||||
"command": "vzdump --all",
|
||||
"description": "Backup di tutte le VM e contenitori"
|
||||
},
|
||||
{
|
||||
"command": "vzdump --all --exclude <vmid1>,<vmid2>",
|
||||
"description": "Backup tutti tranne VM specificate"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Opzioni di backup",
|
||||
"commands": [
|
||||
{
|
||||
"command": "vzdump <vmid> --compress zstd",
|
||||
"description": "Utilizzare la compressione zstd per il backup"
|
||||
},
|
||||
{
|
||||
"command": "vzdump <vmid> --compress gzip --pigz <threads>",
|
||||
"description": "Usa pigz con più thread"
|
||||
},
|
||||
{
|
||||
"command": "vzdump <vmid> --storage <storage> --notes-template <text>",
|
||||
"description": "Aggiungi note al backup"
|
||||
},
|
||||
{
|
||||
"command": "vzdump <vmid> --mailto <email>",
|
||||
"description": "Invia email di notifica"
|
||||
},
|
||||
{
|
||||
"command": "vzdump <vmid> --prune-backups keep-last=<n>",
|
||||
"description": "Mantenere solo n backup per VM"
|
||||
},
|
||||
{
|
||||
"command": "vzdump <vmid> --stdexcludes 0",
|
||||
"description": "Non escludere i file temporanei"
|
||||
},
|
||||
{
|
||||
"command": "vzdump <vmid> --quiet 1",
|
||||
"description": "Sopprimi i messaggi di output"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Ripristinare i backup",
|
||||
"commands": [
|
||||
{
|
||||
"command": "qmrestore <backup-file> <vmid>",
|
||||
"description": "Ripristinare VM da backup"
|
||||
},
|
||||
{
|
||||
"command": "qmrestore <backup-file> <vmid> --storage <storage>",
|
||||
"description": "Ripristinare lo storage specifico"
|
||||
},
|
||||
{
|
||||
"command": "qmrestore <backup-file> <vmid> --unique",
|
||||
"description": "Ripristina la VM generando nuovi indirizzi MAC casuali"
|
||||
},
|
||||
{
|
||||
"command": "pct restore <vmid> <backup-file>",
|
||||
"description": "Ripristinare container da backup"
|
||||
},
|
||||
{
|
||||
"command": "pct restore <vmid> <backup-file> --storage <storage>",
|
||||
"description": "Ripristina il container su uno storage specifico"
|
||||
},
|
||||
{
|
||||
"command": "pct restore <vmid> <backup-file> --rootfs <storage>:<size-GiB>",
|
||||
"description": "Ripristina allocando il disco radice sullo storage e con la dimensione scelti"
|
||||
},
|
||||
{
|
||||
"command": "pct restore <vmid> <backup-file> --unprivileged 1",
|
||||
"description": "Ripristina come container non privilegiato"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Gestione dei backup",
|
||||
"commands": [
|
||||
{
|
||||
"command": "ls -la /var/lib/vz/dump/",
|
||||
"description": "Elenca i backup nella posizione predefinita"
|
||||
},
|
||||
{
|
||||
"command": "find /var/lib/vz/dump/ -name \"*.vma*\"",
|
||||
"description": "Trova i backup VM"
|
||||
},
|
||||
{
|
||||
"command": "find /var/lib/vz/dump/ -name \"*.tar*\"",
|
||||
"description": "Trova i backup dei container"
|
||||
},
|
||||
{
|
||||
"command": "pvesm list <storage> --content backup",
|
||||
"description": "Elenca i backup in archiviazione specifica"
|
||||
},
|
||||
{
|
||||
"command": "rm /var/lib/vz/dump/<backup-file>",
|
||||
"description": "Eliminare un file di backup"
|
||||
},
|
||||
{
|
||||
"command": "cat /etc/vzdump.conf",
|
||||
"description": "Mostra configurazione di backup"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Backup programmati",
|
||||
"commands": [
|
||||
{
|
||||
"command": "cat /etc/pve/jobs.cfg",
|
||||
"description": "Mostra gli orari di backup"
|
||||
},
|
||||
{
|
||||
"command": "nano /etc/vzdump.conf",
|
||||
"description": "Modifica della configurazione di backup"
|
||||
},
|
||||
{
|
||||
"command": "systemctl list-timers",
|
||||
"description": "Elenca i timer systemd"
|
||||
},
|
||||
{
|
||||
"command": "systemctl status cron",
|
||||
"description": "Controlla lo stato del servizio cron"
|
||||
},
|
||||
{
|
||||
"command": "pvenode task list --typefilter vzdump",
|
||||
"description": "Elenca le attività di backup completate"
|
||||
},
|
||||
{
|
||||
"command": "pvenode task log <upid>",
|
||||
"description": "Mostra il log di un’attività di backup tramite il suo UPID"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Operazioni avanzate",
|
||||
"commands": [
|
||||
{
|
||||
"command": "qmrestore <backup> <vmid> --force",
|
||||
"description": "Forza il ripristino sovrascrivendo la VM esistente"
|
||||
},
|
||||
{
|
||||
"command": "vzdump <vmid> --dumpdir <directory>",
|
||||
"description": "Specificare la directory di backup personalizzata"
|
||||
},
|
||||
{
|
||||
"command": "vzdump <vmid> --script <script>",
|
||||
"description": "Esegui uno script hook durante il backup"
|
||||
},
|
||||
{
|
||||
"command": "vzdump <vmid> --exclude-path <path>",
|
||||
"description": "Escludere percorsi specifici da backup"
|
||||
},
|
||||
{
|
||||
"command": "vzdump <vmid> --ionice <priority>",
|
||||
"description": "Impostare la priorità I/O per il processo di backup"
|
||||
},
|
||||
{
|
||||
"command": "vzdump <vmid> --lockwait <minutes>",
|
||||
"description": "Attendi il rilascio del blocco"
|
||||
},
|
||||
{
|
||||
"command": "qm importdisk <vmid> <disk-image> <storage>",
|
||||
"description": "Importare un file immagine disco (ad esempio raw, qcow2 o vmdk) come disco non utilizzato, non un archivio di backup vzdump"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"testRestores": {
|
||||
"title": "Verifica i ripristini",
|
||||
"bodyRich": "Ripristina periodicamente un backup su un VMID di prova libero con <code>qmrestore --unique</code>, avvia la VM su una rete isolata e controllane il contenuto. L’opzione unique genera nuovi indirizzi MAC, ma non cambia gli IP statici o le impostazioni delle applicazioni. Verifica allo stesso modo i container con <code>pct restore</code>."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/help-info/vm-ct-commands",
|
||||
"label": "Gestione VM e CT",
|
||||
"tail": "— comandi del ciclo di vita qm e pct."
|
||||
},
|
||||
{
|
||||
"href": "/docs/help-info/storage-commands",
|
||||
"label": "Archiviazione e dischi",
|
||||
"tail": "— gestione dello storage pvesm."
|
||||
},
|
||||
{
|
||||
"href": "/docs/help-info",
|
||||
"label": "Panoramica degli aiuti e delle informazioni",
|
||||
"tail": "."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,162 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Comandi per il passthrough GPU in Proxmox — lspci, VFIO, IOMMU, qm set hostpci | ProxMenux",
|
||||
"description": "Riferimento per il passthrough GPU in Proxmox VE: identificazione dei dispositivi con lspci, moduli VFIO, gruppi IOMMU (intel_iommu / amd_iommu), aggiornamenti GRUB e initramfs, qm set hostpci0 e configurazione NVIDIA / AMD / Intel.",
|
||||
"ogTitle": "Comandi per il passthrough GPU in Proxmox — lspci, VFIO, IOMMU, qm set hostpci",
|
||||
"ogDescription": "Riferimento per ispezionare e configurare il passthrough GPU su Proxmox VE — dispositivi PCI, moduli VFIO, gruppi IOMMU, param di avvio del kernel, qm set hostpci.",
|
||||
"twitterTitle": "Comandi per il passthrough GPU in Proxmox | ProxMenux",
|
||||
"twitterDescription": "Ispezionare i dispositivi PCI, configurare VFIO e IOMMU e collegare GPU alle VM su Proxmox VE."
|
||||
},
|
||||
"header": {
|
||||
"title": "Passthrough GPU",
|
||||
"description": "Riferimento per controllare e configurare il passthrough GPU / TPU in Proxmox: identificazione dei dispositivi (lspci), moduli VFIO, verifica di IOMMU, aggiornamenti initramfs / GRUB e configurazione per VM (qm set hostpci, machine q35, bios ovmf).",
|
||||
"section": "Aiuto e informazioni"
|
||||
},
|
||||
"intro": {
|
||||
"title": "IOMMU deve essere abilitato in BIOS / UEFI",
|
||||
"body": "Abilita prima IOMMU nel firmware: cerca <em>VT-d</em>, <em>AMD-Vi</em> o <em>IOMMU</em> nel BIOS/UEFI. In Linux è attivo per impostazione predefinita su AMD e su Intel con kernel Proxmox 6.8 o successivi. I kernel Intel precedenti possono richiedere <code>intel_iommu=on</code>. L’opzione <code>iommu=pt</code> controlla la modalità passthrough di IOMMU e non richiede di disabilitare indiscriminatamente il framebuffer dell’host."
|
||||
},
|
||||
"commandGroups": [
|
||||
{
|
||||
"title": "Identificazione del dispositivo",
|
||||
"commands": [
|
||||
{
|
||||
"command": "lspci -nn | grep -i nvidia",
|
||||
"description": "Elenco dispositivi NVIDIA PCI"
|
||||
},
|
||||
{
|
||||
"command": "lspci -nn | grep -i vga",
|
||||
"description": "Elenca tutti i dispositivi compatibili VGA"
|
||||
},
|
||||
{
|
||||
"command": "lspci -nn | grep -i amd",
|
||||
"description": "Elenco dispositivi PCI AMD"
|
||||
},
|
||||
{
|
||||
"command": "lspci -nnk | grep -A3 VGA",
|
||||
"description": "Elenca dispositivi VGA con driver kernel"
|
||||
},
|
||||
{
|
||||
"command": "lspci -v -s <PCI_ID>",
|
||||
"description": "Mostra informazioni dettagliate per dispositivo PCI specifico"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Configurazione VFIO",
|
||||
"commands": [
|
||||
{
|
||||
"command": "dmesg | grep -i vfio",
|
||||
"description": "Controllare i messaggi del modulo VFIO"
|
||||
},
|
||||
{
|
||||
"command": "cat /etc/modprobe.d/vfio.conf",
|
||||
"description": "Controlla la configurazione del passthrough VFIO"
|
||||
},
|
||||
{
|
||||
"command": "ls -la /etc/modprobe.d/",
|
||||
"description": "Elenca tutti i file di configurazione modprobe"
|
||||
},
|
||||
{
|
||||
"command": "cat /etc/modules",
|
||||
"description": "Mostra i moduli caricati al boot time"
|
||||
},
|
||||
{
|
||||
"command": "lsmod | grep vfio",
|
||||
"description": "Controlla se i moduli VFIO sono caricati"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Configurazione IOMMU",
|
||||
"commands": [
|
||||
{
|
||||
"command": "cat /etc/default/grub",
|
||||
"description": "Controlla le opzioni GRUB per IOMMU"
|
||||
},
|
||||
{
|
||||
"command": "update-grub",
|
||||
"description": "Applicare le modifiche GRUB"
|
||||
},
|
||||
{
|
||||
"command": "dmesg | grep -i iommu",
|
||||
"description": "Controlla i messaggi IOMMU nel registro del kernel"
|
||||
},
|
||||
{
|
||||
"command": "dmesg | grep -e DMAR -e IOMMU",
|
||||
"description": "Controlla i messaggi DMAR e IOMMU"
|
||||
},
|
||||
{
|
||||
"command": "find /sys/kernel/iommu_groups/ -type l | sort -V",
|
||||
"description": "Elenco gruppi IOMMU"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Aggiornamenti di sistema",
|
||||
"commands": [
|
||||
{
|
||||
"command": "update-initramfs -u",
|
||||
"description": "Applicare i cambiamenti initramfs (VFIO)"
|
||||
},
|
||||
{
|
||||
"command": "update-initramfs -u -k all",
|
||||
"description": "Aggiorna initramfs per tutti i kernel"
|
||||
},
|
||||
{
|
||||
"command": "cat /proc/cmdline",
|
||||
"description": "Mostra i parametri di avvio del kernel attuali"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Configurazione VM",
|
||||
"commands": [
|
||||
{
|
||||
"command": "qm config <vmid> | grep hostpci",
|
||||
"description": "Mostra la configurazione del passthrough PCI di una VM"
|
||||
},
|
||||
{
|
||||
"command": "qm set <vmid> -hostpci0 <PCI_ID>,pcie=1,x-vga=1",
|
||||
"description": "Aggiungi il passthrough GPU a una VM"
|
||||
},
|
||||
{
|
||||
"command": "cat /etc/pve/qemu-server/<vmid>.conf",
|
||||
"description": "Visualizza il file di configurazione VM"
|
||||
},
|
||||
{
|
||||
"command": "qm set <vmid> -machine q35",
|
||||
"description": "Impostare VM per utilizzare il chipset Q35 (consigliato per il passaggio)"
|
||||
},
|
||||
{
|
||||
"command": "qm set <vmid> -bios ovmf",
|
||||
"description": "Imposta la VM su UEFI/OVMF, consigliato se la ROM della GPU supporta UEFI"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"afterChangesTip": {
|
||||
"title": "Dopo aver modificato le configurazioni GRUB o modprobe",
|
||||
"bodyRich": "Sugli host con GRUB, applica i parametri di avvio con <code>update-grub</code>. Aggiorna i moduli con <code>update-initramfs -u -k all</code>, poi riavvia. Gli altri bootloader richiedono la propria procedura. Verifica <code>cat /proc/cmdline</code> (parametri del kernel), <code>dmesg | grep -i iommu</code> (IOMMU inizializzato) e <code>find /sys/kernel/iommu_groups/ -type l | sort -V</code> (gruppi presenti)."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/hardware/gpu-vm-passthrough",
|
||||
"label": "Aggiungi GPU a VM (Passthrough)",
|
||||
"tail": "— flusso ProxMenux interattivo."
|
||||
},
|
||||
{
|
||||
"href": "/docs/hardware/igpu-acceleration-lxc",
|
||||
"label": "Aggiungi GPU a LXC",
|
||||
"tail": " — condividere l’accesso ai dispositivi GPU dell’host con un container LXC."
|
||||
},
|
||||
{
|
||||
"href": "/docs/help-info",
|
||||
"label": "Panoramica degli aiuti e delle informazioni",
|
||||
"tail": "."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,87 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Riferimento dei comandi Proxmox — qm, pct, vzdump, zpool, pveversion | ProxMenux",
|
||||
"description": "Selezione di comandi essenziali di Proxmox VE e Linux per argomento: controllo del sistema, gestione di VM e LXC (qm / pct), archiviazione e dischi, rete, aggiornamenti, passthrough GPU, ZFS, backup e ripristino e strumenti da terminale per l’uso quotidiano.",
|
||||
"ogTitle": "Riferimento dei comandi Proxmox — qm, pct, vzdump, zpool",
|
||||
"ogDescription": "Selezione di comandi utili di Proxmox VE e Linux per argomento: sistema, VM/CT, archiviazione, rete, aggiornamenti, passthrough GPU, ZFS, backup e strumenti CLI.",
|
||||
"twitterTitle": "Riferimento dei comandi Proxmox | ProxMenux",
|
||||
"twitterDescription": "Selezione di comandi utili di Proxmox VE e Linux, raggruppati per argomento."
|
||||
},
|
||||
"header": {
|
||||
"title": "Aiuto e informazioni",
|
||||
"description": "Selezione di comandi utili di Linux e Proxmox VE per argomento. Le nove categorie vanno da un rapido controllo con pveversion a sequenze su più righe con zfs send/receive. È un riferimento unico da affiancare alle sezioni GPU, dischi e condivisioni di ProxMenux.",
|
||||
"section": "Aiuto e informazioni"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Che cosa è questo",
|
||||
"body": "Un catalogo di riferimento dei comandi che si utilizzano effettivamente su un host Proxmox, raggruppati per argomento. All'interno di ProxMenux è possibile selezionare un numero per eseguire un comando direttamente o incollare il proprio al prompt; su questo sito ogni categoria è una tabella di copia-incolla."
|
||||
},
|
||||
"opening": {
|
||||
"heading": "Apertura del menu",
|
||||
"body": "Dal menu principale di ProxMenux, premi <kbd>h</kbd>. Vedrai questo:",
|
||||
"imageAlt": "Menu Aiuto e informazioni con nove categorie di comandi"
|
||||
},
|
||||
"categories": {
|
||||
"heading": "Le nove categorie",
|
||||
"options": [
|
||||
{
|
||||
"icon": "Terminal",
|
||||
"href": "/docs/help-info/system-commands",
|
||||
"title": "Comandi di sistema utili",
|
||||
"description": "pveversion, uptime, free, journalctl, hostnamectl, informazioni sull’utente corrente, audit con lynis e fastfetch."
|
||||
},
|
||||
{
|
||||
"icon": "Cpu",
|
||||
"href": "/docs/help-info/vm-ct-commands",
|
||||
"title": "Gestione VM e CT",
|
||||
"description": "qm list / config / start / stop / migrate, pct list / config / enter, snapshot e clonazione."
|
||||
},
|
||||
{
|
||||
"icon": "HardDrive",
|
||||
"href": "/docs/help-info/storage-commands",
|
||||
"title": "Archiviazione e dischi",
|
||||
"description": "lsblk, blkid, smartctl, informazioni sui montaggi, pvesm status e comandi LVM."
|
||||
},
|
||||
{
|
||||
"icon": "Network",
|
||||
"href": "/docs/help-info/network-commands",
|
||||
"title": "Comandi rete",
|
||||
"description": "ip / ss / nmcli, controllo dei bridge, ping / traceroute, query DNS e fail2ban-client."
|
||||
},
|
||||
{
|
||||
"icon": "Package",
|
||||
"href": "/docs/help-info/update-commands",
|
||||
"title": "Aggiornamenti e pacchetti",
|
||||
"description": "apt update / dist-upgrade, apt-cache policy, query dpkg e verifica dei file dei repository."
|
||||
},
|
||||
{
|
||||
"icon": "Cpu",
|
||||
"href": "/docs/help-info/gpu-commands",
|
||||
"title": "Passthrough GPU",
|
||||
"description": "Controlli con lspci / dmesg, verifica dell’attivazione di IOMMU, associazione a vfio-pci e uso della GPU dall’host."
|
||||
},
|
||||
{
|
||||
"icon": "Database",
|
||||
"href": "/docs/help-info/zfs-commands",
|
||||
"title": "Gestione ZFS",
|
||||
"description": "Comandi zpool / zfs per stato, dataset, snapshot, send/receive, regolazione di ARC e TRIM."
|
||||
},
|
||||
{
|
||||
"icon": "Archive",
|
||||
"href": "/docs/help-info/backup-commands",
|
||||
"title": "Backup e ripristino",
|
||||
"description": "vzdump, qmrestore / pct restore, strumenti Proxmox Backup Server e operazioni sugli snapshot."
|
||||
},
|
||||
{
|
||||
"icon": "Wrench",
|
||||
"href": "/docs/help-info/tools-commands",
|
||||
"title": "Strumenti CLI di sistema",
|
||||
"description": "tmux, screen, htop / btop, ncdu, jq, dig, lsof, watch — strumenti di amministrazione quotidiana."
|
||||
}
|
||||
]
|
||||
},
|
||||
"tip": {
|
||||
"title": "Ricercabile dalla ricerca globale",
|
||||
"body": "La ricerca della documentazione indicizza tutti i comandi di queste pagine. Se ricordi un’opzione o un frammento ma non la pagina, usa la barra di ricerca in alto per raggiungere direttamente la voce giusta."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,174 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Comandi di rete Proxmox — ip, ping, ss, pve-firewall, iptables | ProxMenux",
|
||||
"description": "Riferimento dei comandi di rete dell’host Proxmox VE: ip / ip link / ip addr, ping, traceroute, mtr, ss, ethtool, dig, nslookup, oltre a pve-firewall, iptables e nftables per il filtraggio. Controllo di bridge, bond e VLAN.",
|
||||
"ogTitle": "Comandi di rete Proxmox — ip, ping, ss, pve-firewall, iptables",
|
||||
"ogDescription": "Comandi di rete per Proxmox VE: controllo delle interfacce, test di connettività, monitoraggio, firewall (pve-firewall, iptables, nftables) e query DNS.",
|
||||
"twitterTitle": "Comandi di rete Proxmox | ProxMenux",
|
||||
"twitterDescription": "Controlli di rete, test, configurazione e firewall per Proxmox VE."
|
||||
},
|
||||
"header": {
|
||||
"title": "Comandi rete",
|
||||
"description": "Referenza curata per la rete host Proxmox: informazioni sull'interfaccia, test di connettività, configurazione, monitoraggio del traffico e gestione del firewall. Combina ip / ss / nmcli / ethtool / tcpdump / pve-firewall.",
|
||||
"section": "Aiuto e informazioni"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Inventario rapido delle interfacce",
|
||||
"body": "<code>ip a</code> mostra ogni interfaccia con i relativi indirizzi IP e MAC. <code>ip r</code> mostra la tabella di routing. Insieme permettono di verificare in pochi secondi gran parte della configurazione di un’interfaccia."
|
||||
},
|
||||
"commandGroups": [
|
||||
{
|
||||
"title": "Informazioni sulla rete",
|
||||
"commands": [
|
||||
{
|
||||
"command": "ip a",
|
||||
"description": "Mostra interfacce di rete e IP"
|
||||
},
|
||||
{
|
||||
"command": "ip r",
|
||||
"description": "Mostra tabella di routing"
|
||||
},
|
||||
{
|
||||
"command": "ip -s link",
|
||||
"description": "Mostra statistiche traffico per interfaccia"
|
||||
},
|
||||
{
|
||||
"command": "brctl show",
|
||||
"description": "Mostra i bridge di rete configurati"
|
||||
},
|
||||
{
|
||||
"command": "cat /etc/network/interfaces",
|
||||
"description": "Mostra la configurazione di rete grezza"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Test di rete",
|
||||
"commands": [
|
||||
{
|
||||
"command": "ping <host>",
|
||||
"description": "Controlla la connettività con un altro host"
|
||||
},
|
||||
{
|
||||
"command": "traceroute <host>",
|
||||
"description": "Tracciare il percorso verso un host"
|
||||
},
|
||||
{
|
||||
"command": "mtr <host>",
|
||||
"description": "Combina ping e traceroute in tempo reale"
|
||||
},
|
||||
{
|
||||
"command": "dig <domain>",
|
||||
"description": "Ricerca DNS per un dominio"
|
||||
},
|
||||
{
|
||||
"command": "nslookup <domain>",
|
||||
"description": "Ricerca alternativa DNS"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Configurazione rete",
|
||||
"commands": [
|
||||
{
|
||||
"command": "ifreload -a",
|
||||
"description": "Ricarica la configurazione di rete (ifupdown2)"
|
||||
},
|
||||
{
|
||||
"command": "ethtool <iface>",
|
||||
"description": "Mostra informazioni dispositivo Ethernet"
|
||||
},
|
||||
{
|
||||
"command": "resolvectl status",
|
||||
"description": "Mostra stato risoluzione DNS"
|
||||
},
|
||||
{
|
||||
"command": "nmcli device show",
|
||||
"description": "Mostra i dettagli del dispositivo di rete (se viene utilizzato NetworkManager)"
|
||||
},
|
||||
{
|
||||
"command": "ip link set <iface> up",
|
||||
"description": "Attiva un’interfaccia di rete"
|
||||
},
|
||||
{
|
||||
"command": "ip link set <iface> down",
|
||||
"description": "Disattiva un’interfaccia di rete"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Monitoraggio della rete",
|
||||
"commands": [
|
||||
{
|
||||
"command": "ss -tuln",
|
||||
"description": "Mostra porte di ascolto (TCP/UDP)"
|
||||
},
|
||||
{
|
||||
"command": "netstat -tuln",
|
||||
"description": "Alternativa per mostrare le porte di ascolto"
|
||||
},
|
||||
{
|
||||
"command": "lsof -i",
|
||||
"description": "Elenca i file di rete aperti e le connessioni"
|
||||
},
|
||||
{
|
||||
"command": "tcpdump -i <iface>",
|
||||
"description": "Cattura i pacchetti sull'interfaccia"
|
||||
},
|
||||
{
|
||||
"command": "iftop -i <iface>",
|
||||
"description": "Monitorare l'utilizzo della larghezza di banda sull'interfaccia"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Gestione del firewall",
|
||||
"commands": [
|
||||
{
|
||||
"command": "iptables -L -n -v",
|
||||
"description": "Mostra regole firewall attive (iptables)"
|
||||
},
|
||||
{
|
||||
"command": "nft list ruleset",
|
||||
"description": "Mostra regole nftables"
|
||||
},
|
||||
{
|
||||
"command": "pve-firewall status",
|
||||
"description": "Controlla stato firewall Proxmox"
|
||||
},
|
||||
{
|
||||
"command": "pve-firewall compile",
|
||||
"description": "Compila le regole firewall per tutti i nodi"
|
||||
},
|
||||
{
|
||||
"command": "pve-firewall reload",
|
||||
"description": "Ricarica regole firewall Proxmox"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"iptablesTip": {
|
||||
"title": "iptables vs nftables",
|
||||
"bodyRich": "Il servizio classico <code>pve-firewall</code> genera regole iptables. Il servizio alternativo proxmox-firewall usa <strong>nftables</strong>. Controlla il backend iptables con <code>iptables -L -n -v</code> e quello nftables con <code>nft list ruleset</code>. Usa gli strumenti del backend attivo: gli elenchi non sono intercambiabili."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/network",
|
||||
"label": "Gestione rete",
|
||||
"tail": "— strumenti di rete interattivi ProxMenux (analisi del ponte, nomi persistenti, monitoraggio)."
|
||||
},
|
||||
{
|
||||
"href": "/docs/help-info/tools-commands",
|
||||
"label": "Strumenti CLI di sistema",
|
||||
"tail": "— più strumenti di monitoraggio della rete."
|
||||
},
|
||||
{
|
||||
"href": "/docs/help-info",
|
||||
"label": "Panoramica degli aiuti e delle informazioni",
|
||||
"tail": "."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,232 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Comandi per storage e dischi Proxmox — lsblk, LVM, pvesm, qm importdisk | ProxMenux",
|
||||
"description": "Riferimento dei comandi per storage e dischi in Proxmox VE: lsblk, blkid, parted, lvdisplay, vgdisplay, pvs, mount, df, du, ncdu e pvesm status, oltre a qm importdisk e qemu-img convert per i dischi delle VM.",
|
||||
"ogTitle": "Comandi per storage e dischi Proxmox — lsblk, LVM, pvesm, qm importdisk",
|
||||
"ogDescription": "Comandi per storage e dischi Proxmox VE: controllo dei dischi, LVM, filesystem montati, gestione dello storage Proxmox, importazione dei dischi VM e conversione delle immagini.",
|
||||
"twitterTitle": "Comandi di stoccaggio Proxmox | ProxMenux",
|
||||
"twitterDescription": "ispezione disco, informazioni di montaggio, gestione LVM, archiviazione Proxmox e comandi di importazione/conversione del disco VM."
|
||||
},
|
||||
"header": {
|
||||
"title": "Archiviazione e dischi",
|
||||
"description": "Riferimento ragionato per controllare lo storage sugli host Proxmox: dispositivi a blocchi, partizioni, filesystem montati, volumi LVM, configurazione dello storage Proxmox e alcune operazioni sui dischi delle VM (importdisk, qemu-img convert).",
|
||||
"section": "Aiuto e informazioni"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Inventario rapido dei dischi",
|
||||
"body": "<code>lsblk</code> mostra i dispositivi a blocchi e le partizioni ad albero. Controlla gli identificatori persistenti con <code>ls -lh /dev/disk/by-id/</code>: per lo stesso disco restano normalmente stabili dopo riavvii o cambi nell’ordine dei dispositivi. Sostituire il disco o cambiare il modo in cui il controller ne espone l’identità può modificare il percorso by-id."
|
||||
},
|
||||
"commandGroups": [
|
||||
{
|
||||
"title": "Informazioni disco",
|
||||
"commands": [
|
||||
{
|
||||
"command": "lsblk",
|
||||
"description": "Elenca i dispositivi a blocchi e le partizioni"
|
||||
},
|
||||
{
|
||||
"command": "fdisk -l",
|
||||
"description": "Elenca i dischi con informazioni dettagliate"
|
||||
},
|
||||
{
|
||||
"command": "blkid",
|
||||
"description": "Mostra l'UUID e il tipo di file system dei dispositivi a blocchi"
|
||||
},
|
||||
{
|
||||
"command": "ls -lh /dev/disk/by-id/",
|
||||
"description": "Elenca gli identificatori persistenti del disco"
|
||||
},
|
||||
{
|
||||
"command": "parted -l",
|
||||
"description": "Layout dettagliato delle partizioni con dati GPT"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Utilizzo dello storage",
|
||||
"commands": [
|
||||
{
|
||||
"command": "df -h",
|
||||
"description": "Mostra utilizzo disco per punto di montaggio"
|
||||
},
|
||||
{
|
||||
"command": "du -sh /path",
|
||||
"description": "Mostra dimensione directory"
|
||||
},
|
||||
{
|
||||
"command": "mount | grep ^/dev",
|
||||
"description": "Mostra dispositivi di storage montati"
|
||||
},
|
||||
{
|
||||
"command": "cat /proc/mounts",
|
||||
"description": "Mostra tutti i montaggi attivi dal kernel"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Gestione LVM",
|
||||
"commands": [
|
||||
{
|
||||
"command": "pvdisplay",
|
||||
"description": "Visualizza volumi fisici (LVM)"
|
||||
},
|
||||
{
|
||||
"command": "vgdisplay",
|
||||
"description": "Visualizza gruppi di volumi (LVM)"
|
||||
},
|
||||
{
|
||||
"command": "lvdisplay",
|
||||
"description": "Visualizza volumi logici (LVM)"
|
||||
},
|
||||
{
|
||||
"command": "pvs",
|
||||
"description": "Output conciso di volumi fisici"
|
||||
},
|
||||
{
|
||||
"command": "vgs",
|
||||
"description": "Output conciso dei gruppi di volumi"
|
||||
},
|
||||
{
|
||||
"command": "lvs",
|
||||
"description": "Output conciso di volumi logici"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Storage Proxmox",
|
||||
"commands": [
|
||||
{
|
||||
"command": "cat /etc/pve/storage.cfg",
|
||||
"description": "Mostra configurazione storage Proxmox"
|
||||
},
|
||||
{
|
||||
"command": "pvesm status",
|
||||
"description": "Mostra lo stato di tutti gli storage pool"
|
||||
},
|
||||
{
|
||||
"command": "pvesm status --enabled 1",
|
||||
"description": "Elenca gli storage configurati e abilitati"
|
||||
},
|
||||
{
|
||||
"command": "pvesm list <storage>",
|
||||
"description": "Elenca il contenuto di uno storage specifico"
|
||||
},
|
||||
{
|
||||
"command": "pvesm scan nfs <server>",
|
||||
"description": "Rileva le esportazioni NFS di un server"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Azioni disco",
|
||||
"commands": [
|
||||
{
|
||||
"command": "qm importdisk <vmid> <image_path> <storage>",
|
||||
"description": "Importa l’immagine come disco inutilizzato della VM, da collegare in seguito"
|
||||
},
|
||||
{
|
||||
"command": "qm set <vmid> -<bus><index> <disk_path>",
|
||||
"description": "Assegnare disco fisico a VM (modalità passante)"
|
||||
},
|
||||
{
|
||||
"command": "qemu-img convert -O <format> <input> <output>",
|
||||
"description": "Converti il formato di un’immagine disco non in uso"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Salute del disco SMART",
|
||||
"commands": [
|
||||
{
|
||||
"command": "smartctl --scan",
|
||||
"description": "Elenca dispositivi SMART-capable sull'host"
|
||||
},
|
||||
{
|
||||
"command": "smartctl -i /dev/<disk>",
|
||||
"description": "Informazioni di base del dispositivo (modello, firmware, seriale)"
|
||||
},
|
||||
{
|
||||
"command": "smartctl -H /dev/<disk>",
|
||||
"description": "Controllo rapido della salute — complessivamente PASSED / FAILED"
|
||||
},
|
||||
{
|
||||
"command": "smartctl -A /dev/<disk>",
|
||||
"description": "Solo attributi SMART: valori grezzi e soglie"
|
||||
},
|
||||
{
|
||||
"command": "smartctl -a /dev/<disk>",
|
||||
"description": "Informazioni complete SMART — info + attributi + log autotest"
|
||||
},
|
||||
{
|
||||
"command": "smartctl -t short /dev/<disk>",
|
||||
"description": "Avviare breve auto-test (~2 minuti, funziona in background)"
|
||||
},
|
||||
{
|
||||
"command": "smartctl -t long /dev/<disk>",
|
||||
"description": "Avvia un autotest lungo, anche di ore, in background"
|
||||
},
|
||||
{
|
||||
"command": "smartctl -l selftest /dev/<disk>",
|
||||
"description": "Visualizza il registro di prova (risultati dei test precedenti)"
|
||||
},
|
||||
{
|
||||
"command": "smartctl -X /dev/<disk>",
|
||||
"description": "Interrompi l'autotest in esecuzione"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Salute del disco NVMe",
|
||||
"commands": [
|
||||
{
|
||||
"command": "nvme list",
|
||||
"description": "Elenca dispositivi NVMe visibili al kernel"
|
||||
},
|
||||
{
|
||||
"command": "nvme smart-log /dev/<nvme>",
|
||||
"description": "log NVMe-specific SMART (temperatura, usura, errori)"
|
||||
},
|
||||
{
|
||||
"command": "nvme id-ctrl /dev/<nvme>",
|
||||
"description": "Controller info (modello, firmware, funzionalità)"
|
||||
},
|
||||
{
|
||||
"command": "nvme error-log /dev/<nvme>",
|
||||
"description": "Ultime entrate del registro di errore NVMe"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"lvmTip": {
|
||||
"title": "LVM comandi brevi e lunghi",
|
||||
"bodyRich": "Entrambe le forme sono disponibili. <code>pvs</code> / <code>vgs</code> / <code>lvs</code> producono tabelle compatte con una riga per volume fisico, gruppo di volumi o volume logico, rispettivamente. <code>pvdisplay</code> / <code>vgdisplay</code> / <code>lvdisplay</code> forniscono più dettagli su diverse righe. Le forme brevi sono pratiche per i controlli quotidiani."
|
||||
},
|
||||
"smartInfo": {
|
||||
"title": "SMART per SATA/SAS e NVMe",
|
||||
"bodyRich": "<strong>I dischi SATA / SAS, inclusi gli SSD,</strong> si possono controllare con <code>smartctl</code> di <code>smartmontools</code>, installato di serie in Proxmox. Specifica il dispositivo, per esempio <code>/dev/sda</code> o <code>/dev/sdb</code>. <strong>I dischi NVMe</strong> usano un protocollo nativo diverso. Anche <code>smartctl</code> li supporta, mentre <code>nvme</code> di <code>nvme-cli</code> offre query specifiche su controller, namespace e stato NVMe. Installalo con <code>apt install nvme-cli</code> se manca."
|
||||
},
|
||||
"selfTestWarn": {
|
||||
"title": "Le auto-test funzionano in background",
|
||||
"bodyRich": "Sui dischi supportati, <code>smartctl -t short /dev/<disk></code> e <code>smartctl -t long /dev/<disk></code> avviano test in background e restituiscono subito il controllo. Verifica l’avanzamento con <code>smartctl -a /dev/<disk></code>, cercando \"Self-test routine in progress\", oppure attendi e leggi <code>smartctl -l selftest /dev/<disk></code>. I test brevi durano spesso circa due minuti; quelli lunghi possono richiedere ore. Il disco resta utilizzabile, ma le prestazioni I/O possono diminuire."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/help-info/zfs-commands",
|
||||
"label": "Gestione ZFS",
|
||||
"tail": "— comandi zpool / zfs per lo storage supportato da ZFS."
|
||||
},
|
||||
{
|
||||
"href": "/docs/disk-manager",
|
||||
"label": "Gestione disco",
|
||||
"tail": "— flussi interattivi ProxMenux per il passaggio del disco, l'importazione, la formattazione, SMART."
|
||||
},
|
||||
{
|
||||
"href": "/docs/help-info",
|
||||
"label": "Panoramica degli aiuti e delle informazioni",
|
||||
"tail": "."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,158 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Comandi di sistema Proxmox VE — pveversion, uptime, journalctl, systemctl | ProxMenux",
|
||||
"description": "Comandi di sistema Proxmox VE e Linux per versioni, tempo di attività, memoria, servizi, log e utenti, con strumenti di audit e riepilogo. È incluso il riavvio di un servizio: non tutti gli esempi sono di sola lettura.",
|
||||
"ogTitle": "Comandi di sistema Proxmox VE — pveversion, uptime, journalctl, systemctl",
|
||||
"ogDescription": "Comandi di sistema Proxmox VE e Linux per versione, tempo di attività, servizi, log e informazioni sugli utenti, con gestione dei servizi e strumenti di audit.",
|
||||
"twitterTitle": "Comandi di sistema Proxmox VE | ProxMenux",
|
||||
"twitterDescription": "Comandi di ispezione di sistema essenziali per Proxmox VE — versione, stato, servizi, registri, informazioni utente."
|
||||
},
|
||||
"header": {
|
||||
"title": "Comandi di sistema utili",
|
||||
"description": "Comandi per controllare l’host Proxmox: versione, kernel, tempo di attività, memoria, stato dell’interfaccia web, log recenti e utenti connessi, con strumenti di audit e riepilogo. La maggior parte consulta lo stato, ma systemctl restart pveproxy riavvia il proxy web e gli strumenti di audit possono scrivere rapporti e log.",
|
||||
"section": "Aiuto e informazioni"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Che cosa è questo",
|
||||
"body": "Lo stesso elenco numerato mostrato da ProxMenux in <em>Comandi di sistema utili</em>. Usa il pulsante Copia per copiare un comando o consulta l’elenco per ricordare l’opzione esatta."
|
||||
},
|
||||
"commandGroups": [
|
||||
{
|
||||
"title": "Informazioni sistema",
|
||||
"commands": [
|
||||
{
|
||||
"command": "pveversion",
|
||||
"description": "Mostra versione Proxmox"
|
||||
},
|
||||
{
|
||||
"command": "pveversion -v",
|
||||
"description": "Informazioni dettagliate sulla versione Proxmox"
|
||||
},
|
||||
{
|
||||
"command": "hostnamectl",
|
||||
"description": "Nome host e informazioni kernel"
|
||||
},
|
||||
{
|
||||
"command": "uname -a",
|
||||
"description": "Informazioni kernel e architettura"
|
||||
},
|
||||
{
|
||||
"command": "cat /etc/os-release",
|
||||
"description": "Dettagli versione sistema operativo"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Stato di sistema",
|
||||
"commands": [
|
||||
{
|
||||
"command": "uptime",
|
||||
"description": "Tempo di attività sistema"
|
||||
},
|
||||
{
|
||||
"command": "uptime -p",
|
||||
"description": "Formato leggibile del tempo di attività"
|
||||
},
|
||||
{
|
||||
"command": "free -h",
|
||||
"description": "Utilizzo RAM e swap"
|
||||
},
|
||||
{
|
||||
"command": "who -b",
|
||||
"description": "Ora ultimo avvio sistema"
|
||||
},
|
||||
{
|
||||
"command": "last -x | grep shutdown",
|
||||
"description": "Arresti precedenti"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Gestione dei servizi",
|
||||
"commands": [
|
||||
{
|
||||
"command": "systemctl status pveproxy",
|
||||
"description": "Controlla stato interfaccia web Proxmox"
|
||||
},
|
||||
{
|
||||
"command": "systemctl restart pveproxy",
|
||||
"description": "Riavvia proxy interfaccia web"
|
||||
},
|
||||
{
|
||||
"command": "journalctl -xe",
|
||||
"description": "Errori e registri di sistema"
|
||||
},
|
||||
{
|
||||
"command": "dmesg -T | tail -n 50",
|
||||
"description": "Ultime 50 righe del registro kernel"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Informazioni utente",
|
||||
"commands": [
|
||||
{
|
||||
"command": "whoami",
|
||||
"description": "Utente attuale"
|
||||
},
|
||||
{
|
||||
"command": "id",
|
||||
"description": "UID, GID e gruppi dell'utente corrente"
|
||||
},
|
||||
{
|
||||
"command": "who",
|
||||
"description": "Utenti connessi"
|
||||
},
|
||||
{
|
||||
"command": "w",
|
||||
"description": "Attività utenti e tempo di attività"
|
||||
},
|
||||
{
|
||||
"command": "uptime && w",
|
||||
"description": "Tempo di attività e utenti connessi"
|
||||
},
|
||||
{
|
||||
"command": "cut -d: -f1,3,4 /etc/passwd",
|
||||
"description": "Tutti gli utenti con UID e GID"
|
||||
},
|
||||
{
|
||||
"command": "getent passwd | column -t -s :",
|
||||
"description": "Tabella utenti leggibile (UID, shell, ecc.)"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Strumenti di controllo e di sintesi",
|
||||
"commands": [
|
||||
{
|
||||
"command": "lynis audit system",
|
||||
"description": "Eseguire un controllo completo della sicurezza del sistema"
|
||||
},
|
||||
{
|
||||
"command": "fastfetch",
|
||||
"description": "Visualizza il riepilogo del sistema in formato ASCII"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/help-info/update-commands",
|
||||
"label": "Aggiornamenti e pacchetti",
|
||||
"tail": " — comandi apt e di aggiornamento di PVE."
|
||||
},
|
||||
{
|
||||
"href": "/docs/help-info/tools-commands",
|
||||
"label": "Strumenti CLI di sistema",
|
||||
"tail": " — htop, btop, ncdu e strumenti simili."
|
||||
},
|
||||
{
|
||||
"href": "/docs/help-info",
|
||||
"label": "Panoramica degli aiuti e delle informazioni",
|
||||
"tail": "."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,276 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Strumenti CLI Linux per Proxmox — htop, iftop, journalctl, rsync, tmux | ProxMenux",
|
||||
"description": "Strumenti CLI Linux per amministrare Proxmox VE ogni giorno: monitoraggio (htop, atop, glances, iotop), rete (iftop, nmap, mtr, ss), file e testo (find, grep, journalctl), prestazioni (iostat, perf, strace), sicurezza (fail2ban, lynis, lsof) e amministrazione remota (ssh, rsync, tmux).",
|
||||
"ogTitle": "Strumenti CLI Linux per Proxmox — htop, iftop, journalctl, rsync, tmux",
|
||||
"ogDescription": "Strumenti CLI per l’amministrazione quotidiana di Proxmox VE, suddivisi per funzione: monitoraggio, rete, file e testo, prestazioni, sicurezza e amministrazione remota.",
|
||||
"twitterTitle": "Strumenti CLI Linux per Proxmox | ProxMenux",
|
||||
"twitterDescription": "Strumenti quotidiani CLI per l'amministrazione Proxmox VE raggruppati per scopo."
|
||||
},
|
||||
"header": {
|
||||
"title": "Strumenti CLI di sistema",
|
||||
"description": "Strumenti quotidiani CLI per l'amministrazione degli host Proxmox, raggruppati per scopo: monitoraggio, rete, file e testo, analisi delle prestazioni, sicurezza, amministrazione remota e configurazione di sistema.",
|
||||
"section": "Aiuto e informazioni"
|
||||
},
|
||||
"intro": {
|
||||
"title": "La maggior parte viene installata dopo l’installazione",
|
||||
"body": "Se hai eseguito lo script di post-installazione con le scelte predefinite, la maggior parte degli strumenti è già installata. Per quelli mancanti, l’<utilsLink>installazione delle utilità di sistema</utilsLink> di ProxMenux offre gruppi predefiniti: base, sviluppo, rete, analisi e altri."
|
||||
},
|
||||
"commandGroups": [
|
||||
{
|
||||
"title": "Monitoraggio del sistema",
|
||||
"commands": [
|
||||
{
|
||||
"command": "htop",
|
||||
"description": "Visualizzatore interattivo dei processi con uso di CPU e memoria"
|
||||
},
|
||||
{
|
||||
"command": "top",
|
||||
"description": "Visualizzazione di processi Linux in tempo reale"
|
||||
},
|
||||
{
|
||||
"command": "atop",
|
||||
"description": "Monitor avanzato del sistema e dei processi"
|
||||
},
|
||||
{
|
||||
"command": "glances",
|
||||
"description": "Strumento di monitoraggio del sistema con interfaccia web"
|
||||
},
|
||||
{
|
||||
"command": "nmon",
|
||||
"description": "Strumento di monitoraggio delle prestazioni"
|
||||
},
|
||||
{
|
||||
"command": "iotop",
|
||||
"description": "Monitorare l'utilizzo del disco I/O da processi"
|
||||
},
|
||||
{
|
||||
"command": "vmstat 1",
|
||||
"description": "Segnala le statistiche della memoria virtuale ogni secondo"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Strumenti rete",
|
||||
"commands": [
|
||||
{
|
||||
"command": "iftop",
|
||||
"description": "Visualizzazione dell'utilizzo della larghezza di banda su un'interfaccia"
|
||||
},
|
||||
{
|
||||
"command": "nmap <host>",
|
||||
"description": "esplorazione della rete e scansione della sicurezza"
|
||||
},
|
||||
{
|
||||
"command": "tcpdump -i <interface>",
|
||||
"description": "Cattura il traffico di rete"
|
||||
},
|
||||
{
|
||||
"command": "netstat -tuln",
|
||||
"description": "Visualizza le connessioni di rete"
|
||||
},
|
||||
{
|
||||
"command": "ss -tuln",
|
||||
"description": "Un’altra utilità per esaminare i socket di rete"
|
||||
},
|
||||
{
|
||||
"command": "mtr <host>",
|
||||
"description": "Strumento diagnostico di rete che combina ping e traceroute"
|
||||
},
|
||||
{
|
||||
"command": "iperf3 -s",
|
||||
"description": "Eseguire server iperf per test di larghezza di banda"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Strumenti di file e testo",
|
||||
"commands": [
|
||||
{
|
||||
"command": "find / -name <filename>",
|
||||
"description": "Trova file per nome"
|
||||
},
|
||||
{
|
||||
"command": "grep -r 'pattern' /path",
|
||||
"description": "Ricerca di modello in file"
|
||||
},
|
||||
{
|
||||
"command": "sed -i 's/old/new/g' file",
|
||||
"description": "Sostituire il testo nei file"
|
||||
},
|
||||
{
|
||||
"command": "awk '{print $1}' file",
|
||||
"description": "Strumento di elaborazione testi"
|
||||
},
|
||||
{
|
||||
"command": "tail -f /var/log/syslog",
|
||||
"description": "Seguire il file di log in tempo reale"
|
||||
},
|
||||
{
|
||||
"command": "less /var/log/messages",
|
||||
"description": "Visualizza file con paginazione"
|
||||
},
|
||||
{
|
||||
"command": "journalctl -f",
|
||||
"description": "Segui i log del journal di systemd"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Analisi delle prestazioni",
|
||||
"commands": [
|
||||
{
|
||||
"command": "iostat -x 1",
|
||||
"description": "Mostra statistiche di CPU e I/O"
|
||||
},
|
||||
{
|
||||
"command": "mpstat -P ALL 1",
|
||||
"description": "Mostra l’utilizzo della CPU"
|
||||
},
|
||||
{
|
||||
"command": "perf top",
|
||||
"description": "Strumento di profilazione del sistema"
|
||||
},
|
||||
{
|
||||
"command": "strace <command>",
|
||||
"description": "Tracciare chiamate e segnali di sistema"
|
||||
},
|
||||
{
|
||||
"command": "lsof",
|
||||
"description": "Elenca i file aperti"
|
||||
},
|
||||
{
|
||||
"command": "pstree",
|
||||
"description": "Mostra l’albero dei processi"
|
||||
},
|
||||
{
|
||||
"command": "slabtop",
|
||||
"description": "Mostra informazioni sulla cache slab del kernel"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Strumenti di sicurezza",
|
||||
"commands": [
|
||||
{
|
||||
"command": "fail2ban-client status",
|
||||
"description": "Mostra lo stato fail2ban"
|
||||
},
|
||||
{
|
||||
"command": "chage -l <username>",
|
||||
"description": "Mostra informazioni sulla scadenza della password"
|
||||
},
|
||||
{
|
||||
"command": "lastlog",
|
||||
"description": "Mostra ultimo login di tutti gli utenti"
|
||||
},
|
||||
{
|
||||
"command": "last",
|
||||
"description": "Mostra l’elenco degli ultimi utenti che hanno effettuato l’accesso"
|
||||
},
|
||||
{
|
||||
"command": "w",
|
||||
"description": "Mostra chi è collegato e cosa stanno facendo"
|
||||
},
|
||||
{
|
||||
"command": "lynis audit system",
|
||||
"description": "Strumento di controllo della sicurezza"
|
||||
},
|
||||
{
|
||||
"command": "openssl s_client -connect host:port",
|
||||
"description": "Test connessioni SSL/TLS"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Amministrazione remota",
|
||||
"commands": [
|
||||
{
|
||||
"command": "ssh <user>@<host>",
|
||||
"description": "Collegamento sicuro della shell"
|
||||
},
|
||||
{
|
||||
"command": "scp <file> <user>@<host>:<path>",
|
||||
"description": "Copia i file in modo sicuro"
|
||||
},
|
||||
{
|
||||
"command": "rsync -avz <src> <dest>",
|
||||
"description": "Sincronizza file/cartelle"
|
||||
},
|
||||
{
|
||||
"command": "screen",
|
||||
"description": "Multiplexer del terminale"
|
||||
},
|
||||
{
|
||||
"command": "tmux",
|
||||
"description": "Multiplexer di terminale alternativo"
|
||||
},
|
||||
{
|
||||
"command": "ssh-keygen -t rsa -b 4096",
|
||||
"description": "Generare coppia chiave SSH"
|
||||
},
|
||||
{
|
||||
"command": "ssh-copy-id <user>@<host>",
|
||||
"description": "Copia chiave SSH per server"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Configurazione del sistema",
|
||||
"commands": [
|
||||
{
|
||||
"command": "systemctl status <service>",
|
||||
"description": "Controlla stato servizio"
|
||||
},
|
||||
{
|
||||
"command": "journalctl -u <service>",
|
||||
"description": "Visualizza i registri dei servizi"
|
||||
},
|
||||
{
|
||||
"command": "timedatectl",
|
||||
"description": "Gestisci data e ora del sistema"
|
||||
},
|
||||
{
|
||||
"command": "hostnamectl",
|
||||
"description": "Gestisci il nome host del sistema"
|
||||
},
|
||||
{
|
||||
"command": "localectl",
|
||||
"description": "Gestisci le impostazioni locali e la tastiera del sistema"
|
||||
},
|
||||
{
|
||||
"command": "update-alternatives --config <name>",
|
||||
"description": "Configurare alternative di sistema"
|
||||
},
|
||||
{
|
||||
"command": "dpkg-reconfigure <package>",
|
||||
"description": "Riconfigurare un pacchetto installato"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"tmuxTip": {
|
||||
"title": "Usa tmux / screen per i comandi di lunga durata",
|
||||
"bodyRich": "Esegui le attività lunghe, come backup, aggiornamenti o grandi trasferimenti rsync, in <code>tmux</code> o <code>screen</code>, così una disconnessione SSH non termina la sessione del terminale. Per una sessione tmux, riconnettiti allo stesso host con lo stesso utente ed esegui <code>tmux attach</code>. Le sessioni screen hanno un proprio comando di riconnessione."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/utils/system-utils",
|
||||
"label": "Installazione utilità di sistema",
|
||||
"tail": "— installare uno di questi strumenti mancanti."
|
||||
},
|
||||
{
|
||||
"href": "/docs/help-info/system-commands",
|
||||
"label": "Comandi di sistema utili",
|
||||
"tail": "— Comandi di ispezione specifici di Proxmox."
|
||||
},
|
||||
{
|
||||
"href": "/docs/help-info",
|
||||
"label": "Panoramica degli aiuti e delle informazioni",
|
||||
"tail": "."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,170 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Comandi per aggiornamenti e pacchetti Proxmox — apt, pveupgrade, dpkg | ProxMenux",
|
||||
"description": "Comandi di aggiornamento e gestione dei pacchetti Proxmox VE: apt update, apt upgrade, apt dist-upgrade, pveupgrade, dpkg -l, informazioni sui pacchetti e configurazione dei repository in /etc/apt/sources.list.d/.",
|
||||
"ogTitle": "Comandi per aggiornamenti e pacchetti Proxmox — apt, pveupgrade, dpkg",
|
||||
"ogDescription": "Comandi apt, pveupgrade e dpkg per mantenere aggiornato Proxmox VE: aggiornamenti di sistema, gestione dei pacchetti e configurazione dei repository.",
|
||||
"twitterTitle": "Comandi di aggiornamento Proxmox | ProxMenux",
|
||||
"twitterDescription": "Comandi apt e pveupgrade per gestire aggiornamenti e pacchetti sugli host Proxmox VE."
|
||||
},
|
||||
"header": {
|
||||
"title": "Aggiornamenti e pacchetti",
|
||||
"description": "Selezione di comandi apt e di aggiornamento Proxmox: aggiornamenti del sistema, installazione, rimozione e rimozione completa dei pacchetti, query con apt-cache policy e dpkg -l e controllo dei repository.",
|
||||
"section": "Aiuto e informazioni"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Aggiorna sempre l'indice prima",
|
||||
"body": "<code>apt update</code> aggiorna l’indice locale dei pacchetti dai repository configurati. Senza questo passaggio, <code>apt install</code> può usare versioni obsolete o fallire con \"Unable to locate package\"."
|
||||
},
|
||||
"commandGroups": [
|
||||
{
|
||||
"title": "Aggiornamenti di sistema",
|
||||
"commands": [
|
||||
{
|
||||
"command": "apt update && apt upgrade -y",
|
||||
"description": "Aggiorna gli elenchi e i pacchetti installati (apt upgrade)"
|
||||
},
|
||||
{
|
||||
"command": "apt dist-upgrade -y",
|
||||
"description": "Aggiornamento completo del sistema, comprese le dipendenze"
|
||||
},
|
||||
{
|
||||
"command": "apt update",
|
||||
"description": "Aggiorna solo gli elenchi dei pacchetti"
|
||||
},
|
||||
{
|
||||
"command": "apt upgrade",
|
||||
"description": "Aggiorna solo i pacchetti (interattivo)"
|
||||
},
|
||||
{
|
||||
"command": "apt full-upgrade",
|
||||
"description": "Aggiorna i pacchetti gestendo le dipendenze (interattivo)"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Aggiornamenti Proxmox",
|
||||
"commands": [
|
||||
{
|
||||
"command": "pveupdate",
|
||||
"description": "Aggiorna elenchi pacchetti Proxmox"
|
||||
},
|
||||
{
|
||||
"command": "pveupgrade",
|
||||
"description": "Avvia l’aggiornamento interattivo dei pacchetti Proxmox"
|
||||
},
|
||||
{
|
||||
"command": "pve8to9 --full",
|
||||
"description": "Verifica la preparazione al passaggio da PVE 8 a 9, senza eseguire l’aggiornamento"
|
||||
},
|
||||
{
|
||||
"command": "ceph versions",
|
||||
"description": "Mostra le versioni dei demoni Ceph prima di pianificare un aggiornamento"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Gestione dei pacchetti",
|
||||
"commands": [
|
||||
{
|
||||
"command": "apt autoremove --purge",
|
||||
"description": "Rimuovi i pacchetti non utilizzati e la loro configurazione"
|
||||
},
|
||||
{
|
||||
"command": "apt clean",
|
||||
"description": "Cancellare il repository locale di file di pacchetto recuperati"
|
||||
},
|
||||
{
|
||||
"command": "apt autoclean",
|
||||
"description": "Cancellare solo i file di pacchetto obsoleti"
|
||||
},
|
||||
{
|
||||
"command": "apt install <package>",
|
||||
"description": "Installare un pacchetto specifico"
|
||||
},
|
||||
{
|
||||
"command": "apt remove <package>",
|
||||
"description": "Rimuovi un pacchetto"
|
||||
},
|
||||
{
|
||||
"command": "apt purge <package>",
|
||||
"description": "Rimuovere un pacchetto e i suoi file di configurazione"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Informazioni sul pacchetto",
|
||||
"commands": [
|
||||
{
|
||||
"command": "apt list --installed",
|
||||
"description": "Elenca tutti i pacchetti installati"
|
||||
},
|
||||
{
|
||||
"command": "apt search <keyword>",
|
||||
"description": "Ricerca di pacchetti per parola chiave"
|
||||
},
|
||||
{
|
||||
"command": "apt show <package>",
|
||||
"description": "Mostra informazioni dettagliate su un pacchetto"
|
||||
},
|
||||
{
|
||||
"command": "dpkg -l",
|
||||
"description": "Elenca tutti i pacchetti installati (alternativo)"
|
||||
},
|
||||
{
|
||||
"command": "dpkg -l | grep <keyword>",
|
||||
"description": "Cerca pacchetti installati per parola chiave"
|
||||
},
|
||||
{
|
||||
"command": "apt-cache policy <package>",
|
||||
"description": "Mostra le versioni e le priorità dei pacchetti"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Gestione dei repository",
|
||||
"commands": [
|
||||
{
|
||||
"command": "cat /etc/apt/sources.list",
|
||||
"description": "Visualizza principali fonti di repository APT"
|
||||
},
|
||||
{
|
||||
"command": "ls -la /etc/apt/sources.list.d/",
|
||||
"description": "Elenca altri file sorgente repository"
|
||||
},
|
||||
{
|
||||
"command": "cat /etc/apt/sources.list.d/pve-enterprise.list",
|
||||
"description": "Mostra la configurazione del repository Proxmox Enterprise nel file .list di PVE 8"
|
||||
},
|
||||
{
|
||||
"command": "apt-key list",
|
||||
"description": "Elenca le vecchie chiavi di firma dei repository, se apt-key è disponibile"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"backupWarn": {
|
||||
"title": "Crea un backup prima degli aggiornamenti principali",
|
||||
"bodyRich": "Per gli aggiornamenti ordinari, Proxmox raccomanda <code>apt update && apt full-upgrade</code>: controlla le modifiche ai pacchetti prima di confermare. Per gli <strong>aggiornamenti a una nuova versione principale</strong> (PVE 8 → 9), usa la procedura ProxMenux <upgradeLink>Aggiorna PVE 8 a PVE 9</upgradeLink>. Include controlli preliminari, migrazione dei repository e verifica finale. Crea prima un backup."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/utils/system-update",
|
||||
"label": "Aggiornamento del sistema Proxmox (interattivo)",
|
||||
"tail": "— wrapper che fa tutto questo con una finestra di dialogo di conferma, una ricostruzione automatica DKMS di driver gestiti da ProxMenux quando viene installato un nuovo kernel e un prompt di riavvio. Avviabile anche dal pulsante Update Now della dashboard ProxMenux Monitor."
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils/upgrade-pve8-pve9",
|
||||
"label": "Aggiorna PVE 8 a PVE 9",
|
||||
"tail": " — per gli aggiornamenti a una nuova versione principale."
|
||||
},
|
||||
{
|
||||
"href": "/docs/help-info",
|
||||
"label": "Panoramica degli aiuti e delle informazioni",
|
||||
"tail": "."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,182 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Comandi qm e pct di Proxmox — gestione di VM e container LXC | ProxMenux",
|
||||
"description": "Comandi qm e pct di Proxmox VE per VM e container LXC: list, config, start, stop, shutdown, reboot, destroy, clone, migrate, snapshot, resize, oltre a pct exec / enter / push / pull per i container.",
|
||||
"ogTitle": "Comandi qm e pct di Proxmox — gestione di VM e container LXC",
|
||||
"ogDescription": "Riferimento dei comandi Proxmox VE qm e pct — gestire macchine virtuali e contenitori LXC dal CLI: avviare, arrestare, configurare, snapshot, migrare, clone, distruggere.",
|
||||
"twitterTitle": "Comandi qm / pct di Proxmox | ProxMenux",
|
||||
"twitterDescription": "Comandi qm / pct per la gestione di macchine virtuali e contenitori LXC in Proxmox VE."
|
||||
},
|
||||
"header": {
|
||||
"title": "Gestione VM e CT",
|
||||
"description": "Selezione di comandi qm per le VM e pct per i container LXC: elenchi, ciclo di vita (start / stop / shutdown / destroy), controllo della configurazione e operazioni sui container come exec, enter, push e pull.",
|
||||
"section": "Aiuto e informazioni"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Trova prima un VMID o un CTID",
|
||||
"body": "Quasi ogni comando ha bisogno di un ID numerico. Utilizzare <code>qm list</code> per VM e <code>pct list</code> per contenitori. Sostituisci <code><vmid></code> / <code><ctid></code> nei frammenti con l'ID effettivo prima di eseguire."
|
||||
},
|
||||
"commandGroups": [
|
||||
{
|
||||
"title": "Elenco e Informazioni",
|
||||
"commands": [
|
||||
{
|
||||
"command": "qm list",
|
||||
"description": "Elenca tutte le VM"
|
||||
},
|
||||
{
|
||||
"command": "pct list",
|
||||
"description": "Elenca tutti i container LXC"
|
||||
},
|
||||
{
|
||||
"command": "qm config <vmid>",
|
||||
"description": "Mostra la configurazione della VM interpretata da qm"
|
||||
},
|
||||
{
|
||||
"command": "pct config <ctid>",
|
||||
"description": "Mostra la configurazione del container interpretata da pct"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "File di configurazione (raw)",
|
||||
"commands": [
|
||||
{
|
||||
"command": "cat /etc/pve/qemu-server/<vmid>.conf",
|
||||
"description": "Visualizza file configurazione VM non elaborato"
|
||||
},
|
||||
{
|
||||
"command": "cat /etc/pve/lxc/<ctid>.conf",
|
||||
"description": "Visualizza file configurazione CT non elaborato"
|
||||
},
|
||||
{
|
||||
"command": "nano /etc/pve/qemu-server/<vmid>.conf",
|
||||
"description": "Modifica file di configurazione VM grezzo (nano)"
|
||||
},
|
||||
{
|
||||
"command": "nano /etc/pve/lxc/<ctid>.conf",
|
||||
"description": "Modifica file di configurazione CT grezzo (nano)"
|
||||
},
|
||||
{
|
||||
"command": "vi /etc/pve/qemu-server/<vmid>.conf",
|
||||
"description": "Modifica file di configurazione VM grezzo (vi)"
|
||||
},
|
||||
{
|
||||
"command": "vi /etc/pve/lxc/<ctid>.conf",
|
||||
"description": "Modifica file di configurazione CT grezzo (vi)"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Gestione VM",
|
||||
"commands": [
|
||||
{
|
||||
"command": "qm start <vmid>",
|
||||
"description": "Avvia una VM. Usa il <vmid> corretto"
|
||||
},
|
||||
{
|
||||
"command": "qm stop <vmid>",
|
||||
"description": "Forza l'arresto di una macchina virtuale. Usa il <vmid> corretto"
|
||||
},
|
||||
{
|
||||
"command": "qm shutdown <vmid>",
|
||||
"description": "Spegni una macchina virtuale in modo ordinato"
|
||||
},
|
||||
{
|
||||
"command": "qm reset <vmid>",
|
||||
"description": "Reimpostare una macchina virtuale (hard reboot)"
|
||||
},
|
||||
{
|
||||
"command": "qm suspend <vmid>",
|
||||
"description": "Sospendere una macchina virtuale"
|
||||
},
|
||||
{
|
||||
"command": "qm resume <vmid>",
|
||||
"description": "Riprendi una macchina virtuale sospesa"
|
||||
},
|
||||
{
|
||||
"command": "qm destroy <vmid>",
|
||||
"description": "Elimina una VM (irreversibile). Usa il <vmid> corretto"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Gestione del contenitore",
|
||||
"commands": [
|
||||
{
|
||||
"command": "pct start <ctid>",
|
||||
"description": "Avvia un container. Usa il <ctid> corretto"
|
||||
},
|
||||
{
|
||||
"command": "pct stop <ctid>",
|
||||
"description": "Forza l’arresto di un container. Usa il <ctid> corretto"
|
||||
},
|
||||
{
|
||||
"command": "pct shutdown <ctid>",
|
||||
"description": "Arresta un container in modo ordinato"
|
||||
},
|
||||
{
|
||||
"command": "pct reboot <ctid>",
|
||||
"description": "Riavviare un contenitore"
|
||||
},
|
||||
{
|
||||
"command": "pct destroy <ctid>",
|
||||
"description": "Elimina un CT (irreversibile). Usa il <ctid> corretto"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Operazioni del contenitore",
|
||||
"commands": [
|
||||
{
|
||||
"command": "pct exec <ctid> -- getent passwd | column -t -s :",
|
||||
"description": "Mostra utenti CT in tabella"
|
||||
},
|
||||
{
|
||||
"command": "pct exec <ctid> -- ps aux --sort=-%mem | head",
|
||||
"description": "Processi CT con maggior consumo memoria"
|
||||
},
|
||||
{
|
||||
"command": "pct enter <ctid>",
|
||||
"description": "Entra nella shell del container"
|
||||
},
|
||||
{
|
||||
"command": "pct push <ctid> <source> <dest>",
|
||||
"description": "Copia file da host a container"
|
||||
},
|
||||
{
|
||||
"command": "pct pull <ctid> <source> <dest>",
|
||||
"description": "Copia file da contenitore per host"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"destroyWarn": {
|
||||
"title": "La distruzione è irreversibile",
|
||||
"bodyRich": "<code>qm destroy</code> e <code>pct destroy</code> rimuovono la configurazione del guest e i volumi disco gestiti. Non presumere che eliminino anche i dati esterni o montati tramite bind mount. La CLI non chiede conferma per impostazione predefinita. Salva prima i dati utili: <backupLink>Backup e ripristino</backupLink>."
|
||||
},
|
||||
"qmConfigTip": {
|
||||
"title": "qm config e modifica diretta del file .conf",
|
||||
"bodyRich": "<code>qm config <vmid></code> e <code>pct config <ctid></code> mostrano la configurazione tramite i parser di Proxmox. Per le modifiche ordinarie, preferisci <code>qm set</code> o il comando pct equivalente. Le modifiche dirette a <code>/etc/pve/qemu-server/<vmid>.conf</code> o <code>/etc/pve/lxc/<ctid>.conf</code> saltano convalida e blocchi dei comandi di gestione; il file deve restare interpretabile. Ferma il guest e conserva una copia prima delle riparazioni manuali. <code>pmxcfs</code> sincronizza le configurazioni tra nodi, non i dati dei dischi guest."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/help-info/backup-commands",
|
||||
"label": "Backup e ripristino",
|
||||
"tail": " — vzdump e qmrestore / pct restore."
|
||||
},
|
||||
{
|
||||
"href": "/docs/help-info/storage-commands",
|
||||
"label": "Archiviazione e dischi",
|
||||
"tail": "— qm importdisk e gestione del disco."
|
||||
},
|
||||
{
|
||||
"href": "/docs/help-info",
|
||||
"label": "Panoramica degli aiuti e delle informazioni",
|
||||
"tail": "."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,227 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Comandi ZFS in Proxmox — zpool, zfs snapshot, send/receive, scrub | ProxMenux",
|
||||
"description": "Comandi di gestione ZFS in Proxmox VE: zpool create / status / history, zfs list / get / set, snapshot, clone, zfs send e receive, scrub, clear, replace, zpool iostat e riepilogo ARC.",
|
||||
"ogTitle": "Comandi ZFS in Proxmox — zpool, zfs snapshot, send/receive, scrub",
|
||||
"ogDescription": "Riferimento dei comandi zpool e zfs su Proxmox VE — pool, dataset, snapshot, replica, manutenzione.",
|
||||
"twitterTitle": "Comandi ZFS in Proxmox | ProxMenux",
|
||||
"twitterDescription": "comandi zpool e zfs per Proxmox VE: pool, dataset, snapshot, replica, manutenzione."
|
||||
},
|
||||
"header": {
|
||||
"title": "Gestione ZFS",
|
||||
"description": "Selezione di comandi zpool e zfs: controllo dei pool, creazione, lettura, modifica ed eliminazione dei dataset, snapshot, clone e send/receive incrementale o ricorsivo, manutenzione con scrub / clear / replace, statistiche I/O e riepilogo ARC.",
|
||||
"section": "Aiuto e informazioni"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Due famiglie di comando",
|
||||
"body": "<code>zpool *</code> gestisce i pool di archiviazione (strato fisico — dischi, vdevs, ridondanza). <code>zfs *</code> gestisce i dataset e le istantanee che vivono all'interno di tali pool (strato logico — filesystems, volumi, snapshot, proprietà)."
|
||||
},
|
||||
"commandGroups": [
|
||||
{
|
||||
"title": "Informazioni sui pool",
|
||||
"commands": [
|
||||
{
|
||||
"command": "zpool list",
|
||||
"description": "Elenca tutti i pool ZFS"
|
||||
},
|
||||
{
|
||||
"command": "zpool status",
|
||||
"description": "Mostra lo stato e la salute del pool in dettaglio"
|
||||
},
|
||||
{
|
||||
"command": "zpool status -v",
|
||||
"description": "Mostra lo stato dettagliato del pool con gli errori"
|
||||
},
|
||||
{
|
||||
"command": "zpool history",
|
||||
"description": "Mostra cronologia dei comandi per tutti pools"
|
||||
},
|
||||
{
|
||||
"command": "zpool history <pool>",
|
||||
"description": "Mostra cronologia dei comandi per specifiche pool"
|
||||
},
|
||||
{
|
||||
"command": "zpool get all <pool>",
|
||||
"description": "Mostra tutte le proprietà di un pool"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Gestione dei dataset",
|
||||
"commands": [
|
||||
{
|
||||
"command": "zfs list",
|
||||
"description": "Elenca tutti i set di dati ZFS"
|
||||
},
|
||||
{
|
||||
"command": "zfs list -r <pool>",
|
||||
"description": "Elenca tutti i set di dati in un pool ricorsivamente"
|
||||
},
|
||||
{
|
||||
"command": "zfs create <pool>/<dataset>",
|
||||
"description": "Crea un nuovo set di dati"
|
||||
},
|
||||
{
|
||||
"command": "zfs destroy <pool>/<dataset>",
|
||||
"description": "Distruggere un set di dati"
|
||||
},
|
||||
{
|
||||
"command": "zfs rename <pool>/<dataset> <pool>/<new-name>",
|
||||
"description": "Rinominare un set di dati"
|
||||
},
|
||||
{
|
||||
"command": "zfs get all <pool>/<dataset>",
|
||||
"description": "Mostra tutte le proprietà di un set di dati"
|
||||
},
|
||||
{
|
||||
"command": "zfs set compression=on <pool>/<dataset>",
|
||||
"description": "Abilitare la compressione su un set di dati"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Gestione snapshot",
|
||||
"commands": [
|
||||
{
|
||||
"command": "zfs list -t snapshot",
|
||||
"description": "Elenca tutte le snapshot"
|
||||
},
|
||||
{
|
||||
"command": "zfs list -t snapshot -r <pool>",
|
||||
"description": "Elenca tutte le istantanee in un pool"
|
||||
},
|
||||
{
|
||||
"command": "zfs snapshot <pool>/<dataset>@<snapshot-name>",
|
||||
"description": "Creare una snapshot"
|
||||
},
|
||||
{
|
||||
"command": "zfs destroy <pool>/<dataset>@<snapshot-name>",
|
||||
"description": "Eliminare un'istantanea"
|
||||
},
|
||||
{
|
||||
"command": "zfs rollback <pool>/<dataset>@<snapshot-name>",
|
||||
"description": "Rollback a una snapshot"
|
||||
},
|
||||
{
|
||||
"command": "zfs hold <tag> <pool>/<dataset>@<snapshot-name>",
|
||||
"description": "Proteggi uno snapshot dall’eliminazione con un hold"
|
||||
},
|
||||
{
|
||||
"command": "zfs release <tag> <pool>/<dataset>@<snapshot-name>",
|
||||
"description": "Rimuovi la protezione hold da uno snapshot"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Clone e Invia/Riceve",
|
||||
"commands": [
|
||||
{
|
||||
"command": "zfs clone <pool>/<dataset>@<snapshot> <pool>/<clone-name>",
|
||||
"description": "Creare un clone da una snapshot"
|
||||
},
|
||||
{
|
||||
"command": "zfs send <pool>/<dataset>@<snapshot> > backup.zfs",
|
||||
"description": "Invia una snapshot a un file"
|
||||
},
|
||||
{
|
||||
"command": "zfs receive <pool>/<dataset> < backup.zfs",
|
||||
"description": "Ricevi un'istantanea da un file"
|
||||
},
|
||||
{
|
||||
"command": "zfs send -i <pool>/<dataset>@<snap1> <pool>/<dataset>@<snap2> > incr.zfs",
|
||||
"description": "Invia istantanee incrementali"
|
||||
},
|
||||
{
|
||||
"command": "zfs send -R <pool>/<dataset>@<snapshot> > full-recursive.zfs",
|
||||
"description": "Invia istantanee ricorsive"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Manutenzione e riparazione",
|
||||
"commands": [
|
||||
{
|
||||
"command": "zpool scrub <pool>",
|
||||
"description": "Avvia una verifica scrub del pool"
|
||||
},
|
||||
{
|
||||
"command": "zpool scrub -s <pool>",
|
||||
"description": "Interrompi lo scrub in corso"
|
||||
},
|
||||
{
|
||||
"command": "zpool clear <pool>",
|
||||
"description": "Azzera i contatori degli errori del pool"
|
||||
},
|
||||
{
|
||||
"command": "zpool clear <pool> <device>",
|
||||
"description": "Azzera gli errori di un dispositivo specifico"
|
||||
},
|
||||
{
|
||||
"command": "zpool replace <pool> <old-device> <new-device>",
|
||||
"description": "Sostituire un dispositivo fallito"
|
||||
},
|
||||
{
|
||||
"command": "zpool offline <pool> <device>",
|
||||
"description": "Prendere un dispositivo offline"
|
||||
},
|
||||
{
|
||||
"command": "zpool online <pool> <device>",
|
||||
"description": "Portare un dispositivo online"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Performance e monitoraggio",
|
||||
"commands": [
|
||||
{
|
||||
"command": "zpool iostat",
|
||||
"description": "Mostra le statistiche I/O dei pool"
|
||||
},
|
||||
{
|
||||
"command": "zpool iostat -v",
|
||||
"description": "Visualizza statistiche dettagliate I/O"
|
||||
},
|
||||
{
|
||||
"command": "zpool iostat 5",
|
||||
"description": "Mostra statistiche I/O ogni 5 secondi"
|
||||
},
|
||||
{
|
||||
"command": "arc_summary",
|
||||
"description": "Mostra statistiche ARC (se installato)"
|
||||
},
|
||||
{
|
||||
"command": "zfs get compressratio <pool>/<dataset>",
|
||||
"description": "Mostra rapporto di compressione"
|
||||
},
|
||||
{
|
||||
"command": "zfs get used,available,referenced <pool>/<dataset>",
|
||||
"description": "Mostra l'uso dello spazio"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"bestPractices": {
|
||||
"title": "Migliori pratiche operative",
|
||||
"bodyRich": "Pianifica regolarmente <code>zpool scrub</code> per verificare le checksum e controlla i risultati. Mantieni spazio libero: l’effetto di un pool quasi pieno dipende dal carico e dalla struttura. Usa <code>zpool replace</code> per un dispositivo guasto e segui la procedura del relativo tipo di vdev. Detach + add non è una sostituzione equivalente e può cambiare la topologia o eliminare la ridondanza."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/help-info/storage-commands",
|
||||
"label": "Archiviazione e dischi",
|
||||
"tail": "— comandi generici block-device e LVM."
|
||||
},
|
||||
{
|
||||
"href": "/docs/help-info/backup-commands",
|
||||
"label": "Backup e ripristino",
|
||||
"tail": " — vzdump, qmrestore."
|
||||
},
|
||||
{
|
||||
"href": "/docs/help-info",
|
||||
"label": "Panoramica degli aiuti e delle informazioni",
|
||||
"tail": "."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Installazione di ProxMenux | Documentazione ProxMenux",
|
||||
"description": "Installa ProxMenux con un comando su host Proxmox VE 8 o successivi. Include cataloghi JSON già generati in otto lingue: inglese, spagnolo, francese, tedesco, italiano, portoghese, slovacco e svedese. Scegli la lingua durante l’installazione o cambiala in seguito nelle impostazioni. Il canale beta offre accesso anticipato alle nuove funzionalità.",
|
||||
"ogTitle": "Installazione di ProxMenux | Documentazione ProxMenux",
|
||||
"ogDescription": "Installare ProxMenux su Proxmox VE 8+ in un unico comando. Canali stabili e beta disponibili."
|
||||
},
|
||||
"header": {
|
||||
"title": "Installazione di ProxMenux",
|
||||
"description": "Un programma di installazione da avviare con una sola riga su qualsiasi host Proxmox VE 8 o successivo. Installa automaticamente le dipendenze, scarica gli script, configura il comando di avvio del menu e chiede la lingua alla prima esecuzione. Due canali: stabile (predefinito) e beta.",
|
||||
"section": "Installazione"
|
||||
},
|
||||
"stable": {
|
||||
"heading": "Installa",
|
||||
"intro": "Esegui questo comando nel terminale del tuo host Proxmox:",
|
||||
"code": "bash -c \"$(wget -qLO - https://raw.githubusercontent.com/MacRimi/ProxMenux/main/install_proxmenux.sh)\""
|
||||
},
|
||||
"during": {
|
||||
"heading": "Durante l'installazione",
|
||||
"intro": "ProxMenux installa automaticamente e configura le dipendenze di cui ha bisogno:",
|
||||
"tablePackage": "Pacchetto",
|
||||
"tablePurpose": "Funzione",
|
||||
"rows": [
|
||||
{
|
||||
"package": "dialog",
|
||||
"purpose": "Menu interattivi nel terminale"
|
||||
},
|
||||
{
|
||||
"package": "curl",
|
||||
"purpose": "Download e controlli di connettività"
|
||||
},
|
||||
{
|
||||
"package": "jq",
|
||||
"purpose": "Elaborazione JSON"
|
||||
},
|
||||
{
|
||||
"package": "git",
|
||||
"purpose": "Clonazione e aggiornamento dei repository"
|
||||
}
|
||||
],
|
||||
"outro": "L’installazione scarica anche gli script in <code>/usr/local/share/proxmenux/</code> e crea il comando di avvio <code>/usr/local/bin/menu</code>. Il pannello web <strong>ProxMenux Monitor</strong> viene registrato come servizio <code>proxmenux-monitor.service</code>.",
|
||||
"imageAlt": "Installazione ProxMenux in corso"
|
||||
},
|
||||
"first": {
|
||||
"heading": "Primo lancio",
|
||||
"intro": "Una volta installato, eseguire:",
|
||||
"code": "menu",
|
||||
"outro": "ProxMenux si apre sul menu principale, da cui puoi avviare tutte le procedure documentate in questo sito. Su un host Proxmox appena installato, <postlink>Post-installazione</postlink> è un buon punto di partenza."
|
||||
},
|
||||
"beta": {
|
||||
"heading": "Canale beta",
|
||||
"calloutTitle": "Che cos’è il programma beta?",
|
||||
"calloutBody": "Vuoi provare le novità prima dell’uscita ufficiale e contribuire alla versione finale? Il programma beta di ProxMenux offre accesso anticipato alle nuove funzionalità, incluse le ultime build di Monitor, dal ramo <code>develop</code>. Le versioni beta possono contenere bug o funzioni incomplete. I tuoi commenti aiutano a correggerli prima della versione stabile.",
|
||||
"intro": "Installare la versione beta invece di quella stabile con:",
|
||||
"code": "bash -c \"$(wget -qLO - https://raw.githubusercontent.com/MacRimi/ProxMenux/develop/install_proxmenux_beta.sh)\"",
|
||||
"outro": "La beta è facoltativa: devi avviarne esplicitamente il programma di installazione. Quando esce una versione stabile, ProxMenux avvisa al successivo avvio di <code>menu</code> e propone il passaggio automatico. Per uscire prima dalla beta, scegli <betalink>Disattiva programma beta</betalink> nelle impostazioni."
|
||||
},
|
||||
"updating": {
|
||||
"heading": "Aggiornamento",
|
||||
"body": "ProxMenux gestisce i propri aggiornamenti. Se è disponibile una nuova versione, il successivo avvio di <code>menu</code> propone di installarla. Accettando, vengono sostituiti i file e la configurazione dello strumento nell’installazione esistente, senza download manuali. Il canale stabile riceve versioni stabili e la beta riceve versioni beta, con la proposta di passaggio descritta sopra. Il messaggio dipende da dove esegui <code>menu</code>: via SSH o dalla console Proxmox appare una finestra sì/no e, accettando, l’aggiornamento viene applicato subito. Nel terminale WebSocket di ProxMenux Monitor appare invece un messaggio informativo, perché il terminale verrebbe interrotto durante l’operazione. Il messaggio mostra l’installazione in una riga (<code>bash -c \"$(wget -qLO - https://raw.githubusercontent.com/MacRimi/ProxMenux/main/install_proxmenux.sh)\"</code> per il canale stabile, oppure l’URL equivalente di <code>install_proxmenux_beta.sh</code> per la beta), da eseguire via SSH o dalla console."
|
||||
},
|
||||
"uninstall": {
|
||||
"heading": "Disinstallare",
|
||||
"body": "Da ProxMenux: <strong>Impostazioni → Disinstalla ProxMenux</strong>. La disinstallazione rimuove gli script, il comando di avvio e il servizio Monitor, oltre alle dipendenze selezionate se richiesto. Ripristina <code>/root/.bashrc</code> e <code>/etc/motd</code> dalle copie create da Post-Install, se presenti (altrimenti rimuove la riga di ProxMenux dal MOTD). Procedura completa: <uninstalllink>Disinstallare ProxMenux</uninstalllink>."
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Risoluzione dei problemi",
|
||||
"virustotalTitle": "VirusTotal contrassegna l'URL di installazione",
|
||||
"virustotalBody": "Il risultato di 1/95 del motore <em>Chong Lua Dao</em>, riportato nella issue #162, è stato identificato dal manutentore come falso positivo. L’installazione si avvia con un comando che scarica ed esegue lo script (<code>bash -c \"$(wget -qLO - …)\"</code>) e può scaricare <code>jq</code> dalla sua release ufficiale su GitHub. Questo <em>comportamento</em> può attivare gli scanner euristici; il rapporto storico non costituisce una valutazione di ogni download futuro. Il codice dell’installazione è aperto e verificabile. Altri dettagli nella <issuelink>issue #162</issuelink>.",
|
||||
"aptTitle": "L’installazione non riesce a causa di errori di apt",
|
||||
"aptBody": "Di solito manca un repository Proxmox o è configurato male. L’installazione ottiene le dipendenze tramite apt, che non riesce a procedere se i repository sono configurati male. Può accadere su installazioni minime di Proxmox 8 non ancora aggiornate. Esegui prima <code>apt-get update</code> manualmente, correggi tutti gli errori e riavvia l’installazione.",
|
||||
"menuTitle": "`menu: command not found` dopo l'installazione",
|
||||
"menuBody": "Il comando di avvio si trova in <code>/usr/local/bin/menu</code>. Verificane la presenza con <code>ls -lh /usr/local/bin/menu</code>. Se manca, l’installazione si è interrotta: eseguila di nuovo. Se il file esiste ma il comando non viene trovato, PATH non include <code>/usr/local/bin</code>. Correggi PATH o esegui direttamente <code>/usr/local/bin/menu</code>.",
|
||||
"stuckTitle": "L'installazione si blocca o non procede",
|
||||
"stuckBody": "Se un’installazione, una reinstallazione o un aggiornamento si blocca per un problema di connessione, interrompi con <strong>Ctrl + C</strong> e riavvia manualmente l’installazione.",
|
||||
"otherTitle": "Altri problemi",
|
||||
"otherBody": "Consulta <issueslink>GitHub Issues</issueslink> per i problemi noti oppure apri una issue con i log pertinenti. Se usi la beta e il problema riguarda Monitor, includi l’output di <code>journalctl -u proxmenux-monitor -n 50</code>."
|
||||
},
|
||||
"next": {
|
||||
"heading": "Come proseguire",
|
||||
"postInstall": "<postlink>Script di post-installazione</postlink> — modifiche e protezione di un host Proxmox appena installato.",
|
||||
"introduction": "<introlink>Introduzione</introlink> — panoramica completa delle funzionalità.",
|
||||
"monitor": "<monitorlink>ProxMenux Monitor</monitorlink> — cruscotto web per l'host (auto-installato accanto al menu)."
|
||||
},
|
||||
"requirements": {
|
||||
"heading": "Requisiti e buone pratiche",
|
||||
"reqTitle": "Requisiti",
|
||||
"reqBody": "Proxmox VE <strong>8.x o successivo</strong>. PVE 7 e le versioni precedenti non sono supportati. L’host deve poter accedere a Internet per scaricare script, dipendenze e l’AppImage di ProxMenux Monitor. Esegui l’installazione come <strong>root</strong> sull’host Proxmox.",
|
||||
"inspectTitle": "Ispezionare sempre gli script che si esegue da internet",
|
||||
"inspectReview": "<sourcelink>Esamina il codice sorgente dell’installazione</sourcelink> prima di eseguirla.",
|
||||
"inspectCoc": "Tutti i collegamenti eseguibili rispettano il <coclink>codice di condotta di ProxMenux</coclink>."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,206 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "ProxMenux — Gestione di Proxmox VE tramite menu | Open source",
|
||||
"description": "Strumento open source per gestire Proxmox VE tramite menu. ProxMenux riunisce due componenti: una CLI/TUI per ottimizzazioni dopo l’installazione, VM e container LXC, passthrough di GPU e Coral TPU, dischi, archiviazione e rete; e una dashboard web ospitata sul proprio server, con monitoraggio proattivo, notifiche Telegram, Discord o e-mail, riformulazione tramite IA e API REST.",
|
||||
"ogTitle": "ProxMenux — Gestione di Proxmox VE tramite menu",
|
||||
"ogDescription": "CLI/TUI open source e dashboard web per Proxmox VE: configurazione dopo l’installazione, VM, GPU, dischi, rete, archiviazione e sicurezza. Monitor offre controlli sullo stato del sistema, notifiche, riformulazione tramite IA e API REST.",
|
||||
"twitterTitle": "ProxMenux — Gestione di Proxmox VE tramite menu",
|
||||
"twitterDescription": "CLI/TUI open source e dashboard web per Proxmox VE. Monitoraggio del sistema, notifiche, riformulazione tramite IA e API REST."
|
||||
},
|
||||
"header": {
|
||||
"title": "Introduzione",
|
||||
"description": "ProxMenux è uno strumento open source per Proxmox VE basato su menu. Il progetto comprende una CLI/TUI per le attività più comuni su host, VM, container, archiviazione, rete e sicurezza, e una dashboard web sul proprio server con monitoraggio proattivo, notifiche, riformulazione facoltativa tramite IA e API REST.",
|
||||
"section": "Introduzione"
|
||||
},
|
||||
"hero": {
|
||||
"tagline": "<strong>Un menu per ogni attività.</strong> Le operazioni che di solito richiedono una scheda del wiki, due discussioni sul forum e una sequenza di comandi da copiare diventano un’opzione numerata da avviare in pochi secondi.",
|
||||
"audience": "Pensato per chi usa Proxmox <em>per la prima volta</em>, con impostazioni predefinite sicure e già selezionate, e per gli amministratori <em>esperti</em>, che possono svolgere le attività abituali con meno comandi. Gratuito e open source, con una comunità attiva su <github>GitHub</github>."
|
||||
},
|
||||
"twoProducts": {
|
||||
"heading": "Due prodotti, un progetto",
|
||||
"intro": "ProxMenux comprende due componenti nello stesso albero dei sorgenti. Il programma di installazione li distribuisce entrambi sull’host: Scripts offre l’interfaccia da terminale e Monitor la dashboard web:",
|
||||
"scripts": {
|
||||
"title": "ProxMenux Scripts",
|
||||
"body": "La CLI/TUI originale, da avviare con <code>menu</code>. Nove aree coprono ottimizzazioni dopo l’installazione, VM e container LXC, passthrough di GPU e Coral TPU, dischi, archiviazione, rete, sicurezza e utilità, con una raccolta di comandi di riferimento. Funziona nei terminali locali, SSH e web."
|
||||
},
|
||||
"monitor": {
|
||||
"title": "ProxMenux Monitor",
|
||||
"body": "Dashboard web sul proprio server, distribuita come AppImage. Metriche dell’host in tempo reale, monitoraggio proattivo, notifiche, riformulazione facoltativa tramite IA con sei fornitori, terminale web integrato e API REST. Si attiva dal menu Scripts, in Impostazioni → ProxMenux Monitor."
|
||||
},
|
||||
"calloutTitle": "Cosa gestisce ProxMenux",
|
||||
"calloutIntro": "Tre strati, tutti raggiungibili dallo stesso progetto:",
|
||||
"layers": [
|
||||
"<strong>L’host Proxmox</strong> — repository, pacchetti, rete, ZFS, Ceph, kernel e osservabilità.",
|
||||
"<strong>Le macchine virtuali (VM)</strong> — creazione, passthrough GPU, importazione ed esportazione OVA/OVF e accesso diretto ai dischi.",
|
||||
"<strong>I container LXC</strong> — creazione, punti di montaggio, passthrough GPU/TPU, client e server NFS/Samba."
|
||||
]
|
||||
},
|
||||
"scriptsSection": {
|
||||
"heading": "ProxMenux Scripts — che cosa si ottiene",
|
||||
"intro": "Nove aree funzionali, ognuna con il proprio sottomenu in <code>menu</code> e una pagina dedicata nella documentazione. Seleziona una scheda per aprire direttamente la panoramica della sezione.",
|
||||
"items": [
|
||||
{
|
||||
"title": "Dopo l'installazione",
|
||||
"description": "Ottimizzazioni per una nuova installazione di Proxmox: repository, kernel, sincronizzazione dell’ora, sicurezza di base e prestazioni, con opzioni reversibili.",
|
||||
"icon": "Server",
|
||||
"href": "/docs/post-install"
|
||||
},
|
||||
{
|
||||
"title": "GPU e Coral TPU",
|
||||
"description": "Passthrough di NVIDIA, iGPU Intel, AMD e Coral TPU a VM e container LXC, con cambio di modalità tra VM e LXC.",
|
||||
"icon": "Cpu",
|
||||
"href": "/docs/hardware/nvidia-host"
|
||||
},
|
||||
{
|
||||
"title": "Creare VM",
|
||||
"description": "Procedure guidate per sistemi NAS, Windows e Linux, con impostazioni predefinite ragionevoli per hardware, archiviazione e rete.",
|
||||
"icon": "Server",
|
||||
"href": "/docs/create-vm"
|
||||
},
|
||||
{
|
||||
"title": "Gestione disco",
|
||||
"description": "Accesso ai dischi fisici da VM e LXC, formattazione e cancellazione, test SMART e importazione di immagini qcow2, vmdk o vdi, tutto da un menu.",
|
||||
"icon": "HardDrive",
|
||||
"href": "/docs/disk-manager"
|
||||
},
|
||||
{
|
||||
"title": "Archiviazione e condivisione",
|
||||
"description": "Registrare in Proxmox archivi NFS, Samba/CIFS, iSCSI e locali; condividere cartelle tra host e container LXC tramite bind mount o protocolli di rete.",
|
||||
"icon": "Boxes",
|
||||
"href": "/docs/storage-share"
|
||||
},
|
||||
{
|
||||
"title": "Rete",
|
||||
"description": "Diagnostica senza modifiche, analisi con suggerimenti e riparazioni guidate di /etc/network/interfaces. Le modifiche sono precedute da una copia di sicurezza.",
|
||||
"icon": "Network",
|
||||
"href": "/docs/network"
|
||||
},
|
||||
{
|
||||
"title": "Sicurezza",
|
||||
"description": "Fail2Ban per prevenire intrusioni tramite SSH e interfacce web e Lynis per verificare il rafforzamento della sicurezza, con installazione e gestione tramite impostazioni predefinite ragionevoli.",
|
||||
"icon": "Shield",
|
||||
"href": "/docs/security"
|
||||
},
|
||||
{
|
||||
"title": "Utilità",
|
||||
"description": "Creare ISO Windows con UUP Dump, installare strumenti CLI, eseguire aggiornamenti guidati del sistema o passare da PVE 8 a 9 ed esportare e importare VM OVA/OVF.",
|
||||
"icon": "Wrench",
|
||||
"href": "/docs/utils"
|
||||
},
|
||||
{
|
||||
"title": "Riferimento dei comandi",
|
||||
"description": "Una raccolta di comandi Linux e Proxmox organizzata per argomento: sistema, VM/CT con qm e pct, archiviazione, rete, ZFS, passthrough GPU, backup e strumenti CLI di uso quotidiano.",
|
||||
"icon": "BookOpen",
|
||||
"href": "/docs/help-info"
|
||||
}
|
||||
]
|
||||
},
|
||||
"monitorSection": {
|
||||
"heading": "ProxMenux Monitor — che cosa si ottiene",
|
||||
"intro": "La dashboard web è ospitata sull’host Proxmox, sulla porta TCP 8008. Seleziona una scheda per aprire la pagina della sezione, oppure leggi prima la <link>panoramica di Monitor</link>.",
|
||||
"items": [
|
||||
{
|
||||
"title": "Monitoraggio dello stato del sistema",
|
||||
"description": "Dieci categorie controllate ogni cinque minuti: CPU, memoria, archiviazione, dischi/SMART, rete, VM, servizi, log, aggiornamenti e sicurezza. Con livelli di gravità e possibilità di disattivare gli avvisi per categoria.",
|
||||
"icon": "Activity",
|
||||
"href": "/docs/monitor/health-monitor"
|
||||
},
|
||||
{
|
||||
"title": "Notifiche",
|
||||
"description": "Telegram, Discord, e-mail, Gotify, Pushover e Apprise multicanale, con eliminazione dei duplicati, intervallo minimo tra gli invii, raggruppamento degli avvisi ravvicinati, orari silenziosi e cronologia completa.",
|
||||
"icon": "Bell",
|
||||
"href": "/docs/monitor/notifications"
|
||||
},
|
||||
{
|
||||
"title": "Assistente AI",
|
||||
"description": "Riformulazione facoltativa delle notifiche in un linguaggio chiaro. Sei fornitori: OpenAI, Anthropic Claude, Google Gemini, Groq, OpenRouter e Ollama locale. Tredici lingue nel selettore della lingua dell’IA.",
|
||||
"icon": "Sparkles",
|
||||
"href": "/docs/monitor/ai-assistant"
|
||||
},
|
||||
{
|
||||
"title": "Terminal Web",
|
||||
"description": "Una shell interattiva sull’host Proxmox dal browser e un terminale ProxMenux Scripts separato che esegue il menu nell’interfaccia web.",
|
||||
"icon": "Terminal",
|
||||
"href": "/docs/monitor/dashboard/terminal"
|
||||
},
|
||||
{
|
||||
"title": "REST API",
|
||||
"description": "Endpoint HTTP per sistema, stato, archiviazione/SMART, rete, VM, notifiche e sicurezza, utili per Homepage, Home Assistant, Prometheus o script personalizzati.",
|
||||
"icon": "Code2",
|
||||
"href": "/docs/monitor/api"
|
||||
},
|
||||
{
|
||||
"title": "Integrazioni",
|
||||
"description": "Webhook nativo Proxmox VE, raccolta di metriche con Prometheus, sonde Uptime Kuma, widget Homepage, Home Assistant e Glance, flussi n8n/Zapier e Tailscale Secure Gateway.",
|
||||
"icon": "Plug",
|
||||
"href": "/docs/monitor/integrations"
|
||||
}
|
||||
]
|
||||
},
|
||||
"installPaths": {
|
||||
"heading": "Opzioni di installazione",
|
||||
"intro": "Entrambi i programmi di installazione distribuiscono Scripts e Monitor. Scripts usa cataloghi JSON già preparati in otto lingue, senza traduzione online. Puoi scegliere il canale stabile o beta; Monitor è distribuito come AppImage ed eseguito dal suo ambiente estratto:",
|
||||
"headerPath": "Install path",
|
||||
"headerBundles": "Cosa include",
|
||||
"headerWhen": "Quando sceglierla",
|
||||
"rows": [
|
||||
{
|
||||
"pathRich": "<strong>Scripts: stabile</strong>",
|
||||
"bundles": "CLI/TUI con traduzioni JSON già preparate in otto lingue, senza ambiente virtuale o servizio di traduzione online.",
|
||||
"when": "Uso normale con il canale delle versioni stabili."
|
||||
},
|
||||
{
|
||||
"pathRich": "<strong>Scripts: beta</strong>",
|
||||
"bundles": "La stessa interfaccia multilingue, installata dal ramo develop per provare le modifiche in arrivo.",
|
||||
"when": "Prove anticipate delle nuove funzioni, con un rischio maggiore di problemi."
|
||||
},
|
||||
{
|
||||
"pathRich": "<strong>Monitor</strong>",
|
||||
"bundles": "AppImage autonoma con dashboard web sulla porta TCP 8008. Il programma di installazione estrae l’ambiente di esecuzione e gestisce il servizio; Monitor si controlla dalle impostazioni.",
|
||||
"when": "Quando serve una dashboard web per l’host, da telefono, tablet o browser."
|
||||
}
|
||||
],
|
||||
"outro": "I comandi e i requisiti dettagliati sono nella <link>pagina di installazione</link>."
|
||||
},
|
||||
"warnSource": {
|
||||
"title": "Controlla sempre gli script da Internet prima di eseguirli",
|
||||
"body": "ProxMenux è open source e puoi esaminare ogni script su GitHub. Controlla il codice sorgente prima di eseguire il comando di installazione, come per qualsiasi altro strumento di automazione.",
|
||||
"sourceLabel": "Visualizza sorgente ProxMenux",
|
||||
"cocLabel": "Codice di condotta"
|
||||
},
|
||||
"next": {
|
||||
"heading": "Come proseguire",
|
||||
"items": [
|
||||
{
|
||||
"lead": "<strong>È la prima volta che usi ProxMenux?</strong> ",
|
||||
"linkHref": "/docs/installation",
|
||||
"linkLabel": "Installalo con un solo comando",
|
||||
"tailRich": " e avvia <code>menu</code>."
|
||||
},
|
||||
{
|
||||
"lead": "<strong>Hai appena installato Proxmox?</strong> Inizia dallo ",
|
||||
"linkHref": "/docs/post-install",
|
||||
"linkLabel": "script di post-installazione",
|
||||
"tail": "."
|
||||
},
|
||||
{
|
||||
"lead": "<strong>Vuoi una dashboard web?</strong> ",
|
||||
"linkHref": "/docs/monitor",
|
||||
"linkLabel": "ProxMenux Monitor",
|
||||
"tail": " ha una documentazione che spiega cosa mostra, come è realizzato e come proteggerlo."
|
||||
},
|
||||
{
|
||||
"lead": "<strong>Cerchi un comando specifico?</strong> La ",
|
||||
"linkHref": "/docs/help-info",
|
||||
"linkLabel": "guida ai comandi",
|
||||
"tail": " raccoglie una selezione organizzata per argomento, con pulsanti per copiare."
|
||||
},
|
||||
{
|
||||
"lead": "<strong>Vuoi guide più dettagliate?</strong> La ",
|
||||
"linkHref": "/guides",
|
||||
"linkLabel": "sezione delle guide",
|
||||
"tail": " tratta Coral TPU, passthrough NVIDIA, Kodi in LXC e altri argomenti."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,110 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Backup e riavvio delle interfacce | Documentazione ProxMenux",
|
||||
"description": "Crea istantanee manuali, sfoglia e ripristina i backup di /etc/network/interfaces salvati in /var/backups/proxmenux/. Include il riavvio del servizio di rete con conferma e una vista rapida della configurazione attuale.",
|
||||
"ogTitle": "Backup e riavvio delle interfacce | Documentazione ProxMenux",
|
||||
"ogDescription": "Crea un’istantanea e ripristina la configurazione di rete Proxmox; riavvia il servizio di rete con conferma."
|
||||
},
|
||||
"header": {
|
||||
"title": "Backup e riavvio delle interfacce",
|
||||
"description": "Quattro utility che ruotano intorno a /etc/network/interfaces: scattano un'istantanea manuale, visualizzano la configurazione live, ripristinano un backup precedente con un'anteprima facoltativa e riavviano il servizio di rete con esplicito consenso. Stessa directory di backup utilizzata dai flussi di riparazione guidati.",
|
||||
"section": "Rete"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Cosa fa",
|
||||
"body": "Gestisce la stessa directory di backup utilizzata dai flussi di riparazione guidati (<code>/var/backups/proxmenux/</code>). Consente di scattare un'istantanea aggiuntiva prima di qualsiasi cambiamento manuale, sfogliare tutti i backup esistenti e tornare a uno qualsiasi di essi — sempre con un backup pre-restore fresco preso automaticamente come una seconda rete di sicurezza."
|
||||
},
|
||||
"shared": {
|
||||
"heading": "La directory di backup condivisa",
|
||||
"intro": "Ogni backup preso ovunque nel menu di rete atterra nello stesso posto:",
|
||||
"outro": "I nomi dei file contengono data e ora, sono ordinati per data e non vengono mai sovrascritti. La directory viene creata al primo utilizzo."
|
||||
},
|
||||
"show": {
|
||||
"heading": "Mostra file di configurazione di rete",
|
||||
"body": "Mostra il contenuto esatto di <code>/etc/network/interfaces</code> nel terminale. Sola lettura. Utile come controllo prima di un backup o dopo un ripristino. Non esiste uno strumento separato per confrontare il file con il backup precedente: esaminare il file attuale è quindi il modo più semplice per verificarne il contenuto."
|
||||
},
|
||||
"create": {
|
||||
"heading": "Crea backup di rete",
|
||||
"body": "Copia l'attuale <code>/etc/network/interfaces</code> nella directory di backup con un timestamp fresco. Questo è tutto — nessuna analisi, nessun prompt, solo un'istantanea.",
|
||||
"whenTitle": "Quando creare un backup manuale",
|
||||
"whenBody": "Prima di modificare <code>/etc/network/interfaces</code> a mano, di installare un pacchetto che può alterare lo stack di rete (ad esempio NetworkManager o Open vSwitch) o di cambiare l’hardware. Le riparazioni guidate creano già un’istantanea automaticamente: questa opzione serve per gli interventi <em>manuali</em>."
|
||||
},
|
||||
"restore": {
|
||||
"heading": "Ripristina backup di rete",
|
||||
"intro": "Elenca tutti i backup in <code>/var/backups/proxmenux/</code> dal più recente al più vecchio e guida un ripristino protetto:",
|
||||
"steps": [
|
||||
{
|
||||
"title": "1. Scegli un backup",
|
||||
"body": "Un menu elenca ogni backup dal suo timestamp. Se non esistono backup, il flusso esce con un messaggio chiaro.",
|
||||
"tone": "blue"
|
||||
},
|
||||
{
|
||||
"title": "2. Anteprima opzionale",
|
||||
"body": "Propone di aprire il backup selezionato in una vista scorrevole prima di confermare il ripristino. Sì è l’opzione predefinita: non saltare questo passaggio su un host remoto.",
|
||||
"tone": "blue"
|
||||
},
|
||||
{
|
||||
"title": "3. Backup prima del ripristino",
|
||||
"body": "Prima di sovrascrivere <code>/etc/network/interfaces</code>, crea <strong>un altro</strong> backup dello stato attuale. Il ripristino è esso stesso un’operazione distruttiva: la nuova istantanea precedente al ripristino permette di tornare indietro se il backup scelto era quello sbagliato.",
|
||||
"tone": "amber"
|
||||
},
|
||||
{
|
||||
"title": "4. Applicare il ripristino",
|
||||
"body": "Copia il backup scelto su <code>/etc/network/interfaces</code>. La modifica del file è su disco; lo stato del kernel live riflette ancora la configurazione precedente.",
|
||||
"tone": "amber"
|
||||
},
|
||||
{
|
||||
"title": "5. Riavvio opzionale",
|
||||
"body": "Chiede se eseguire <code>systemctl restart networking</code> ora. Rifiuta per rimandare l’applicazione al prossimo riavvio.",
|
||||
"tone": "emerald"
|
||||
}
|
||||
],
|
||||
"autoBackupTitle": "Il ripristino crea automaticamente un proprio backup",
|
||||
"autoBackupBody": "Selezionare <em>Ripristina backup di rete</em> crea sempre una nuova istantanea della configurazione <em>attuale</em> prima di sovrascriverla. Se ripristini il backup sbagliato, il file più recente in <code>/var/backups/proxmenux/</code> contiene lo stato precedente."
|
||||
},
|
||||
"restart": {
|
||||
"heading": "Riavvia servizio di rete",
|
||||
"body": "Esegue <code>systemctl restart networking</code> dopo una conferma sì/no. Mostra il risultato con <code>msg_ok</code> / <code>msg_error</code>. La maggior parte delle procedure di questo menu propone già un riavvio finale: questa opzione serve dopo una modifica manuale o se hai rifiutato il riavvio proposto in precedenza.",
|
||||
"warnTitle": "Breve disconnessione garantita; possibile disconnessione permanente",
|
||||
"warnBody": "Riavviare <code>networking</code> disattiva e riconfigura tutte le interfacce dichiarate in <code>/etc/network/interfaces</code>. Le sessioni SSH su queste interfacce si interrompono. Se la nuova configurazione non è valida, la rete non torna disponibile. Esegui questa operazione solo quando:",
|
||||
"warnItems": [
|
||||
"Hai un accesso alla console / IPMI / iKVM pronto, <em>oppure</em>",
|
||||
"Sei fisicamente accanto alla macchina, <em>oppure</em>",
|
||||
"Hai appena ripristinato con successo una configurazione sicuramente funzionante e vuoi applicarla."
|
||||
]
|
||||
},
|
||||
"manualRollback": {
|
||||
"heading": "Ripristino manuale da una console",
|
||||
"intro": "Se non riesci ad accedere al menu (SSH non disponibile, dialog che si arresta, …) ma puoi usare una console, il ripristino richiede due comandi:",
|
||||
"outro": "È la <em>stessa</em> operazione eseguita dal menu, semplicemente digitata a mano. Se <code>networking</code> continua a non avviarsi, controlla <code>journalctl -u networking -b</code> per individuare l’errore di sintassi o del driver."
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Risoluzione dei problemi",
|
||||
"noneTitle": "\"Nessun backup trovato\" in Ripristino",
|
||||
"noneBody": "La directory <code>/var/backups/proxmenux/</code> non esiste o non contiene file <code>interfaces_backup_*</code>. Esegui <em>Crea backup di rete</em> almeno una volta oppure una riparazione guidata, che ne crea uno automaticamente. Verifica con <code>ls /var/backups/proxmenux/</code>.",
|
||||
"unreachTitle": "Riavviare la rete riesce, ma l'host è ancora irraggiungibile",
|
||||
"unreachBody": "La nuova configurazione è errata oppure non assegna il tuo IP di gestione. Ripristina la configurazione dalla console (vedi sopra). Poi usa <bridgeLink>l’analisi dei bridge</bridgeLink> e <configLink>l’analisi della configurazione</configLink> per capire il problema prima di applicarla nuovamente.",
|
||||
"emptyTitle": "L'anteprima del ripristino mostra un file vuoto",
|
||||
"emptyBody": "Il file di backup è vuoto (0 byte). Succede se una copia è fallita senza segnalazioni in un’esecuzione precedente. Scegli un backup più vecchio oppure esegui di nuovo <em>Crea backup di rete</em> adesso, se la configurazione attuale funziona."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"label": "Analisi dei bridge e riparazione guidata",
|
||||
"href": "/docs/network/bridge-analysis",
|
||||
"tail": "— il motivo più comune per cui un backup finisce qui."
|
||||
},
|
||||
{
|
||||
"label": "Analisi della configurazione e pulizia guidata",
|
||||
"href": "/docs/network/config-analysis",
|
||||
"tailRich": "— scrive anche a <code>/var/backups/proxmenux/</code> automaticamente."
|
||||
},
|
||||
{
|
||||
"label": "Diagnostica",
|
||||
"href": "/docs/network/diagnostics",
|
||||
"tail": " — per verificare lo stato attuale dopo un ripristino."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,132 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Analisi dei bridge e riparazione guidata | Documentazione ProxMenux",
|
||||
"description": "Rileva bridge vmbrX con porte fisiche mancanti o non valide, tipicamente dopo la rinumerazione PCI. Li segnala con comandi shell proposti e offre una riparazione guidata in 5 passaggi con backup obbligatorio.",
|
||||
"ogTitle": "Analisi dei bridge e riparazione guidata | Documentazione ProxMenux",
|
||||
"ogDescription": "Controlla e ripara le porte dei bridge Proxmox dopo modifiche hardware, con una procedura guidata che consente un ripristino sicuro."
|
||||
},
|
||||
"header": {
|
||||
"title": "Analisi dei bridge e riparazione guidata",
|
||||
"description": "Controlla ogni bridge vmbrX dichiarato in /etc/network/interfaces, verifica che le porte fisiche esistano e propone una riparazione passo passo se mancano. L’analisi è di sola lettura; la riparazione richiede conferma, mostra un’anteprima e crea un backup.",
|
||||
"section": "Rete"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Cosa fa",
|
||||
"body": "Legge ogni bridge in <code>/etc/network/interfaces</code>, esamina la riga <code>bridge-ports</code> e verifica che ogni porta dichiarata, ad esempio <code>enp3s0</code>, esista sull’host. Se una porta manca, propone una sostituzione e, con consenso esplicito, applica la modifica seguendo la procedura <strong>backup, anteprima, applicazione, verifica</strong>."
|
||||
},
|
||||
"when": {
|
||||
"heading": "Quando hai bisogno di questo",
|
||||
"intro": "Linux assegna nomi prevedibili alle interfacce in base alla topologia PCI e all’ordine degli slot. Diversi eventi possono modificarli, lasciando in <code>/etc/network/interfaces</code> riferimenti a nomi non più esistenti:",
|
||||
"items": [
|
||||
"Aggiungere o rimuovere una scheda PCIe (scheda di rete, GPU, HBA o adattatore NVMe).",
|
||||
"Spostare una scheda esistente in un'altra slot PCIe.",
|
||||
"Aggiornamenti BIOS / UEFI che rinumerano i dispositivi PCI.",
|
||||
"Migrare il disco di avvio su hardware diverso."
|
||||
],
|
||||
"outro": "Dopo il prossimo avvio, il ponte cerca di attaccare a una porta che non esiste più, non riesce a salire, e l'host perde la sua rete. <link>Nomi di interfaccia persistenti</link> impedisce che questo accada di nuovo — ma se sei già bloccato fuori, questa pagina è il percorso di recupero."
|
||||
},
|
||||
"bigPicture": {
|
||||
"heading": "Quadro generale",
|
||||
"diagram1": {
|
||||
"arrowLabel": "passo 1",
|
||||
"nodes": {
|
||||
"sourceLabel": "/etc/network/interfaces",
|
||||
"sourceDetail": "auto vmbr0\niface vmbr0 inet static\n bridge-ports enp3s0",
|
||||
"bridgeLabel": "Analizzare (solo lettura)",
|
||||
"bridgeDetail": "ip link show enp3s0\n→ non esiste",
|
||||
"targetLabel": "Report + suggerimento",
|
||||
"targetDetail": "❌ enp3s0: NON TROVATA\nSostituisci con: eno1\n(ancora nessuna modifica)"
|
||||
}
|
||||
},
|
||||
"diagram2": {
|
||||
"arrowLabel": "applicare con il backup",
|
||||
"nodes": {
|
||||
"sourceLabel": "Riparazione guidata",
|
||||
"sourceDetail": "1. Backup\n2. Mostra configurazione attuale\n3. Anteprima delle modifiche\n4. Applica\n5. Verifica",
|
||||
"targetLabel": "/etc/network/interfaces (nuovo)",
|
||||
"targetDetail": "auto vmbr0\niface vmbr0 inet static\n bridge-ports eno1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"step1": {
|
||||
"heading": "Passo 1: analisi (solo lettura)",
|
||||
"intro": "Selezionando <strong>Analizza configurazione dei bridge</strong>, lo strumento si interrompe se l’host non usa lo stack classico Debian/Proxmox. Altrimenti esamina ogni bridge e mostra:",
|
||||
"items": [
|
||||
"Nome del ponte, stato corrente (UP / DOWN), IP assegnato.",
|
||||
"Ogni porta dichiarata e la sua effettiva presenza (<code>ip link show <port></code>).",
|
||||
"Per ogni porta non valida: una sostituzione proposta (la prima interfaccia fisica disponibile) più il comando esatto <code>sed</code> per applicarla manualmente.",
|
||||
"Bridge senza alcuna riga <code>bridge-ports</code> e voci <code>auto</code> orfane senza un blocco <code>iface</code> corrispondente."
|
||||
],
|
||||
"readonlyTitle": "Garanzia di sola lettura",
|
||||
"readonlyBody": "Fino a questo punto lo script non ha eseguito un singolo comando di modifica. È possibile lasciare l'analisi aperta, copiare i comandi <code>sed</code> suggeriti e applicarli manualmente se si preferisce — o accettare il prompt successivo per inserire la riparazione guidata."
|
||||
},
|
||||
"step2": {
|
||||
"heading": "Passo 2: riparazione guidata (5 passi)",
|
||||
"intro": "Solo se accetti il prompt alla fine dell'analisi. Ogni passo mostra cosa accadrà e chiederà la conferma prima di continuare.",
|
||||
"steps": [
|
||||
{
|
||||
"title": "1. Backup di sicurezza",
|
||||
"body": "Copia <code>/etc/network/interfaces</code> in <code>/var/backups/proxmenux/interfaces_backup_<TIMESTAMP></code>. Il percorso esatto del backup viene mostrato prima e dopo la copia, insieme al comando di ripristino.",
|
||||
"tone": "blue"
|
||||
},
|
||||
{
|
||||
"title": "2. Controlla la configurazione attuale",
|
||||
"body": "Apre l’attuale <code>/etc/network/interfaces</code> in una finestra scorrevole per vedere esattamente cosa verrà modificato.",
|
||||
"tone": "blue"
|
||||
},
|
||||
{
|
||||
"title": "3. Anteprima delle modifiche proposte",
|
||||
"body": "Elenca esattamente i bridge interessati e le sostituzioni delle porte previste. Se non serve più alcuna riparazione perché la porta è ricomparsa tra i controlli, la procedura termina con <em>«Nessuna modifica necessaria.»</em>",
|
||||
"tone": "blue"
|
||||
},
|
||||
{
|
||||
"title": "4. Applicare le modifiche",
|
||||
"body": "Per ogni ponte interessato, viene eseguito <code>sed -i \"/iface $bridge/,/bridge-ports/ s/bridge-ports.*/bridge-ports $new_ports/\"</code> contro <code>/etc/network/interfaces</code>. Se un ponte non ha una sostituzione valida disponibile, la sostituzione è saltata e riportata nella fase 5.",
|
||||
"tone": "amber"
|
||||
},
|
||||
{
|
||||
"title": "5. Verifica",
|
||||
"body": "Rilegge il file e verifica che la nuova porta di ogni bridge esista. Mostra il comando di ripristino (<code>cp <backup> /etc/network/interfaces</code>). Infine propone <strong>Riavvia la rete</strong>: accetta solo se hai un accesso di riserva alla console.",
|
||||
"tone": "emerald"
|
||||
}
|
||||
],
|
||||
"restartTitle": "Riavviare la rete ≠ annullare senza rischi",
|
||||
"restartBody": "La riparazione viene scritta su disco anche se non riavvii il servizio. <code>systemctl restart networking</code> applica la modifica <em>ora</em> e può interrompere la sessione SSH se la nuova porta è errata. Se rifiuti, la modifica avrà comunque effetto al prossimo avvio: verifica prima la configurazione oppure annulla con il comando mostrato."
|
||||
},
|
||||
"edits": {
|
||||
"heading": "Cosa viene modificato (esattamente)",
|
||||
"body": "Solo la riga <code>bridge-ports</code> di ogni bridge interessato. Le altre direttive (<code>address</code>, <code>netmask</code>, <code>gateway</code>, <code>bridge-stp</code>, …) restano invariate. In questa procedura lo script non crea né rimuove blocchi <code>iface</code>: se ne occupa <link>Analisi della configurazione & pulizia</link>."
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Risoluzione dei problemi",
|
||||
"unsupportedTitle": "L’analisi si interrompe con «Stack di rete non supportato»",
|
||||
"unsupportedBody": "L'host esegue netplan, systemd-networkd o NetworkManager. Lo strumento supporta solo <code>/etc/network/interfaces</code>. Passare l'host al classico stack prima, o modificare la configurazione con il tooling nativo del manager (ad es. <code>netplan apply</code>).",
|
||||
"noSuggestTitle": "Non viene mostrato alcun suggerimento per una porta non valida",
|
||||
"noSuggestBody": "L’host non ha interfacce fisiche libere: sono già tutte in un altro bridge oppure non esistono. L’analisi suggerisce come alternativa <code>bridge-ports none</code>, così il bridge può almeno attivarsi senza una porta. Aggiungi una scheda di rete o sposta manualmente le porte tra i bridge prima di riprovare.",
|
||||
"stillDownTitle": "La riparazione completa ma il ponte è ancora DOWN",
|
||||
"stillDownBody": "<code>sed</code> ha aggiornato il file, ma <code>systemctl restart networking</code> è stato rifiutato. Eseguilo manualmente dopo aver verificato la nuova configurazione oppure riavvia. Se il riavvio è stato accettato e il bridge è ancora DOWN, esegui <code>ip link show</code> per verificare che la nuova porta esista e controlla <code>journalctl -u networking</code> per l’errore effettivo: cavo scollegato, collegamento non negoziato o porta già appartenente a un altro bridge.",
|
||||
"lostSshTitle": "Ho perso l'accesso SSH subito dopo il riavvio della rete",
|
||||
"lostSshIntro": "Utilizzare la console / IPMI / iKVM per raggiungere l'host. Ripristinare il backup:",
|
||||
"lostSshOutro": "Esegui poi di nuovo l’analisi dalla console per capire perché il suggerimento non ha funzionato, in genere perché la porta sostitutiva non è collegata."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"label": "Nomi di interfaccia persistenti",
|
||||
"href": "/docs/network/persistent-names",
|
||||
"tail": " — associa i nomi agli indirizzi MAC per evitare che il problema si ripeta."
|
||||
},
|
||||
{
|
||||
"label": "Analisi della configurazione e pulizia guidata",
|
||||
"href": "/docs/network/config-analysis",
|
||||
"tailRich": "— per i blocchi <code>iface</code> orfani (l'altra metà dello stesso problema)."
|
||||
},
|
||||
{
|
||||
"label": "Backup e riavvio delle interfacce",
|
||||
"href": "/docs/network/backup-restore",
|
||||
"tail": "— snapshot manuali e browser di ripristino."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,122 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Analisi della configurazione e pulizia guidata | Documentazione ProxMenux",
|
||||
"description": "Rileva i blocchi iface in /etc/network/interfaces che fanno riferimento a schede di rete fisiche non più presenti sull’host. Li segnala e offre una rimozione guidata in 5 passaggi con backup obbligatorio e anteprima di ogni blocco.",
|
||||
"ogTitle": "Analisi della configurazione e pulizia guidata | Documentazione ProxMenux",
|
||||
"ogDescription": "Trovare e rimuovere i blocchi di interfaccia orfano lasciati dietro da modifiche hardware, con anteprima completa e rollback."
|
||||
},
|
||||
"header": {
|
||||
"title": "Analisi della configurazione e pulizia guidata",
|
||||
"description": "Esamina ogni blocco iface in /etc/network/interfaces e verifica che la scheda di rete fisica corrispondente esista ancora. Segnala i blocchi orfani rimasti dopo modifiche hardware e offre una rimozione guidata con backup, anteprima e conferma per ogni blocco.",
|
||||
"section": "Rete"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Cosa fa",
|
||||
"body": "Identifica le dichiarazioni <code>iface</code> il cui supporto NIC non è più presente sull'host (tipico dopo aver sostituito o rimosso una scheda di rete). Poi offre una pulizia guidata che rimuove <em>solo</em> i blocchi orfani, con un backup, un'anteprima per sezione e una conferma finale esplicita."
|
||||
},
|
||||
"differs": {
|
||||
"heading": "Come differisce dall'analisi del ponte",
|
||||
"headerAspect": "Aspetto",
|
||||
"headerBridge": "Analisi del ponte",
|
||||
"headerConfig": "Analisi della configurazione",
|
||||
"rows": [
|
||||
{
|
||||
"aspect": "Esamina",
|
||||
"bridge": "Ponti (<code>vmbrX</code>) e la loro linea <code>bridge-ports</code>",
|
||||
"config": "Ogni blocco <code>iface</code>, esclusi loopback, bridge e bond"
|
||||
},
|
||||
{
|
||||
"aspect": "Rilevamento",
|
||||
"bridge": "Bridge che fanno riferimento a una porta inesistente",
|
||||
"config": "Blocchi di interfaccia standalone per NIC che non esistono"
|
||||
},
|
||||
{
|
||||
"aspect": "Azione di riparazione",
|
||||
"bridge": "Sostituisce il nome della porta in <code>bridge-ports</code>",
|
||||
"config": "Rimuove l'intero blocco <code>iface</code>"
|
||||
},
|
||||
{
|
||||
"aspect": "Esclusi",
|
||||
"bridge": "Nulla — ogni ponte viene analizzato",
|
||||
"config": "Bridge (<code>vmbrX</code>) e bond (<code>bondX</code>) vengono sempre mantenuti: sono virtuali e la loro assenza durante l’avvio può essere normale"
|
||||
}
|
||||
],
|
||||
"outro": "In pratica si usano spesso entrambi in quest’ordine: prima <strong>analisi della configurazione</strong> per rimuovere i blocchi orfani, poi <link>analisi dei bridge</link> per riassegnare i bridge che dipendevano dall’interfaccia rimossa."
|
||||
},
|
||||
"step1": {
|
||||
"heading": "Passo 1: analisi (solo lettura)",
|
||||
"intro": "Interrompe immediatamente se l'host non è sulla pila classica. Altrimenti elenca ogni interfaccia non-loopback configurata e segnala il suo stato:",
|
||||
"virtTitle": "Le interfacce virtuali sono protette",
|
||||
"virtBody": "Bridge (<code>vmbrX</code>) e bond (<code>bondX</code>) sono strutture virtuali. È possibile che non esistano al momento dell’ispezione, ad esempio un bridge ancora senza porte. L’analisi non propone mai di rimuoverli, ma solo le schede di rete fisiche."
|
||||
},
|
||||
"step2": {
|
||||
"heading": "Passo 2: pulizia guidata (5 passi)",
|
||||
"intro": "Solo se accetti il prompt alla fine dell'analisi. Ogni passo richiede la conferma; la cancellazione in qualsiasi punto esce senza scrivere.",
|
||||
"steps": [
|
||||
{
|
||||
"title": "1. Backup di sicurezza",
|
||||
"body": "Copia <code>/etc/network/interfaces</code> in <code>/var/backups/proxmenux/interfaces_backup_<TIMESTAMP></code>. Il percorso viene mostrato prima e dopo.",
|
||||
"tone": "blue"
|
||||
},
|
||||
{
|
||||
"title": "2. Confermare la lista di rimozione",
|
||||
"body": "Elenca esattamente i blocchi delle interfacce fisiche da rimuovere. Se le schede di rete riappaiono tra analisi e pulizia, ad esempio dopo aver reinserito una scheda, la procedura termina con <em>«Nessuna pulizia necessaria.»</em>",
|
||||
"tone": "blue"
|
||||
},
|
||||
{
|
||||
"title": "3. Visualizza in anteprima i blocchi esatti",
|
||||
"body": "Apre una vista scorrevole di ogni blocco <code>iface</code> che verrebbe eliminato, esattamente come appare nel file. È il momento di individuare, ad esempio, un hook <code>up</code> che vuoi conservare.",
|
||||
"tone": "blue"
|
||||
},
|
||||
{
|
||||
"title": "4. Applicare la rimozione",
|
||||
"body": "Per ogni interfaccia orfano, funziona <code>sed -i \"/^iface $iface/,/^$/d\" /etc/network/interfaces</code>. Questo elimina dalla linea <code>iface</code> corrispondente fino alla riga vuota successiva.",
|
||||
"tone": "amber"
|
||||
},
|
||||
{
|
||||
"title": "5. Verifica",
|
||||
"body": "Rilegge il file, elenca ciò che è stato rimosso e ricontrolla le restanti interfacce. Stampa il comando di rollback. <strong>non</strong> riavvia automaticamente la rete: la rimozione di un blocco inutilizzato è sicura da applicare al riavvio successivo ed evita di toccare lo stato live.",
|
||||
"tone": "emerald"
|
||||
}
|
||||
],
|
||||
"noRestartTitle": "Non riavvia automaticamente la rete",
|
||||
"noRestartBody": "A differenza della riparazione del ponte, il flusso di pulizia non offre di riavviare il servizio. Rimuovere un blocco di interfaccia non utilizzato non ha alcun effetto immediato sulla configurazione in esecuzione, quindi un riavvio è inutile e sarebbe un rischio di connettività inutile. La modifica ha effetto sul successivo manuale <code>systemctl restart networking</code> o al successivo riavvio."
|
||||
},
|
||||
"caveats": {
|
||||
"heading": "Osservazioni importanti",
|
||||
"boundaryTitle": "Il confine del blocco è la prima linea vuota",
|
||||
"boundaryBody": "Il pattern <code>sed</code> elimina da <code>iface <name></code> fino alla riga vuota successiva. Se in <code>/etc/network/interfaces</code> manca una riga vuota tra i blocchi, cosa rara ma possibile dopo modifiche manuali, può essere eliminato anche il blocco successivo. Per questo <strong>il passaggio 3 è obbligatorio</strong>: controlla l’anteprima prima di confermare.",
|
||||
"tandemTitle": "Un blocco iface orfano usato da un bridge viene rilevato qui, non nell’analisi dei bridge",
|
||||
"tandemBody": "Se <code>vmbr0</code> dichiara <code>bridge-ports enp3s0</code> e <code>enp3s0</code> ha anche un blocco <code>iface enp3s0 inet manual</code>, rimuovere <code>enp3s0</code> qui lascia un riferimento non valido in <code>vmbr0</code>. Dopo la pulizia, esegui <link>l’analisi dei bridge</link> per riassegnare o rimuovere la porta del bridge. Le due procedure sono pensate per essere usate insieme."
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Risoluzione dei problemi",
|
||||
"notFoundTitle": "L’analisi indica «NON TROVATA» per la mia nuova scheda di rete",
|
||||
"notFoundBody": "Il kernel vede il dispositivo con un nome diverso da quello nel file. Esegui <code>ip link show</code> per trovare il nome effettivo. È proprio il caso in cui i <link>nomi persistenti delle interfacce</link> eviterebbero il problema in futuro.",
|
||||
"tooMuchTitle": "La pulizia ha rimosso troppo (un blocco che volevo mantenere)",
|
||||
"tooMuchBody": "Ripristino dal backup stampato nella fase 5:",
|
||||
"tooMuchOutro": "Modificare il file a mano per aggiungere una linea vuota chiara tra i blocchi prima di eseguire la pulizia, o rimuovere il blocco problematico manualmente.",
|
||||
"bridgeBreakTitle": "Un ponte smette di funzionare dopo la pulizia",
|
||||
"bridgeBreakBody": "Il bridge dipendeva da una porta il cui blocco <code>iface</code> è stato appena rimosso. Esegui <link>l’analisi dei bridge</link>: il suggerimento assegnerà al bridge un’interfaccia fisica esistente."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"label": "Analisi dei bridge e riparazione guidata",
|
||||
"href": "/docs/network/bridge-analysis",
|
||||
"tail": "— il follow-up naturale dopo una pulizia."
|
||||
},
|
||||
{
|
||||
"label": "Nomi di interfaccia persistenti",
|
||||
"href": "/docs/network/persistent-names",
|
||||
"tail": "— blocca i blocchi orfani dall'accumulo dopo ogni cambio hardware."
|
||||
},
|
||||
{
|
||||
"label": "Backup e riavvio delle interfacce",
|
||||
"href": "/docs/network/backup-restore",
|
||||
"tail": "— snapshot manuali e browser di ripristino."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,94 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Diagnostica | Documentazione ProxMenux",
|
||||
"description": "Tre controlli diagnostici puntuali di sola lettura: Mostra tabella di routing, Test di connettività e Diagnostica avanzata. Semplice ispezione: non scrive mai in /etc/network/interfaces e non esegue comandi di modifica, con un’unica eccezione esplicita: la rimozione completa di NetworkManager, se rilevato, richiede il tuo consenso.",
|
||||
"ogTitle": "Diagnostica | Documentazione ProxMenux",
|
||||
"ogDescription": "Diagnostica di rete di sola lettura per l'host Proxmox: routing, raggiungibilità, statistiche avanzate."
|
||||
},
|
||||
"header": {
|
||||
"title": "Diagnostica",
|
||||
"description": "Tre controlli puntuali di sola lettura dello stato attuale della rete: tabella di routing, test di connettività e statistiche avanzate. Nessuno scrive in /etc/network/interfaces: sono utilizzabili in sicurezza in qualsiasi momento, anche via SSH. Per il monitoraggio interattivo in tempo reale, vedi Strumenti di monitoraggio in tempo reale.",
|
||||
"section": "Rete"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Cosa fa",
|
||||
"body": "Mostra informazioni su routing, raggiungibilità e statistiche aggregate <strong>senza modificare nulla</strong>. Usalo per verificare che la rete funzioni o individuare IP duplicati. Per osservare il traffico in modo continuo, vedi <monitoringLink>Strumenti di monitoraggio in tempo reale</monitoringLink>; per visualizzare il file di configurazione grezzo, vedi <backupLink>Backup e riavvio delle interfacce</backupLink>."
|
||||
},
|
||||
"routing": {
|
||||
"heading": "Mostra tabella di routing",
|
||||
"body": "Elenca tutte le rotte attualmente usate dal kernel (<code>ip route show</code>) ed evidenzia il gateway predefinito. Utile per verificare che il traffico verso Internet esca dall’interfaccia prevista e che nessuna vecchia rotta abbia la precedenza."
|
||||
},
|
||||
"connectivity": {
|
||||
"heading": "Test connettività",
|
||||
"intro": "Invia due sonde ICMP a tre obiettivi in sequenza e segnala ciascuno. Poi viene eseguito un <code>nslookup google.com</code> per verificare la risoluzione DNS indipendentemente da ICMP.",
|
||||
"headerTest": "Test",
|
||||
"headerTarget": "Destinazione",
|
||||
"headerConfirms": "Cosa conferma",
|
||||
"rows": [
|
||||
{
|
||||
"test": "DNS Google",
|
||||
"target": "8.8.8.8",
|
||||
"confirms": "Raggiungibilità esterna tramite un indirizzo IP anycast noto"
|
||||
},
|
||||
{
|
||||
"test": "Cloudflare DNS",
|
||||
"target": "1.1.1.1",
|
||||
"confirms": "Seconda opzione indipendente se Google blocca ICMP"
|
||||
},
|
||||
{
|
||||
"test": "Gateway",
|
||||
"target": "(percorso di default)",
|
||||
"confirms": "Connettività L2 / L3 al router locale"
|
||||
},
|
||||
{
|
||||
"test": "Risoluzione DNS",
|
||||
"target": "google.com",
|
||||
"confirms": "Il server DNS è raggiungibile e risponde"
|
||||
}
|
||||
],
|
||||
"readingTitle": "Leggere il risultato",
|
||||
"readingBody": "Se il test del gateway riesce ma i server DNS pubblici non rispondono, la connettività locale funziona ma non hai accesso a Internet: controlla la connessione a monte del gateway. Se la risoluzione DNS fallisce ma i ping verso <code>8.8.8.8</code> riescono, il problema è il resolver, non la rete: controlla <code>/etc/resolv.conf</code>."
|
||||
},
|
||||
"advanced": {
|
||||
"heading": "Diagnostica avanzata",
|
||||
"intro": "Aggrega le statistiche dell’intera rete ed esegue una serie di controlli sui problemi comuni. Mostra il numero di connessioni attive, le porte in ascolto e il totale delle interfacce, e segnala esplicitamente due configurazioni problematiche:",
|
||||
"items": [
|
||||
"<strong>NetworkManager in esecuzione su un host Proxmox.</strong> NetworkManager e <code>ifupdown</code> di Proxmox entrano in conflitto: entrambi tentano di gestire le interfacce, rendendo i bridge instabili o impedendone l’attivazione. Se viene rilevato, lo strumento propone una conferma interattiva per arrestarlo, disabilitarlo e rimuoverlo completamente (è l’<em>unica</em> diagnostica che può modificare il sistema, e solo dopo un consenso esplicito).",
|
||||
"<strong>Indirizzi IP duplicati su interfacce diverse.</strong> Due interfacce con lo stesso indirizzo IPv4 causano problemi di connettività intermittenti molto difficili da diagnosticare dall’interno della VM. Rilevamento tramite <code>ip -4 addr show | sort | uniq -d</code>."
|
||||
],
|
||||
"nmTitle": "Il prompt NetworkManager è l'unica azione di modifica qui",
|
||||
"nmBody": "Tutti gli altri controlli della diagnostica avanzata sono di sola lettura. La rimozione di NetworkManager richiede una conferma sì/no ed esegue <code>systemctl stop / disable</code> + <code>apt-get purge -y network-manager</code>. Se rifiuti, non cambia nulla."
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Risoluzione dei problemi",
|
||||
"gwTitle": "Il test di connettività segnala un errore del gateway, ma l’host ha accesso a Internet",
|
||||
"gwBody": "Alcuni router non rispondono a ICMP sulla loro interfaccia interna anche se inoltrano correttamente il traffico. Prova <code>traceroute 8.8.8.8</code> da una console: se il secondo hop è il tuo ISP e il test del DNS pubblico è riuscito, il gateway funziona nonostante il ping fallito.",
|
||||
"dupTitle": "La diagnostica avanzata continua a segnalare IP duplicati dopo che ne ho rimosso uno",
|
||||
"dupBody": "Il controllo guarda lo stato del kernel dal vivo, non il file di configurazione. Eseguire <code>ip -4 addr show</code> per confermare; se il duplicato è ancora presente, un'interfaccia lo tiene ancora. Utilizzare <code>ip addr del <IP>/<mask> dev <iface></code> per rimuoverlo dallo stato in tempo reale, quindi modificare <code>/etc/network/interfaces</code> se è anche persistente."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"label": "Strumenti di monitoraggio dal vivo",
|
||||
"href": "/docs/network/monitoring",
|
||||
"tail": "— lanciatori interattivi iftop / iptraf-ng / iperf3."
|
||||
},
|
||||
{
|
||||
"label": "Analisi dei bridge e riparazione guidata",
|
||||
"href": "/docs/network/bridge-analysis",
|
||||
"tail": " — quando a un vmbrX manca la porta fisica."
|
||||
},
|
||||
{
|
||||
"label": "Analisi della configurazione e pulizia guidata",
|
||||
"href": "/docs/network/config-analysis",
|
||||
"tail": " — quando una vecchia scheda di rete è ancora dichiarata ma non è più presente."
|
||||
},
|
||||
{
|
||||
"label": "Backup e riavvio delle interfacce",
|
||||
"href": "/docs/network/backup-restore",
|
||||
"tail": " — per creare un’istantanea della configurazione prima di qualsiasi modifica."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,107 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Gestione della rete Proxmox — Bridge, bond, diagnostica, riparazione | ProxMenux",
|
||||
"description": "Diagnostica di sola lettura, analisi con suggerimenti e riparazioni guidate per lo stack di rete Debian / Proxmox (/etc/network/interfaces). Ispeziona bridge e bond, avvia strumenti di monitoraggio in tempo reale, rendi persistenti i nomi delle interfacce, crea backup e riavvia la rete in sicurezza, con backup obbligatori e anteprime passo passo.",
|
||||
"ogTitle": "Gestione della rete Proxmox — Bridge, bond, diagnostica, riparazione",
|
||||
"ogDescription": "Diagnostica, analisi e riparazioni guidate per lo stack di rete Proxmox con backup obbligatori e anteprime passo-passo.",
|
||||
"twitterTitle": "Gestione della rete Proxmox | ProxMenux",
|
||||
"twitterDescription": "Bridge, bond, diagnostica e riparazioni guidate per lo stack di rete Proxmox con backup obbligatori."
|
||||
},
|
||||
"header": {
|
||||
"title": "Gestione rete",
|
||||
"description": "Diagnostica di sola lettura, rapporti di analisi con suggerimenti e riparazioni guidate per il classico stack di rete Debian/Proxmox. Ogni operazione distruttiva crea prima un backup e mostra in anteprima le modifiche esatte prima di applicarle.",
|
||||
"section": "Rete"
|
||||
},
|
||||
"intro": {
|
||||
"title": "A cosa serve questo menu",
|
||||
"body": "Ispeziona, diagnostica e, quando necessario, ripara la configurazione di rete dell’host Proxmox senza perdere l’accesso remoto. Gli strumenti seguono un principio: <strong>prima leggere, poi proporre e infine applicare solo con consenso esplicito e un backup di sicurezza</strong>. Non esiste un pulsante «Correggi tutto automaticamente»."
|
||||
},
|
||||
"openingMenu": {
|
||||
"heading": "Apertura del menu",
|
||||
"intro": "Dal menu principale di ProxMenux, seleziona <strong>Rete</strong>. Vedrai questo:",
|
||||
"imageAlt": "Menù Gestione rete con diagnostica, monitoraggio, analisi, riparazione, nomi persistenti e opzioni di backup"
|
||||
},
|
||||
"safety": {
|
||||
"heading": "Il modello di sicurezza",
|
||||
"body": "Modificare la configurazione di rete di un host Proxmox remoto è uno dei modi più semplici per perdere l’accesso. ProxMenux ne tiene conto per ogni azione. Gli strumenti si dividono in tre livelli di comportamento: scegli la scheda che corrisponde al tuo obiettivo:"
|
||||
},
|
||||
"tiers": {
|
||||
"readOnly": {
|
||||
"title": "Sola lettura",
|
||||
"body": "Ispezione pura. Non può modificare il sistema in nessuna circostanza.",
|
||||
"items": [
|
||||
"Tabella di routing, test di connettività, statistiche avanzate",
|
||||
"Monitoraggio del traffico dal vivo (iftop, iptraf-ng)",
|
||||
"Test della larghezza di banda (iperf3)"
|
||||
]
|
||||
},
|
||||
"analyze": {
|
||||
"title": "Analizzare, quindi suggerire",
|
||||
"body": "Rileva i problemi, stampa un rapporto con i comandi di shell proposti e si ferma. Si decide se entrare nella riparazione guidata dopo.",
|
||||
"items": [
|
||||
"Analisi della configurazione del ponte",
|
||||
"Analisi della configurazione di rete"
|
||||
]
|
||||
},
|
||||
"apply": {
|
||||
"title": "Applicare con backup",
|
||||
"body": "Modifica il sistema. Crea sempre prima un backup del file interessato con data e ora e mostra un’anteprima prima di scrivere.",
|
||||
"items": [
|
||||
"Nomi persistenti delle interfacce (file .link)",
|
||||
"Backup manuale, ripristino e riavvio del servizio"
|
||||
]
|
||||
}
|
||||
},
|
||||
"classicTitle": "Solo pila classica",
|
||||
"classicBody": "Ogni funzione di analisi e riparazione controlla il gestore di rete attivo prima di toccare qualsiasi cosa. Se l'host esegue <strong>netplan</strong>, <strong>systemd-networkd</strong> o <strong>NetworkManager</strong>, lo strumento si interrompe immediatamente con un messaggio chiaro — il menu supporta solo il classico stack Debian/Proxmox a <code>/etc/network/interfaces</code>. Questo è intenzionale: la modifica di un file netplan con regole scritte per <code>ifupdown</code> avrebbe corrotto silenziosamente la configurazione.",
|
||||
"backups": {
|
||||
"heading": "Dove vengono salvati i backup",
|
||||
"intro": "Ogni riparazione guidata, ripristino o backup manuale scrive una copia di <code>/etc/network/interfaces</code> con data e ora in <code>/var/backups/proxmenux/</code>:",
|
||||
"rollbackIntro": "Per ripristinare manualmente la configurazione precedente da una console:"
|
||||
},
|
||||
"readOnlySection": {
|
||||
"heading": "Ispezione di sola lettura",
|
||||
"body": "Il punto di partenza quando qualcosa non va. Semplice ispezione: non scrive mai in <code>/etc/network/interfaces</code> e non esegue comandi che modificano il sistema, con un’unica eccezione esplicita: la rimozione completa di NetworkManager, se rilevato, richiede il tuo consenso. Utilizzabile in sicurezza via SSH in qualsiasi momento.",
|
||||
"options": [
|
||||
{
|
||||
"title": "Diagnostica",
|
||||
"description": "Tre controlli puntuali di sola lettura: Mostra tabella di routing, Test di connettività e Diagnostica avanzata. Semplice ispezione: non scrive mai nel sistema."
|
||||
},
|
||||
{
|
||||
"title": "Strumenti di monitoraggio dal vivo",
|
||||
"description": "Tre strumenti avviabili in modo interattivo: iftop (larghezza di banda in tempo reale per coppia di host), iptraf-ng (monitor del traffico con più modalità) e iperf3 (test della larghezza di banda, modalità server / client)."
|
||||
}
|
||||
]
|
||||
},
|
||||
"analyzeSection": {
|
||||
"heading": "Analizzare, quindi suggerire",
|
||||
"body": "Da usare quando un’ispezione o un’effettiva interruzione del servizio indica un problema di configurazione. Ogni strumento esamina la parte pertinente di <code>/etc/network/interfaces</code>, stampa un rapporto dettagliato con l’esatto comando shell che risolverebbe ogni problema e <strong>si ferma</strong>. Se in seguito accetti la riparazione guidata facoltativa, ogni modifica viene preceduta da un backup e mostrata in anteprima prima della scrittura.",
|
||||
"options": [
|
||||
{
|
||||
"title": "Analisi dei bridge e riparazione guidata",
|
||||
"description": "Rileva bridge vmbrX con porte mancanti o non valide, situazione tipica dopo la rinumerazione PCI. Mostra prima un rapporto e ripara solo se accetti la procedura guidata in 5 passaggi."
|
||||
},
|
||||
{
|
||||
"title": "Analisi della configurazione e pulizia guidata",
|
||||
"description": "Trova le interfacce fisiche dichiarate in /etc/network/interfaces che non esistono più, ossia configurazioni orfane rimaste dopo modifiche hardware. Le segnala e propone una rimozione guidata."
|
||||
}
|
||||
]
|
||||
},
|
||||
"applySection": {
|
||||
"heading": "Applicare con backup",
|
||||
"body": "Questi strumenti scrivono su disco per loro natura. Ciascuno crea un backup del file interessato con data e ora prima della scrittura e le opzioni distruttive, come ripristino e riavvio, richiedono una conferma esplicita sì/no. I <em>nomi persistenti delle interfacce</em> diventano effettivi al prossimo riavvio, non subito: puoi quindi pianificarne l’impostazione in sicurezza anche su un host remoto.",
|
||||
"options": [
|
||||
{
|
||||
"title": "Nomi di interfaccia persistenti",
|
||||
"description": "Associa i nomi delle interfacce (eno1, enp3s0, …) agli indirizzi MAC tramite file .link di systemd. I nomi restano invariati dopo cambi di slot PCI, aggiornamenti del kernel e aggiunta o rimozione di altre schede di rete."
|
||||
},
|
||||
{
|
||||
"title": "Backup e riavvio delle interfacce",
|
||||
"description": "snapshot manuale di /etc/network/interfaces, sfoglia e ripristina i backup precedenti, visualizza la configurazione live e riavvia il servizio di rete quando necessario."
|
||||
}
|
||||
]
|
||||
},
|
||||
"consoleTitle": "Prepara un accesso alla console",
|
||||
"consoleSubTitle": "Prima di qualsiasi riparazione su un host remoto",
|
||||
"consoleBody": "Se sei connesso via SSH e hai un solo percorso di accesso all’host, prepara un’alternativa prima di applicare modifiche alla rete: console fisica / IPMI / iKVM oppure un’altra macchina sulla stessa LAN. Le riparazioni guidate sono sicure e offrono sempre un comando per annullare le modifiche, ma un bridge configurato male o una connessione interrotta può comunque lasciarti senza accesso finché non raggiungi la console."
|
||||
}
|
||||
@@ -0,0 +1,136 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Strumenti di monitoraggio in tempo reale | Documentazione ProxMenux",
|
||||
"description": "Tre strumenti interattivi di monitoraggio della rete: iftop (larghezza di banda in tempo reale per coppia di host), iptraf-ng (monitor del traffico con più modalità) e iperf3 (test della larghezza di banda, modalità server / client). Ciascuno viene installato al primo utilizzo.",
|
||||
"ogTitle": "Strumenti di monitoraggio in tempo reale | Documentazione ProxMenux",
|
||||
"ogDescription": "Monitoraggio interattivo della rete e test di larghezza di banda per l'host Proxmox: iftop, iptraf-ng, iperf3."
|
||||
},
|
||||
"header": {
|
||||
"title": "Strumenti di monitoraggio dal vivo",
|
||||
"description": "Tre strumenti avviabili in modo interattivo per osservare la rete in tempo reale e misurare la larghezza di banda: iftop, iptraf-ng e iperf3. Ogni strumento viene installato automaticamente tramite apt al primo utilizzo, viene eseguito in primo piano e si chiude con il tasto indicato. Non modificano la configurazione di rete dell’host; iperf3 genera traffico di prova.",
|
||||
"section": "Rete"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Cosa fa",
|
||||
"body": "Tre strumenti di monitoraggio interattivo, ciascuno dietro la propria voce menu. La prima volta che si lancia uno, il pacchetto viene installato silenziosamente tramite <code>apt-get</code>. I lanci successivi iniziano immediatamente. Nessuno di questi strumenti modifica la configurazione della rete host."
|
||||
},
|
||||
"when": {
|
||||
"heading": "Quando usare quale",
|
||||
"headerQuestion": "Domanda",
|
||||
"headerUse": "Usa",
|
||||
"rows": [
|
||||
{
|
||||
"question": "Chi sta saturando il collegamento <em>in questo momento</em>?",
|
||||
"use": "iftop"
|
||||
},
|
||||
{
|
||||
"question": "Qual è la ripartizione per protocollo e quali dimensioni dei pacchetti e flussi TCP sono presenti?",
|
||||
"use": "iptraf-ng"
|
||||
},
|
||||
{
|
||||
"question": "Quanta larghezza di banda è effettivamente disponibile tra due host?",
|
||||
"use": "iperf3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"iftop": {
|
||||
"heading": "Utilizzo rete in tempo reale (iftop)",
|
||||
"body": "Larghezza di banda in tempo reale per coppia di host (origine ↔ destinazione), come <code>top</code> per il traffico. Mostra in alto i flussi più intensi con medie mobili su 2/10/40 secondi. Lo strumento ideale per rispondere a <em>«perché il mio uplink è saturo?»</em>.",
|
||||
"exit": "<strong>Esci:</strong> premi <kbd>q</kbd>. ProxMenux mostra un promemoria prima dell’avvio.",
|
||||
"keysTitle": "Tasti utili dentro iftop",
|
||||
"keysBody": "<kbd>n</kbd> attiva o disattiva le ricerche DNS, <kbd>p</kbd> mostra i numeri di porta, <kbd>P</kbd> mette in pausa la visualizzazione, <kbd>t</kbd> cambia la direzione delle righe (inviato / ricevuto / entrambi), <kbd>1</kbd>/<kbd>2</kbd>/<kbd>3</kbd> ordina per media su 2 s / 10 s / 40 s. Elenco completo in <code>man iftop</code>."
|
||||
},
|
||||
"iptraf": {
|
||||
"heading": "Strumento monitoraggio rete (iptraf-ng)",
|
||||
"intro": "Un monitor del traffico con più modalità, gestito tramite menu. iftop risponde a <em>«chi»</em>, mentre iptraf-ng risponde a <em>«cosa»</em>: contatori di byte e pacchetti per protocollo, monitoraggio dello stato delle connessioni TCP, istogrammi delle dimensioni dei pacchetti e attività LAN per stazione.",
|
||||
"menuIntro": "Al lancio si ottiene un menu a cinque opzioni:",
|
||||
"headerMode": "Modalità",
|
||||
"headerUseFor": "Usalo per",
|
||||
"rows": [
|
||||
{
|
||||
"mode": "IP traffic monitor",
|
||||
"useFor": "Elenco in tempo reale dei flussi TCP / UDP / ICMP / altri protocolli IP con contatori di byte e stato della connessione"
|
||||
},
|
||||
{
|
||||
"mode": "General interface stats",
|
||||
"useFor": "Conteggi aggregati dei pacchetti IPv4 / IPv6 / TCP / UDP / ICMP / non IP per scheda di rete"
|
||||
},
|
||||
{
|
||||
"mode": "Detailed interface stats",
|
||||
"useFor": "Come sopra, ma per una sola interfaccia, con dettagli sulle dimensioni e sulla frequenza dei pacchetti"
|
||||
},
|
||||
{
|
||||
"mode": "Statistical breakdowns",
|
||||
"useFor": "Istogramma della distribuzione delle dimensioni dei pacchetti, per porta TCP / UDP"
|
||||
},
|
||||
{
|
||||
"mode": "LAN station monitor",
|
||||
"useFor": "Per-MAC statistiche del traffico per il dominio broadcast locale"
|
||||
}
|
||||
],
|
||||
"exit": "<strong>Esci:</strong> premi <kbd>x</kbd> da qualsiasi vista oppure <kbd>Q</kbd> dal menu principale. ProxMenux mostra un promemoria prima dell’avvio.",
|
||||
"logTitle": "Salvataggio delle acquisizioni su file",
|
||||
"logBody": "Ogni modalità offre di registrare le statistiche catturate a <code>/var/log/iptraf-ng/</code>. Utile se avete bisogno di un record di un picco di traffico — lasciare in esecuzione, registrare a file, rivedere il file dopo invece di cercare di leggere lo schermo dal vivo."
|
||||
},
|
||||
"iperf3": {
|
||||
"heading": "Test della larghezza di banda (iperf3)",
|
||||
"intro1": "Misura la velocità TCP effettiva tra due host. A differenza di iftop / iptraf-ng, che osservano il traffico esistente, iperf3 genera traffico sintetico per una prova di carico del collegamento. Indispensabile per domande come <em>«la mia rete 10 GbE raggiunge davvero 10 GbE?»</em> oppure <em>«il collo di bottiglia è la scheda di rete, lo switch o lo storage?»</em>.",
|
||||
"intro2": "iperf3 è uno <strong>strumento per due host</strong>: uno funge da server e ascolta sulla porta TCP 5201; l’altro funge da client, si connette, invia dati e mostra la velocità. Il lanciatore di ProxMenux chiede quale modalità vuoi:",
|
||||
"headerMode": "Modalità",
|
||||
"headerBehaviour": "Comportamento",
|
||||
"headerCli": "Comando CLI equivalente",
|
||||
"rows": [
|
||||
{
|
||||
"mode": "Server",
|
||||
"behaviour": "Ascolta sulla porta TCP 5201 e mostra i risultati di ogni test in arrivo. Si arresta con Ctrl+C.",
|
||||
"cli": "iperf3 -s"
|
||||
},
|
||||
{
|
||||
"mode": "Cliente",
|
||||
"behaviour": "Chiede l’indirizzo IP o il nome host del server, si connette, esegue il test predefinito di 10 secondi e mostra il rapporto.",
|
||||
"cli": "iperf3 -c <target>"
|
||||
}
|
||||
],
|
||||
"workflowIntro": "Flusso di lavoro tipico per testare un collegamento 10 GbE tra due host Proxmox:",
|
||||
"workflow": [
|
||||
"Sull’host A, apri il menu Rete → <em>Test della larghezza di banda (iperf3)</em> → scegli <strong>Server</strong>.",
|
||||
"Su host B, apri la stessa voce del menu → scegli <strong>Client</strong> → inserisci l'IP dell'host A.",
|
||||
"Attendere 10 secondi. Confrontare il tasso riportato al massimo teorico del link."
|
||||
],
|
||||
"sample": "Esempio di output del client:",
|
||||
"flagsTitle": "Opzioni utili da usare manualmente dalla shell",
|
||||
"flagsBody": "<code>-t 60</code> test più lungo (60 s invece di 10 s), <code>-P 4</code> 4 flussi paralleli (saturano prima il collegamento), <code>-R</code> direzione inversa (server → client), <code>-u -b 100M</code> test UDP a 100 Mbit/s (misurazione di jitter e perdita di pacchetti), <code>-p 5202</code> porta diversa (più test in parallelo). Elenco completo in <code>man iperf3</code>.",
|
||||
"firewallTitle": "Aprire la porta firewall sul server",
|
||||
"firewallBody": "Il server ascolta TCP <strong>5201</strong> per impostazione predefinita. Se si esegue il server all'interno di un host Proxmox con un firewall rigoroso (datacenter o livello host), consentire TCP 5201 in entrata dall'IP del client per la durata del test, quindi chiudere di nuovo. Lo stesso vale per <code>nftables</code> / <code>iptables</code> su host nudi."
|
||||
},
|
||||
"install": {
|
||||
"heading": "Il primo lancio installa il pacchetto",
|
||||
"body": "Tutti e tre i lanciatori controllano il binario ed eseguono <code>apt-get update -qq && apt-get install -y <pkg></code> se manca. L'installazione è silenziosa: il menu può apparire congelato per 10–30 secondi la prima volta. I lanci successivi iniziano immediatamente."
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Risoluzione dei problemi",
|
||||
"hangTitle": "L’installazione resta bloccata al primo avvio",
|
||||
"hangBody": "L’host non ha accesso a Internet oppure i repository apt sono irraggiungibili. Annulla con <kbd>Ctrl</kbd>+<kbd>C</kbd>, esegui <code>apt-get update</code> manualmente per vedere l’errore effettivo (DNS, firma del repository, proxy, …), poi torna al menu.",
|
||||
"refusedTitle": "Client iperf3: «unable to connect to server: Connection refused»",
|
||||
"refusedBody": "Il server non è in esecuzione oppure il suo firewall blocca TCP 5201. Verifica sul server con <code>ss -tlnp | grep 5201</code>: dovrebbe mostrare iperf3 in ascolto. Se è in ascolto ma il client continua a fallire, controlla i firewall lungo il percorso tra i due host.",
|
||||
"slowTitle": "iperf3 mostra una velocità molto inferiore a quella prevista per il collegamento",
|
||||
"slowBody": "Cause comuni in ordine di probabilità: (1) la CPU di uno degli host limita la velocità: prova <code>iperf3 -c <target> -P 4</code> per usare più core; (2) il percorso passa per un collegamento più lento, come uno switch gigabit tra due schede 10 GbE; (3) MTU diversi: controlla <code>ip link show</code> su entrambi i lati; (4) offloading della scheda di rete disabilitato: vedi lo script della community <em>Disable NIC Offloading</em> se hai una scheda Intel e1000e.",
|
||||
"noTrafficTitle": "iftop / iptraf-ng non mostrano traffico per un host occupato",
|
||||
"noTrafficBody": "La cattura predefinita è sulla prima interfaccia rilevata. Specificare quello giusto esplicitamente dalla shell: <code>iftop -i vmbr0</code> o <code>iptraf-ng -i vmbr0</code>. Il menu launcher utilizza il default; per le interfacce non di default, viene eseguito da una console."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"label": "Diagnostica",
|
||||
"href": "/docs/network/diagnostics",
|
||||
"tail": "— i controlli di sola lettura (routing, connettività, statistiche avanzate)."
|
||||
},
|
||||
{
|
||||
"label": "Analisi dei bridge e riparazione guidata",
|
||||
"href": "/docs/network/bridge-analysis",
|
||||
"tail": "— quando il monitoraggio rivela un'interfaccia o un ponte non sta facendo ciò che dovrebbe."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,130 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Nomi di interfaccia persistenti | Documentazione ProxMenux",
|
||||
"description": "Associa i nomi delle interfacce Proxmox (eno1, enp3s0, …) agli indirizzi MAC tramite file .link di systemd per mantenerli dopo la rinumerazione PCI, aggiornamenti del kernel e aggiunta o rimozione di altre schede di rete.",
|
||||
"ogTitle": "Nomi di interfaccia persistenti | Documentazione ProxMenux",
|
||||
"ogDescription": "Evita che i nomi delle interfacce Proxmox cambino quando modifichi l’hardware. Usa file .link di systemd basati sull’indirizzo MAC."
|
||||
},
|
||||
"header": {
|
||||
"title": "Nomi di interfaccia persistenti",
|
||||
"description": "Genera un file .link di systemd per ogni scheda di rete fisica, associando il nome assegnato dal kernel all’indirizzo MAC della scheda. Dopo l’applicazione al prossimo riavvio, i nomi delle interfacce rimangono stabili quando aggiungi, rimuovi o sposti schede PCIe.",
|
||||
"section": "Rete"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Cosa fa",
|
||||
"body": "Per ogni NIC fisico sull'host, scrive un piccolo file sotto <code>/etc/systemd/network/10-<iface>.link</code> che dice: <em>\"il dispositivo con questo MAC deve sempre essere chiamato questo nome\"</em>. systemd-udevd applica la regola ad ogni avvio, prima che <code>ifupdown</code> legga <code>/etc/network/interfaces</code>."
|
||||
},
|
||||
"problem": {
|
||||
"heading": "Il problema che risolve",
|
||||
"intro": "Linux ricava i nomi predefiniti delle interfacce dalla topologia PCI: <code>eno1</code> = integrata, <code>enp3s0</code> = scheda sul bus PCI 3, slot 0, ecc. Lo schema dei nomi è deterministico <em>a parità di disposizione hardware</em>. Se la disposizione cambia, cambiano anche i nomi:",
|
||||
"items": [
|
||||
"Aggiungere un GPU di fronte a un NIC esistente → il numero di bus NIC può cambiare → cambi di nome.",
|
||||
"Spostare una scheda in una diversa slot PCIe → cambia nome.",
|
||||
"Aggiornamento BIOS / UEFI che rienumera i dispositivi → i nomi possono cambiare.",
|
||||
"Sostituire una scheda difettosa con lo stesso modello in una slot diversa → cambia nome."
|
||||
],
|
||||
"outro": "Dopo una modifica simile, <code>/etc/network/interfaces</code> fa ancora riferimento al nome <em>precedente</em>; il bridge non si attiva e l’host perde la rete. Impostare nomi persistenti impedisce che la situazione si ripeta."
|
||||
},
|
||||
"howWorks": {
|
||||
"heading": "Come funziona",
|
||||
"arrowLabel": "per scheda di rete",
|
||||
"nodes": {
|
||||
"detectLabel": "Rileva le schede di rete fisiche",
|
||||
"detectDetail": "ls /sys/class/net/\nescludi vmbr / bond /\ndocker / veth / wireguard …",
|
||||
"readLabel": "Leggi ogni MAC",
|
||||
"readDetail": "cat /sys/class/net/\n '<'iface'>'/address",
|
||||
"writeLabel": "Scrivi file .link",
|
||||
"writeDetail": "/etc/systemd/network/\n 10-'<'iface'>'.link"
|
||||
},
|
||||
"minimalIntro": "Ogni file generato è intenzionalmente minimo:",
|
||||
"minimalOutro": "All’avvio, systemd-udevd identifica il dispositivo tramite MAC e assegna il nome richiesto <em>prima</em> che intervengano altri componenti (ifupdown, denominazione predefinita del kernel). Il prefisso <code>10-</code> fa caricare queste regole in anticipo, prima del file predefinito <code>99-default.link</code>."
|
||||
},
|
||||
"scope": {
|
||||
"heading": "Quello che viene scritto, quello che viene saltato",
|
||||
"headerType": "Tipo",
|
||||
"headerBehaviour": "Comportamento",
|
||||
"headerWhy": "Perché?",
|
||||
"rows": [
|
||||
{
|
||||
"type": "Scheda di rete integrata / PCIe",
|
||||
"behaviour": "File <code>.link</code> scritto",
|
||||
"why": "Corrisponde a un dispositivo PCI reale: il caso per cui è pensato lo strumento"
|
||||
},
|
||||
{
|
||||
"type": "Wi-Fi (phy80211)",
|
||||
"behaviour": "File <code>.link</code> scritto",
|
||||
"why": "Ha un MAC reale e benefici dalla stabilità dei nomi"
|
||||
},
|
||||
{
|
||||
"type": "Ponti (vmbrX)",
|
||||
"behaviour": "Ignorato",
|
||||
"why": "Virtuale; il nome viene da <code>/etc/network/interfaces</code>"
|
||||
},
|
||||
{
|
||||
"type": "Bond (bondX)",
|
||||
"behaviour": "Ignorato",
|
||||
"why": "Virtuale; il nome del bond è impostato da ifupdown"
|
||||
},
|
||||
{
|
||||
"type": "veth / docker0 / br-XXXX",
|
||||
"behaviour": "Ignorato",
|
||||
"why": "Creato su richiesta da Docker / LXC — hardware non persistente"
|
||||
},
|
||||
{
|
||||
"type": "tap / fwpr / fwln",
|
||||
"behaviour": "Ignorato",
|
||||
"why": "Creato su richiesta da Proxmox per VM/CT"
|
||||
},
|
||||
{
|
||||
"type": "WireGuard / Cilium / Tailscale",
|
||||
"behaviour": "Ignorato",
|
||||
"why": "Interfacce software gestite dai propri demoni"
|
||||
}
|
||||
]
|
||||
},
|
||||
"safety": {
|
||||
"heading": "Rete di sicurezza: backup dei file .link precedenti",
|
||||
"intro": "Se <code>/etc/systemd/network/</code> contiene già file <code>.link</code> da un’esecuzione precedente o da altri strumenti, questi vengono copiati in una directory di backup con data e ora prima di generare i nuovi file:",
|
||||
"outro": "Per tornare indietro: copiare i file dalla directory di backup e riavviare.",
|
||||
"rebootTitle": "Prende effetto sul prossimo riavvio, non immediatamente",
|
||||
"rebootBody": "Le modifiche ai file <code>.link</code> si applicano solo all’avvio, quando udev enumera nuovamente i dispositivi. Per questo lo strumento mostra <em>«Le modifiche saranno applicate dopo il riavvio»</em>. Rinominare un’interfaccia in uso è rischioso e non viene tentato: un <code>vmbr0</code> attivo con interfacce membro andrebbe riconfigurato atomicamente, quindi l’operazione è rimandata al prossimo avvio pulito."
|
||||
},
|
||||
"afterReboot": {
|
||||
"heading": "Dopo il riavvio",
|
||||
"intro": "Una volta che i nomi sono bloccati, il flusso di lavoro per le future modifiche hardware è semplice:",
|
||||
"items": [
|
||||
"Spegni, modifica l’hardware (aggiungi una scheda, cambia slot, …), poi avvia.",
|
||||
"Ogni NIC mantiene il suo nome precedente perché il suo MAC corrisponde a un file <code>.link</code>.",
|
||||
"Se una scheda di rete viene sostituita e ha un MAC diverso, riceve un nome predefinito del kernel (<code>enp<bus>s<slot></code>); esegui di nuovo questo menu per aggiungere una voce <code>.link</code> per il MAC della nuova scheda."
|
||||
]
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Risoluzione dei problemi",
|
||||
"emptyTitle": "\"Nessuna interfaccia fisica trovata\" dopo aver eseguito lo strumento",
|
||||
"emptyBody": "Il kernel non vede interfacce basate su PCI / phy80211 sull’host. Verifica con <code>ls -l /sys/class/net/</code>: ogni voce dovrebbe avere un collegamento simbolico <code>device</code> (PCI) oppure una voce <code>phy80211</code> (Wi-Fi). Se mancano entrambi per una scheda di rete reale, il driver non è caricato.",
|
||||
"noChangeTitle": "Dopo il riavvio, i nomi non sono cambiati come previsto",
|
||||
"noChangeBody": "Verifica che il file esista e sia ben formato: <code>cat /etc/systemd/network/10-<iface>.link</code>. Poi controlla i log di udev: <code>journalctl -u systemd-udevd -b | grep -i link</code>. Una causa comune è un vecchio parametro del kernel <code>net.ifnames=0</code> che disabilita del tutto i nomi prevedibili: rimuovilo da <code>/etc/default/grub</code>, esegui <code>update-grub</code> e riavvia.",
|
||||
"undoTitle": "Voglio annullare la denominazione persistente",
|
||||
"undoBody": "Elimina i file <code>.link</code> (<code>rm /etc/systemd/network/10-*.link</code>) oppure ripristinali dalla directory di backup creata nell’esecuzione precedente. Riavvia per applicare."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"label": "Analisi dei bridge e riparazione guidata",
|
||||
"href": "/docs/network/bridge-analysis",
|
||||
"tailRich": " — il percorso di ripristino quando i nomi sono <em>già</em> cambiati."
|
||||
},
|
||||
{
|
||||
"label": "Analisi della configurazione e pulizia guidata",
|
||||
"href": "/docs/network/config-analysis",
|
||||
"tail": "— rimuovere i blocchi orfani lasciati alle spalle con i cambi di nome."
|
||||
},
|
||||
{
|
||||
"label": "Diagnostica",
|
||||
"href": "/docs/network/diagnostics",
|
||||
"tailRich": " — verifica i nuovi nomi con <em>Mostra tabella di routing</em> dopo il riavvio."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,171 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Come viene adattata un’immagine OCI | ProxMenux",
|
||||
"description": "Dal repository dell’immagine e dal suo file Compose a un modello verificabile, un piano di distribuzione e un LXC nativo di Proxmox VE, senza Docker al suo interno."
|
||||
},
|
||||
"header": {
|
||||
"title": "Come viene adattata un’immagine OCI",
|
||||
"description": "Dal repository dell’immagine e dal suo file Compose a un modello verificabile, un piano di distribuzione e un LXC nativo, senza installare Docker al suo interno.",
|
||||
"section": "OCI manager Apps"
|
||||
},
|
||||
"sections": [
|
||||
{
|
||||
"id": "pipeline",
|
||||
"title": "Il processo di adattamento",
|
||||
"blocks": [
|
||||
{
|
||||
"mermaid": {
|
||||
"chartCode": "flowchart LR\n A[\"{{repo}}\"] --> B[\"Compose + README\"]\n B --> C[\"{{converter}}\"]\n C --> D[\"{{template}}\"]\n D --> E{\"{{blockers}}\"}\n E -- \"{{no}}\" --> F[\"{{review}}\"]\n F --> D\n E -- \"{{yes}}\" --> G[\"{{plan}}\"]\n G --> H[\"pct create\"]\n H --> I[\"{{lxc}}\"]",
|
||||
"labels": {
|
||||
"repo": "Repository dell’immagine",
|
||||
"converter": "Convertitore",
|
||||
"template": "Modello JSON",
|
||||
"blockers": "Nessun requisito bloccante?",
|
||||
"no": "No",
|
||||
"yes": "Sì",
|
||||
"review": "Revisione / overlay",
|
||||
"plan": "Piano di distribuzione",
|
||||
"lxc": "LXC nativo"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"p": "Il convertitore legge l’immagine e il file Compose pubblicati dal progetto e genera un modello JSON. Se alcuni requisiti non possono ancora essere adattati e impediscono l’installazione, il modello viene revisionato prima della pubblicazione nel catalogo. Un file di modifiche verificate, chiamato overlay, risolve questi problemi. Solo i modelli senza requisiti bloccanti vengono proposti per l’installazione."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "template",
|
||||
"title": "Cosa conserva il modello",
|
||||
"blocks": [
|
||||
{
|
||||
"cards": {
|
||||
"items": [
|
||||
{
|
||||
"icon": "archive",
|
||||
"title": "Identità dell’immagine",
|
||||
"body": "Repository, tag ad aggiornamento continuo, architettura, digest risolto e revisione di origine."
|
||||
},
|
||||
{
|
||||
"icon": "braces",
|
||||
"title": "Contratto del container",
|
||||
"body": "Entrypoint, Cmd, ambiente, utente, directory di lavoro, segnale di arresto, porte e volumi."
|
||||
},
|
||||
{
|
||||
"icon": "layers",
|
||||
"title": "Adattamento a Proxmox VE",
|
||||
"body": "Risorse, sicurezza, punti di mount, dispositivi, sysctls, controlli di stato e adattamenti necessari per ciascuno, con la relativa motivazione."
|
||||
},
|
||||
{
|
||||
"icon": "shield",
|
||||
"title": "Compatibilità",
|
||||
"body": "Chiavi supportate, requisiti non adattati che impediscono l’installazione e stato di ogni verifica."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "sources",
|
||||
"title": "OCI fornisce il processo, Compose l’ambiente",
|
||||
"blocks": [
|
||||
{
|
||||
"table": {
|
||||
"headers": [
|
||||
"Origine",
|
||||
"Esempio",
|
||||
"Risultato nativo"
|
||||
],
|
||||
"rows": [
|
||||
[
|
||||
"Metadati OCI",
|
||||
"<code>Entrypoint</code>, <code>Cmd</code>, <code>User</code>",
|
||||
"Proxmox VE li importa durante la creazione del CT"
|
||||
],
|
||||
[
|
||||
"Docker Compose",
|
||||
"<code>environment</code>, <code>volumes</code>, <code>devices</code>",
|
||||
"Voci dell’ambiente LXC, <code>mpN</code> e <code>devN</code>"
|
||||
],
|
||||
[
|
||||
"Profilo ProxMenux",
|
||||
"GPU, controllo di stato, credenziali",
|
||||
"Domande e adattamenti verificati"
|
||||
],
|
||||
[
|
||||
"Utente",
|
||||
"VMID, storage, rete",
|
||||
"Il contratto dell’istanza"
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "install",
|
||||
"title": "Cosa succede durante l’installazione",
|
||||
"blocks": [
|
||||
{
|
||||
"steps": {
|
||||
"items": [
|
||||
{
|
||||
"title": "Risolvere il riferimento",
|
||||
"body": "Viene interrogato il registro, viene scelta l’architettura dell’host e viene fissato il digest esatto a cui punta il tag ad aggiornamento continuo."
|
||||
},
|
||||
{
|
||||
"title": "Scaricare e verificare",
|
||||
"body": "Skopeo scarica l’immagine come archivio OCI. Prima di creare qualsiasi risorsa, ogni livello viene verificato rispetto al suo digest e decompresso. Se il download è danneggiato, viene ripetuto una volta prima di interrompere l’installazione."
|
||||
},
|
||||
{
|
||||
"title": "Creare il filesystem",
|
||||
"body": "<code>pct create</code> crea il rootfs a partire dall’archivio e conserva i metadati ufficiali del processo dell’immagine."
|
||||
},
|
||||
{
|
||||
"title": "Collegare le risorse",
|
||||
"body": "Vengono applicati i volumi, la rete, l’ambiente, i dispositivi e i profili di sicurezza dichiarati."
|
||||
},
|
||||
{
|
||||
"title": "Console",
|
||||
"body": "L’output della console del container viene conservato sull’host. La console di Proxmox VE apre una shell se l’immagine ne include una."
|
||||
},
|
||||
{
|
||||
"title": "Verificare",
|
||||
"body": "Al primo avvio si attende che il container riceva un indirizzo e che il servizio risponda. In caso di errore, l’installazione non viene indicata come riuscita."
|
||||
},
|
||||
{
|
||||
"title": "Registrare la configurazione",
|
||||
"body": "La configurazione effettiva viene salvata nel contratto dell’istanza usato per gli aggiornamenti e le ricreazioni."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "example",
|
||||
"title": "Esempio: un’immagine con /config e /downloads",
|
||||
"intro": "Una definizione Compose comune e la configurazione Proxmox VE che ne deriva. I percorsi attesi dall’applicazione non cambiano.",
|
||||
"blocks": [
|
||||
{
|
||||
"codeGrid": {
|
||||
"items": [
|
||||
{
|
||||
"title": "Docker Compose",
|
||||
"code": "image: lscr.io/linuxserver/example:latest\nenvironment:\n - PUID=1000\n - PGID=1000\nvolumes:\n - config:/config\n - /srv/downloads:/downloads\nports:\n - 8080:8080"
|
||||
},
|
||||
{
|
||||
"title": "/etc/pve/lxc/VMID.conf (estratto)",
|
||||
"code": "entrypoint: /init\nmp0: local-lvm:vm-VMID-disk-1,mp=/config,backup=1,size=8G\nmp1: /srv/downloads,mp=/downloads\nnet0: name=eth0,bridge=vmbr0,ip=dhcp,type=veth\nlxc.environment.runtime: PUID=1000\nlxc.environment.runtime: PGID=1000"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"p": "<code>mp0</code> è un secondo disco appartenente al container, denominato <code>vm-VMID-disk-N</code> sullo storage selezionato. Viene montato in <code>/config</code> e, con <code>backup=1</code>, incluso nel backup del container. <code>mp1</code> non crea alcun disco: monta la directory dell’host <code>/srv/downloads</code> in <code>/downloads</code> all’interno dell’LXC. La porta 8080 non viene mappata: l’LXC ha un proprio indirizzo e il servizio risponde su quello."
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,278 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Installare un’immagine non presente nel catalogo | ProxMenux",
|
||||
"description": "Adatta un’immagine OCI da un file Compose, un URL, un comando docker run o un riferimento all’immagine e verifica cosa può riprodurre ProxMenux prima di installarla."
|
||||
},
|
||||
"header": {
|
||||
"title": "Installa un’immagine non presente nel catalogo",
|
||||
"description": "L’immagine viene adattata dal suo file Compose, da un comando docker run o dal solo riferimento. Il risultato viene mostrato per la revisione prima di creare qualsiasi LXC.",
|
||||
"section": "OCI manager Apps"
|
||||
},
|
||||
"sections": [
|
||||
{
|
||||
"id": "intro",
|
||||
"blocks": [
|
||||
{
|
||||
"calloutInfo": {
|
||||
"title": "Lo stesso convertitore e lo stesso installer",
|
||||
"body": "L’opzione <strong>Installa un’immagine non presente nel catalogo</strong> usa il convertitore e l’installer dei modelli del catalogo. La differenza è che il contratto viene generato al momento dalla definizione fornita e verificato prima di creare qualsiasi LXC."
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "sources",
|
||||
"title": "Come viene descritta l’immagine",
|
||||
"intro": "La prima schermata chiede come viene descritta l’immagine. Quattro opzioni forniscono una definizione da adattare, una quinta usa solo il nome dell’immagine e altre tre leggono un oci-compose già scritto.",
|
||||
"blocks": [
|
||||
{
|
||||
"table": {
|
||||
"headers": [
|
||||
"Opzione",
|
||||
"Cosa legge"
|
||||
],
|
||||
"rows": [
|
||||
[
|
||||
"Incolla il file Compose nel terminale",
|
||||
"Incolla il contenuto YAML nel terminale e termina con Ctrl+D."
|
||||
],
|
||||
[
|
||||
"Leggi il file Compose da questo host",
|
||||
"Un percorso sul nodo, <code>/root/docker-compose.yml</code> per impostazione predefinita. Il file deve esistere e non superare 256 KiB."
|
||||
],
|
||||
[
|
||||
"Scarica il file Compose da un indirizzo",
|
||||
"Un indirizzo <code>http://</code> o <code>https://</code> che fornisce il contenuto YAML grezzo. Vengono scaricati al massimo 256 KiB."
|
||||
],
|
||||
[
|
||||
"Incolla il comando docker run nel terminale",
|
||||
"Il comando pubblicato dal progetto. Vengono adattati porte, ambiente, volumi, dispositivi, capability, utente, memoria condivisa e le altre opzioni supportate."
|
||||
],
|
||||
[
|
||||
"Solo il riferimento all’immagine, senza file Compose",
|
||||
"Un riferimento come <code>ghcr.io/user/application:latest</code>. Viene interrogato il registro e vengono conservati i metadati OCI dell’immagine."
|
||||
],
|
||||
[
|
||||
"Incolla un oci-compose nel terminale",
|
||||
"Incolla il JSON nel terminale e termina con Ctrl+D. Non viene convertito: viene verificato e installato così come è scritto."
|
||||
],
|
||||
[
|
||||
"Leggi un oci-compose da questo host",
|
||||
"Un file JSON sul nodo, <code>/root/oci-compose.json</code> per impostazione predefinita, di massimo 2 MiB."
|
||||
],
|
||||
[
|
||||
"Scarica un oci-compose da un indirizzo",
|
||||
"Un indirizzo <code>http://</code> o <code>https://</code> che fornisce il file JSON. Vengono scaricati al massimo 2 MiB."
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"figure": {
|
||||
"src": "/oci-manager/custom-source-menu.png",
|
||||
"alt": "Menu per scegliere come descrivere un’immagine non presente nel catalogo",
|
||||
"caption": "Modi per descrivere un’immagine non presente nel catalogo."
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "reference-only",
|
||||
"title": "Cosa fornisce il solo riferimento all’immagine",
|
||||
"intro": "L’immagine contiene i metadati del processo, ma non tutto l’ambiente che normalmente aggiunge un file Compose.",
|
||||
"blocks": [
|
||||
{
|
||||
"table": {
|
||||
"headers": [
|
||||
"Letto dall’immagine",
|
||||
"Non presente nell’immagine",
|
||||
"Conseguenza"
|
||||
],
|
||||
"rows": [
|
||||
[
|
||||
"<code>Entrypoint</code>, <code>Cmd</code>, <code>User</code>, <code>WorkingDir</code> e l’ambiente incorporato",
|
||||
"Variabili presenti solo nella documentazione",
|
||||
"Vengono aggiunte durante l’installazione o con Modifica"
|
||||
],
|
||||
[
|
||||
"Volumi dichiarati dall’immagine",
|
||||
"Directory dell’host indicate solo nel file Compose",
|
||||
"I percorsi aggiuntivi vengono inseriti prima dell’installazione"
|
||||
],
|
||||
[
|
||||
"Porte <code>EXPOSE</code>",
|
||||
"L’URL, il protocollo o il controllo funzionale del servizio",
|
||||
"Vengono confermati la porta e il metodo di verifica del servizio"
|
||||
],
|
||||
[
|
||||
"Architetture e digest nel registro",
|
||||
"Dispositivi, privilegi o dipendenze esterne",
|
||||
"Non vengono abilitati senza una definizione che li richieda"
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "review",
|
||||
"title": "Verifica prima di installare",
|
||||
"intro": "Dopo aver adattato la definizione, ProxMenux mostra come l’ha interpretata prima di chiedere VMID, risorse o storage.",
|
||||
"blocks": [
|
||||
{
|
||||
"steps": {
|
||||
"items": [
|
||||
{
|
||||
"title": "Analizza",
|
||||
"body": "Vengono letti servizi, immagine, porte, percorsi, ambiente, dispositivi, sicurezza e controllo di stato."
|
||||
},
|
||||
{
|
||||
"title": "Interroga il registro",
|
||||
"body": "L’immagine deve esistere nel registro e vengono elencate le architetture pubblicate. Per un registro privato viene usato l’account salvato per quel registro."
|
||||
},
|
||||
{
|
||||
"title": "Elenca ciò che non viene applicato",
|
||||
"body": "Vengono elencati label, reti Docker, impostazioni Swarm e altre chiavi che non hanno effetto su un LXC."
|
||||
},
|
||||
{
|
||||
"title": "Blocca le opzioni senza equivalente sicuro",
|
||||
"body": "Le chiavi senza un equivalente sicuro compaiono in <strong>Opzioni senza equivalente</strong> e impediscono di proseguire con l’installazione. Non vengono ignorate senza avviso."
|
||||
},
|
||||
{
|
||||
"title": "Richiedi i segreti",
|
||||
"body": "Le variabili il cui nome indica una password, un token o una chiave vengono richieste come dati sensibili durante l’installazione."
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"figure": {
|
||||
"src": "/oci-manager/custom-review.png",
|
||||
"alt": "Riepilogo di come ProxMenux ha interpretato il file Compose",
|
||||
"caption": "Riepilogo mostrato prima che l’installer chieda VMID e risorse."
|
||||
}
|
||||
},
|
||||
{
|
||||
"p": "Dopo aver accettato il riepilogo, il flusso è quello del catalogo: nome, modalità predefinita o avanzata, VMID, CPU, memoria, rete, avvio con il nodo, percorsi persistenti e aggiuntivi, dispositivi compatibili e riepilogo finale."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "examples",
|
||||
"title": "Esempi di input",
|
||||
"blocks": [
|
||||
{
|
||||
"codeGrid": {
|
||||
"items": [
|
||||
{
|
||||
"title": "Compose",
|
||||
"code": "services:\n app:\n image: ghcr.io/example/app:latest\n ports:\n - \"8080:8080\"\n volumes:\n - ./config:/config\n - /srv/media:/media\n environment:\n TZ: Europe/Madrid"
|
||||
},
|
||||
{
|
||||
"title": "docker run",
|
||||
"code": "docker run -d \\\n --name app \\\n -p 8080:8080 \\\n -e TZ=Europe/Madrid \\\n -v app-config:/config \\\n -v /srv/media:/media \\\n ghcr.io/example/app:latest"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "oci-compose",
|
||||
"title": "Un oci-compose scritto a mano",
|
||||
"intro": "Un oci-compose è il file JSON da cui viene installata un’applicazione. Il catalogo ne conserva uno per ogni applicazione. Lo stesso formato può essere scritto a mano e installato con questa opzione.",
|
||||
"blocks": [
|
||||
{
|
||||
"p": "In un file scritto a mano l’autore decide immagine, porte, variabili, volumi e domande dell’installazione. ProxMenux completa il resto durante la lettura. Il formato può esprimere ciò che Compose non prevede: il testo di una domanda, una password generata all’installazione, un profilo GPU, il proprietario di ciascun volume, il controllo del primo avvio o le credenziali mostrate alla fine."
|
||||
},
|
||||
{
|
||||
"steps": {
|
||||
"items": [
|
||||
{
|
||||
"title": "Verifica",
|
||||
"body": "I file con errori non vengono installati. Ogni errore indica il campo interessato; se il JSON non è valido, vengono segnalate riga e colonna."
|
||||
},
|
||||
{
|
||||
"title": "Rivedi",
|
||||
"body": "Un file valido mostra cosa installa: immagine, indirizzo web, porte, percorsi persistenti, variabili richieste dall’installer e file che verranno scritti."
|
||||
},
|
||||
{
|
||||
"title": "Installa",
|
||||
"body": "L’installazione è la stessa delle applicazioni del catalogo, con impostazioni predefinite o avanzate."
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"calloutWarning": {
|
||||
"title": "Un file che determina i privilegi",
|
||||
"body": "Un oci-compose stabilisce cosa viene montato nel container e con quali privilegi. La revisione lo mostra prima dell’installazione: installa solo file provenienti da fonti attendibili."
|
||||
}
|
||||
},
|
||||
{
|
||||
"p": "Il <readmeLink>README del motore OCI</readmeLink> descrive il formato blocco per blocco con due esempi completi. Anche il record di un’installazione può essere letto nello stesso modo: viene usato solo il modello originale, senza alcuna delle risposte di quell’installazione."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "private-registries",
|
||||
"title": "Immagini in registri privati",
|
||||
"intro": "Un’immagine in un registro privato, come un pacchetto privato su GitHub o un repository privato su Docker Hub, viene letta con un account salvato in ProxMenux.",
|
||||
"blocks": [
|
||||
{
|
||||
"steps": {
|
||||
"items": [
|
||||
{
|
||||
"title": "Il registro nega l’accesso all’immagine",
|
||||
"body": "Quando il registro indica che l’immagine richiede un account, la revisione propone di accedere a quel registro e legge di nuovo l’immagine."
|
||||
},
|
||||
{
|
||||
"title": "Accedi",
|
||||
"body": "Un nome utente e una password o un token autorizzato a scaricare l’immagine. Il registro li verifica e vengono salvati solo se accettati."
|
||||
},
|
||||
{
|
||||
"title": "Installa e mantieni aggiornato",
|
||||
"body": "L’account viene usato per scaricare l’immagine durante l’installazione e anche per aggiornamenti, Modifica, Ricrea, watchdog e ricerca degli aggiornamenti del Monitor, su qualsiasi nodo del cluster."
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"p": "<strong>Account dei registri</strong>, nel menu principale di OCI manager Apps, elenca gli account salvati per registro e utente, senza mostrarne i segreti. Da ogni account puoi verificare, scaricare o installare un’immagine e aggiornare o rimuovere le credenziali."
|
||||
},
|
||||
{
|
||||
"list": {
|
||||
"items": [
|
||||
"GitHub (<code>ghcr.io</code>): l’utente è l’account GitHub e la password è un token di accesso personale con il permesso <code>read:packages</code>.",
|
||||
"Docker Hub (<code>docker.io</code>): l’utente è l’account Docker Hub e la password è un token di accesso con permesso di lettura.",
|
||||
"Altri registri, anche con una porta propria come <code>registry.example.com:5000</code>: nome utente e password o token forniti da quel registro."
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"calloutInfo": {
|
||||
"title": "Dove vengono salvati gli account",
|
||||
"body": "In <code>/etc/pve/priv/proxmenux/registry-auth.json</code>, leggibile solo da root, nella stessa cartella in cui Proxmox conserva le password degli storage. <code>/etc/pve</code> è condiviso tra tutti i nodi del cluster, quindi un account aggiunto su un nodo viene usato su tutti. Il backup dell’host include il file e la disinstallazione di ProxMenux lo rimuove da tutti i nodi."
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "limits",
|
||||
"title": "Definizioni che non vengono installate",
|
||||
"blocks": [
|
||||
{
|
||||
"list": {
|
||||
"items": [
|
||||
"Un Dockerfile senza immagine pubblicata: prima occorre creare l’immagine e pubblicarla in un registro OCI.",
|
||||
"Un file Compose con più servizi: viene bloccato perché questa opzione installa un solo servizio per container, anche se più servizi usano la stessa immagine.",
|
||||
"<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.",
|
||||
"Opzioni <code>docker run</code> non riconosciute e <code>--env-file</code>: usa invece un file Compose con valori espliciti."
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,392 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Dispositivi e accelerazione | ProxMenux",
|
||||
"description": "Come OCI manager Apps passa GPU, NVIDIA, Coral, USB, FUSE e altri dispositivi a un contenitore OCI come risorse native Proxmox VE convalidate."
|
||||
},
|
||||
"header": {
|
||||
"title": "Dispositivi e accelerazione",
|
||||
"description": "I dispositivi GPU, NVIDIA, Coral, USB, FUSE e a blocchi diventano risorse native convalidate Proxmox VE del contenitore.",
|
||||
"section": "OCI manager Apps"
|
||||
},
|
||||
"sections": [
|
||||
{
|
||||
"id": "principle",
|
||||
"title": "Il dispositivo di cui l'applicazione ha bisogno, non l'intero host",
|
||||
"blocks": [
|
||||
{
|
||||
"p": "Un dispositivo richiesto dal file Compose o dal profilo dell’applicazione viene configurato come voce <code>devN</code> specifica o come montaggio LXC. Richiedere una GPU, un dispositivo USB o un acceleratore Coral non rende il container privilegiato."
|
||||
},
|
||||
{
|
||||
"flow": {
|
||||
"nodes": [
|
||||
{
|
||||
"label": "Inventario host",
|
||||
"detail": "/dev/dri/renderD128\nGID 993 · Intel"
|
||||
},
|
||||
{
|
||||
"label": "ProxMenux",
|
||||
"detail": "produttore e\npermessi verificati"
|
||||
},
|
||||
{
|
||||
"label": "LXC",
|
||||
"detail": "stesso dispositivo\nGID effettivo"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "origin",
|
||||
"title": "Da dove proviene la richiesta del dispositivo",
|
||||
"blocks": [
|
||||
{
|
||||
"table": {
|
||||
"headers": [
|
||||
"Fonte",
|
||||
"Cosa si legge",
|
||||
"Cosa fa l'installatore"
|
||||
],
|
||||
"rows": [
|
||||
[
|
||||
"Docker Compose",
|
||||
"<code>devices</code>, <code>group_add</code>, <code>deploy.resources</code> e NVIDIA richieste",
|
||||
"Ogni esigenza diventa una richiesta di dispositivo mostrata per la revisione"
|
||||
],
|
||||
[
|
||||
"Profilo del catalogo",
|
||||
"Il supporto effettivo dell’applicazione per GPU, Coral, OpenCL, USB o FUSE",
|
||||
"Solo le opzioni convalidate per quell'immagine sono offerte"
|
||||
],
|
||||
[
|
||||
"Metadati e documentazione dell’immagine",
|
||||
"VA-API, Selkies, mod LinuxServer o runtime NVIDIA",
|
||||
"Vengono aggiunte le variabili documentate e la preparazione"
|
||||
],
|
||||
[
|
||||
"Selezione utente",
|
||||
"CPU solo, Intel/AMD, OpenCL, NVIDIA o un dispositivo opzionale",
|
||||
"La selezione viene memorizzata nel contratto di istanza"
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"calloutWarning": {
|
||||
"title": "I dispositivi rilevati non vengono collegati automaticamente",
|
||||
"body": "Viene creato un inventario dell’host, ma solo i dispositivi dichiarati dal file Compose o da un profilo compatibile sono offerti e allegati. Una GPU, USB dongle o Coral presente sull'host non è esposto ad ogni LXC."
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "identify",
|
||||
"title": "Come viene identificato il dispositivo host",
|
||||
"intro": "Prima della modifica del LXC, il dispositivo viene letto sull'host e abbinato al profilo scelto.",
|
||||
"blocks": [
|
||||
{
|
||||
"table": {
|
||||
"headers": [
|
||||
"Tipo",
|
||||
"Identità",
|
||||
"Validazione"
|
||||
],
|
||||
"rows": [
|
||||
[
|
||||
"Intel/AMD DRM",
|
||||
"<code>/dev/dri/renderD*</code> e <code>/sys/class/drm/NODE/device/vendor</code>",
|
||||
"Un dispositivo a caratteri con il fornitore <code>0x8086</code> (Intel) o <code>0x1002</code> (AMD)"
|
||||
],
|
||||
[
|
||||
"AMD OpenCL",
|
||||
"Il nodo di rendering, più <code>/dev/kfd</code> quando il profilo ne ha bisogno",
|
||||
"Esistenza, tipo, fornitore, autorizzazioni e compatibilità dichiarata"
|
||||
],
|
||||
[
|
||||
"AMD ROCm",
|
||||
"Il nodo di rendering, <code>/dev/kfd</code> e la generazione indicata dal driver di calcolo in <code>/sys/class/kfd/kfd/topology/nodes/*/properties</code>",
|
||||
"Una generazione per cui l’immagine ROCm dell’applicazione include kernel di calcolo — le GPU RDNA2 indicate e quelle più recenti — viene proposta così com’è. Le altre GPU di queste famiglie, come Radeon 680M e 780M, sono proposte come sperimentali e non sono mai preselezionate: ROCm non le supporta ufficialmente, l’applicazione le presenta come la generazione della rispettiva famiglia (<code>HSA_OVERRIDE_GFX_VERSION</code>) e l’installatore chiede conferma prima di scaricare l’immagine più grande. Una GPU precedente, come la grafica integrata di un Ryzen 5000U, non viene proposta e Immich mantiene il riconoscimento sulla CPU."
|
||||
],
|
||||
[
|
||||
"NVIDIA",
|
||||
"<code>nvidia-smi</code> e <code>nvidia-container-cli</code>",
|
||||
"GPU, UUID, bus PCI, versione driver, Toolkit, nodi <code>/dev/nvidia*</code>, binari e librerie"
|
||||
],
|
||||
[
|
||||
"Coral PCIe/M.2",
|
||||
"<code>/dev/apex_N</code> e il suo collegamento in <code>/sys/dev/char/MAJOR:MINOR</code>",
|
||||
"Nodo a caratteri, numeri major/minor, proprietario, GID e permessi"
|
||||
],
|
||||
[
|
||||
"USB e seriale",
|
||||
"<code>/dev/ttyUSB*</code>, <code>/dev/ttyACM*</code> o <code>/dev/bus/usb/BBB/DDD</code>",
|
||||
"Nodo di carattere; per USB anche produttore, prodotto e seriale quando sysfs li pubblica"
|
||||
],
|
||||
[
|
||||
"KVM, TUN, FUSE, video e SCSI generici",
|
||||
"<code>/dev/kvm</code>, <code>/dev/net/tun</code>, <code>/dev/fuse</code>, <code>/dev/videoN</code> o <code>/dev/sgN</code>",
|
||||
"Percorso supportato, tipo nodo e permessi effettivi"
|
||||
],
|
||||
[
|
||||
"Unità ottica",
|
||||
"<code>/dev/srN</code>",
|
||||
"Un dispositivo a blocchi"
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "install",
|
||||
"title": "Cosa succede durante l'installazione",
|
||||
"blocks": [
|
||||
{
|
||||
"steps": {
|
||||
"items": [
|
||||
{
|
||||
"title": "Il modello offre i suoi profili",
|
||||
"body": "Ad esempio solo CPU, Intel/AMD VA-API, AMD OpenCL, Intel OpenCL o NVIDIA. Le opzioni appartengono all'immagine, non a un menu comune."
|
||||
},
|
||||
{
|
||||
"title": "Viene scelto un profilo",
|
||||
"body": "Definisce i nodi del dispositivo, ambiente, mod o runtime di cui l'applicazione ha bisogno."
|
||||
},
|
||||
{
|
||||
"title": "Si propone un percorso",
|
||||
"body": "Per DRM, <code>/dev/dri/renderD128</code>, che può essere modificato su un host con diversi nodi di rendering. Per USB o seriale, viene selezionato il nodo specifico."
|
||||
},
|
||||
{
|
||||
"title": "Validazione",
|
||||
"body": "Esistenza, tipo, fornitore consentito, autorizzazioni e GID sono controllati. Un errore blocca l'operazione."
|
||||
},
|
||||
{
|
||||
"title": "Il contratto è scritto",
|
||||
"body": "Percorso, modalità, GID, accesso scrittura e profilo sono registrati per aggiornamenti e ricreazioni."
|
||||
},
|
||||
{
|
||||
"title": "Collega e verifica",
|
||||
"body": "<code>pct set</code> aggiunge l'ingresso <code>devN</code> e l'accesso viene quindi controllato all'interno del LXC. Le immagini LinuxServer vengono anche controllate come utente <code>abc</code>."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "config",
|
||||
"title": "Come appare nella configurazione LXC",
|
||||
"intro": "Valori illustrativi: <code>dev0</code> e <code>dev1</code> sono gli slot liberi assegnati da Proxmox VE; <code>renderD128</code>, <code>apex_0</code> e il GID dipendono dall’hardware del nodo.",
|
||||
"blocks": [
|
||||
{
|
||||
"codeGrid": {
|
||||
"items": [
|
||||
{
|
||||
"title": "Intel/AMD VA-API",
|
||||
"code": "dev0: path=/dev/dri/renderD128,mode=0660,gid=993,deny-write=0"
|
||||
},
|
||||
{
|
||||
"title": "Coral PCIe/M.2",
|
||||
"code": "dev0: path=/dev/apex_0,mode=0660,gid=GID,deny-write=0"
|
||||
},
|
||||
{
|
||||
"title": "Un dispositivo USB specifico",
|
||||
"code": "dev0: path=/dev/bus/usb/003/004,mode=0660,gid=GID,deny-write=0"
|
||||
},
|
||||
{
|
||||
"title": "AMD OpenCL",
|
||||
"code": "dev0: path=/dev/dri/renderD128,mode=0660,gid=GID,deny-write=0\ndev1: path=/dev/kfd,mode=0660,gid=GID,deny-write=0"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"p": "Il GID è letto con <code>stat</code> sull'host e scritto all'ingresso <code>devN</code>; i gruppi <code>render</code> e <code>video</code> non si presume abbiano un numero fisso. Il dispositivo mantiene lo stesso percorso <code>/dev</code> all'interno del LXC, dove i propri meccanismi dell'applicazione lo cercano."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "profiles",
|
||||
"title": "Profili che un’immagine può offrire",
|
||||
"blocks": [
|
||||
{
|
||||
"table": {
|
||||
"headers": [
|
||||
"Profilo",
|
||||
"Configurazione risultante",
|
||||
"Offerto quando"
|
||||
],
|
||||
"rows": [
|
||||
[
|
||||
"Intel/AMD VA-API",
|
||||
"Nodo di rendering <code>/dev/dri</code>",
|
||||
"L'applicazione supporta l'accelerazione video"
|
||||
],
|
||||
[
|
||||
"OpenCL",
|
||||
"Nodo di rendering, <code>/dev/kfd</code> quando necessario e mod ufficiale",
|
||||
"L'immagine o il profilo lo documentano"
|
||||
],
|
||||
[
|
||||
"NVIDIA",
|
||||
"Dispositivi driver e librerie dell'host",
|
||||
"L’host dispone di un driver funzionante e di NVIDIA Container Toolkit"
|
||||
],
|
||||
[
|
||||
"Coral",
|
||||
"<code>/dev/apex_0</code> o il bus USB",
|
||||
"Il profilo dichiara il supporto Coral (Frigate)"
|
||||
],
|
||||
[
|
||||
"USB, seriale, FUSE",
|
||||
"Un singolo dispositivo, un albero convalidato o una funzione LXC",
|
||||
"Il contratto lo chiede"
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "nvidia",
|
||||
"title": "NVIDIA",
|
||||
"blocks": [
|
||||
{
|
||||
"calloutWarning": {
|
||||
"title": "Requisito del nodo: NVIDIA Container Toolkit",
|
||||
"body": "Un driver funzionante su Proxmox VE non è sufficiente per dare un NVIDIA GPU ad un'immagine OCI. OCI manager Apps utilizza <code>nvidia-container-cli</code>, dal NVIDIA Container Toolkit, per identificare i dispositivi e per ottenere i binari e le librerie che corrispondono al driver caricato."
|
||||
}
|
||||
},
|
||||
{
|
||||
"p": "L’<nvidiaLink>installatore NVIDIA di ProxMenux</nvidiaLink> installa NVIDIA Container Toolkit dal repository ufficiale NVIDIA insieme al driver. Controlla i quattro pacchetti, convalida <code>nvidia-container-cli</code> e registra il risultato nel registro delle modifiche di <auditLink>Audit & Report</auditLink>."
|
||||
},
|
||||
{
|
||||
"p": "Questi due comandi sull'host mostrano se il driver e il Toolkit sono disponibili:"
|
||||
},
|
||||
{
|
||||
"shell": {
|
||||
"code": "nvidia-smi -L\nnvidia-container-cli --version"
|
||||
}
|
||||
},
|
||||
{
|
||||
"p": "Su un host dove il driver è stato installato con altri mezzi, il Toolkit è installato dal repository ufficiale stabile:"
|
||||
},
|
||||
{
|
||||
"shell": {
|
||||
"code": "apt-get update\napt-get install -y --no-install-recommends ca-certificates curl gnupg2\n\ncurl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey \\\n | gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg\n\ncurl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \\\n | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \\\n > /etc/apt/sources.list.d/nvidia-container-toolkit.list\n\napt-get update\napt-get install -y nvidia-container-toolkit libnvidia-container-tools"
|
||||
}
|
||||
},
|
||||
{
|
||||
"p": "L’inventario utilizzato da OCI manager Apps è l'output di:"
|
||||
},
|
||||
{
|
||||
"shell": {
|
||||
"code": "nvidia-container-cli list --device all --libraries --binaries --firmwares --ipcs"
|
||||
}
|
||||
},
|
||||
{
|
||||
"calloutInfo": {
|
||||
"title": "La configurazione di runtime Docker non è coinvolta",
|
||||
"body": "I container sono LXC nativi e non usano un demone Docker, quindi <code>nvidia-ctk runtime configure --runtime=docker</code> non interviene: ProxMenux interroga direttamente <code>nvidia-container-cli</code> e configura dispositivi e montaggi LXC. I comandi e le piattaforme supportate sono mantenuti nella <toolkitLink>guida di installazione di NVIDIA Container Toolkit</toolkitLink>."
|
||||
}
|
||||
},
|
||||
{
|
||||
"cards": {
|
||||
"items": [
|
||||
{
|
||||
"icon": "cpu",
|
||||
"title": "Inventario dal driver",
|
||||
"body": "<code>nvidia-container-cli</code> elenca i nodi del dispositivo, i binari, il firmware e le librerie del driver installato."
|
||||
},
|
||||
{
|
||||
"icon": "refresh",
|
||||
"title": "Nessuna versione fissa",
|
||||
"body": "Il modello non nomina i file della libreria. Il profilo viene generato dall'host corrente."
|
||||
},
|
||||
{
|
||||
"icon": "shield",
|
||||
"title": "Montaggi in sola lettura",
|
||||
"body": "Le librerie ospitanti sono montate in sola lettura invece di essere copiate nel contenitore."
|
||||
},
|
||||
{
|
||||
"icon": "hardDrive",
|
||||
"title": "Modifiche dei driver",
|
||||
"body": "Dopo che un driver cambia l'inventario viene generato nuovamente prima dell'avvio dei LXC colpiti."
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"code": {
|
||||
"title": "Risultati NVIDIA (semplificati)",
|
||||
"code": "devN: path=/dev/nvidia0,...\ndevN: path=/dev/nvidiactl,...\ndevN: path=/dev/nvidia-uvm,...\nlxc.mount.entry: HOST_LIBRARY CONTAINER_LIBRARY none ro,bind,create=file 0 0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"p": "Passare solo <code>/dev/nvidia0</code> non è sufficiente. I componenti user-space del driver caricato sono montati in sola lettura e <code>nvidia-smi</code> poi funziona all'interno del LXC per confrontare GPU, UUID, PCI bus e versione con l'inventario host."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "usb",
|
||||
"title": "USB, seriale e USB Coral",
|
||||
"blocks": [
|
||||
{
|
||||
"calloutWarning": {
|
||||
"title": "Numerazione USB può cambiare",
|
||||
"body": "Un percorso come <code>/dev/bus/usb/003/004</code> può cambiare quando il dispositivo viene ricollegato o l'host si riavvia. Il profilo registra il fornitore, il prodotto e la serie quando sono disponibili, ma un nuovo indirizzo del bus non viene rimappato automaticamente."
|
||||
}
|
||||
},
|
||||
{
|
||||
"p": "Una periferica è data dal suo nodo specifico: <code>/dev/ttyUSB0</code>, <code>/dev/ttyACM0</code>, <code>/dev/apex_0</code> o <code>/dev/bus/usb/BBB/DDD</code>. Passare l'intero <code>/dev</code> non è accettato. Coral è offerto solo a applicazioni il cui profilo lo dichiara."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "trees",
|
||||
"title": "Alberi dei dispositivi e funzionalità LXC",
|
||||
"blocks": [
|
||||
{
|
||||
"table": {
|
||||
"headers": [
|
||||
"Richiesta",
|
||||
"Configurazione risultante",
|
||||
"Ambito"
|
||||
],
|
||||
"rows": [
|
||||
[
|
||||
"<code>/dev/dvb</code>, <code>/dev/snd</code> o <code>/dev/bus/usb</code>",
|
||||
"Ogni nodo di carattere dell'albero ottiene il proprio ingresso <code>devN</code> con la modalità host e GID",
|
||||
"Solo l'albero richiesto, non il resto di <code>/dev</code>"
|
||||
],
|
||||
[
|
||||
"<code>/dev/fuse</code>",
|
||||
"Il nodo e, quando il profilo ne ha bisogno, la funzione <code>fuse=1</code>",
|
||||
"FUSE da solo non rende disponibili i montaggi agli altri LXC"
|
||||
],
|
||||
[
|
||||
"<code>/dev/net/tun</code>",
|
||||
"Un ingresso <code>devN</code> nello stesso percorso all'interno del LXC",
|
||||
"La configurazione VPN o di rete rimane nell’applicazione"
|
||||
],
|
||||
[
|
||||
"<code>/dev/kvm</code>",
|
||||
"Una voce valida <code>devN</code>",
|
||||
"Offerto solo quando il contratto lo chiede"
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "security",
|
||||
"title": "Conferma per livello di rischio",
|
||||
"blocks": [
|
||||
{
|
||||
"p": "Dispositivi concreti, privilegio facoltativo, privilegio richiesto, allentamento di AppArmor o seccomp e accesso al namespace PID host sono trattati come casi separati, non sotto una generica etichetta privilegiata. Ogni opzione con un rischio viene spiegata e confermata durante l'installazione."
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,213 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "OCI manager Apps | ProxMenux",
|
||||
"description": "Esegui immagini OCI ufficiali come container LXC nativi di Proxmox VE, con dati persistenti, accesso ai dispositivi, applicazioni composte da più container e aggiornamenti transazionali."
|
||||
},
|
||||
"header": {
|
||||
"title": "OCI manager Apps",
|
||||
"description": "Le immagini OCI ufficiali vengono eseguite come container LXC nativi di Proxmox VE. L’immagine rimane quella pubblicata dal manutentore; ProxMenux ricrea l’ambiente che Docker Compose avrebbe predisposto intorno ad essa.",
|
||||
"section": "OCI manager Apps"
|
||||
},
|
||||
"sections": [
|
||||
{
|
||||
"id": "model",
|
||||
"blocks": [
|
||||
{
|
||||
"calloutInfo": {
|
||||
"title": "Un’immagine OCI, un LXC nativo",
|
||||
"body": "Nei container non viene eseguito Docker Engine. Proxmox VE importa il filesystem dell’immagine e i suoi metadati OCI. L’applicazione diventa il processo principale di un LXC nativo, gestito con gli stessi strumenti degli altri container del nodo."
|
||||
}
|
||||
},
|
||||
{
|
||||
"flow": {
|
||||
"nodes": [
|
||||
{
|
||||
"label": "Origine",
|
||||
"detail": "Immagine OCI\nCompose e documentazione"
|
||||
},
|
||||
{
|
||||
"label": "ProxMenux",
|
||||
"detail": "Contratto JSON\nvalidazione e pianificazione"
|
||||
},
|
||||
{
|
||||
"label": "Proxmox VE",
|
||||
"detail": "LXC nativo\nvolumi e dispositivi"
|
||||
}
|
||||
],
|
||||
"caption": "Si usa l’applicazione originale: il suo ambiente viene descritto in modo dichiarativo e riprodotto."
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "where",
|
||||
"title": "Dove si trova",
|
||||
"intro": "Sul nodo Proxmox, come root, apri <strong>OCI manager Apps (Technology Preview)</strong> dal menu principale di ProxMenux. La prima schermata offre:",
|
||||
"blocks": [
|
||||
{
|
||||
"list": {
|
||||
"items": [
|
||||
"<strong>Cerca applicazioni</strong>: cerca per nome nell’intero catalogo.",
|
||||
"<strong>Tutte le applicazioni</strong>: mostra il catalogo completo e il numero di applicazioni.",
|
||||
"<strong>Gestisci le applicazioni OCI installate</strong>: aggiorna, modifica, rimuovi o recupera le applicazioni già installate.",
|
||||
"<strong>Account dei registri</strong>: gestisci gli account usati per installare e aggiornare immagini da registri privati.",
|
||||
"<strong>Installa un’immagine non presente nel catalogo</strong>: adatta un file Compose, un comando <code>docker run</code> o un riferimento a un’immagine.",
|
||||
"Le categorie del catalogo, ciascuna con il numero di applicazioni."
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"figure": {
|
||||
"src": "/oci-manager/main-menu.png",
|
||||
"alt": "Schermata principale di OCI manager Apps con ricerca, catalogo completo, gestione delle applicazioni, immagini fuori catalogo e categorie.",
|
||||
"caption": "Schermata principale di OCI manager Apps."
|
||||
}
|
||||
},
|
||||
{
|
||||
"p": "Selezionando un’applicazione vengono mostrati la descrizione, l’immagine usata e due modalità di installazione. <strong>Installa con le impostazioni predefinite</strong> chiede solo le scelte essenziali: storage, posizione dei dati, indirizzo e avvio. <strong>Installa con le impostazioni avanzate</strong> presenta tutte le decisioni in ordine: VMID e risorse, storage per ogni percorso, bridge di rete e dispositivi."
|
||||
},
|
||||
{
|
||||
"p": "Le applicazioni provate sul campo mostrano <strong>Verificato</strong> in questa schermata e un ✓ negli elenchi, sia per i test del laboratorio ProxMenux sia per quelli della community."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "beta",
|
||||
"title": "Perché mantiene l’etichetta Technology Preview",
|
||||
"blocks": [
|
||||
{
|
||||
"p": "OCI manager Apps mantiene l’etichetta <strong>Technology Preview</strong> assegnata da Proxmox VE ai container applicativi creati da immagini OCI, il cui supporto è stato introdotto in Proxmox VE 9.1. L’etichetta riguarda la tecnologia su cui si basa OCI manager Apps, non il motore di ProxMenux: il comportamento di questi container può ancora cambiare tra le versioni di Proxmox VE. Rimarrà finché Proxmox VE non considererà stabile tale supporto."
|
||||
},
|
||||
{
|
||||
"p": "Il motore di OCI manager Apps viene testato nel laboratorio ProxMenux: installazione, aggiornamento, modifica, ricreazione, backup, ripristino, migrazione e watchdog. Ogni applicazione viene verificata separatamente. Quelle provate sul campo mostrano <strong>Verificato</strong> e un ✓ negli elenchi."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "translation",
|
||||
"title": "Come Docker descrive i requisiti e come li realizza OCI manager Apps",
|
||||
"blocks": [
|
||||
{
|
||||
"table": {
|
||||
"headers": [
|
||||
"Requisito",
|
||||
"Come lo esprime Docker",
|
||||
"Come lo realizza OCI manager Apps"
|
||||
],
|
||||
"rows": [
|
||||
[
|
||||
"Eseguire l’applicazione",
|
||||
"<code>image</code>, <code>entrypoint</code>, <code>command</code>",
|
||||
"Il rootfs OCI e il processo principale dell’LXC"
|
||||
],
|
||||
[
|
||||
"Conservare la configurazione",
|
||||
"<code>volumes: /config</code>",
|
||||
"Un volume persistente <code>mpN</code> incluso nel backup, oppure una directory dell’host."
|
||||
],
|
||||
[
|
||||
"Rendere accessibile il servizio",
|
||||
"<code>ports</code>",
|
||||
"Un indirizzo proprio per l’LXC e l’URL di accesso al servizio."
|
||||
],
|
||||
[
|
||||
"Usare l’hardware",
|
||||
"<code>devices</code>, <code>group_add</code>",
|
||||
"Voci <code>devN</code> con il GID effettivo dell’host e un profilo validato."
|
||||
],
|
||||
[
|
||||
"Collegare le dipendenze",
|
||||
"<code>networks</code>, <code>depends_on</code>",
|
||||
"Un bridge di rete privato, indirizzi fissi, ordine di avvio e controlli di stato."
|
||||
],
|
||||
[
|
||||
"Aggiornare",
|
||||
"Scaricare con <code>pull</code> e ricreare",
|
||||
"Un nuovo rootfs che mantiene lo stesso contratto di persistenza."
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "kept",
|
||||
"title": "Cosa viene conservato e cosa cambia",
|
||||
"blocks": [
|
||||
{
|
||||
"cards": {
|
||||
"items": [
|
||||
{
|
||||
"icon": "archive",
|
||||
"title": "Conservato",
|
||||
"body": "L’immagine ufficiale, i percorsi interni, l’ambiente, il processo di avvio e la documentazione d’uso."
|
||||
},
|
||||
{
|
||||
"icon": "boxes",
|
||||
"title": "Adattato",
|
||||
"body": "L’ambiente di esecuzione: rete, persistenza, dispositivi, permessi e dipendenze utilizzano i meccanismi LXC nativi di Proxmox VE."
|
||||
},
|
||||
{
|
||||
"icon": "shield",
|
||||
"title": "Senza equivalente",
|
||||
"body": "Un’opzione Compose senza un equivalente sicuro viene segnalata come requisito bloccante. I modelli con requisiti bloccanti non vengono proposti per l’installazione e le opzioni sensibili richiedono conferma durante la procedura."
|
||||
},
|
||||
{
|
||||
"icon": "refresh",
|
||||
"title": "Registrato",
|
||||
"body": "Il digest dell’immagine, le risorse, i percorsi, la rete, i dispositivi e l’appartenenza a uno stack vengono salvati nel contratto dell’istanza. Aggiornamenti e ricreazioni riproducono tale contratto."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "pages",
|
||||
"title": "Pagine di questa sezione",
|
||||
"blocks": [
|
||||
{
|
||||
"next": {
|
||||
"items": [
|
||||
{
|
||||
"label": "Come viene adattata un’immagine OCI",
|
||||
"href": "/docs/oci-manager/architecture",
|
||||
"tail": "Dall’immagine e dal suo file Compose a un LXC nativo."
|
||||
},
|
||||
{
|
||||
"label": "Installare un’immagine non presente nel catalogo",
|
||||
"href": "/docs/oci-manager/custom-image",
|
||||
"tail": "Un file Compose, un comando docker run o un riferimento a un’immagine."
|
||||
},
|
||||
{
|
||||
"label": "Dati, percorsi e rete",
|
||||
"href": "/docs/oci-manager/storage-network",
|
||||
"tail": "Volumi del container, directory dell’host, mount con rclone e indirizzi."
|
||||
},
|
||||
{
|
||||
"label": "Dispositivi e accelerazione",
|
||||
"href": "/docs/oci-manager/hardware",
|
||||
"tail": "GPU, NVIDIA, Coral, USB e altri dispositivi."
|
||||
},
|
||||
{
|
||||
"label": "Applicazioni con più container",
|
||||
"href": "/docs/oci-manager/stacks",
|
||||
"tail": "Applicazione, database e cache in LXC coordinati."
|
||||
},
|
||||
{
|
||||
"label": "Installazione, aggiornamento e modifica",
|
||||
"href": "/docs/oci-manager/lifecycle",
|
||||
"tail": "Il contratto dell’istanza e le sue operazioni."
|
||||
},
|
||||
{
|
||||
"label": "In ProxMenux Monitor",
|
||||
"href": "/docs/oci-manager/monitor",
|
||||
"tail": "Versioni, aggiornamenti, output della console e terminale."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,499 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Installare, aggiornare e modificare | ProxMenux",
|
||||
"description": "Il contratto di istanza di un contenitore OCI e le operazioni che lo utilizzano: aggiornamento, modifica, rimozione, recupero di un'operazione interrotta e recupero dopo un ripristino su questo o un altro host."
|
||||
},
|
||||
"header": {
|
||||
"title": "Installare, aggiornare e modificare",
|
||||
"description": "Ogni istanza conserva un contratto riproducibile, così il suo rootfs può essere sostituito senza perdere la configurazione o i dati persistenti.",
|
||||
"section": "OCI manager Apps"
|
||||
},
|
||||
"sections": [
|
||||
{
|
||||
"id": "contract",
|
||||
"title": "Il contratto di istanza",
|
||||
"blocks": [
|
||||
{
|
||||
"p": "Dopo l'installazione, la configurazione effettiva viene salvata in <code>/usr/local/share/proxmenux/oci/instances/VMID/oci-compose.json</code>. Non è una copia del file Compose originale: è il contratto riproducibile del LXC presente su questo host."
|
||||
},
|
||||
{
|
||||
"code": {
|
||||
"code": "instances/\n└── 105/\n └── oci-compose.json\n ├── image and resolved digest\n ├── resources and network\n ├── environment (secrets protected)\n ├── container disks and host directories\n ├── hardware profile and devices\n ├── console log and terminal mode\n └── stack membership and lifecycle"
|
||||
}
|
||||
},
|
||||
{
|
||||
"p": "Una copia del contratto si trova nel contenitore, in <code>/.proxmenux/oci-record.json</code>, ed è leggibile solo dall'utente root del contenitore. Il backup del contenitore include quindi sempre il contratto in uso in quel momento. Una seconda copia si trova in <code>/etc/pve/priv/proxmenux/oci</code>, condiviso da tutti i nodi del cluster e leggibile solo da root dell'host. Entrambe le copie vengono scritte dopo ogni installazione, aggiornamento e modifica."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "manage",
|
||||
"title": "Gestisci le applicazioni OCI installate",
|
||||
"intro": "Questa opzione della schermata principale elenca le istanze registrate con la relativa applicazione e immagine. Prima di ogni azione, ciascuna istanza viene confrontata con il proprio contratto; un CT che non corrisponde più al proprio record non viene né modificato né eliminato. Lo stesso aggiornamento e lo stesso editor sono disponibili nella scheda Aggiornamenti di <monitorLink>ProxMenux Monitor</monitorLink>.",
|
||||
"blocks": [
|
||||
{
|
||||
"table": {
|
||||
"headers": [
|
||||
"Opzione",
|
||||
"Che cosa cambia",
|
||||
"Che cosa viene conservato"
|
||||
],
|
||||
"rows": [
|
||||
[
|
||||
"Aggiorna l’immagine mantenendo la configurazione salvata",
|
||||
"Il rootfs viene sostituito dall'immagine attualmente pubblicata dal canale salvato",
|
||||
"Contratto, dischi container, directory host, rete e dispositivi"
|
||||
],
|
||||
[
|
||||
"Modifica risorse, rete, percorsi e GPU",
|
||||
"L’editor si apre con il contratto attuale; il CT viene ricreato con le modifiche",
|
||||
"I dati dei dischi container e delle directory host"
|
||||
],
|
||||
[
|
||||
"Watchdog: riavviare l'applicazione quando si blocca",
|
||||
"Determina se l'applicazione viene riavviata quando si arresta da sola. Non viene ricreato nulla",
|
||||
"L'intera installazione; solo la scelta viene salvata nel contratto"
|
||||
],
|
||||
[
|
||||
"Rimuovi: elimina l'applicazione e i suoi container",
|
||||
"Il LXC, o ogni membro di uno stack, e i loro contratti vengono eliminati",
|
||||
"Directory dell’host, con il loro contenuto"
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"p": "Per un'applicazione con più contenitori, il menu offre <strong>Aggiorna tutti i contenitori dell'applicazione</strong>, <strong>Modifica percorsi e dispositivi aggiuntivi</strong>, <strong>Ricrea tutti i contenitori con la configurazione salvata</strong>, il watchdog e la rimozione. Modifica aggiunge o rimuove percorsi e dispositivi aggiuntivi del contenitore applicativo senza ricreare nulla e, in Immich, cambia il componente che esegue il riconoscimento. Ricrea ricostruisce ogni contenitore dall'immagine usata per installarlo, senza cercarne una più recente."
|
||||
},
|
||||
{
|
||||
"figure": {
|
||||
"src": "/oci-manager/manage-menu.png",
|
||||
"alt": "Elenco delle applicazioni OCI installate e delle opzioni di aggiornamento, modifica e rimozione",
|
||||
"caption": "Gestione delle applicazioni OCI installate."
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "update",
|
||||
"title": "Un aggiornamento transazionale",
|
||||
"blocks": [
|
||||
{
|
||||
"mermaid": {
|
||||
"chartCode": "sequenceDiagram\n participant U as {{user}}\n participant P as ProxMenux\n participant R as {{registry}}\n participant X as Proxmox VE\n U->>P: {{update}}\n P->>R: {{resolve}}\n R-->>P: digest\n P->>P: {{verify}}\n P->>X: {{backup}}\n P->>X: {{import}}\n P->>X: {{reapply}}\n X-->>P: healthcheck\n alt {{healthy}}\n P-->>U: {{commit}}\n else {{failure}}\n P->>X: Rollback\n P-->>U: {{restored}}\n end",
|
||||
"labels": {
|
||||
"user": "Utente",
|
||||
"registry": "Registro OCI",
|
||||
"update": "Aggiorna istanza",
|
||||
"resolve": "Risolvere il tag",
|
||||
"verify": "Verifica archivio e controlli preliminari",
|
||||
"backup": "Arresta e salva un backup del CT",
|
||||
"import": "Importa il nuovo rootfs",
|
||||
"reapply": "Applicare nuovamente il contratto",
|
||||
"healthy": "integro",
|
||||
"failure": "guasto",
|
||||
"commit": "Contratto pubblicato con il nuovo digest",
|
||||
"restored": "Precedente istanza ripristinata"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"list": {
|
||||
"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.",
|
||||
"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.",
|
||||
"Qualsiasi altra differenza tra il CT e il suo contratto interrompe l’aggiornamento prima che il CT venga arrestato."
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"flow": {
|
||||
"nodes": [
|
||||
{
|
||||
"label": "Prima",
|
||||
"detail": "rootfs A\n/config mp0\ndirectory host /media"
|
||||
},
|
||||
{
|
||||
"label": "Aggiornamento",
|
||||
"detail": "sostituisce solo\nil rootfs"
|
||||
},
|
||||
{
|
||||
"label": "Dopo",
|
||||
"detail": "rootfs B\n/config mp0\ndirectory host /media"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"p": "Prima di arrestare qualsiasi cosa, l’operazione verifica lo spazio necessario al backup: i dati in uso nei volumi inclusi, più un margine. Il backup viene scritto accanto al record dell’applicazione, sul disco di sistema dell’host. Se lo spazio non basta, il menu richiede un altro storage dell’host che supporti i backup: il backup viene creato lì ed eliminato al termine dell’operazione. La scelta viene memorizzata per l’applicazione, anche per gli aggiornamenti pianificati. Se nessuno storage ha spazio sufficiente, l’operazione viene rifiutata e l’applicazione resta invariata. Anche lo spazio per la nuova immagine viene verificato prima del download."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "recovery",
|
||||
"title": "Recuperare un'operazione interrotta",
|
||||
"intro": "L’aggiornamento e la modifica usano una transazione persistente. Se il processo, il terminale o il nodo subisce un’interruzione dopo l’arresto del CT, l’operazione non viene considerata conclusa.",
|
||||
"blocks": [
|
||||
{
|
||||
"steps": {
|
||||
"items": [
|
||||
{
|
||||
"title": "Indicatore di operazione in sospeso",
|
||||
"body": "Aprendo Gestisci le applicazioni OCI installate, lo stato salvato indica che la sostituzione non è mai stata pubblicata."
|
||||
},
|
||||
{
|
||||
"title": "Visualizza stato",
|
||||
"body": "Mostra la fase raggiunta senza cambiare contenitori o dati."
|
||||
},
|
||||
{
|
||||
"title": "Ripristina l’installazione precedente",
|
||||
"body": "Ripristina il backup nativo verificato eseguito prima della sostituzione e il contratto precedente."
|
||||
},
|
||||
{
|
||||
"title": "Stacks come unità",
|
||||
"body": "Per un'applicazione multicontainer, ogni membro viene recuperato dallo stesso punto di transazione, non solo quello selezionato."
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"calloutWarning": {
|
||||
"title": "Le directory dell’host sono escluse dal rollback",
|
||||
"body": "Il backup comprende il rootfs e i dischi del contenitore inclusi nella copia. Una directory dell’host non viene riportata allo stato precedente, perché altri LXC potrebbero usarne i dati."
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "watchdog",
|
||||
"title": "Watchdog: riavviare un’applicazione che si arresta",
|
||||
"intro": "Proxmox non ha una politica di riavvio: quando termina il processo di un contenitore applicativo, il contenitore resta arrestato. Con il watchdog attivo, un’applicazione che si arresta da sola viene riavviata. Per un’applicazione OCI svolge il ruolo di <code>restart: unless-stopped</code> in un file Compose.",
|
||||
"blocks": [
|
||||
{
|
||||
"table": {
|
||||
"headers": [
|
||||
"Cosa succede?",
|
||||
"Con il watchdog attivo"
|
||||
],
|
||||
"rows": [
|
||||
[
|
||||
"L'applicazione si blocca o il suo processo termina",
|
||||
"Il contenitore viene riavviato entro pochi secondi"
|
||||
],
|
||||
[
|
||||
"Viene fermato o spento da Proxmox, dal Monitor o con <code>pct</code>",
|
||||
"Resta arrestato finché qualcuno non lo avvia"
|
||||
],
|
||||
[
|
||||
"Un backup, una migrazione o un'operazione ProxMenux sta lavorando su di esso",
|
||||
"Niente è fatto fino a che non finisce"
|
||||
],
|
||||
[
|
||||
"Era già arrestato all’avvio dell’host",
|
||||
"Resta arrestato; lo decide <strong>Avvia con Proxmox</strong>"
|
||||
],
|
||||
[
|
||||
"Continua ad arrestarsi subito dopo l’avvio",
|
||||
"Per un’applicazione che si arresta pochi secondi dopo l’avvio o che non si avvia, vengono effettuati cinque tentativi, con attese di 30 secondi, 1, 2 e 5 minuti tra un tentativo e l’altro. Poi viene lasciata arrestata e viene inviata una notifica"
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"p": "L’installatore lo chiede in entrambe le modalità e propone il valore dichiarato nella ricetta dell’applicazione. In seguito si può cambiare da <strong>Gestisci le applicazioni OCI installate</strong> o con l’interruttore <strong>Watchdog</strong> del contenitore in <monitorLink>ProxMenux Monitor</monitorLink>; vale per tutti i contenitori di un’applicazione con più contenitori. Un unico servizio dell’host, <code>proxmenux-oci-watchdog.service</code>, sorveglia tutte le applicazioni che lo hanno richiesto; la sua installazione compare nella scheda Modifiche di Audit & Report."
|
||||
},
|
||||
{
|
||||
"calloutInfo": {
|
||||
"title": "Ciò che l’host non può distinguere",
|
||||
"body": "Il codice di uscita dell’applicazione non raggiunge l’host: un’uscita regolare e un arresto anomalo risultano quindi indistinguibili e in entrambi i casi l’applicazione viene riavviata, come con <code>always</code> e <code>unless-stopped</code> in Docker. Un arresto richiesto fuori da Proxmox, con <code>lxc-stop</code> o <code>systemctl</code>, non lascia un’attività di arresto e viene interpretato come un arresto spontaneo."
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "restore",
|
||||
"title": "Backup, ripristino e un altro host",
|
||||
"intro": "Un backup creato con vzdump o Proxmox Backup Server include il contenitore, i dischi del contenitore selezionati per il backup e la copia del suo contratto. Ciò che l’installazione conserva sull’host non vi è incluso. <strong>Gestisci le applicazioni OCI installate</strong> rileva i contenitori ripristinati su un host privo del loro contratto, dopo una nuova installazione di Proxmox o su un altro host, e propone di registrarli di nuovo.",
|
||||
"blocks": [
|
||||
{
|
||||
"steps": {
|
||||
"items": [
|
||||
{
|
||||
"title": "Ripristinare i contenitori in Proxmox",
|
||||
"body": "Dall'archivio di backup, con l'ID originale o con uno qualsiasi libero. Un'applicazione multi-container ha bisogno di tutti i suoi contenitori."
|
||||
},
|
||||
{
|
||||
"title": "Apri Gestisci applicazioni OCI installate",
|
||||
"body": "Vengono elencati i contenitori ripristinati e viene proposto il recupero. Il pulsante <strong>Recupera</strong> nella scheda Aggiornamenti di <monitorLink>ProxMenux Monitor</monitorLink> apre lo stesso recupero."
|
||||
},
|
||||
{
|
||||
"title": "Controllare prima di cambiare",
|
||||
"body": "Il recupero verifica che l’host disponga di tutto ciò che serve a ciascuna applicazione. Se un’applicazione non può essere recuperata interamente, viene lasciata invariata e viene indicato il motivo."
|
||||
},
|
||||
{
|
||||
"title": "Registra e avvia",
|
||||
"body": "Il contratto viene registrato su questo host e gli elementi che l’installazione vi conservava vengono riscritti. L’avvio delle applicazioni viene chiesto separatamente: rispondi No se i contenitori originali sono ancora in esecuzione su un altro host."
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"figure": {
|
||||
"src": "/oci-manager/restore-offer.png",
|
||||
"alt": "Finestra di dialogo che elenca i contenitori ripristinati e ne propone il recupero",
|
||||
"caption": "Il recupero offerto quando si apre Gestione applicazioni OCI installate."
|
||||
}
|
||||
},
|
||||
{
|
||||
"table": {
|
||||
"headers": [
|
||||
"Ciò che l’host conservava",
|
||||
"Dopo il recupero"
|
||||
],
|
||||
"rows": [
|
||||
[
|
||||
"Contratto dell’istanza",
|
||||
"Registrato dalla copia presente nel contenitore, verificata rispetto alla configurazione ripristinata da Proxmox"
|
||||
],
|
||||
[
|
||||
"Rete privata di un'applicazione multicontainer",
|
||||
"Creato nuovamente con lo stesso ponte e sottorete; gli indirizzi fissi dei contenitori non cambiano"
|
||||
],
|
||||
[
|
||||
"Ordine di avvio di un’applicazione con più contenitori",
|
||||
"L’hookscript delle dipendenze e il suo contratto vengono reinstallati; gli snippet vengono abilitati nello storage <code>local</code> se nessuno storage li supporta"
|
||||
],
|
||||
[
|
||||
"Sysctl di rete e file del monitor dell’host",
|
||||
"Scritto di nuovo in <code>/etc/pve/proxmenux</code>"
|
||||
],
|
||||
[
|
||||
"Runtime NVIDIA",
|
||||
"L’hook di un contenitore non privilegiato viene reinstallato. Un contenitore privilegiato riceve i file del driver di questo host al posto di quelli dell’host di origine"
|
||||
],
|
||||
[
|
||||
"Montaggio Rclone",
|
||||
"L’hookscript e i programmi che rendono disponibile il mount vengono riscritti, con le stesse viste sull’host"
|
||||
],
|
||||
[
|
||||
"Regola del firewall host di un monitor host",
|
||||
"Viene chiesto di nuovo, per la sua porta web e la sottorete del bridge su questo host"
|
||||
],
|
||||
[
|
||||
"<code>lost+found</code> di ogni disco restaurato",
|
||||
"Viene rimosso se vuoto; il ripristino lo crea e alcune applicazioni non si avviano se è presente tra i loro dati"
|
||||
],
|
||||
[
|
||||
"Dischi ripristinati su un altro storage",
|
||||
"Il contratto viene aggiornato con lo storage su cui si trovano ora"
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"p": "Un container ripristinato con un ID diverso conserva la propria applicazione. Il contratto, il log della console, i parametri sysctl di rete, lo hookscript del montaggio Rclone e l’ordine di avvio di un’applicazione composta da più container vengono registrati usando gli ID assegnati ai container su questo host."
|
||||
},
|
||||
{
|
||||
"table": {
|
||||
"headers": [
|
||||
"Cosa ferma un recupero",
|
||||
"Cosa fare"
|
||||
],
|
||||
"rows": [
|
||||
[
|
||||
"Manca un contenitore di un'applicazione multi-container",
|
||||
"Ripristina anche quello; l’applicazione viene recuperata per intero"
|
||||
],
|
||||
[
|
||||
"La sottorete privata è già utilizzata su questo host",
|
||||
"Il recupero è annullato e nulla è cambiato: gli indirizzi dei contenitori sono fissi e non vengono spostati in un'altra subnet"
|
||||
],
|
||||
[
|
||||
"Una directory host non esiste",
|
||||
"Montare o crearlo con i suoi dati; un backup del contenitore non include directory host"
|
||||
],
|
||||
[
|
||||
"Un dispositivo non esiste su questo host",
|
||||
"Collegarlo o rimuoverlo dal contenitore in Proxmox"
|
||||
],
|
||||
[
|
||||
"Un'applicazione con NVIDIA su un host senza driver",
|
||||
"Installa il driver NVIDIA e il Container Toolkit"
|
||||
],
|
||||
[
|
||||
"Il backup è stato fatto prima che la copia del contratto esistesse",
|
||||
"Il contenitore rimane come un normale LXC e non viene offerto di nuovo"
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"calloutInfo": {
|
||||
"title": "Un contenitore che ritorna",
|
||||
"body": "Un contenitore ripristinato su se stesso da un backup precedente, riportato a uno snapshot o rientrato da un altro nodo porta il contratto dello stato in cui si trova. Se viene selezionato per un’operazione e il suo contratto differisce da quello dell’host, l’operazione non parte e viene proposto il recupero del contenitore."
|
||||
}
|
||||
},
|
||||
{
|
||||
"figure": {
|
||||
"src": "/oci-manager/restore-result.png",
|
||||
"alt": "Risultato del recupero con la rete privata, l’ordine di avvio e i contenitori registrati",
|
||||
"caption": "Il risultato di un recupero, passo dopo passo."
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "remove",
|
||||
"title": "Rimozione di un'applicazione OCI",
|
||||
"blocks": [
|
||||
{
|
||||
"p": "Prima della conferma viene creato un riepilogo dalla configurazione effettiva: i contenitori da rimuovere, i dati eliminati insieme a loro, la rete privata liberata e le directory dell’host conservate. La conferma è impostata su <strong>No</strong> per impostazione predefinita, perché i dati dei dischi eliminati non possono essere recuperati in seguito."
|
||||
},
|
||||
{
|
||||
"table": {
|
||||
"headers": [
|
||||
"Risorsa",
|
||||
"Alla rimozione",
|
||||
"Motivo"
|
||||
],
|
||||
"rows": [
|
||||
[
|
||||
"rootfs e dischi del contenitore",
|
||||
"Eliminati",
|
||||
"Essi appartengono solo al contenitore"
|
||||
],
|
||||
[
|
||||
"Directory host",
|
||||
"Tenuto, con il suo contenuto",
|
||||
"Altre applicazioni possono utilizzarlo"
|
||||
],
|
||||
[
|
||||
"File host del contenitore",
|
||||
"Eliminati",
|
||||
"Il log della console, i parametri sysctl di rete, l’hookscript del mount Rclone e la registrazione nella scheda App di ProxMenux Monitor non servono ad altri contenitori"
|
||||
],
|
||||
[
|
||||
"File condivisi da più installazioni",
|
||||
"Eliminato con l'ultima installazione che li utilizza",
|
||||
"Il file del monitor dell’host e l’hookscript delle dipendenze delle applicazioni con più contenitori"
|
||||
],
|
||||
[
|
||||
"Contratto dell’istanza",
|
||||
"Eliminato dopo una rimozione di successo",
|
||||
"Non vi è più associato alcun CT"
|
||||
],
|
||||
[
|
||||
"Ponte privato di una pila",
|
||||
"Rilasciato con lo stack",
|
||||
"Non ha più membri da collegare"
|
||||
],
|
||||
[
|
||||
"Rete condivisa dalla suite Arr",
|
||||
"Rilasciato con l'ultima applicazione della suite",
|
||||
"Ogni applicazione della suite è indipendente e viene rimossa da sola"
|
||||
],
|
||||
[
|
||||
"Un singolo membro di una pila",
|
||||
"Non rimosso da solo",
|
||||
"L'intera applicazione viene rimossa, quindi nessun stack viene lasciato incompleto"
|
||||
],
|
||||
[
|
||||
"Un contenitore su un altro nodo del cluster",
|
||||
"Non rimosso",
|
||||
"I suoi file di registrazione e host sono sul nodo dove è stato installato: viene rimosso lì, dopo la migrazione indietro"
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"figure": {
|
||||
"src": "/oci-manager/remove-summary.png",
|
||||
"alt": "Riepilogo di rimozione con i container, i dati e le directory host interessate",
|
||||
"caption": "Il sommario di rimozione, costruito dalla configurazione reale."
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "archives",
|
||||
"title": "Immagini scaricate e spazio host",
|
||||
"blocks": [
|
||||
{
|
||||
"p": "L’archivio OCI serve a costruire il rootfs; il CT in esecuzione non lo legge. Dopo un’installazione o un aggiornamento, gli archivi scaricati durante l’operazione vengono elencati con le loro dimensioni e ne viene proposta l’eliminazione. Eliminarli libera spazio senza influire sul contenitore o sui suoi dati."
|
||||
},
|
||||
{
|
||||
"calloutInfo": {
|
||||
"title": "Gli aggiornamenti non hanno bisogno dell'archivio",
|
||||
"body": "Senza l'archivio, un aggiornamento risolve il canale salvato e scarica il nuovo digest. Con esso, un archivio viene riutilizzato solo quando il suo riferimento e l'integrità corrispondono a ciò che è richiesto."
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "registry",
|
||||
"title": "Registro e pulizia",
|
||||
"blocks": [
|
||||
{
|
||||
"p": "Aprendo <strong>Gestisci le applicazioni OCI installate</strong>, vengono prima rimossi i resti dei contenitori che non esistono su alcun nodo del cluster: il record conservato come cronologia dopo l’eliminazione dall’interfaccia Proxmox e i file sull’host lasciati da una rimozione. Un record con un’operazione incompleta viene conservato, perché il relativo backup potrebbe ancora servire. Volumi e directory dell’host non vengono mai eliminati per deduzione."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "cluster",
|
||||
"title": "In un cluster: migrazione e elevata disponibilità",
|
||||
"intro": "Un contenitore OCI è un normale LXC Proxmox: può essere migrato o gestito da HA come gli altri, con gli stessi limiti. Ciò che gli serve per avviarsi viene conservato dove ogni nodo del cluster può trovarlo.",
|
||||
"blocks": [
|
||||
{
|
||||
"table": {
|
||||
"headers": [
|
||||
"Parte",
|
||||
"Su un altro nodo del cluster"
|
||||
],
|
||||
"rows": [
|
||||
[
|
||||
"Registro della console",
|
||||
"Il contenitore crea <code>/var/log/proxmenux/oci</code> prima di avviarsi, su qualunque nodo lo esegua. Ogni nodo conserva il log degli avvii eseguiti su quel nodo."
|
||||
],
|
||||
[
|
||||
"Sysctl di rete e monitor dell’host",
|
||||
"Tenuto in <code>/etc/pve/proxmenux</code>, che ogni nodo del cluster condivide, quindi un contenitore migrato li trova."
|
||||
],
|
||||
[
|
||||
"Dischi del contenitore",
|
||||
"Proxmox li sposta con il contenitore. HA richiede che i dati siano disponibili sul nodo di destinazione tramite storage condiviso o una configurazione di replica supportata."
|
||||
],
|
||||
[
|
||||
"directory e dispositivi host",
|
||||
"Valgono le stesse regole degli altri LXC: una directory dell’host deve esistere sul nodo di destinazione ed essere contrassegnata come condivisa, e una GPU, un Coral o una NPU deve essere presente su quel nodo."
|
||||
],
|
||||
[
|
||||
"Record ProxMenux",
|
||||
"Il contratto resta sul nodo in cui l’applicazione è stata installata e ogni nodo legge la copia conservata in <code>/etc/pve/priv/proxmenux/oci</code>. Dopo la migrazione, un’applicazione con un solo contenitore viene registrata sul nodo di destinazione quando si apre <strong>Gestisci le applicazioni OCI installate</strong> o si avvia un’operazione su di essa. Per un’applicazione con più contenitori viene proposto il recupero, perché la rete privata deve essere creata su quel nodo."
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"calloutWarning": {
|
||||
"title": "Non per alta disponibilità",
|
||||
"body": "Un'applicazione multicontainer raggiunge i suoi membri attraverso un ponte privato del nodo su cui è stato installato, quindi i suoi membri rimangono su quel nodo. Un monitor host, come Glances in modalità host o Netdata, monitora il nodo su cui corre; spostandolo monitorerebbe un altro nodo."
|
||||
}
|
||||
},
|
||||
{
|
||||
"p": "Quando si recupera l’applicazione, un backup ripristinato fuori dal cluster riceve i file di <code>/etc/pve/proxmenux</code> usati dal contenitore."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "channel",
|
||||
"title": "Un rolling tag non è un aggiornamento incustodito",
|
||||
"blocks": [
|
||||
{
|
||||
"p": "Il catalogo installa il rolling tag pubblicato dal manutentore, ma il digest effettivo viene risolto e registrato e cambia solo con un aggiornamento esplicito, dotato di controlli preliminari e rollback. <monitorLink>ProxMenux Monitor</monitorLink> confronta il digest installato con quello pubblicato dal registro e segnala, anche con una notifica, la disponibilità di una nuova immagine."
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,213 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Contenitori OCI in ProxMenux Monitor | ProxMenux",
|
||||
"description": "Ciò che ProxMenux Monitor mostra per un contenitore installato da OCI manager Apps: versioni di applicazione e immagine, nuove immagini, uscita console e terminale Proxmox VE."
|
||||
},
|
||||
"header": {
|
||||
"title": "In ProxMenux Monitor",
|
||||
"description": "Un contenitore installato da OCI manager Apps appare in VMs & LXCs come qualsiasi altro LXC. Il suo modal legge il record di installazione: versioni di applicazione e immagine, nuove immagini, uscita console e terminale.",
|
||||
"section": "OCI manager Apps"
|
||||
},
|
||||
"sections": [
|
||||
{
|
||||
"id": "intro",
|
||||
"blocks": [
|
||||
{
|
||||
"calloutInfo": {
|
||||
"title": "Il record è la fonte",
|
||||
"body": "OCI manager Apps sa cosa ha installato e da dove viene. Il Monitor legge quel record di installazione invece di interrogare il container, quindi i dati sono gli stessi se il contenitore è in esecuzione o interrotto."
|
||||
}
|
||||
},
|
||||
{
|
||||
"table": {
|
||||
"headers": [
|
||||
"Scheda",
|
||||
"Quali cambiamenti per un contenitore OCI"
|
||||
],
|
||||
"rows": [
|
||||
[
|
||||
"Stato",
|
||||
"Un commutatore <strong>Watchdog</strong> sotto Start al boot: l'applicazione viene riavviata quando si ferma da sola"
|
||||
],
|
||||
[
|
||||
"App",
|
||||
"L'applicazione è identificata dal record, e gli aggiornamenti sono tracciati dall'immagine"
|
||||
],
|
||||
[
|
||||
"Aggiornamenti",
|
||||
"L'immagine viene aggiornata o l'applicazione modificata, con lo stesso flusso del menu OCI"
|
||||
],
|
||||
[
|
||||
"Montaggi",
|
||||
"Dischi del container e directory dell’host, con il relativo utilizzo"
|
||||
],
|
||||
[
|
||||
"Log",
|
||||
"Solo per contenitori OCI: l'uscita della console dell'applicazione"
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "app",
|
||||
"title": "App",
|
||||
"intro": "La scheda <appLink>App</appLink> offre l'applicazione installata come rilevamento, con il nome, il logo, la porta e lo schema del record. Registrandolo si apre l'editor con il metodo <strong>Immagine OCI (installata da ProxMenux)</strong>, che non ha bisogno di configurazione.",
|
||||
"blocks": [
|
||||
{
|
||||
"cards": {
|
||||
"items": [
|
||||
{
|
||||
"icon": "boxes",
|
||||
"title": "Applicazione",
|
||||
"body": "La versione dell'applicazione all'interno dell'immagine, letta dall'immagine stessa: il suo ambiente o la sua etichetta <code>org.opencontainers.image.version</code>. È informativo."
|
||||
},
|
||||
{
|
||||
"icon": "archive",
|
||||
"title": "Immagine",
|
||||
"body": "La data di creazione e digest dell'immagine installata. L'aggiornamento si decide qui: il digest installato viene confrontato con quello che il registro pubblica oggi per lo stesso tag."
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"list": {
|
||||
"items": [
|
||||
"Quando il registro pubblica un nuovo digest, la scheda mostra <strong>Nuova immagine</strong> con la sua data e digest, anche se la versione dell'applicazione al suo interno non è cambiata: una ricostruzione su una base aggiornata è un aggiornamento.",
|
||||
"Quando i digest coincidono, la scheda mostra <strong>Versione</strong>.",
|
||||
"La scheda si collega al repository dell'immagine: il suo progetto GitHub, o la sua pagina Hub Docker per un'immagine ufficiale.",
|
||||
"Il collegamento di accesso utilizza l'indirizzo LAN del contenitore, anche per il membro principale di un'applicazione multi-container, che ha un secondo indirizzo sulla sua rete privata.",
|
||||
"Il pulsante <strong>Aggiorna dati</strong> rilegge il record dell’installazione e il registro delle immagini. Non vengono proposte opzioni per cercare o registrare altre applicazioni: il container contiene esattamente l’applicazione descritta nel suo record."
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"figure": {
|
||||
"src": "/oci-manager/monitor-app-tab.png",
|
||||
"alt": "Scheda App di un contenitore OCI con la versione dell'applicazione, l'immagine e il link del repository",
|
||||
"caption": "Scheda app di un contenitore installato da OCI manager Apps."
|
||||
}
|
||||
},
|
||||
{
|
||||
"p": "Il controllo viene eseguito una volta al giorno con i controlli di aggiornamento del Monitor e <strong>Aggiorna dati</strong> lo esegue subito. Una nuova immagine viene inviata come notifica attraverso i canali configurati in <notificationsLink>Notifiche</notificationsLink>. L'aggiornamento viene applicato dalla scheda Aggiornamenti."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "updates",
|
||||
"title": "Aggiornamenti",
|
||||
"intro": "Per un contenitore installato da OCI manager Apps la scheda Aggiornamenti mostra l'applicazione con la sua immagine installata e, quando il registro pubblica una, la nuova immagine, nello stesso formato di qualsiasi altra applicazione. Gli strumenti di aggiornamento di pacchetti e applicazioni di un normale LXC non appaiono.",
|
||||
"blocks": [
|
||||
{
|
||||
"table": {
|
||||
"headers": [
|
||||
"Pulsante",
|
||||
"Che cosa si apre"
|
||||
],
|
||||
"rows": [
|
||||
[
|
||||
"Aggiornamento",
|
||||
"L’aggiornamento di <lifecycleLink>Gestisci applicazioni OCI installate</lifecycleLink> per questo container, nel terminale di Monitor. Può essere eseguito anche senza una nuova immagine; in quel caso non cambia nulla. In un’applicazione composta da più container aggiorna tutti i membri."
|
||||
],
|
||||
[
|
||||
"Modifica",
|
||||
"L'editor dell'applicazione (risorse, rete, percorsi e GPU). In un'applicazione multi-container aggiunge o rimuove i percorsi e i dispositivi aggiuntivi del contenitore di applicazione e, in Immich, cambia ciò che esegue il riconoscimento."
|
||||
],
|
||||
[
|
||||
"Recupera",
|
||||
"Sostituisce l'aggiornamento quando un'operazione sul contenitore è stata interrotta e apre il suo recupero."
|
||||
],
|
||||
[
|
||||
"Recupera (container ripristinato)",
|
||||
"Mostrato per un container ripristinato da un backup che non ha un contratto su questo host, sotto <strong>Applicazione OCI ripristinata</strong>. Apre il <lifecycleLink>recupero</lifecycleLink> nel terminale di Monitor; Aggiorna e Modifica compaiono dopo la registrazione."
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"p": "Modifiche esterne, directory dell’host e applicazioni composte da più container vengono gestite come nel menu OCI. Per queste applicazioni, pulsanti e opzioni compaiono solo nel container principale. Gli altri membri mostrano la propria immagine, una nota che rimanda al principale per gli aggiornamenti e un pulsante per aprirlo. Alla chiusura del terminale vengono riletti l’immagine, il record e i montaggi."
|
||||
},
|
||||
{
|
||||
"table": {
|
||||
"headers": [
|
||||
"Opzione",
|
||||
"Comportamento"
|
||||
],
|
||||
"rows": [
|
||||
[
|
||||
"Conserva il backup eseguito prima dell'aggiornamento",
|
||||
"Ogni aggiornamento esegue il backup del container per ripristinarlo se l'aggiornamento non riesce. Con questa opzione, lo stesso backup viene mantenuto nello storage scelto e compare tra i backup del CT; su Proxmox Backup Server viene scritto un backup prima dell'aggiornamento."
|
||||
],
|
||||
[
|
||||
"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."
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "logs",
|
||||
"title": "Log",
|
||||
"intro": "La scheda Logs appare solo per i contenitori installati da OCI manager Apps, tra Mounts e Backups. Mostra l'uscita standard e l'errore del processo principale dell'immagine, la stessa uscita mostra <code>docker logs</code> per un contenitore Docker.",
|
||||
"blocks": [
|
||||
{
|
||||
"list": {
|
||||
"items": [
|
||||
"L'output viene mantenuto sull'host in <code>/var/log/proxmenux/oci/VMID.console.log</code> (mode 0600), dal primo avvio e attraverso riavviamenti, in modo da poter essere letto con il contenitore fermato.",
|
||||
"Il file viene ruotato a 10 MB, mantenendo tre copie compresse (<code>/etc/logrotate.d/proxmenux-oci</code>).",
|
||||
"Ogni avvio del contenitore è contrassegnato nell'uscita. La scheda mostra l'output dall'ultimo avvio per impostazione predefinita; <strong>Cronologia completa</strong> mostra anche quelli precedenti.",
|
||||
"Quando l'applicazione viene rimossa, la sua uscita viene rimossa con essa.",
|
||||
"Vengono mostrate le ultime 100, 500 o 1000 righe. Mentre il container è in esecuzione, le nuove righe sono seguite in tempo reale; scorrere verso l’alto mette in pausa il seguito e <strong>Segui</strong> lo riprende.",
|
||||
"Un filtro mostra solo le linee che contengono un testo e <strong>Scarica</strong> salva le linee caricate.",
|
||||
"I codici a colori sono rimossi e una linea che una barra di avanzamento ridisegna è mostrata nel suo stato finale.",
|
||||
"La scheda legge il file a ogni apertura; non usa una copia in cache."
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"calloutInfo": {
|
||||
"title": "credenziali di primo avviamento",
|
||||
"body": "Le immagini che stampano una password generata sul loro primo inizio lo lasciano in questa uscita, come fa <code>docker logs</code>. L'installatore lo legge da lì per mostrarlo nel suo riassunto."
|
||||
}
|
||||
},
|
||||
{
|
||||
"figure": {
|
||||
"src": "/oci-manager/monitor-logs-tab.png",
|
||||
"alt": "Scheda di log con l'uscita della console di un contenitore OCI, il selettore della linea, il filtro e il pulsante seguente",
|
||||
"caption": "Uscita console di un contenitore OCI."
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "terminal",
|
||||
"title": "Console Proxmox VE",
|
||||
"blocks": [
|
||||
{
|
||||
"p": "Un'immagine OCI esegue il proprio processo come PID 1 e nessun servizio di login, quindi la console predefinita di un LXC aprirebbe un terminale in cui nulla risponde. I contenitori installati da OCI manager Apps sono creati con <code>cmode: shell</code>: la console Proxmox VE apre una shell con <code>lxc-attach</code>, l'equivalente di <code>docker exec</code>, con l'applicazione in esecuzione intatta."
|
||||
},
|
||||
{
|
||||
"list": {
|
||||
"items": [
|
||||
"La shell è quella assegnata a root nell’immagine da <code>/etc/passwd</code>. Se root non ha una shell o l’immagine non ne include alcuna, viene mantenuta la console predefinita.",
|
||||
"La shell viene eseguita come root all'interno del contenitore, senza una password. Chi può aprirlo è deciso dal permesso <code>VM.Console</code> di Proxmox VE.",
|
||||
"Il terminale del Monitor entra nel contenitore con <code>pct enter</code>, che funziona allo stesso modo."
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "mounts",
|
||||
"title": "Montaggi",
|
||||
"blocks": [
|
||||
{
|
||||
"p": "La scheda <mountsLink>Mounts</mountsLink> elenca i dischi container e le directory host del contenitore. L'uso di un disco contenitore su blocco di archiviazione come LVM-thin è letto dal filesystem del disco, che è montato solo all'interno del contenitore."
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,404 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Applicazioni multicontainer | ProxMenux",
|
||||
"description": "Come OCI manager Apps trasforma un'applicazione con il suo database e la cache in LXCs nativi coordinati: piano, rete privata, gancio di dipendenza, convalida e aggiornamenti transazionali."
|
||||
},
|
||||
"header": {
|
||||
"title": "Applicazioni con più container",
|
||||
"description": "Un'applicazione con il suo database, la cache e altri servizi diventa diversi LXC nativi coordinati, installati e aggiornati come uno.",
|
||||
"section": "OCI manager Apps"
|
||||
},
|
||||
"sections": [
|
||||
{
|
||||
"id": "intro",
|
||||
"blocks": [
|
||||
{
|
||||
"calloutInfo": {
|
||||
"title": "Un'applicazione per l'utente, diversi LXC per Proxmox VE",
|
||||
"body": "Una definizione multi-container è una voce del catalogo. L'installatore crea un LXC nativo per servizio e mantiene esplicite le proprie dipendenze. Immich, Nextcloud, Paperless-ngx e Tandoor sono installati in questo modo."
|
||||
}
|
||||
},
|
||||
{
|
||||
"mermaid": {
|
||||
"chartCode": "flowchart LR\n C[\"Docker Compose\"] --> O[\"{{plan}}\"]\n O --> A[\"{{app}}<br/>{{appNet}}\"]\n O --> D[\"{{db}}<br/>{{private}}\"]\n O --> R[\"{{cache}}<br/>{{private}}\"]\n V1[(\"config\")] --> A\n V2[(\"database\")] --> D\n V3[(\"cache\")] --> R\n D --> A\n R --> A",
|
||||
"labels": {
|
||||
"plan": "Piano di stack",
|
||||
"app": "Applicazione LXC",
|
||||
"appNet": "LAN + privato",
|
||||
"db": "PostgreSQL LXC",
|
||||
"cache": "Valkey LXC",
|
||||
"private": "privato"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "plan",
|
||||
"title": "1. Il piano, prima che esista un contenitore",
|
||||
"blocks": [
|
||||
{
|
||||
"p": "Nessun LXC viene creato mentre la definizione Compose viene interpretata. Un piano completo arriva prima, con ogni membro, immagine, VMID, rete, percorso, segreto, ordine e controllo sanitario. Se il piano non è coerente, l'installazione non inizia."
|
||||
},
|
||||
{
|
||||
"table": {
|
||||
"headers": [
|
||||
"Elemento di piano",
|
||||
"Contenuto",
|
||||
"Controllato prima di creare qualcosa"
|
||||
],
|
||||
"rows": [
|
||||
[
|
||||
"Membri",
|
||||
"Applicazione principale, database, cache, machine learning e altre dipendenze",
|
||||
"VMID unici, ruoli noti e esattamente un membro principale"
|
||||
],
|
||||
[
|
||||
"Immagini",
|
||||
"Riferimento rolling, architettura e digest risolto di ogni servizio",
|
||||
"Tutte esistono, supportano l’architettura e superano il controllo di integrità OCI"
|
||||
],
|
||||
[
|
||||
"Rete",
|
||||
"Ponte privato, subnet, indirizzo fisso per servizio e accesso LAN per il membro principale",
|
||||
"Nessuna collisione con ponti o sottorete esistenti e nessun indirizzo ripetuto"
|
||||
],
|
||||
[
|
||||
"Persistenza",
|
||||
"Dischi dei container, directory dell’host, proprietari e backup",
|
||||
"Nessun percorso sovrapposto, deposito disponibile e permessi dichiarati"
|
||||
],
|
||||
[
|
||||
"Segreti",
|
||||
"password del database, chiavi dell'applicazione e credenziali iniziali",
|
||||
"Generati una volta e forniti solo ai membri che li usano"
|
||||
],
|
||||
[
|
||||
"Ciclo di vita",
|
||||
"Ordine di inizio, ordine di arresto e un controllo sanitario per membro",
|
||||
"L'applicazione principale inizia l'ultima e si ferma prima"
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "create",
|
||||
"title": "2. Creazione, membro per membro",
|
||||
"blocks": [
|
||||
{
|
||||
"steps": {
|
||||
"items": [
|
||||
{
|
||||
"title": "Prenota ogni VMID",
|
||||
"body": "L'inventario Proxmox VE e il registro delle istanze sono controllati. Un CT esistente non è adottato e un contratto che appartiene ancora ad un'altra istanza non viene riutilizzato."
|
||||
},
|
||||
{
|
||||
"title": "Preparare ogni immagine",
|
||||
"body": "Tutte le immagini vengono risolte, scaricate e verificate prima che venga creato il primo contenitore."
|
||||
},
|
||||
{
|
||||
"title": "Creare ogni rootfs",
|
||||
"body": "I metadati OCI ufficiali sono importati, e l'identità di istanza ProxMenux e il ruolo membro sono aggiunti."
|
||||
},
|
||||
{
|
||||
"title": "Rete privata",
|
||||
"body": "Viene creato un ponte e una subnet e ogni membro riceve il suo indirizzo fisso; solo il membro principale riceve anche l'interfaccia LAN."
|
||||
},
|
||||
{
|
||||
"title": "Persistenza",
|
||||
"body": "Ogni database e configurazione ottiene il proprio disco contenitore; solo i dati destinati ad essere condivisi utilizzano directory host."
|
||||
},
|
||||
{
|
||||
"title": "Ambiente",
|
||||
"body": "Vengono scritti endpoint interni, segreti condivisi e variabili di servizio. L'applicazione raggiunge le sue dipendenze nei loro indirizzi privati riservati."
|
||||
},
|
||||
{
|
||||
"title": "Registrazione",
|
||||
"body": "Ogni membro registra la sua configurazione nativa, le modifiche rootfs che gli aggiornamenti devono riprodurre e la sua relazione con lo stack."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "checks",
|
||||
"title": "3. Avviare e controllare ogni contenitore",
|
||||
"intro": "Un LXC creato non significa un servizio pronto. Le dipendenze iniziano in ordine e ognuno passa un controllo specifico al suo servizio.",
|
||||
"blocks": [
|
||||
{
|
||||
"table": {
|
||||
"headers": [
|
||||
"Servizio",
|
||||
"Controllo",
|
||||
"Cosa mostra"
|
||||
],
|
||||
"rows": [
|
||||
[
|
||||
"PostgreSQL",
|
||||
"<code>pg_isready</code> nel CT con l'host previsto, l'utente e il database",
|
||||
"Il server accetta le connessioni per il database configurato"
|
||||
],
|
||||
[
|
||||
"Redis / Valkey",
|
||||
"<code>redis-cli</code> o <code>valkey-cli</code> <code>PING</code> contro il suo indirizzo privato",
|
||||
"Il broker ascolta e risponde"
|
||||
],
|
||||
[
|
||||
"Machine learning Immich",
|
||||
"HTTP <code>GET /ping</code>, oltre a un controllo del runtime GPU selezionato",
|
||||
"Il servizio risponde e l’accelerazione richiesta non è passata alla CPU"
|
||||
],
|
||||
[
|
||||
"Nextcloud",
|
||||
"<code>GET /status.php</code> con <code>installed=true</code>, <code>maintenance=false</code> e <code>needsDbUpgrade=false</code>",
|
||||
"Inizializzazione terminata senza migrazione in sospeso"
|
||||
],
|
||||
[
|
||||
"Paperless-ngx / Tandoor",
|
||||
"HTTP sull'indirizzo LAN e vera porta del servizio",
|
||||
"Il frontend e le sue dipendenze servono l'applicazione"
|
||||
],
|
||||
[
|
||||
"Applicazione principale",
|
||||
"Il punto finale del suo modello, ad esempio <code>/api/server/ping</code> in Immich",
|
||||
"L'intero stack funziona attraverso l'applicazione che utilizza le dipendenze"
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"calloutWarning": {
|
||||
"title": "In esecuzione non significa funzionante",
|
||||
"body": "Lo stato in esecuzione dice solo che esiste il processo LXC. Se il servizio offre un controllo migliore, viene utilizzato un controllo exec o HTTP con un timeout. Se un membro si ferma o non supera la verifica, lo stack non viene dichiarato installato."
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "hook",
|
||||
"title": "4. Il gancio di dipendenza",
|
||||
"blocks": [
|
||||
{
|
||||
"p": "Il gancio è impostato solo sul contenitore principale di uno stack dipendente. Proxmox VE mantiene lo script come snippet e lo gestisce come <code>hookscript</code> di quel CT. La ricetta dello stack non è scritta nello script: vive in un contratto privato separato."
|
||||
},
|
||||
{
|
||||
"codeGrid": {
|
||||
"items": [
|
||||
{
|
||||
"title": "Configurazione principale CT",
|
||||
"code": "hookscript: local:snippets/proxmenux-stack-dependencies.sh"
|
||||
},
|
||||
{
|
||||
"title": "Contratto privato (esempio)",
|
||||
"code": "/etc/pve/priv/proxmenux-stack-VMID.json\n{\n \"schema\": 1,\n \"stack\": \"immich\",\n \"dependencies\": [\n {\"vmid\": 107, \"label\": \"PostgreSQL\", \"healthcheck\": {...}},\n {\"vmid\": 108, \"label\": \"Valkey\", \"healthcheck\": {...}},\n {\"vmid\": 106, \"label\": \"Machine Learning\", \"healthcheck\": {...}}\n ]\n}"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"snippet": {
|
||||
"summary": "Fonte completa di proxmenux-stack-dependencies.sh",
|
||||
"pathCode": "local:snippets/proxmenux-stack-dependencies.sh",
|
||||
"snippetCode": "stackDependencyHook"
|
||||
}
|
||||
},
|
||||
{
|
||||
"p": "Lo script è lo stesso per ogni stack. VMID, nomi, tipi di controllo e timeout provengono dal contratto privato <code>/etc/pve/priv/proxmenux-stack-VMID.json</code> di ogni stack."
|
||||
},
|
||||
{
|
||||
"steps": {
|
||||
"items": [
|
||||
{
|
||||
"title": "Proxmox VE chiama pre-start",
|
||||
"body": "Prima dell'avvio principale di CT, il gancio viene eseguito con il VMID e la fase del ciclo di vita."
|
||||
},
|
||||
{
|
||||
"title": "Un blocco per stack",
|
||||
"body": "<code>flock</code> su <code>/run/lock/proxmenux-stack-VMID.lock</code> previene due sequenze di avvio contemporaneamente."
|
||||
},
|
||||
{
|
||||
"title": "Il contratto viene letto e convalidato",
|
||||
"body": "Uno schema noto, dipendenze numeriche, etichette, un exec, http o controllo in esecuzione e un timeout positivo sono necessari."
|
||||
},
|
||||
{
|
||||
"title": "Dipendenze in ordine",
|
||||
"body": "Ogni CT deve esistere; se è fermo viene avviato, se è già in esecuzione non viene riavviato."
|
||||
},
|
||||
{
|
||||
"title": "Attendi che il servizio sia pronto",
|
||||
"body": "Il controllo viene eseguito ogni due secondi, e il CT è confermato anche di essere ancora in esecuzione."
|
||||
},
|
||||
{
|
||||
"title": "Il principale CT inizia",
|
||||
"body": "Quando ogni dipendenza è pronta, pre-start termina e Proxmox VE avvia l'applicazione."
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"calloutInfo": {
|
||||
"title": "Il gancio non ferma le dipendenze",
|
||||
"body": "Le fasi post-start, pre-stop e post-stop non fanno nulla. Arrestare il CT principale lascia in esecuzione PostgreSQL, Redis, Valkey o il machine learning. L’hook ordina l’avvio; non trasforma diversi LXC in un unico processo."
|
||||
}
|
||||
},
|
||||
{
|
||||
"table": {
|
||||
"headers": [
|
||||
"Tipo",
|
||||
"Esempio",
|
||||
"Avvii successivi"
|
||||
],
|
||||
"rows": [
|
||||
[
|
||||
"stack dipendente",
|
||||
"Immich, Nextcloud, applicazione con PostgreSQL",
|
||||
"L’hook del CT principale avvia le dipendenze e attende che siano pronte."
|
||||
],
|
||||
[
|
||||
"Suite di applicazione",
|
||||
"Suite Arr",
|
||||
"Nessun membro principale: ogni LXC segue il proprio <code>onboot</code>"
|
||||
],
|
||||
[
|
||||
"Applicazione singola",
|
||||
"Jellyfin",
|
||||
"Proxmox VE avvia direttamente LXC"
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "stack-checks",
|
||||
"title": "5. Controlla sullo stack nel suo complesso",
|
||||
"blocks": [
|
||||
{
|
||||
"list": {
|
||||
"items": [
|
||||
"Ogni VMID esiste, è unico e mantiene l'identità di istanza prevista.",
|
||||
"Ogni contratto appartiene allo stesso stack, mantiene il suo ruolo e la sua configurazione nativa registrata.",
|
||||
"Il membro principale è l’ultimo in <code>start_order</code> e il primo in <code>stop_order</code>.",
|
||||
"Nessun membro, volume o adattamento rootfs manca.",
|
||||
"Il gancio punta al snippet ufficiale, il suo contenuto è invariato e il suo contratto corrisponde alla ricetta stack.",
|
||||
"Le immagini e i digest osservati corrispondono agli archivi OCI preparati.",
|
||||
"Dispositivi, profili GPU, montaggi, segreti ed endpoint corrispondono ancora ai contratti.",
|
||||
"Quando tutte le dipendenze superano i controlli, l’endpoint dell’applicazione principale verifica l’integrazione fra i membri."
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "manage",
|
||||
"title": "Gestione di uno stack installato",
|
||||
"intro": "In <strong>Gestisci applicazioni OCI installate</strong>, qualsiasi membro porta all’intero stack. Il menu offre <strong>Aggiorna tutti i container dell’applicazione</strong>, <strong>Modifica percorsi e dispositivi aggiuntivi</strong>, <strong>Ricrea tutti i container con la configurazione salvata</strong> e <strong>Rimuovi: elimina l’applicazione e i suoi container</strong>. Ricrea ricostruisce ogni container dall’immagine originale tramite il digest salvato, senza cercarne una più recente, seguendo gli stessi passaggi di un aggiornamento. È disponibile per gli stack aggiornabili.",
|
||||
"blocks": [
|
||||
{
|
||||
"steps": {
|
||||
"items": [
|
||||
{
|
||||
"title": "Qualsiasi membro",
|
||||
"body": "Il contratto dei membri nomina il VMID principale e l'elenco completo dei membri."
|
||||
},
|
||||
{
|
||||
"title": "Lo stack è riproducibile",
|
||||
"body": "Identità, contratti, gancio, adattamenti e una ripetizione coordinata per quella ricetta sono convalidati."
|
||||
},
|
||||
{
|
||||
"title": "Immagini prima",
|
||||
"body": "L'applicazione non viene fermata fino a quando ogni digest è stato risolto, scaricato e verificato."
|
||||
},
|
||||
{
|
||||
"title": "Arresta i componenti e crea un backup dell'insieme",
|
||||
"body": "I backup nativi verificati sono presi con lo stack fermato, quindi l'applicazione e i database appartengono allo stesso momento."
|
||||
},
|
||||
{
|
||||
"title": "Aggiornare e controllare ogni membro",
|
||||
"body": "Adattamento, rete, montaggi, segreti e dispositivi vengono applicati nuovamente prima del controllo di integrità di ciascun membro."
|
||||
},
|
||||
{
|
||||
"title": "Pubblica o recupera tutto",
|
||||
"body": "I nuovi contratti sono pubblicati solo quando ogni membro passa. Se uno fallisce, ogni membro viene ripristinato."
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"table": {
|
||||
"headers": [
|
||||
"Modifica",
|
||||
"Quali cambiamenti",
|
||||
"Cosa viene conservato"
|
||||
],
|
||||
"rows": [
|
||||
[
|
||||
"Percorsi e dispositivi aggiuntivi",
|
||||
"Vengono aggiunti o rimossi dal contenitore di applicazione, che si riavvia. Nulla è ricostruito",
|
||||
"I dati dell'applicazione, il suo database e gli altri contenitori"
|
||||
],
|
||||
[
|
||||
"Che cosa esegue il riconoscimento (Immich)",
|
||||
"Il contenitore di apprendimento automatico prende l'immagine e i dispositivi del CPU o di un GPU dell'host. L'intera applicazione viene interrotta e aggiornata, come in un aggiornamento",
|
||||
"La cache del modello, la libreria e il database. Se qualcosa fallisce, i contenitori precedenti e la scelta precedente vengono ripristinati"
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"calloutWarning": {
|
||||
"title": "Una pila senza un replay coordinato non è aggiornata",
|
||||
"body": "Se la preparazione di uno stack non può essere riprodotta, l'aggiornamento viene rifiutato prima che lo stack venga interrotto. L'applicazione continua a funzionare come è."
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "failure",
|
||||
"title": "6. Quando qualcosa fallisce",
|
||||
"blocks": [
|
||||
{
|
||||
"p": "Durante un'installazione, un errore si ferma e rimuove i contenitori incompleti che l'operazione ha creato, e il ponte privato se l'operazione l'ha creata. Una pila non viene pubblicata come valida fino al termine dell'intera sequenza."
|
||||
},
|
||||
{
|
||||
"p": "Un aggiornamento è transazionale: tutte le immagini sono preparate prima, poi lo stack si ferma, viene eseguito e verificato il backup di ogni membro, e solo allora è sostituito ogni rootfs. I membri iniziano uno per uno con il loro controllo sanitario; se uno fallisce, ogni membro viene ripristinato dalla stessa serie di backup, quindi il database e l'applicazione non appartengono mai a momenti diversi."
|
||||
},
|
||||
{
|
||||
"mermaid": {
|
||||
"chartCode": "flowchart LR\n P[\"{{prepare}}\"] --> S[\"{{stop}}\"]\n S --> B[\"{{backup}}\"]\n B --> R[\"{{replace}}\"]\n R --> H{\"{{healthy}}\"}\n H -- \"{{yes}}\" --> C[\"{{commit}}\"]\n H -- \"{{no}}\" --> X[\"{{rollback}}\"]",
|
||||
"labels": {
|
||||
"prepare": "Preparare ogni immagine",
|
||||
"stop": "Stop, primo membro principale",
|
||||
"backup": "Backup verificato di ogni CT",
|
||||
"replace": "Sostituisci il rootfs",
|
||||
"healthy": "Tutti funzionanti?",
|
||||
"yes": "Sì",
|
||||
"no": "No",
|
||||
"commit": "Pubblica i contratti",
|
||||
"rollback": "Ripristinare ogni membro"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "not-assumed",
|
||||
"title": "Che cosa uno stack non include",
|
||||
"blocks": [
|
||||
{
|
||||
"list": {
|
||||
"items": [
|
||||
"Una suite installata in un unico flusso, come la suite Arr, non è uno stack dipendente: i suoi contenitori non hanno ordine di partenza tra di loro.",
|
||||
"La rete privata non sostituisce l'autenticazione, TLS o la configurazione di ogni applicazione.",
|
||||
"Il backup di un LXC non contiene il ponte, il gancio o i contratti del resto dello stack.",
|
||||
"Prowlarr, Sonarr o Radarr non ricevono indici, profili o fornitori da ProxMenux."
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,305 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Dati, percorsi e rete | ProxMenux",
|
||||
"description": "Come OCI manager Apps conserva i dati di un container OCI: dischi del container, directory dell’host, mount con rclone, indirizzi e reti private."
|
||||
},
|
||||
"header": {
|
||||
"title": "Dati, percorsi e rete",
|
||||
"description": "Cosa risiede nel rootfs, cosa viene conservato quando lo si sostituisce, come si condividono i dati tra container e come ciascuno ottiene il proprio indirizzo.",
|
||||
"section": "OCI manager Apps"
|
||||
},
|
||||
"sections": [
|
||||
{
|
||||
"id": "intro",
|
||||
"blocks": [
|
||||
{
|
||||
"calloutInfo": {
|
||||
"title": "La persistenza si decide prima di creare l’LXC",
|
||||
"body": "I volumi dichiarati dall’immagine e dal suo file Compose vengono letti prima di creare il container. Ogni percorso da conservare dopo un aggiornamento diventa un punto di mount indipendente dal rootfs. In questo modo, il rootfs contiene solo ciò che appartiene all’immagine e può essere sostituito."
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "questions",
|
||||
"title": "Cosa chiede l’installer",
|
||||
"intro": "Il modello fornisce i percorsi necessari all’applicazione. Ciascuno viene collocato su un disco del container o in una directory dell’host; prima del riepilogo si possono aggiungere altri percorsi.",
|
||||
"blocks": [
|
||||
{
|
||||
"steps": {
|
||||
"items": [
|
||||
{
|
||||
"title": "Percorsi necessari",
|
||||
"body": "Vengono elencati <code>/config</code>, <code>/data</code>, librerie, download e tutti i volumi dichiarati dall’applicazione."
|
||||
},
|
||||
{
|
||||
"title": "Posizione",
|
||||
"body": "Ogni percorso viene collocato su un disco del container o in una directory già esistente sull’host."
|
||||
},
|
||||
{
|
||||
"title": "Storage e dimensione",
|
||||
"body": "Viene creato un disco del container su uno storage Proxmox VE con la dimensione indicata. L’installazione predefinita usa <code>local-lvm</code>; quella avanzata chiede lo storage di ogni percorso subito prima della dimensione e propone quello del rootfs. Il disco appare come <code>vm-VMID-disk-N</code> e viene collegato come <code>mpN</code>."
|
||||
},
|
||||
{
|
||||
"title": "Directory dell’host",
|
||||
"body": "La directory dell’host viene indicata tramite il suo percorso. Se non esiste, viene creata e assegnata all’utente dell’host a cui viene mappato quello del container."
|
||||
},
|
||||
{
|
||||
"title": "Percorsi aggiuntivi",
|
||||
"body": "Prima dell’installazione si possono aggiungere altre coppie formate da un percorso o volume dell’host e dal relativo percorso nel container."
|
||||
},
|
||||
{
|
||||
"title": "Riepilogo",
|
||||
"body": "La mappatura completa viene mostrata prima della creazione del CT e salvata nel contratto dell’istanza."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "options",
|
||||
"title": "Le due posizioni persistenti",
|
||||
"blocks": [
|
||||
{
|
||||
"table": {
|
||||
"headers": [
|
||||
"Proprietà",
|
||||
"Disco del container",
|
||||
"Directory dell’host"
|
||||
],
|
||||
"rows": [
|
||||
[
|
||||
"Nella configurazione",
|
||||
"<code>mpN: STORAGE:vm-VMID-disk-N,mp=/config,backup=1,size=16G</code>",
|
||||
"<code>mpN: /mnt/oci-shared/media,mp=/data/media</code>"
|
||||
],
|
||||
[
|
||||
"Backup del container (vzdump)",
|
||||
"Incluso con <code>backup=1</code>",
|
||||
"Non incluso"
|
||||
],
|
||||
[
|
||||
"Dimensione",
|
||||
"Fissa; si aumenta ridimensionando il punto di mount",
|
||||
"Lo spazio libero del filesystem o del dataset dell’host"
|
||||
],
|
||||
[
|
||||
"Altri container",
|
||||
"Montato solo dal container a cui appartiene",
|
||||
"La stessa directory può essere montata in più container"
|
||||
],
|
||||
[
|
||||
"Snapshot e ripristino",
|
||||
"Gestiti da Proxmox VE insieme al CT",
|
||||
"Gestiti sullo storage dell’host"
|
||||
],
|
||||
[
|
||||
"Rimozione dell’applicazione",
|
||||
"Eliminato con il container",
|
||||
"Conservato con il suo contenuto"
|
||||
],
|
||||
[
|
||||
"Spostamento del CT su un altro nodo",
|
||||
"Si sposta con il CT",
|
||||
"Lo stesso percorso deve esistere sull’altro nodo"
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"p": "Il rootfs è riservato ai binari e al contenuto dell’immagine. Un aggiornamento o una ricreazione lo sostituisce senza toccare nessuno dei due tipi di punto di mount."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "example",
|
||||
"title": "Esempio: un container con entrambe le posizioni",
|
||||
"blocks": [
|
||||
{
|
||||
"code": {
|
||||
"title": "Jellyfin installato come CT 151 su local-lvm (estratto)",
|
||||
"code": "rootfs: local-lvm:vm-151-disk-0,size=8G\n# Container disk, part of the CT backup\nmp0: local-lvm:vm-151-disk-1,mp=/config,backup=1,size=16G\n\n# Host directory, outside the CT backup\nmp1: /mnt/oci-shared/media,mp=/data/media"
|
||||
}
|
||||
},
|
||||
{
|
||||
"p": "Un aggiornamento o una ricreazione sostituisce solo il rootfs: <code>mp0</code> conserva utenti, librerie e impostazioni, mentre <code>mp1</code> continua a mostrare gli stessi contenuti multimediali. Il ripristino del backup del CT recupera <code>/config</code>; se necessario, la directory dei contenuti multimediali viene ripristinata dal backup dello storage dell’host."
|
||||
},
|
||||
{
|
||||
"flow": {
|
||||
"nodes": [
|
||||
{
|
||||
"label": "Contratto",
|
||||
"detail": "/config"
|
||||
},
|
||||
{
|
||||
"label": "Posizione",
|
||||
"detail": "Disco del container\no directory dell’host"
|
||||
},
|
||||
{
|
||||
"label": "LXC",
|
||||
"detail": "Sempre /config\nper l’applicazione"
|
||||
}
|
||||
],
|
||||
"caption": "L’applicazione vede il percorso dichiarato dall’immagine; cambia solo dove viene memorizzato."
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "shared",
|
||||
"title": "Una directory dell’host, più container",
|
||||
"blocks": [
|
||||
{
|
||||
"mermaid": {
|
||||
"chartCode": "flowchart TB\n H[\"{{host}}<br/>/mnt/oci-shared/media\"]\n H --> Q[\"qBittorrent<br/>/data\"]\n H --> J[\"Jellyfin<br/>/data\"]\n H --> R[\"Radarr / Sonarr<br/>/data\"]\n Q -. \"{{config}}\" .-> QV[(\"/config mpN\")]\n J -. \"{{config}}\" .-> JV[(\"/config mpN\")]\n R -. \"{{config}}\" .-> RV[(\"/config mpN\")]",
|
||||
"labels": {
|
||||
"host": "Directory dell’host",
|
||||
"config": "Configurazione propria"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"p": "Ogni container conserva la propria configurazione sul suo disco. La libreria o i download si trovano in un’unica directory dell’host, montata nello stesso percorso interno in tutti i container. Così il percorso in cui scrive un’applicazione è lo stesso da cui legge un’altra."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "rclone",
|
||||
"title": "Storage cloud tramite l’applicazione rclone",
|
||||
"intro": "Oltre all’installazione, la scheda di rclone nel catalogo offre <strong>Abilita un mount in un container OCI rclone esistente</strong>. Viene montato un remote già creato e autorizzato nell’interfaccia web di rclone, che viene poi reso disponibile sull’host. Gli altri container possono usarlo come una directory dell’host.",
|
||||
"blocks": [
|
||||
{
|
||||
"steps": {
|
||||
"items": [
|
||||
{
|
||||
"title": "Container e remote",
|
||||
"body": "Il VMID del container rclone, il nome esatto del remote e, facoltativamente, un percorso al suo interno."
|
||||
},
|
||||
{
|
||||
"title": "Nome del mount e cache",
|
||||
"body": "Il nome del mount e la modalità della cache VFS: <code>off</code>, <code>minimal</code>, <code>writes</code> o <code>full</code> (predefinita)."
|
||||
},
|
||||
{
|
||||
"title": "Viste pubblicate",
|
||||
"body": "Una radice comune, <code>/mnt/oci-shared</code> per impostazione predefinita, contiene una vista in lettura e scrittura in <code>/mnt/oci-shared/remotes/NAME</code> e una in sola lettura in <code>/mnt/oci-shared/remotes-ro/NAME</code>."
|
||||
},
|
||||
{
|
||||
"title": "Attivazione",
|
||||
"body": "Dopo la conferma, il CT viene arrestato, vengono configurati il suo comando di avvio e un hookscript di Proxmox VE, quindi viene riavviato. L’operazione attende che entrambe le viste siano montate sull’host."
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"calloutInfo": {
|
||||
"title": "Se il mount non viene attivato",
|
||||
"body": "Viene ripristinata la configurazione precedente del container, che viene quindi riavviato. In questo modo, se l’attivazione fallisce, rclone resta com’era."
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "network",
|
||||
"title": "Indirizzi e reti",
|
||||
"intro": "Un’applicazione con un solo container ha bisogno di un indirizzo. Un’applicazione con più container richiede anche una rete stabile tra i suoi componenti.",
|
||||
"blocks": [
|
||||
{
|
||||
"cards": {
|
||||
"items": [
|
||||
{
|
||||
"icon": "network",
|
||||
"title": "Applicazione con un solo container",
|
||||
"body": "Si sceglie il bridge di rete e si imposta DHCP oppure un indirizzo fisso in formato CIDR. L’LXC ha un proprio indirizzo e il riepilogo mostra gli URL completi dei servizi."
|
||||
},
|
||||
{
|
||||
"icon": "waypoints",
|
||||
"title": "Applicazione con più container",
|
||||
"body": "Viene individuata una sottorete libera e creato un bridge privato persistente. Ogni componente — applicazione, database e cache — riceve un indirizzo fisso su quella rete."
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"flow": {
|
||||
"nodes": [
|
||||
{
|
||||
"label": "LAN",
|
||||
"detail": "Indirizzo raggiungibile\nsolo per il servizio principale"
|
||||
},
|
||||
{
|
||||
"label": "LXC principale",
|
||||
"detail": "Web / API\nLAN + rete privata"
|
||||
},
|
||||
{
|
||||
"label": "Rete privata",
|
||||
"detail": "PostgreSQL · Valkey · ML\nindirizzi fissi"
|
||||
}
|
||||
],
|
||||
"caption": "Le dipendenze comunicano sulla rete privata e non hanno un indirizzo sulla LAN."
|
||||
}
|
||||
},
|
||||
{
|
||||
"p": "Il contratto dello stack conserva bridge, sottorete, indirizzi e relazioni tra i servizi. L’aggiornamento dell’applicazione riutilizza la stessa topologia per tutti i componenti. ProxMenux Monitor apre il container principale al suo indirizzo LAN, non a quello della rete privata."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "ownership",
|
||||
"title": "Proprietà di file e directory",
|
||||
"blocks": [
|
||||
{
|
||||
"list": {
|
||||
"items": [
|
||||
"Le nuove directory vengono create con UID e GID a cui viene mappato l’LXC non privilegiato.",
|
||||
"Il proprietario delle directory esistenti non viene modificato ricorsivamente.",
|
||||
"Socket, file di sistema e percorsi sensibili non vengono proposti come directory generiche dell’host."
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "backup",
|
||||
"title": "Cosa contiene un backup del container",
|
||||
"blocks": [
|
||||
{
|
||||
"table": {
|
||||
"headers": [
|
||||
"Elemento",
|
||||
"Nel backup vzdump del CT",
|
||||
"Dove viene conservato"
|
||||
],
|
||||
"rows": [
|
||||
[
|
||||
"Rootfs OCI",
|
||||
"Sì",
|
||||
"Nel backup del CT; può anche essere ricreato dall’immagine e dal contratto"
|
||||
],
|
||||
[
|
||||
"Disco del container con <code>backup=1</code>",
|
||||
"Sì",
|
||||
"Il backup del CT"
|
||||
],
|
||||
[
|
||||
"Directory dell’host",
|
||||
"No",
|
||||
"Il backup dello storage dell’host"
|
||||
],
|
||||
[
|
||||
"Contratto dell’istanza",
|
||||
"Sì, la copia conservata nel CT",
|
||||
"<code>/.proxmenux/oci-record.json</code> nel CT; le copie aggiuntive dell’host e del cluster sono conservate separatamente"
|
||||
],
|
||||
[
|
||||
"Applicazione con più container",
|
||||
"Ogni componente nel proprio backup",
|
||||
"I backup di tutti i componenti, più il contratto dello stack e il suo bridge di rete sull’host"
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,172 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Script post-installazione automatizzato | Documentazione ProxMenux",
|
||||
"description": "Lo script post-installazione automatizzato ProxMenux esegue 14 ottimizzazioni predefinite in base all’hardware su un nuovo host Proxmox VE. Non presenta una lista di funzioni da selezionare, ma può chiedere conferma per l’aggiornamento del sistema, la rimozione dell’avviso di abbonamento, alcune installazioni Log2RAM e il riavvio. Le modifiche reversibili vengono registrate.",
|
||||
"ogTitle": "Script post-installazione automatizzato | Documentazione ProxMenux",
|
||||
"ogDescription": "14 ottimizzazioni predefinite in base all’hardware per un nuovo host Proxmox VE, con conferme per alcune azioni e registrazione delle modifiche reversibili."
|
||||
},
|
||||
"header": {
|
||||
"title": "Script post-installazione automatizzato",
|
||||
"description": "ProxMenux esegue 14 ottimizzazioni di base predefinite senza lista di funzioni da selezionare. Alcune azioni chiedono conferma. Le modifiche reversibili vengono registrate per Disinstalla ottimizzazioni; gli aggiornamenti dei pacchetti non sono descritti come reversibili.",
|
||||
"section": "Post-Install · Automatizzato"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Quando scegliere l’installazione automatizzata",
|
||||
"body": "Eseguilo su un host Proxmox appena installato per ottenere una configurazione di base senza scegliere ogni funzione. Lo script è idempotente: una seconda esecuzione riapplica le stesse impostazioni. Le funzioni opzionali (Fastfetch, IOMMU, repository Ceph, HA, correzioni AMD…) <strong>non</strong> fanno parte di questo percorso; sceglile da <link>Personalizzabile</link> se ti servono."
|
||||
},
|
||||
"applies": {
|
||||
"heading": "Cosa applica lo script",
|
||||
"intro": "Le ottimizzazioni vengono applicate in questo ordine preciso. La colonna <em>Categoria</em> rimanda alla documentazione dettagliata di ogni modifica nella guida personalizzabile.",
|
||||
"headerNum": "#",
|
||||
"headerTool": "Strumento",
|
||||
"headerWhat": "Che cosa fa",
|
||||
"headerCategory": "Categoria"
|
||||
},
|
||||
"optimizations": [
|
||||
{
|
||||
"tool": "Repository APT + aggiornamento completo",
|
||||
"what": "Disabilita le sorgenti Enterprise pve-enterprise.sources e ceph.sources, crea una sorgente no-subscription per il nome in codice Debian dell’host, quindi esegue apt update && apt full-upgrade -y (comando ufficiale di aggiornamento Proxmox).",
|
||||
"category": "Impostazioni di base",
|
||||
"categorySlug": "basic-settings"
|
||||
},
|
||||
{
|
||||
"tool": "Rimozione dell’avviso di abbonamento",
|
||||
"what": "Modifica l’interfaccia web per nascondere l’avviso «Nessun abbonamento valido». Chiede conferma prima di applicare; reversibile da Disinstalla ottimizzazioni.",
|
||||
"category": "Personalizzazione",
|
||||
"categorySlug": "customization"
|
||||
},
|
||||
{
|
||||
"tool": "Forza IPv4",
|
||||
"what": "Scrive /etc/apt/apt.conf.d/99-force-ipv4 affinché apt usi solo IPv4, evitando collegamenti IPv6 instabili ai mirror.",
|
||||
"category": "Rete",
|
||||
"categorySlug": "network"
|
||||
},
|
||||
{
|
||||
"tool": "Salta i pacchetti di lingua",
|
||||
"what": "Scrive /etc/apt/apt.conf.d/99-disable-translations per non scaricare più gli indici delle descrizioni tradotte dei pacchetti, riducendo i dati degli aggiornamenti apt.",
|
||||
"category": "Impostazioni di base",
|
||||
"categorySlug": "basic-settings"
|
||||
},
|
||||
{
|
||||
"tool": "Aumentare i limiti del sistema",
|
||||
"what": "Aumenta le risorse di monitoraggio inotify, i limiti nofile/nproc, quelli del portachiavi del kernel e fs.file-max tramite sysctl.d, limits.d, pam e systemd, per host con molti container.",
|
||||
"category": "Sistema",
|
||||
"categorySlug": "system"
|
||||
},
|
||||
{
|
||||
"tool": "Regolazione della memoria",
|
||||
"what": "Imposta vm.swappiness=10, rapporti bilanciati di pagine modificate non ancora scritte, vm.max_map_count=262144 e compattazione proattiva se supportata. La politica di overcommit della memoria del kernel resta quella predefinita di Proxmox.",
|
||||
"category": "Sistema",
|
||||
"categorySlug": "system"
|
||||
},
|
||||
{
|
||||
"tool": "Comportamento in caso di kernel panic",
|
||||
"what": "Configura l’host per riavviarsi 10 secondi dopo un panic / oops / hardlockup invece di restare bloccato indefinitamente.",
|
||||
"category": "Sistema",
|
||||
"categorySlug": "system"
|
||||
},
|
||||
{
|
||||
"tool": "Regolazione dello stack di rete",
|
||||
"what": "Dimensioni dei buffer TCP, rafforzamento IPv4 (redirect disattivati, rp_filter=2, registrazione martian disattivata), porte locali 1024-65535, rilevamento MTU TCP, RFC 1337 e script /usr/local/sbin/proxmenux-fwbr-tune collegato a un’unità systemd a esecuzione singola e una regola udev. Così rp_filter=0 / log_martians=0 vengono riapplicati alle interfacce fwbr*/fwln*/fwpr*/tap* ogni volta che Proxmox le ricrea all’avvio/arresto delle VM, al riavvio o alla migrazione live.",
|
||||
"category": "Rete",
|
||||
"categorySlug": "network"
|
||||
},
|
||||
{
|
||||
"tool": "Personalizzazione Bashrc (root)",
|
||||
"what": "PS1 colorato, alias comuni (l/la/ll/ls/grep), cronologia con data e ora e caricamento di bash-completion, dentro un blocco delimitato PMX_CORE_BASHRC facile da rimuovere.",
|
||||
"category": "Personalizzazione",
|
||||
"categorySlug": "customization"
|
||||
},
|
||||
{
|
||||
"tool": "Log2RAM (ottimizzato per SSD, automatico)",
|
||||
"what": "Riduce l’usura SSD/NVMe spostando /var/log in un ramdisk tmpfs sincronizzato periodicamente sul disco. Installazione dal progetto upstream quando il disco root è SSD o NVMe. Dimensione in base alla RAM dell’host (128M / 256M / 512M), sincronizzazione periodica e protezione automatica che elimina vecchi journal all’80% e tronca i log molto attivi al 92% prima della scrittura. Adatta i limiti journald al ramdisk. Dettagli su <link>Log2RAM</link>.",
|
||||
"category": "Archiviazione",
|
||||
"categorySlug": "storage"
|
||||
},
|
||||
{
|
||||
"tool": "Autotrim ZFS (solo SSD)",
|
||||
"what": "Attiva zpool autotrim=on su ogni pool ZFS i cui vdev siano tutti SSD o NVMe con supporto TRIM, controllando /sys/block/[dev]/queue/rotational e discard_granularity. I pool su HDD vengono saltati. Per la disinstallazione registra solo i pool realmente modificati da ProxMenux; quelli su cui hai attivato autotrim manualmente restano invariati.",
|
||||
"category": "Archiviazione",
|
||||
"categorySlug": "storage"
|
||||
},
|
||||
{
|
||||
"tool": "Limiti di dimensione di journald",
|
||||
"what": "Forza l’archiviazione persistente, limita SystemMaxUse=64M / RuntimeMaxUse=60M e abilita compressione e log di livello info richiesti da Monitor. Viene saltato se Log2RAM è attivo, perché esegue la propria regolazione.",
|
||||
"category": "Sistema",
|
||||
"categorySlug": "system"
|
||||
},
|
||||
{
|
||||
"tool": "Regolazione di logrotate",
|
||||
"what": "Imposta globalmente daily seguito da size 10M, conserva 7 rotazioni e abilita compressione e copytruncate. Il criterio di dimensione successivo prevale; le regole specifiche possono sovrascriverlo. Adatto a Log2RAM, ma la frequenza dipende da regole e timer.",
|
||||
"category": "Sistema",
|
||||
"categorySlug": "system"
|
||||
},
|
||||
{
|
||||
"tool": "Nomi di interfaccia persistenti",
|
||||
"what": "Scrive un file <code>/etc/systemd/network/10-proxmenux-<iface>.link</code> per scheda fisica, con intestazione «Managed by ProxMenux», che associa il MAC al nome attuale. I nomi <code>eth0</code> / <code>enp…</code> restano stabili dopo riavvii e aggiunte di schede.",
|
||||
"category": "Rete",
|
||||
"categorySlug": "network"
|
||||
}
|
||||
],
|
||||
"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>). I limiti del journald vengono adattati alla dimensione del ramdisk quando Log2RAM è attivo, per evitare di riempirlo.",
|
||||
"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:",
|
||||
"after": "Questa riga è il comando ufficiale delle versioni attuali di Proxmox. Lo script automatizzato esegue <strong>esattamente</strong> questo e aggiunge la pulizia dei repository e le operazioni successive consigliate dalla guida — come l’utilità separata <link>Aggiornamento del sistema Proxmox</link>:",
|
||||
"items": [
|
||||
"Disabilita le sorgenti Enterprise <code>pve-enterprise.sources</code> / <code>ceph.sources</code>, rimuove i vecchi file dei repository e crea una sorgente no-subscription per il nome in codice dell’host.",
|
||||
"Esegue l’aggiornamento senza interazione con <code>DEBIAN_FRONTEND=noninteractive</code> e <code>--force-confdef --force-confold</code>: conserva i file personalizzati anche quando sono cambiati nel progetto originale.",
|
||||
"Installa pacchetti Proxmox essenziali se mancanti (<code>zfsutils-linux</code>, <code>proxmox-backup-restore-image</code>, <code>chrony</code>).",
|
||||
"Controllo di coerenza dei metadati LVM, <code>apt-get autoremove -y</code> + <code>apt-get autoclean -y</code> e richiesta di riavvio solo se il kernel è cambiato."
|
||||
],
|
||||
"sameTitle": "Stesso aggiornamento, due punti di ingresso",
|
||||
"sameBody": "Il bundle automatizzato e l'utilità standalone <link>Proxmox System Update</link> condividono gli stessi script sottostanti (<code>update-pve8.sh</code> / <code>update-pve9_2.sh</code>). Utilizzare l'utilità da solo quando si desidera aggiornare l'host solo senza applicare il resto delle ottimizzazioni."
|
||||
},
|
||||
"endResult": {
|
||||
"heading": "Risultato finale previsto",
|
||||
"body": "Al termine vedrai un messaggio di successo con l’output di ogni passaggio e una richiesta di riavvio, necessario per alcune impostazioni del kernel. Puoi rimandarlo: le impostazioni si applicheranno al prossimo avvio.",
|
||||
"imageAlt": "Script post-installazione automatizzato — output finale del terminale con ogni ottimizzazione applicata correttamente"
|
||||
},
|
||||
"notDoes": {
|
||||
"heading": "Che cosa questo script NON fa",
|
||||
"items": [
|
||||
"Rilevamento automatico del fuso orario (commentato nel sorgente; usa Personalizzabile se ti serve).",
|
||||
"Disattivare portmapper / rpcbind (vedi <secLink>Sicurezza</secLink>).",
|
||||
"Abilitare IOMMU / VFIO (vedi <virtLink>Virtualizzazione</virtLink>).",
|
||||
"Installare Fastfetch / Figurine / repository Ceph / HA / correzioni CPU AMD (vedi <optLink>Opzionali</optLink>).",
|
||||
"Installare pigz o regolare ZFS ARC (vedi <perfLink>Prestazioni</perfLink> / <storLink>Archiviazione</storLink>)."
|
||||
]
|
||||
},
|
||||
"xshokTitle": "rilevamento xshok-proxmox",
|
||||
"xshokBody": "Se l'host ha precedentemente eseguito lo script <code>xshok-proxmox</code>, ProxMenux rileva il file marcatore e ti avvisa prima di continuare. Alcune modifiche possono sovrapporsi. Lo script compagno è deprecato — se si decide di continuare comunque, rivedere <link> la panoramica</link> per contesto.",
|
||||
"revert": {
|
||||
"heading": "Ripristino",
|
||||
"body": "Ogni strumento della tabella viene registrato in <code>/usr/local/share/proxmenux/installed_tools.json</code>. Apri <link>Disinstalla ottimizzazioni</link> per scegliere quali elementi ripristinare. Le copie dei file modificati sono accanto agli originali con suffisso <code>.bak</code>."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"label": "Post-installazione personalizzabile",
|
||||
"href": "/docs/post-install/customizable",
|
||||
"tail": "— scegli esattamente quello che vuoi dallo stesso catalogo."
|
||||
},
|
||||
{
|
||||
"label": "Disinstalla ottimizzazioni",
|
||||
"href": "/docs/post-install/uninstall",
|
||||
"tail": "— ripristinare qualsiasi sottoinsieme di ciò che è stato applicato qui."
|
||||
},
|
||||
{
|
||||
"label": "Comandi di sistema utili",
|
||||
"href": "/docs/help-info/system-commands",
|
||||
"tail": " — verifica le modifiche (uptime, free, journalctl, ecc.)."
|
||||
},
|
||||
{
|
||||
"label": "Panoramica post-install",
|
||||
"href": "/docs/post-install",
|
||||
"tail": "."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,240 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Post-Install: Impostazioni di base | Documentazione ProxMenux",
|
||||
"description": "Opzioni di base post-installazione: passare ai repository Proxmox senza abbonamento e aggiornare il sistema, rilevare il fuso orario e attivare NTP, saltare le traduzioni APT e scegliere tra 25 utilità comuni da installare."
|
||||
},
|
||||
"header": {
|
||||
"title": "Post-Install: Impostazioni di base",
|
||||
"section": "Impostazioni post-installazione Proxmox"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Che cosa copre questa categoria",
|
||||
"body": "Cinque opzioni di base per un host Proxmox nuovo: passare ai repository della community senza abbonamento, aggiornare tutto il sistema, configurare automaticamente fuso orario e NTP, disattivare le traduzioni APT per risparmiare banda e spazio e scegliere tra 25 utilità comuni."
|
||||
},
|
||||
"upgrade": {
|
||||
"heading": "Aggiorna gli elenchi dei pacchetti e il sistema",
|
||||
"intro": "Riconfigura APT per utilizzare il repository gratuito <em>pve-no-subscription</em> (invece del repo aziendale che richiede un abbonamento) e gestisce un aggiornamento completo del sistema. I passaggi esatti dipendono dalla versione principale di Proxmox VE: ProxMenux lo rileva e invia allo script giusto.",
|
||||
"headerVersion": "Versione PVE",
|
||||
"headerScript": "Script di selezione per versione",
|
||||
"headerCodename": "Nome in codice Debian",
|
||||
"rows": [
|
||||
{
|
||||
"version": "9.x",
|
||||
"script": "update-pve9_2.sh",
|
||||
"codename": "trixie"
|
||||
},
|
||||
{
|
||||
"version": "8.x",
|
||||
"script": "update-pve8.sh",
|
||||
"codename": "bookworm"
|
||||
}
|
||||
],
|
||||
"officialTitle": "Raccomandazione ufficiale Proxmox",
|
||||
"officialBody": "La guida ufficiale Proxmox consiglia questi comandi in quest’ordine:",
|
||||
"officialOutro": "È il comando usuale per aggiornare all’interno della stessa versione principale di Proxmox VE. Controlla i repository e le modifiche proposte ai pacchetti <em>prima</em> di procedere. Il passaggio a un’altra versione principale richiede la procedura ufficiale di migrazione.",
|
||||
"doesTitle": "Ciò che l'opzione ProxMenux fa — verificata contro lo script",
|
||||
"doesIntro": "L’aggiornamento ProxMenux esegue i comandi apt indicati e aggiunge passaggi preliminari e finali che altrimenti dovresti gestire manualmente. L’elenco seguente corrisponde allo script di selezione; vedi <link>Aggiornamento del sistema Proxmox</link> per tutti i dettagli.",
|
||||
"doesItems": [
|
||||
"<strong>Prima di tutto, sistemare i repository.</strong> Disabilita i repository enterprise <code>pve-enterprise.sources</code> / <code>ceph.sources</code>, elimina i vecchi file dei repository rimasti dalle precedenti versioni di PVE e scrive un file <code>proxmox.sources</code> pulito che punta al canale gratuito <em>pve-no-subscription</em>, corrispondente al nome in codice Debian dell'host: trixie per PVE 9, bookworm per PVE 8.",
|
||||
"<strong>Riscrive i repository Debian</strong> con main / updates / security e <code>non-free-firmware</code>, eliminando l’avviso del firmware durante l’aggiornamento.",
|
||||
"<strong>Esegue l’aggiornamento ufficiale.</strong> <code>apt-get update</code> seguito da <code>apt full-upgrade -y</code> (PVE 9) oppure <code>apt dist-upgrade -y</code> (PVE 8), senza interazione con <code>--force-confdef --force-confold</code> per mantenere i file di configurazione personalizzati.",
|
||||
"<strong>Installa i pacchetti essenziali</strong> se mancanti: <code>zfsutils-linux</code>, <code>proxmox-backup-restore-image</code>, <code>chrony</code>.",
|
||||
"<strong>Controlla i metadati LVM.</strong> Cerca VM con passthrough dei dischi che potrebbero aver lasciato vecchie intestazioni di volumi fisici sui dischi grezzi. Segnala anomalie senza correzioni automatiche.",
|
||||
"<strong>Pulisce al termine:</strong> <code>apt-get autoremove -y</code> + <code>apt-get autoclean -y</code>, poi chiede il riavvio se il kernel è stato aggiornato o esiste <code>/var/run/reboot-required</code>."
|
||||
],
|
||||
"shortTitle": "In breve",
|
||||
"shortBody": "L’opzione esegue il comando consigliato <code>apt update && apt full-upgrade -y</code>, aggiunge la sistemazione dei repository e la pulizia finale indicate nella guida ufficiale e chiede il riavvio al termine. Vedi <link>Aggiornamento del sistema Proxmox</link> per il diagramma completo: lo stesso strumento è disponibile separatamente nel menu principale.",
|
||||
"subTitle": "Non applicare a un host con abbonamento",
|
||||
"subBody": "Se hai un abbonamento Proxmox e vuoi mantenere i repository Enterprise, salta l’opzione. Disabilita Enterprise e passa al canale della community. L’aggiornamento dei pacchetti e la riscrittura dei repository non sono reversibili da Disinstalla ottimizzazioni; riconfigura esplicitamente i repository per cambiare canale in seguito.",
|
||||
"safetyTitle": "Controllo di sicurezza post-update",
|
||||
"safetyBody": "Dopo l’aggiornamento, lo script cerca vecchi metadati di volumi fisici (PV) sui dischi. Può accadere quando una VM con passthrough scrive intestazioni LVM su un disco grezzo. Se rileva qualcosa di sospetto, avvisa e suggerisce <code>pvs</code> per l’ispezione. Nessuna azione automatica."
|
||||
},
|
||||
"time": {
|
||||
"heading": "Sincronizza l’ora automaticamente",
|
||||
"intro": "Rileva l'IP pubblico del server tramite <code>dig myip.opendns.com @resolver1.opendns.com</code>, quindi chiede a <code>ipapi.co/'{'ip'}'/timezone</code> di cercare il fuso orario IANA corrispondente e applicarlo con <code>timedatectl set-timezone</code>. Infine consente NTP con <code>timedatectl set-ntp true</code>.",
|
||||
"depTitle": "Dipende da due servizi esterni",
|
||||
"depBody": "La ricerca si basa su OpenDNS e <code>ipapi.co</code> raggiungibile, e sulle loro risposte sono corrette. Se si esegue Proxmox dietro una VPN o su un VLAN che evade da una regione diversa, il fuso orario auto-detected potrebbe essere sbagliato. In questo caso saltare questa opzione e impostare il fuso orario a mano:",
|
||||
"revertTitle": "Reversibile dal menu Disinstalla",
|
||||
"revertBody": "<link>Disinstalla ottimizzazioni</link> reimposta il fuso orario su UTC, un valore sicuro. NTP resta attivo: l’orologio continua a sincronizzarsi e mostra UTC finché non imposti un altro fuso."
|
||||
},
|
||||
"languages": {
|
||||
"heading": "Salta il download di lingue aggiuntive",
|
||||
"intro": "Durante <code>apt update</code>, APT può scaricare descrizioni tradotte dei pacchetti oltre ai metadati principali. L’opzione le disattiva per risparmiare banda e spazio. Prima, ProxMenux <strong>verifica che la locale dell’host sia generata</strong>: legge <code>/etc/default/locale</code> o <code>/etc/environment</code>, aggiunge a <code>/etc/locale.gen</code> se manca ed esegue <code>locale-gen</code>. Le impostazioni locali della shell restano quindi intatte.",
|
||||
"writtenTitle": "Cosa si scrive",
|
||||
"revertTitle": "Reversibile dal menu Disinstalla",
|
||||
"revertBody": "Cancellare <code>/etc/apt/apt.conf.d/99-disable-translations</code> (sia manualmente che dal menu Disinstalla) ripristina il comportamento predefinito e APT scarica nuovamente i file di lingua."
|
||||
},
|
||||
"utilities": {
|
||||
"heading": "Installa utilità di sistema comuni",
|
||||
"intro": "Apre una lista di <strong>25 utilità selezionate</strong> in gruppi. Scegli e conferma: ProxMenux le installa con <code>apt</code>, verifica il risultato e mostra un riepilogo finale.",
|
||||
"imageAlt": "Selettore delle utilità ProxMenux: Spazio per selezionare, Invio per confermare",
|
||||
"reuseTitle": "La stessa lista viene riutilizzata altrove",
|
||||
"reuseBody": "Il catalogo di 25 utilità è definito in un solo punto: <code>PROXMENUX_UTILS</code> in <code>scripts/global/utils-install-functions.sh</code>. Il menu <em>Utilità e strumenti → Utilità di sistema</em> mostra la stessa lista per aggiungerne altre in seguito senza ripetere la post-installazione.",
|
||||
"listTitle": "Cosa c'è nella lista",
|
||||
"groups": [
|
||||
{
|
||||
"group": "Monitor di sistema",
|
||||
"items": [
|
||||
{
|
||||
"pkg": "htop",
|
||||
"desc": "Visualizzatore interattivo dei processi"
|
||||
},
|
||||
{
|
||||
"pkg": "btop",
|
||||
"desc": "Monitor di risorse moderne (CPU, RAM, dischi, rete, processi)"
|
||||
},
|
||||
{
|
||||
"pkg": "s-tui",
|
||||
"desc": "Interfaccia terminale per stress test e monitoraggio CPU"
|
||||
},
|
||||
{
|
||||
"pkg": "iftop",
|
||||
"desc": "Uso della larghezza di banda per connessione in tempo reale"
|
||||
},
|
||||
{
|
||||
"pkg": "iotop",
|
||||
"desc": "I/O disco per processo"
|
||||
},
|
||||
{
|
||||
"pkg": "iptraf-ng",
|
||||
"desc": "Monitor LAN IP interattivo"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"group": "Rete",
|
||||
"items": [
|
||||
{
|
||||
"pkg": "iperf3",
|
||||
"desc": "Misura la larghezza di banda massima raggiungibile tra gli host"
|
||||
},
|
||||
{
|
||||
"pkg": "net-tools",
|
||||
"desc": "Strumenti legacy (ifconfig, netstat, route). Ancora utile per i controlli rapidi."
|
||||
},
|
||||
{
|
||||
"pkg": "ipset",
|
||||
"desc": "Gestire grandi set IP nel kernel — utile con le regole iptables/nftables."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"group": "Download e archivi",
|
||||
"items": [
|
||||
{
|
||||
"pkg": "axel",
|
||||
"desc": "Acceleratore di download parallelo leggero"
|
||||
},
|
||||
{
|
||||
"pkg": "aria2",
|
||||
"desc": "Downloader multi-source / multi-protocollo (HTTP, FTP, BitTorrent, Metalink)"
|
||||
},
|
||||
{
|
||||
"pkg": "unzip",
|
||||
"desc": "Estrarre archivi ZIP"
|
||||
},
|
||||
{
|
||||
"pkg": "zip",
|
||||
"desc": "Crea archivi ZIP"
|
||||
},
|
||||
{
|
||||
"pkg": "cabextract",
|
||||
"desc": "Estrarre archivi Microsoft CAB (utile con le ISO di Windows)"
|
||||
},
|
||||
{
|
||||
"pkg": "wimtools",
|
||||
"desc": "Gestire immagini WIM di Windows (estrarre, dividere, montare, applicare)"
|
||||
},
|
||||
{
|
||||
"pkg": "genisoimage",
|
||||
"desc": "Costruisci immagini ISO 9660 da un albero di directory"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"group": "Testo e file",
|
||||
"items": [
|
||||
{
|
||||
"pkg": "dos2unix",
|
||||
"desc": "Convertire i terminatori di riga CRLF (Windows) in LF (Unix)"
|
||||
},
|
||||
{
|
||||
"pkg": "grc",
|
||||
"desc": "Colorazione generica: applica l’evidenziazione della sintassi all’output di ping, traceroute, dig, tail e altri comandi"
|
||||
},
|
||||
{
|
||||
"pkg": "plocate",
|
||||
"desc": "Ricerca file veloce (indicizzata). Eseguire `updatedb` dopo l'installazione per costruire l'indice."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"group": "Accesso remoto e sessioni",
|
||||
"items": [
|
||||
{
|
||||
"pkg": "sshpass",
|
||||
"desc": "Autenticazione SSH con password senza interazione (utile negli script, non nell’uso quotidiano)"
|
||||
},
|
||||
{
|
||||
"pkg": "tmux",
|
||||
"desc": "Multiplexer di terminale: scollegare sessioni, dividere pannelli e mantenere le sessioni dopo una disconnessione"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"group": "Hardware e basso livello",
|
||||
"items": [
|
||||
{
|
||||
"pkg": "msr-tools",
|
||||
"desc": "Lettura/scrittura dei registri specifici del modello CPU (rdmsr, wrmsr)"
|
||||
},
|
||||
{
|
||||
"pkg": "intel-gpu-tools",
|
||||
"desc": "Utilità diagnostiche Intel GPU tra cui `intel_gpu_top`"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"group": "Virtualizzazione",
|
||||
"items": [
|
||||
{
|
||||
"pkg": "libguestfs-tools",
|
||||
"desc": "Ispezionare e modificare immagini disco VM (virt-ls, virt-cat, guestmount...)"
|
||||
},
|
||||
{
|
||||
"pkg": "chntpw",
|
||||
"desc": "Modifica SAM di Windows — utile per il recupero di password su VM Windows che eredite"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"actionTitle": "Alcuni di loro in azione",
|
||||
"noBulkTitle": "Vengono rimosse solo le utilità installate da ProxMenux",
|
||||
"noBulkBody": "ProxMenux registra solo i pacchetti selezionati che non erano già installati. Disinstalla ottimizzazioni li rimuove completamente e conserva quelli già presenti. Gli aggiornamenti APT non hanno un ripristino atomico sicuro: disinstallare le utilità non annulla l’aggiornamento del sistema."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"label": "Aggiornamento sistema Proxmox",
|
||||
"href": "/docs/utils/system-update",
|
||||
"tail": " — Riesegue il ciclo apt update + dist-upgrade su richiesta."
|
||||
},
|
||||
{
|
||||
"label": "Installatore delle utilità di sistema",
|
||||
"href": "/docs/utils/system-utils",
|
||||
"tail": "— installare (o reinstallare) le utilità singolarmente dopo l'installazione."
|
||||
},
|
||||
{
|
||||
"label": "Comandi aggiornamenti e pacchetti",
|
||||
"href": "/docs/help-info/update-commands",
|
||||
"tail": " — Riferimento apt per la shell."
|
||||
},
|
||||
{
|
||||
"label": "Post-installazione personalizzabile",
|
||||
"href": "/docs/post-install/customizable",
|
||||
"tail": " — torna al menu superiore."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,106 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Script post-installazione personalizzabile | Documentazione ProxMenux",
|
||||
"description": "Scegli esattamente quali ottimizzazioni applicare a un host Proxmox VE con ProxMenux. 10 categorie, circa 35 strumenti e un’interfaccia con caselle di selezione. Include tutto lo script Automatizzato, più opzioni esplicite (IOMMU, Fastfetch, Figurine, Ceph, HA, correzioni AMD…).",
|
||||
"ogTitle": "Script post-installazione personalizzabile | Documentazione ProxMenux",
|
||||
"ogDescription": "10 categorie, circa 35 ottimizzazioni individuali. Scegli esattamente cosa vuoi su un host Proxmox VE. Le modifiche reversibili sono registrate."
|
||||
},
|
||||
"header": {
|
||||
"title": "Script post-installazione personalizzabile",
|
||||
"description": "Scegli esattamente quali ottimizzazioni applicare a un host Proxmox VE. ProxMenux raggruppa circa 35 strumenti in 10 categorie in un’unica finestra con caselle di selezione. Lo stesso motore di Automatizzato, con controllo completo sulle modifiche.",
|
||||
"section": "Post-installazione · Personalizzabile"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Quando scegliere Personalizzabile",
|
||||
"body": "Scegli questa opzione se sai già quali regolazioni vuoi o non vuoi sull’host. Una lista con caselle raggruppate per categoria permette di selezionare, deselezionare e combinare le ottimizzazioni. Puoi riapplicarle in seguito; le modifiche reversibili sono registrate per <link>Disinstalla ottimizzazioni</link>. Gli aggiornamenti dei pacchetti non sono presentati come reversibili."
|
||||
},
|
||||
"compare": {
|
||||
"heading": "Confronto con Automatizzato",
|
||||
"body": "Personalizzabile include tutto lo <link>script Automatizzato</link>: le stesse 14 ottimizzazioni di base e molte opzioni che Automatizzato omette intenzionalmente, utili per hardware specifico (correzioni AMD), hosting specifico (OVH RTM) o carichi particolari (IOMMU/VFIO, repository Ceph, alta disponibilità, Fastfetch, Figurine, regolazione dell’ARC ZFS, pigz, istantanee ZFS automatiche, limiti di velocità vzdump, Open vSwitch, TCP BBR…)."
|
||||
},
|
||||
"categoriesSection": {
|
||||
"heading": "Le 10 categorie",
|
||||
"body": "Lo script Personalizzabile raggruppa le ottimizzazioni in 10 categorie in un’unica finestra con caselle di selezione. Ogni categoria ha una pagina di documentazione: apri una scheda per motivazioni, valori predefiniti e verifiche di ogni opzione."
|
||||
},
|
||||
"categories": [
|
||||
{
|
||||
"name": "Impostazioni di base",
|
||||
"description": "Pulisce le sorgenti APT, esegue l’aggiornamento ufficiale Proxmox e imposta fuso orario, impostazioni locali e utilità comuni. La base di tutte le altre categorie."
|
||||
},
|
||||
{
|
||||
"name": "Sistema",
|
||||
"description": "Regola i log e i limiti del kernel per un host che ospita molte VM e container. Include journald, logrotate, sysctl (memoria, limiti dei file), comportamento in caso di kernel panic e riavvii rapidi."
|
||||
},
|
||||
{
|
||||
"name": "Virtualizzazione",
|
||||
"description": "Prepara l’host per la virtualizzazione avanzata. Installa l’agente guest adatto quando Proxmox stesso gira in una VM supportata e abilita IOMMU/VFIO per il passthrough PCI di GPU, controller e TPU."
|
||||
},
|
||||
{
|
||||
"name": "Rete",
|
||||
"description": "Rafforza e regola lo stack di rete dell’host. Forza APT su IPv4, applica impostazioni di sicurezza sysctl e buffer TCP, offre Open vSwitch, TCP BBR e TCP Fast Open e associa nomi persistenti delle interfacce agli indirizzi MAC."
|
||||
},
|
||||
{
|
||||
"name": "Archiviazione",
|
||||
"description": "Configura i comuni sottosistemi di archiviazione Proxmox: dimensione dell’ARC ZFS, istantanee ZFS automatiche, autotrim ZFS per pool SSD/NVMe e limiti di velocità vzdump per evitare di saturare i dischi durante i backup."
|
||||
},
|
||||
{
|
||||
"name": "Sicurezza",
|
||||
"description": "Riduce la superficie di attacco esposta per impostazione predefinita. Disattiva i servizi RPC portmapper/rpcbind che Proxmox non richiede ma lascia in ascolto."
|
||||
},
|
||||
{
|
||||
"name": "Personalizzazione",
|
||||
"description": "Modificare l'esperienza visiva e shell dell'ospite: colori e alias in bashrc, banner MOTD e rimozione dell'avviso di abbonamento nell'interfaccia utente web."
|
||||
},
|
||||
{
|
||||
"name": "Monitoraggio",
|
||||
"description": "Integra l’host con OVH Real-Time Monitoring. Installa RTM solo se ProxMenux rileva un server OVH; sugli altri host non apporta modifiche."
|
||||
},
|
||||
{
|
||||
"name": "Prestazioni",
|
||||
"description": "Accelerare le operazioni di compressione (backup, trasferimenti) sostituendo gzip con la sua controparte parallela pigz."
|
||||
},
|
||||
{
|
||||
"name": "Opzionale",
|
||||
"description": "Opzioni specializzate non necessarie a tutti gli host: correzioni CPU AMD, banner Fastfetch, nome host 3D con Figurine, aggiornamento dell’indice PVE Appliance Manager, repository Ceph, servizi di alta disponibilità, Log2RAM per ridurre l’usura degli SSD e profilo swap ZRAM."
|
||||
}
|
||||
],
|
||||
"mixTip": {
|
||||
"title": "Combina Automatizzato e Personalizzabile",
|
||||
"body": "Un uso comune: esegui prima <strong>Automatizzato</strong> per la configurazione di base, poi apri <strong>Personalizzabile</strong> e scegli solo gli strumenti opzionali utili, come IOMMU per il passthrough GPU. Le modifiche sono registrate separatamente; Disinstalla mostra tutto ciò che hai applicato, indipendentemente dalla modalità usata."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"label": "Post-installazione automatizzata",
|
||||
"href": "/docs/post-install/automated",
|
||||
"tail": " — impostazioni predefinite ragionevoli applicate senza domande."
|
||||
},
|
||||
{
|
||||
"label": "Disinstalla ottimizzazioni",
|
||||
"href": "/docs/post-install/uninstall",
|
||||
"tail": " — annulla in modo pulito le opzioni selezionate."
|
||||
},
|
||||
{
|
||||
"label": "Impostazioni di base",
|
||||
"href": "/docs/post-install/basic-settings",
|
||||
"tail": "— repos, tempo, lingua, utilità."
|
||||
},
|
||||
{
|
||||
"label": "Virtualizzazione",
|
||||
"href": "/docs/post-install/virtualization",
|
||||
"tail": "— IOMMU + VFIO per il passaggio."
|
||||
},
|
||||
{
|
||||
"label": "Sicurezza",
|
||||
"href": "/docs/post-install/security",
|
||||
"tailRich": " · <storageLink>Archiviazione</storageLink> · <networkLink>Rete</networkLink> · <customLink>Personalizzazione</customLink> — altre categorie."
|
||||
},
|
||||
{
|
||||
"label": "Panoramica post-installazione",
|
||||
"href": "/docs/post-install",
|
||||
"tail": "."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Post-Install: Personalizzazione | Documentazione ProxMenux",
|
||||
"description": "Opzioni di personalizzazione nello script post-installazione personalizzabile di ProxMenux: prompt bash colorato con alias utili, banner ProxMenux nel MOTD e rimozione dell’avviso di abbonamento dall’interfaccia web Proxmox."
|
||||
},
|
||||
"header": {
|
||||
"title": "Dopo l'installazione: personalizzazione",
|
||||
"description": "Regolazioni estetiche e pratiche per l’host Proxmox. Rendono la shell più piacevole e nascondono l’avviso di abbonamento nell’interfaccia web. Bashrc, MOTD e banner sono registrati e reversibili dal menu Disinstalla.",
|
||||
"section": "Impostazioni post-installazione Proxmox"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Che cosa copre questa categoria",
|
||||
"body": "Tre piccole opzioni indipendenti: un <strong>prompt bash colorato con alias</strong> per la shell root, un <strong>banner MOTD</strong> di una riga visibile all’accesso SSH e la rimozione della <strong>finestra «Nessun abbonamento valido»</strong> mostrata a ogni accesso all’interfaccia web Proxmox."
|
||||
},
|
||||
"bashrc": {
|
||||
"heading": "Personalizza bashrc",
|
||||
"intro": "Inserisce in <code>/root/.bashrc</code> un blocco con prompt colorato, cronologia con data e ora, alias standard di <code>ls</code> / <code>grep</code> e un <code>source</code> per il completamento bash. Migliora il lavoro via SSH e rende chiaro su quale host ti trovi quando hai molte schede aperte.",
|
||||
"writesTitle": "Ciò che ProxMenux aggiunge a .bashrc",
|
||||
"writesOutro": "Il blocco è delimitato dai marcatori <code>PMX_CORE_BASHRC</code>. Eseguire di nuovo lo script sostituisce il blocco precedente senza duplicarlo. L’originale <code>.bashrc</code> viene salvato una volta in <code>/root/.bashrc.bak</code> e una riga <code>source /root/.bashrc</code> viene aggiunta a <code>/root/.bash_profile</code> per applicare il prompt anche alle shell di login, ad esempio dopo <code>su -</code>.",
|
||||
"rootTitle": "Si applica solo a root",
|
||||
"rootBody": "La personalizzazione si applica alla shell dell’account root. Gli altri utenti creati sull’host mantengono le proprie impostazioni predefinite. Se amministri Proxmox esclusivamente dall’interfaccia web e non usi mai la shell, questa opzione ha solo un effetto estetico e puoi saltarla."
|
||||
},
|
||||
"motd": {
|
||||
"heading": "Imposta un banner MOTD personalizzato",
|
||||
"intro": "Antepone <em>\"This system is optimised by: ProxMenux\"</em> a <code>/etc/motd</code>, il messaggio dopo un accesso SSH riuscito, sopra il prompt e prima degli script <code>update-motd</code>. Innocuo e puramente informativo: conferma a colpo d’occhio che ProxMenux è stato applicato sull’host.",
|
||||
"writesTitle": "Cosa scrive ProxMenux",
|
||||
"writesOutro": "Alla prima applicazione, ProxMenux registra se <code>/etc/motd</code> esisteva e ne salva il contenuto originale in <code>/usr/local/share/proxmenux</code>. L’operazione è idempotente: se la riga identificativa è già presente, non viene aggiunta. Le installazioni precedenti con <code>/etc/motd.bak</code> vengono migrate allo stesso stato reversibile."
|
||||
},
|
||||
"banner": {
|
||||
"heading": "Rimuovi il banner di abbonamento",
|
||||
"intro": "Rimuove la finestra <em>«Non hai un abbonamento valido per questo server»</em> che appare a ogni accesso web Proxmox senza abbonamento Enterprise. ProxMenux tiene conto della versione e avvia lo script adatto ai diversi pacchetti dell’interfaccia delle versioni principali.",
|
||||
"versionTitle": "Scelta dello script in base alla versione",
|
||||
"versionItems": [
|
||||
"<strong>PVE 9.x</strong> → esegue <code>remove-banner-pve-v3.sh</code>, che modifica <code>proxmoxlib.js</code> per desktop e la nuova interfaccia mobile basata su Yew.",
|
||||
"<strong>PVE 8.x</strong> → esegue <code>remove-banner-pve8.sh</code>, solo per l’interfaccia desktop."
|
||||
],
|
||||
"versionOutro": "Prima della modifica, ProxMenux salva i file JS/template originali in <code>/usr/local/share/proxmenux/backups/</code> con data e ora. Disinstalla usa queste copie per ripristinarli; se il backup manca o è danneggiato, reinstalla i pacchetti dell’interfaccia Proxmox.",
|
||||
"breakTitle": "Può rompersi dopo gli aggiornamenti di Proxmox",
|
||||
"breakBody": "Gli aggiornamenti dell’interfaccia Proxmox sovrascrivono spesso <code>proxmoxlib.js</code> e possono far tornare l’avviso. Puoi riapplicare l’opzione per modificare il file oppure accettare l’avviso fino ad allora. ProxMenux installa anche un hook APT che riapplica la modifica dopo gli aggiornamenti dei pacchetti: vedi <link>Disinstalla ottimizzazioni</link> per rimuoverlo.",
|
||||
"legalTitle": "Nota legale (sempre vale la pena ripetere)",
|
||||
"legalBody": "Questa opzione nasconde solo l’avviso dell’interfaccia. <strong>Non</strong> concede supporto Enterprise o accesso al repository Enterprise e non cambia la licenza del software. Proxmox VE è distribuito sotto GNU AGPLv3. Un abbonamento sostiene il progetto e dà accesso al canale di aggiornamento Enterprise: scegli il supporto adatto al tuo ambiente."
|
||||
},
|
||||
"verify": {
|
||||
"heading": "Verifica",
|
||||
"intro": "Dopo aver applicato tutti e tre:",
|
||||
"reversibleTitle": "Tutti e tre i cambiamenti di personalizzazione sono tracciati",
|
||||
"reversibleBody": "<link>Disinstalla ottimizzazioni</link> ripristina <code>/root/.bashrc</code>, riporta MOTD al contenuto esatto precedente a ProxMenux o elimina il file se prima non esisteva e ripristina i file dell’interfaccia modificati dal backup oppure reinstalla i pacchetti necessari."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"label": "Opzionale",
|
||||
"href": "/docs/post-install/optional",
|
||||
"tail": " — Fastfetch e Figurine, altre personalizzazioni visive."
|
||||
},
|
||||
{
|
||||
"label": "Mostra informazioni sulla versione",
|
||||
"href": "/docs/settings/show-version-information",
|
||||
"tail": " — conferma che le personalizzazioni sono registrate come installate."
|
||||
},
|
||||
{
|
||||
"label": "Disinstalla ottimizzazioni",
|
||||
"href": "/docs/post-install/uninstall",
|
||||
"tail": " — ripristina bashrc, motd e l’avviso di abbonamento."
|
||||
},
|
||||
{
|
||||
"label": "Post-installazione personalizzabile",
|
||||
"href": "/docs/post-install/customizable",
|
||||
"tail": " — torna al menu superiore."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,106 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Script post-installazione di Proxmox VE — Automatizzato e personalizzabile | ProxMenux",
|
||||
"description": "Panoramica degli script post-installazione di ProxMenux per Proxmox VE. Automatizzato applica impostazioni predefinite ragionevoli senza domande; Personalizzabile permette di scegliere esattamente cosa applicare in 10 categorie; Disinstalla ottimizzazioni ripristina le modifiche reversibili supportate.",
|
||||
"ogTitle": "Script post-installazione di Proxmox VE — Automatizzato e personalizzabile",
|
||||
"ogDescription": "Applica le comuni ottimizzazioni post-installazione di Proxmox VE in 10 categorie, automaticamente o a scelta, con opzioni reversibili.",
|
||||
"twitterTitle": "Script dopo l'installazione di Proxmox VE | ProxMenux",
|
||||
"twitterDescription": "Ottimizzazione post-installazione automatizzata e personalizzabile per Proxmox VE — con opzioni reversibili."
|
||||
},
|
||||
"header": {
|
||||
"title": "Script dopo l'installazione",
|
||||
"description": "Configura un host Proxmox VE appena installato con le ottimizzazioni post-installazione di ProxMenux. Applica automaticamente la configurazione di base, scegli le singole opzioni, aggiorna le funzioni installate o ripristina le modifiche reversibili supportate. Gli aggiornamenti dei pacchetti non sono presentati come reversibili.",
|
||||
"section": "Impostazioni post-installazione Proxmox"
|
||||
},
|
||||
"intro": {
|
||||
"title": "A cosa serve questo menu",
|
||||
"body": "Dopo l’installazione di Proxmox VE, decine di piccole modifiche rendono l’host più veloce e più facile da mantenere: repository senza abbonamento, limiti ragionevoli per journald, buffer TCP adeguati, salvataggio dei log che preserva gli SSD, miglioramenti di bashrc e altro. ProxMenux le automatizza e registra le modifiche di configurazione reversibili supportate."
|
||||
},
|
||||
"openingMenu": {
|
||||
"heading": "Apertura del menu",
|
||||
"body": "Dal menu principale di ProxMenux, selezionare <strong>Impostazioni post-installazione Proxmox</strong>. Vedrai questo:",
|
||||
"imageAlt": "Menu degli script post-installazione: Automatizzato, Personalizzabile, la voce condizionale Applica aggiornamenti disponibili (solo se ci sono aggiornamenti in attesa) e Disinstalla, seguiti dalla sezione Script della community"
|
||||
},
|
||||
"threeWays": {
|
||||
"heading": "Quattro modi per applicare le ottimizzazioni",
|
||||
"body": "Le quattro voci ProxMenux condividono lo stesso codice e registro degli strumenti installati, offrendo diversi livelli di controllo. <em>Applica aggiornamenti disponibili</em> compare solo se almeno un’ottimizzazione installata ha una versione su disco più recente di quella registrata; resta nascosta su un host appena configurato."
|
||||
},
|
||||
"routes": [
|
||||
{
|
||||
"title": "Automatizzato",
|
||||
"description": "Una serie curata di 14 ottimizzazioni sicure e sempre utili applicate in sequenza con zero prompt. Buon default per la maggior parte degli utenti.",
|
||||
"bullets": [
|
||||
"Repository senza abbonamento + aggiornamento del sistema",
|
||||
"Memoria, kernel, rete tuning",
|
||||
"Log2RAM (rilevamento automatico su SSD/NVMe)",
|
||||
"Limiti di dimensione Journald + logrotate",
|
||||
"Nomi di interfaccia persistenti"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Personalizzabile",
|
||||
"description": "Circa 35 ottimizzazioni individuali in 10 categorie. Scegli esattamente quali applicare. Lo stesso motore di Automatizzato, con controllo completo.",
|
||||
"bullets": [
|
||||
"Interfaccia con caselle di selezione per categoria",
|
||||
"Include tutto ciò che fa Automatizzato, più opzioni da attivare esplicitamente (IOMMU, Fastfetch, Figurine, Ceph, HA, correzioni AMD…)",
|
||||
"Eseguilo quante volte vuoi: le modifiche sono idempotenti"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Applica aggiornamenti disponibili",
|
||||
"description": "Quando un’ottimizzazione post-installazione (Log2Ram, impostazioni della memoria, Logrotate…) ha una versione su disco più recente di quella registrata sull’host, questa voce mostra solo quelle cambiate. Esegue di nuovo la funzione corrispondente e aggiorna il registro, senza toccare altro.",
|
||||
"bullets": [
|
||||
"Scelta esplicita per ogni ottimizzazione, solo quelle cambiate",
|
||||
"Lo stesso selettore è disponibile nella dashboard di Monitor",
|
||||
"Un’unica notifica raggruppata quando arrivano nuovi aggiornamenti"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Disinstalla ottimizzazioni",
|
||||
"description": "Le modifiche reversibili supportate sono registrate in un registro JSON e associate a una funzione di ripristino. Le azioni senza un ripristino sicuro, come un aggiornamento completo dei pacchetti, sono escluse intenzionalmente.",
|
||||
"bullets": [
|
||||
"Rileva automaticamente le ottimizzazioni precedentemente applicate",
|
||||
"Sceglie il ripristino adatto a ogni voce: ripristina il backup .bak, se creato, elimina il frammento di configurazione sysctl.d se non serviva alcun backup oppure reinstalla il pacchetto originale con --force-confnew (ad esempio per il banner dell’abbonamento)",
|
||||
"Richiesta di riavvio se necessario (VFIO, nomi persistenti, ecc.)"
|
||||
]
|
||||
}
|
||||
],
|
||||
"whichTitle": "Quale dovrebbe scegliere?",
|
||||
"whichBody": "Per una nuova installazione Proxmox con una configurazione di base ragionevole senza decisioni: <autoLink><strong>Automatizzato</strong></autoLink>. Se sai già quali regolazioni vuoi o non vuoi: <customLink><strong>Personalizzabile</strong></customLink>. Per aggiornare solo un’ottimizzazione già applicata di cui esiste una versione più recente su disco: <updatesLink><strong>Applica aggiornamenti disponibili</strong></updatesLink>. Per annullare in modo pulito modifiche precedenti: <uninstallLink><strong>Disinstalla ottimizzazioni</strong></uninstallLink>. Puoi combinarli: prima Automatizzato, poi aggiungi opzioni come Fastfetch o IOMMU con Personalizzabile e annulla singole voci in seguito.",
|
||||
"mixing": {
|
||||
"heading": "Combinare con altri script post-installazione",
|
||||
"stackTitle": "Non impilare più script post-installazione",
|
||||
"stackBody": "Eseguire più script post-installazione sullo stesso host può creare file di configurazione duplicati, voci sysctl in conflitto o persino interrompere la rete dopo il riavvio. Se hai già applicato <strong>Helper-Scripts Post Install</strong>, alcune ottimizzazioni ProxMenux possono sovrapporsi alla sua configurazione. Usa un solo strumento post-installazione per host.",
|
||||
"xshokTitle": "xshok-proxmox: deprecato",
|
||||
"xshokBody": "Le versioni precedenti di ProxMenux indicavano <a>xshok-proxmox</a> come strumento post-installazione complementare. Il progetto è ora deprecato e non è più offerto da ProxMenux. Se una vecchia esecuzione ha lasciato marcatori sull’host, ProxMenux li rileva ancora e avvisa. Oggi non è però uno strumento da installare accanto a ProxMenux."
|
||||
},
|
||||
"community": {
|
||||
"heading": "Script della community",
|
||||
"body": "Il menu offre anche due script di terze parti del progetto <a>community-scripts</a>: <em>Proxmox VE Post Install</em> e <em>Proxmox VE Microcode</em>. Sono wrapper che scaricano ed eseguono gli script originali tramite <code>wget | bash</code>. ProxMenux non li mantiene. Vedi <link>Repository esterni</link> per dettagli e valutazioni sull’affidabilità prima di eseguirli."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"label": "Aggiornamento sistema Proxmox",
|
||||
"href": "/docs/utils/system-update",
|
||||
"tail": "— mantiene l'host aggiornato una volta che è stato post-installato."
|
||||
},
|
||||
{
|
||||
"label": "Sicurezza",
|
||||
"href": "/docs/security",
|
||||
"tail": " — Fail2Ban + Lynis oltre alle misure di sicurezza post-installazione."
|
||||
},
|
||||
{
|
||||
"label": "Mostra informazioni sulla versione",
|
||||
"href": "/docs/settings/show-version-information",
|
||||
"tail": "— vedere quali componenti post-installazione vengono tracciati come installati."
|
||||
},
|
||||
{
|
||||
"label": "Comandi aggiornamenti e pacchetti",
|
||||
"href": "/docs/help-info/update-commands",
|
||||
"tail": "— riferimento per apt / pveupgrade."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Post-Install: Monitoraggio | Documentazione ProxMenux",
|
||||
"description": "Opzioni di monitoraggio nello script ProxMenux Personalizzabile post-installazione. Attualmente un'unica opzione: installare OVH Real-Time Monitoring (RTM), che si attiva solo se l'host viene rilevato come server OVH."
|
||||
},
|
||||
"header": {
|
||||
"title": "Dopo l'installazione: monitoraggio",
|
||||
"description": "Opzioni di monitoraggio all'interno dello script di installazione post personalizzabile. Questa categoria è piccola e specifica del fornitore — installa l'agente di monitoraggio OVH in tempo reale su server OVH dedicati e non fa nulla altrove.",
|
||||
"section": "Impostazioni post-installazione Proxmox"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Ambito volutamente limitato",
|
||||
"body": "Il monitoraggio post-installazione si limita a <strong>un agente specifico di un fornitore</strong>. Gli strumenti generici (Prometheus, Grafana, node_exporter) sono esclusi perché richiedono scelte architetturali — host separato, conservazione dei dati, destinazioni degli avvisi — che non si adattano a un passaggio con un clic. ProxMenux Monitor, incluso in ProxMenux, svolge gran parte di quel ruolo senza agenti esterni."
|
||||
},
|
||||
"ovh": {
|
||||
"heading": "Installare il monitoraggio in tempo reale OVH (RTM)",
|
||||
"intro": "Se il vostro host Proxmox è un server dedicato affittato da <a>OVHcloud</a>, è possibile attivare RTM per esporre la telemetria hardware (CPU temperatura, stato PSU, disco SMART, stato del controller RAID, ecc.) al pannello di controllo OVH. Questo è lo stesso agente OVH utilizza per la propria funzione \"Server Monitoring\".",
|
||||
"decisionsTitle": "Come decide ProxMenux",
|
||||
"decisionsItems": [
|
||||
"Ottiene l'IP pubblico dell'host tramite <code>curl ipinfo.io/ip</code>.",
|
||||
"Cerca il provider proprietario tramite una query <code>whois</code> a <code>v4.whois.cymru.com</code>.",
|
||||
"Se il risultato menziona OVH, scarica <code>last-public-ovh-infra-yak.snap.mirrors.ovh.net/yak/archives/apply.sh</code> e lo passa a <code>bash</code> con il manifest Puppet di RTM v2.",
|
||||
"Se il risultato <em>non</em> menziona OVH, non è installato nulla. L'opzione è una no-op."
|
||||
],
|
||||
"remoteTitle": "Script remoto passato a bash tramite pipe",
|
||||
"remoteBody": "L’installazione esegue <code>wget -qO - https://…apply.sh | bash</code>. Se il mirror OVH viene compromesso, lo script viene eseguito come root sull’host. Prima di attivare l’opzione, valuta la fiducia nella catena dei mirror OVH rispetto al beneficio del monitoraggio. Per la maggior parte degli utenti domestici o non OVH, l’opzione dovrebbe restare disattivata.",
|
||||
"noOpTitle": "Attiva solo se l'host è effettivamente in OVH",
|
||||
"noOpBody": "L’opzione non modifica i server non OVH, quindi selezionarla su un Proxmox domestico non rompe nulla. Su un host non OVH lo script mostra <em>«Non è un server OVH, installazione RTM saltata»</em> e termina senza installare pacchetti.",
|
||||
"runsTitle": "Cosa esegue ProxMenux",
|
||||
"verifyTitle": "Verifica",
|
||||
"verifyBody": "Su un vero host OVH, dopo il riavvio dovresti vedere la <a>dashboard RTM</a> in OVH Manager con dati dell’host in tempo reale. Sul lato Proxmox, il raccoglitore RTM è un servizio systemd: controllalo direttamente:",
|
||||
"troubleTitle": "Risoluzione dei problemi",
|
||||
"revertTitle": "Rimuovi RTM dal menu Disinstalla",
|
||||
"revertBody": "Se RTM è registrato come installato, Disinstalla ottimizzazioni offre una voce OVH Real-Time Monitoring. Esegue <code>apt-get purge -y ''ovh-rtm*'' ''rtm'' ''rtm-*''</code>, elimina /etc/rtm e registra RTM come disinstallato. I residui Puppet possono richiedere pulizia manuale: controlla i manifest specifici di RTM in <code>/etc/puppet/</code>. Su un host non OVH non sono stati installati pacchetti RTM, quindi non c’è nulla da rimuovere."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"label": "ProxMenux Monitor",
|
||||
"href": "/docs/settings/proxmenux-monitor",
|
||||
"tail": "— dashboard web locale per l'host (lavora su qualsiasi fornitore, non solo OVH)."
|
||||
},
|
||||
{
|
||||
"label": "Comandi di sistema utili",
|
||||
"href": "/docs/help-info/system-commands",
|
||||
"tail": " — riferimento per il monitoraggio dell’host locale."
|
||||
},
|
||||
{
|
||||
"label": "Post-installazione personalizzabile",
|
||||
"href": "/docs/post-install/customizable",
|
||||
"tail": " — torna al menu superiore."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,128 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Post-installazione: Rete | Documentazione ProxMenux",
|
||||
"description": "Opzioni di rete dello script post-installazione personalizzabile ProxMenux: forzare APT su IPv4, applicare un profilo sysctl selezionato, installare Open vSwitch, abilitare TCP BBR + Fast Open e associare i nomi delle interfacce ai loro indirizzi MAC."
|
||||
},
|
||||
"header": {
|
||||
"title": "Post-Install: Rete",
|
||||
"section": "Impostazioni post-installazione Proxmox"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Che cosa copre questa categoria",
|
||||
"body": "Cinque opzioni di rete indipendenti. Due sono semplici (<strong>APT su IPv4</strong>, <strong>installazione di Open vSwitch</strong>), due regolano il comportamento TCP (<strong>profilo sysctl di rete</strong>, <strong>BBR + Fast Open</strong>) e una risolve un problema comune: <strong>fissare i nomi delle interfacce</strong>, affinché una nuova scheda di rete o un aggiornamento BIOS non rinomini <code>enp3s0</code> in <code>enp4s0</code> e non interrompa i bridge."
|
||||
},
|
||||
"ipv4": {
|
||||
"heading": "Forza APT a usare IPv4",
|
||||
"intro": "Scrive <code>Acquire::ForceIPv4 \"true\";</code> a <code>/etc/apt/apt.conf.d/99-force-ipv4</code>. APT si rifiuta quindi di utilizzare IPv6 per i download dei pacchetti, anche se l'host ha connettività IPv6.",
|
||||
"tipTitle": "Chi beneficia",
|
||||
"tipBody": "Utile se la connessione IPv6 è instabile, più lenta di IPv4 o se il mirror Debian/Proxmox a volte non funziona su IPv6. Non crea problemi sugli host senza IPv6. Su una rete dual stack funzionante rende il comportamento prevedibile: apt non ti sorprenderà con un timeout IPv6."
|
||||
},
|
||||
"sysctl": {
|
||||
"heading": "Applica ottimizzazioni di rete",
|
||||
"intro": "Scrive un profilo sysctl selezionato in <code>/etc/sysctl.d/99-network.conf</code>: buffer dei socket del kernel, rafforzamento di ICMP, protezione di base dallo spoofing e dimensioni dei buffer TCP adatte a un hypervisor con molti flussi simultanei.",
|
||||
"tunedTitle": "Cosa viene regolato",
|
||||
"headerArea": "Settore",
|
||||
"headerSettings": "Impostazioni chiave",
|
||||
"rows": [
|
||||
{
|
||||
"area": "Buffer dei socket del kernel",
|
||||
"settings": "<code>netdev_max_backlog=8192</code>, <code>rmem_max=16M</code>, <code>wmem_max=16M</code>, <code>somaxconn=8192</code>"
|
||||
},
|
||||
{
|
||||
"area": "Rafforzamento di ICMP",
|
||||
"settings": "<code>icmp_echo_ignore_broadcasts=1</code>, <code>icmp_ignore_bogus_error_responses=1</code>"
|
||||
},
|
||||
{
|
||||
"area": "Sicurezza del routing",
|
||||
"settings": "<code>accept_redirects=0</code>, <code>accept_source_route=0</code>, <code>secure_redirects=0</code>, <code>send_redirects=0</code>, <code>log_martians=0</code>"
|
||||
},
|
||||
{
|
||||
"area": "Filtro percorso inverso",
|
||||
"settings": "<code>rp_filter=2</code> (modalità permissiva, vedi nota sotto)"
|
||||
},
|
||||
{
|
||||
"area": "TCP",
|
||||
"settings": "<code>tcp_mtu_probing=1</code>, <code>tcp_rfc1337=1</code>, <code>tcp_sack=1</code>, <code>tcp_rmem=8K/87K/16M</code>, <code>tcp_wmem=8K/64K/16M</code>"
|
||||
},
|
||||
{
|
||||
"area": "Porte",
|
||||
"settings": "<code>ip_local_port_range=1024 65535</code> (insieme delle porte effimere)"
|
||||
},
|
||||
{
|
||||
"area": "Socket Unix",
|
||||
"settings": "<code>net.unix.max_dgram_qlen=4096</code>"
|
||||
}
|
||||
],
|
||||
"sourceOutro": "Aggiunge anche <code>source /etc/network/interfaces.d/*</code> a <code>/etc/network/interfaces</code> se non già presente — pratica standard in modo da poter rilasciare frammenti di interfaccia modulare senza modificare il file principale.",
|
||||
"fwbrTitle": "Regolazione automatica dei bridge del firewall virtuale",
|
||||
"fwbrBody": "Insieme al profilo sysctl, ProxMenux installa lo script ausiliario <code>/usr/local/sbin/proxmenux-fwbr-tune</code>, che applica <code>rp_filter=0</code> e <code>log_martians=0</code> alle interfacce <code>fwbr*</code> / <code>fwln*</code> / <code>fwpr*</code> / <code>tap*</code> create da Proxmox per VM e container. L’unità a esecuzione singola <code>proxmenux-fwbr-tune.service</code> lo avvia al boot; la regola <code>/etc/udev/rules.d/99-zz-proxmenux-fwbr-tune.rules</code> a ogni evento <code>net add</code> corrispondente a questi prefissi. Copre quindi le interfacce ricreate all’avvio o all’arresto delle VM, al riavvio e durante la migrazione live. Lo script elabora anche le interfacce già presenti subito dopo l’installazione.",
|
||||
"rpFilterTitle": "Perché rp_filter=2 (permissivo) invece di 1 (rigoroso)",
|
||||
"rpFilterBody": "Il filtro del percorso inverso rigoroso scarta i pacchetti la cui sorgente sarebbe raggiungibile tramite un’interfaccia <em>diversa</em>. È un’impostazione predefinita adatta ai client, ma problematica su un host Proxmox dove il traffico VM spesso arriva su un bridge ed esce da un uplink con percorsi asimmetrici. <code>rp_filter=2</code> (permissivo) scarta solo pacchetti con sorgenti realmente non raggiungibili tramite routing. Il compromesso riduce leggermente il rilevamento dello spoofing IP locale per non interrompere la rete delle VM."
|
||||
},
|
||||
"ovs": {
|
||||
"heading": "Installa Open vSwitch",
|
||||
"intro": "Installa <code>openvswitch-switch</code> + <code>openvswitch-common</code>. I pacchetti aggiungono OVS come alternativa ai bridge Linux predefiniti di Proxmox. La sola installazione non cambia la rete: i bridge <code>vmbrX</code> esistenti continuano a funzionare. Quando <em>crei</em> un nuovo bridge nell’interfaccia Proxmox, puoi scegliere OVS dall’elenco dei tipi.",
|
||||
"tipTitle": "Quando OVS ha senso",
|
||||
"tipBody": "Valuta OVS se ti servono <strong>trunk VLAN con ID non contigui</strong>, <strong>LACP con LLDP in modalità specifiche</strong>, <strong>programmazione dettagliata dei flussi</strong> (OpenFlow) o interoperabilità con controller SDN. Per un laboratorio domestico con poche VLAN e un solo uplink LACP, i bridge Linux + <code>vmbrX.VID</code> sono più semplici e adeguati.",
|
||||
"revertTitle": "Reversibile dal menu Disinstalla",
|
||||
"revertBody": "OVS viene registrato. <link>Disinstalla ottimizzazioni</link> esegue <code>apt purge</code> su <code>openvswitch-switch</code> e <code>openvswitch-common</code>. Migra i bridge OVS a bridge Linux <em>prima</em> della disinstallazione, altrimenti le VM su quei bridge perderanno la rete al prossimo avvio. Equivalente manuale:"
|
||||
},
|
||||
"bbr": {
|
||||
"heading": "Abilita TCP BBR + TCP Fast Open",
|
||||
"intro": "Scrive due file sysctl e li ricarica. BBR sostituisce CUBIC con l’algoritmo di congestione di Google basato sulla banda, che gestisce meglio collegamenti ad alta capacità e latenza o con perdite. TCP Fast Open (TFO) elimina un’andata e ritorno sulle connessioni TCP ripetute inviando dati nel SYN.",
|
||||
"verifyTitle": "Verifica",
|
||||
"impactTitle": "L'impatto è dipendente dal carico di lavoro",
|
||||
"impactBody": "BBR è efficace su collegamenti ad alta latenza o con perdite (replica intercontinentale, tunnel VPN, client mobili). In una LAN tra due macchine sullo stesso switch, la differenza spesso rientra nelle oscillazioni di misura. TFO aiuta soprattutto le connessioni HTTP brevi e ripetute.",
|
||||
"revertTitle": "Reversibile dal menu Disinstalla",
|
||||
"revertBody": "BBR/TFO vengono registrati. <link>Disinstalla ottimizzazioni</link> elimina i due file sysctl (<code>/etc/sysctl.d/99-kernel-bbr.conf</code> e <code>99-tcp-fastopen.conf</code>) e ricarica la configurazione restante. Eliminare un file non reimposta i valori attivi del kernel. Valori predefiniti come <code>cubic</code> e <code>tcp_fastopen=1</code> tornano dopo un riavvio, salvo altre configurazioni che li sovrascrivano. Equivalente manuale:"
|
||||
},
|
||||
"names": {
|
||||
"heading": "Nomi interfacce (persistenti)",
|
||||
"intro": "Esamina ogni scheda di rete fisica dell’host, saltando loopback, veth Docker, bridge, dispositivi TAP, bond, Cilium, ZeroTier e WireGuard. Scrive un file systemd <code>.link</code> che associa il nome attuale all’indirizzo MAC attuale. L’associazione MAC prevale quindi sulla logica di denominazione del kernel.",
|
||||
"whyTitle": "Perché questo è importante",
|
||||
"whyItems": [
|
||||
"Aggiungere o rimuovere dispositivi PCIe può cambiare la numerazione del bus, trasformando <code>enp3s0</code> in <code>enp4s0</code>. Se <code>/etc/network/interfaces</code> fa riferimento al vecchio nome, il bridge scompare al riavvio.",
|
||||
"Gli aggiornamenti BIOS o firmware a volte cambiano l’enumerazione dei dispositivi, con lo stesso effetto.",
|
||||
"Lo script scrive file <code>.link</code> per le schede fisiche, incluse le porte dei bond, con il MAC riportato da sysfs in quel momento; per le porte di un bond può essere il MAC condiviso del bond, quindi controllane i nomi dopo un riavvio. Salta le interfacce virtuali, come veth LXC e i dispositivi bond stessi; non risolve le condizioni di gara nei nomi delle schede virtuali <code>hotplug</code>."
|
||||
],
|
||||
"writtenTitle": "Cosa si scrive",
|
||||
"writtenIntro": "Un file per NIC fisico, a <code>/etc/systemd/network/10-proxmenux-<iface>.link</code>. Ogni file inizia con l'intestazione <code># Managed by ProxMenux — do not edit</code> così ProxMenux può distinguere i propri file da file <code>.link</code> forniti dall'utente o dal pacchetto.",
|
||||
"writtenOutro": "I file <code>.link</code> di altri pacchetti o scritti dall’utente vengono conservati; sono gestiti solo quelli con l’intestazione ProxMenux. A ogni esecuzione successiva la funzione verifica i propri file: rilegge <code>MACAddress=</code> da ogni <code>10-proxmenux-*.link</code> ed elimina quelli la cui MAC non compare più in <code>/sys/class/net/</code>. I file delle versioni precedenti nel formato <code>10-<iface>.link</code> vengono migrati automaticamente la prima volta.",
|
||||
"pveTitle": "PVE 9 vs PVE 8",
|
||||
"pveBody": "Lo script usa file systemd <code>.link</code> per i nomi persistenti. Su Proxmox VE 9 ricarica anche le regole udev dopo la scrittura, affinché una scheda già fissata che viene ricollegata o rilevata di nuovo applichi la sua regola senza riavvio. Controlla le interfacce esistenti dopo un riavvio sia su PVE 8 sia su PVE 9. Questo non sostituisce <code>ifupdown2</code> sull’host. In entrambi i casi lo script segnala la necessità di riavvio alla post-installazione personalizzabile.",
|
||||
"reviewTitle": "Controlla prima il file /etc/network/interfaces esistente",
|
||||
"reviewBody": "Se la configurazione precedente in <code>/etc/network/interfaces</code> usa nomi delle schede generati dal kernel, fissare quelli <em>attuali</em> è il risultato voluto. Se hai già adattato manualmente la configurazione a nomi specifici, verifica prima del riavvio che i nomi fissati corrispondano al file interfaces.",
|
||||
"revertTitle": "Reversibile dal menu Disinstalla",
|
||||
"revertBody": "<link>Disinstalla ottimizzazioni</link> elimina solo i file <code>10-proxmenux-*.link</code> con intestazione ProxMenux da <code>/etc/systemd/network/</code>. Conserva ogni file <code>.link</code> aggiunto dall’utente o da altri pacchetti. Al prossimo riavvio torna la denominazione predefinita di systemd."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"label": "Gestione rete",
|
||||
"href": "/docs/network",
|
||||
"tail": "— diagnostica, analisi del ponte, riparazioni guidate."
|
||||
},
|
||||
{
|
||||
"label": "Nomi di interfaccia persistenti",
|
||||
"href": "/docs/network/persistent-names",
|
||||
"tail": " — la stessa funzione disponibile in un menu dedicato per un secondo momento; usa una delle due opzioni, non entrambe."
|
||||
},
|
||||
{
|
||||
"label": "Riferimento dei comandi di rete",
|
||||
"href": "/docs/help-info/network-commands",
|
||||
"tail": " — ip, ss, ethtool, sysctl."
|
||||
},
|
||||
{
|
||||
"label": "Disinstalla ottimizzazioni",
|
||||
"href": "/docs/post-install/uninstall",
|
||||
"tail": " — annulla queste modifiche di rete."
|
||||
},
|
||||
{
|
||||
"label": "Post-installazione personalizzabile",
|
||||
"href": "/docs/post-install/customizable",
|
||||
"tail": " — torna al menu superiore."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,177 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "ProxMenux Post-Install: Impostazioni opzionali",
|
||||
"description": "Guida a Impostazioni opzionali nello script post-install ProxMenux per ulteriori funzioni e ottimizzazioni Proxmox VE.",
|
||||
"ogTitle": "ProxMenux Post-Install: Impostazioni opzionali",
|
||||
"ogDescription": "Guida a Impostazioni opzionali nello script post-install ProxMenux per ulteriori funzioni e ottimizzazioni Proxmox VE.",
|
||||
"ogImageAlt": "Impostazioni opzionali ProxMenux Post-Install"
|
||||
},
|
||||
"title": "Impostazioni opzionali",
|
||||
"intro": "La categoria <strong>Impostazioni opzionali</strong> offre funzioni e ottimizzazioni aggiuntive per Proxmox VE. Non sono essenziali, ma possono migliorare le capacità del sistema in situazioni specifiche.",
|
||||
"available": "Funzioni opzionali disponibili",
|
||||
"stepLabel": "Passaggio",
|
||||
"ceph": {
|
||||
"title": "Aggiungi l'ultimo supporto Ceph",
|
||||
"intro": "Questa opzione installa l'ultimo supporto del sistema di archiviazione Ceph per Proxmox VE. Ceph è un sistema di archiviazione distribuito che offre elevate prestazioni, affidabilità e scalabilità.",
|
||||
"doesIntro": "Cosa fa:",
|
||||
"doesItems": [
|
||||
"Aggiunge il repository Ceph al sistema",
|
||||
"Aggiorna gli elenchi dei pacchetti",
|
||||
"Installa i pacchetti Ceph utilizzando il comando 'pveceph install'",
|
||||
"Verifica l'installazione"
|
||||
],
|
||||
"howUse": "Come utilizzare: Dopo l'installazione, è possibile configurare e gestire lo storage Ceph utilizzando l'interfaccia web Proxmox VE o gli strumenti di riga di comando.",
|
||||
"automates": "Questa regolazione automatizza i seguenti comandi:"
|
||||
},
|
||||
"amd": {
|
||||
"title": "Applicare correzioni per CPU AMD",
|
||||
"intro": "Questa opzione applica correzioni specifiche per le CPU AMD EPYC e Ryzen per migliorare la stabilità e la compatibilità.",
|
||||
"doesIntro": "Cosa fa:",
|
||||
"doesItems": [
|
||||
"Rileva se è presente un EPYC AMD o Ryzen CPU",
|
||||
"Applica il parametro kernel 'idle=nomwait' per prevenire crash casuali (tramite /etc/kernel/cmdline su host systemd-boot, o /etc/default/grub su host GRUB — con un .bak dell'originale)",
|
||||
"Configura KVM per ignorare alcuni MSR (Model Specific Registers) per una migliore compatibilità degli ospiti di Windows"
|
||||
],
|
||||
"howUse": "Come usare: Queste correzioni vengono applicate automaticamente e richiedono un riavvio del sistema per avere effetto.",
|
||||
"automates": "Questa regolazione automatizza i seguenti comandi:"
|
||||
},
|
||||
"ha": {
|
||||
"title": "Abilita servizi di alta disponibilità",
|
||||
"intro": "Questa opzione consente servizi High Availability (HA) in Proxmox VE, consentendo il failover automatico di VM e container in caso di guasto del nodo.",
|
||||
"doesIntro": "Cosa fa:",
|
||||
"doesItems": [
|
||||
"Attiva e avvia il servizio pve-ha-lrm (Local Resource Manager)",
|
||||
"Attiva e avvia il servizio pve-ha-crm (Cluster Resource Manager)",
|
||||
"Attiva e avvia il servizio corosync per la comunicazione cluster"
|
||||
],
|
||||
"howUse": "Come utilizzare: Dopo aver abilitato questi servizi, è possibile configurare gruppi HA e risorse nell'interfaccia web Proxmox VE.",
|
||||
"automates": "Questa regolazione automatizza i seguenti comandi:"
|
||||
},
|
||||
"pveam": {
|
||||
"title": "Aggiorna Proxmox VE Appliance Manager",
|
||||
"intro": "Aggiorna l’indice locale dei modelli di container esposto da <code>pveam</code> in Proxmox, così l’elenco delle appliance software è aggiornato alla prossima creazione di un LXC.",
|
||||
"doesIntro": "Cosa fa:",
|
||||
"doesItems": [
|
||||
"Esegue <code>pveam update</code> sui mirror Proxmox per recuperare il catalogo attuale delle appliance software",
|
||||
"Popola l’elenco delle appliance software mostrato quando si crea un container"
|
||||
],
|
||||
"howUse": "Uso: eseguilo se l’elenco delle appliance software sembra datato o dopo un cambio di mirror. Scarica solo l’indice del catalogo, non i modelli stessi.",
|
||||
"automates": "Questa regolazione automatizza il seguente comando:"
|
||||
},
|
||||
"fastfetch": {
|
||||
"title": "Installare e configurare Fastfetch",
|
||||
"intro": "Questa opzione installa silenziosamente e configura Fastfetch, uno strumento di informazioni di sistema che visualizza specifiche di sistema e un logo personalizzato al login.",
|
||||
"doesLabel": "Cosa fa:",
|
||||
"doesItems": [
|
||||
"Scarica e installa silenziosamente l’ultima versione di Fastfetch",
|
||||
"Consente di scegliere un logo personalizzato (<strong>ProxMenux, Proxmox, Helper-Scripts, Home-Labs-Club, Proxmology</strong>, o uno personalizzato)",
|
||||
"Configura Fastfetch per visualizzare <em>\"Sistema ottimizzato da ProxMenux\"</em>",
|
||||
"Configura Fastfetch per avviarsi automaticamente all’accesso in console"
|
||||
],
|
||||
"importantLabel": "Importante:",
|
||||
"importantBody": "Se ti connetti a Proxmox tramite SSH, scegli il logo <strong>Proxmox</strong> o creane uno con <code>jp2a</code> o <code>img2txt</code>. Gli altri loghi vengono generati con <code>chafa</code> e potrebbero non essere visualizzati correttamente in una normale sessione SSH.",
|
||||
"customLabel": "Loghi personalizzati:",
|
||||
"customBody1": "Per utilizzare un logo personalizzato, posizionare il file di testo ASCII in: <code>/usr/local/share/fastfetch/logos/</code>",
|
||||
"customBody2": "È possibile creare loghi personalizzati utilizzando strumenti come <code>chafa</code>, <code>jp2a</code>, o <code>img2txt</code>.",
|
||||
"customBody3": "Per i migliori risultati:",
|
||||
"customItems": [
|
||||
"Mantieni l’altezza del logo entro 35 righe per conservare le proporzioni e rientrare nel terminale",
|
||||
"Utilizzare <code>chafa</code> per loghi a colori (può non visualizzare correttamente in sessioni SSH)",
|
||||
"Utilizzare <code>jp2a</code> o <code>img2txt</code> per loghi compatibili con SSH"
|
||||
],
|
||||
"examplesLabel": "Loghi di esempio:",
|
||||
"logos": [
|
||||
{
|
||||
"name": "ProxMenux",
|
||||
"alt": "Logo ProxMenux",
|
||||
"src": "https://macrimi.github.io/ProxMenux/fastfetch/proxmenux.png"
|
||||
},
|
||||
{
|
||||
"name": "Proxmox",
|
||||
"alt": "Logo Proxmox",
|
||||
"src": "https://macrimi.github.io/ProxMenux/fastfetch/proxmox.png"
|
||||
},
|
||||
{
|
||||
"name": "JC Channel",
|
||||
"alt": "Logo di JC Channel",
|
||||
"src": "/fastfetch/jc-channel.png"
|
||||
},
|
||||
{
|
||||
"name": "Helper-Scripts",
|
||||
"alt": "Logo di Helper-Scripts",
|
||||
"src": "https://macrimi.github.io/ProxMenux/fastfetch/helper-scripts.png"
|
||||
},
|
||||
{
|
||||
"name": "Home-Labs-Club",
|
||||
"alt": "Logo di Home-Labs-Club",
|
||||
"src": "https://macrimi.github.io/ProxMenux/fastfetch/home-labs-club.png"
|
||||
},
|
||||
{
|
||||
"name": "Proxmology",
|
||||
"alt": "Logo Proxmology",
|
||||
"src": "https://macrimi.github.io/ProxMenux/fastfetch/proxmology.png"
|
||||
}
|
||||
],
|
||||
"automates": "Questa regolazione automatizza i seguenti comandi:"
|
||||
},
|
||||
"figurine": {
|
||||
"title": "Installare e configurare Figurine",
|
||||
"intro": "Questa opzione installa e configura Figurine, uno strumento che crea eleganti banner di testo ASCII per il tuo terminale, visualizzando il tuo nome host in un formato 3D visivamente accattivante.",
|
||||
"doesLabel": "Cosa fa:",
|
||||
"doesItems": [
|
||||
"Scarica e installa Figurine v2.1.1 da GitHub per l’architettura dell’host (AMD64, ARM64 o ARMv7)",
|
||||
"Crea un messaggio di benvenuto che visualizza il tuo hostname in 3D ASCII art quando accedi",
|
||||
"Aggiorna il binario Figurine esistente solo dopo aver completato correttamente il download e l’estrazione",
|
||||
"Imposta il messaggio di benvenuto da eseguire automaticamente al login"
|
||||
],
|
||||
"practicalLabel": "Uso pratico:",
|
||||
"practicalBody": "Quando gestisci più nodi Proxmox in un cluster, Figurine mostra subito a quale nodo sei connesso. Aiuta a evitare comandi accidentali sul nodo sbagliato e migliora il flusso di lavoro con più server.",
|
||||
"exampleLabel": "Esempio di output:",
|
||||
"imageAlt": "Output di esempio di Figurine",
|
||||
"automates": "Questa regolazione automatizza il seguente processo:",
|
||||
"outro": "Dopo l'installazione, vedrai il tuo nome host visualizzato nell'arte 3D ASCII ogni volta che accedi, rendendo immediatamente chiaro su quale nodo Proxmox stai lavorando."
|
||||
},
|
||||
"log2ram": {
|
||||
"title": "Installare Log2RAM (SSD/NVMe riduzione dell'usura)",
|
||||
"intro": "Log2RAM monta <code>/var/log</code> su un ramdisk tmpfs e lo sincronizza periodicamente sul disco. Accumulare in RAM le frequenti scritture journald può ridurre usura SSD e I/O. Sincronizzazione e arresto regolare salvano i log, ma una perdita improvvisa di alimentazione può perdere le voci dall’ultima sincronizzazione.",
|
||||
"upstreamLabel": "Progetto a monte:",
|
||||
"upstreamUrl": "https://github.com/azlux/log2ram",
|
||||
"upstreamLinkLabel": "azlux/log2ram su GitHub",
|
||||
"doesLabel": "Cosa fa ProxMenux:",
|
||||
"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.",
|
||||
"Clona il repository originale (<code>azlux/log2ram</code>) in <code>/tmp/log2ram</code> e modifica <code>install.sh</code>, sostituendo <code>rsync -aAXv</code> con <code>rsync -aXv --no-acls</code>. Evita l’errore <em>set_acl: Operation not supported</em> con codice di uscita 23, che lo script originale genera spostando /var/log su filesystem senza ACL. L’unità systemd <code>log2ram</code> viene abilitata dopo l’installazione.",
|
||||
"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>.",
|
||||
"Pianifica una sincronizzazione periodica del disco tramite <code>/etc/cron.d/log2ram</code>: ogni 1h / 3h / 6h secondo lo stesso livello RAM.",
|
||||
"Installa <code>/usr/local/bin/log2ram-check.sh</code>, eseguito ogni 10 minuti da <code>/etc/cron.d/log2ram-auto-sync</code>. Quando <code>/var/log</code> raggiunge l’80% del ramdisk, pulisce i vecchi journal. Al 92% esegue prima <code>logrotate -f /etc/logrotate.d/proxmox-backup-api</code> se il file esiste: i log API PBS sono spesso i maggiori consumatori di spazio su un host PBS. Poi tronca <code>pveproxy access/error</code> e <code>pveam.log</code> prima della sincronizzazione. <code>log2ram write</code> da solo copia tmpfs sul disco senza ridurlo. La protezione aiuta a evitare arresti di PVE con <em>No space left on device</em> per crescita incontrollata dei log.",
|
||||
"Rileva il servizio <code>proxmox-backup-server</code> sull’host. Se presente, crea <code>/etc/logrotate.d/proxmox-backup-api</code> (20 MB × 3 rotazioni) e <code>/etc/cron.hourly/proxmox-backup-logrotate</code> per limitare i log API PBS, abituale fonte di crescita, anche tra le sincronizzazioni Log2RAM. Senza PBS non modifica nulla.",
|
||||
"Regola i limiti systemd-journald (<code>SystemMaxUse</code>, <code>RuntimeMaxUse</code>) per adattarsi all'interno del ramdisk in modo che un singolo scoppio non possa riempirlo.",
|
||||
"Si registra in <code>installed_tools.json</code> per consentire il ripristino da Disinstalla ottimizzazioni."
|
||||
],
|
||||
"howUseLabel": "Come usare:",
|
||||
"howUseBody": "Il percorso automatizzato installa Log2RAM senza intervento se rileva un disco root SSD/NVMe. Quello personalizzabile chiede dimensione, intervallo e attivazione della protezione. Il messaggio indica 90%, ma lo script generato usa le soglie di pulizia all’80% e intensiva al 92% descritte sopra.",
|
||||
"verifyLabel": "Verificare e gestire dalla shell:",
|
||||
"verifyCode": "# Service state and configured timers\nsystemctl status log2ram\nsystemctl list-timers log2ram*\n\n# Current ramdisk usage — /var/log IS the tmpfs itself\ndf -h /var/log\n\n# Force a sync now (tmpfs → disk); does NOT shrink the tmpfs\nlog2ram write\n\n# Trigger the auto-sync guard on demand (vacuum + sync when usage is high)\n/usr/local/bin/log2ram-check.sh\n\n# Current config: SIZE, mail settings, path\ncat /etc/log2ram.conf\n\n# ProxMenux-specific cron jobs\ncat /etc/cron.d/log2ram /etc/cron.d/log2ram-auto-sync\n\n# Recent Log2RAM activity\njournalctl -u log2ram -n 50 --no-pager"
|
||||
},
|
||||
"zram": {
|
||||
"title": "Abilita il profilo di scambio ZRAM",
|
||||
"intro": "Crea un dispositivo swap compresso in RAM, <code>/dev/zram0</code>, con <code>systemd-zram-generator</code>. Le pagine spostate dal kernel nello swap vengono compresse con zstd e tenute in memoria prima di usare lo swap su disco.",
|
||||
"doesLabel": "Cosa fa:",
|
||||
"doesItems": [
|
||||
"Installa <code>systemd-zram-generator</code> se manca e registra se è stato installato da ProxMenux.",
|
||||
"Scrive <code>/etc/systemd/zram-generator.conf.d/90-proxmenux.conf</code>: un dispositivo <code>zram0</code> dimensionato ad un decimo dell'host RAM, compressione zstd (<code>zstd(level=9)</code> con systemd-zram-generator 1.2.0 o versioni successive) e priorità swap 32767.",
|
||||
"Con questa priorità il kernel riempie prima ZRAM. Uno swap esistente su disco mantiene la propria priorità e prende le pagine che non si adattano più a ZRAM.",
|
||||
"Prima di cambiare qualcosa, cerca un'altra configurazione ZRAM: uno swap zram attivo, una linea zram in <code>/etc/fstab</code>, un'unità systemd o un altro file generatore. Se ne trova una, l'opzione si ferma e lascia quella configurazione così com'è.",
|
||||
"Avvia <code>dev-zram0.swap</code> e controlla che il dispositivo attivo corrisponda al profilo. Se non lo fa, lo stato precedente viene ripristinato.",
|
||||
"Si registra in <code>installed_tools.json</code> per consentire il ripristino da Disinstalla ottimizzazioni."
|
||||
],
|
||||
"howUseLabel": "Come usare:",
|
||||
"howUseBody": "L’opzione è disponibile solo nel percorso personalizzabile, non in quello automatizzato. Il dispositivo viene ricreato a ogni avvio. Quando è attivo, il riquadro Memoria di ProxMenux Monitor mostra capacità, swap usato, algoritmo, rapporto di compressione e memoria fisica occupata.",
|
||||
"verifyLabel": "Verificare dalla shell:",
|
||||
"verifyCode": "# Active swap devices and their priority\nswapon --show\n\n# ZRAM device: algorithm, size and compressed data\nzramctl\n\n# Profile written by ProxMenux\ncat /etc/systemd/zram-generator.conf.d/90-proxmenux.conf\n\n# State of the swap unit\nsystemctl status dev-zram0.swap"
|
||||
},
|
||||
"autoApplication": {
|
||||
"title": "Applicazione automatica",
|
||||
"body": "Nel percorso personalizzabile seleziona ogni funzione in base alle necessità. Log2RAM fa parte anche di quello automatizzato con rilevamento hardware; ZRAM resta esclusivo di Personalizzabile. Consulta le sezioni per conferme e prerequisiti."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Post-installazione: Prestazioni | Documentazione ProxMenux",
|
||||
"description": "Opzioni di prestazioni nello script post-installazione personalizzabile di ProxMenux. Sostituisce gzip a thread singolo con pigz (gzip parallelo) per accelerare backup e compressione sugli host multicore."
|
||||
},
|
||||
"header": {
|
||||
"title": "Dopo l'installazione: prestazioni",
|
||||
"description": "Opzioni di prestazioni dello script post-installazione Personalizzabile. La categoria contiene una sola ottimizzazione: sostituire gzip con pigz affinché backup e compressione usino tutti i core della CPU invece di uno solo.",
|
||||
"section": "Impostazioni post-installazione Proxmox"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Che cosa copre questa categoria",
|
||||
"body": "L’unica opzione di prestazioni qui reindirizza gzip a un’implementazione parallela. Le altre regolazioni (memoria, scheduling I/O, dimensione dell’ARC ZFS, limiti del kernel) sono nelle rispettive categorie (<em>Sistema</em>, <em>Archiviazione</em>), perché riguardano sottosistemi diversi."
|
||||
},
|
||||
"pigz": {
|
||||
"heading": "Usa pigz per una compressione gzip più rapida",
|
||||
"intro": "<code>gzip</code> standard comprime usando <strong>un solo core della CPU</strong>. Sugli host Proxmox moderni con 8, 16 o 32 core, ciò limita molto i backup VM/CT con <code>vzdump</code>, la rotazione dei log e ogni operazione che passa per <code>gzip</code>. <a>pigz</a> è un sostituto parallelo immediatamente compatibile: stesso output compatibile gzip, ma lavoro distribuito su tutti i core.",
|
||||
"doesTitle": "Cosa fa ProxMenux",
|
||||
"doesIntro": "Cinque passaggi, tutti idempotenti:",
|
||||
"doesItems": [
|
||||
"Imposta <code>pigz: 1</code> in <code>/etc/vzdump.conf</code> quindi lo strumento di backup di Proxmox utilizza pigz in modo nativo.",
|
||||
"Installa il pacchetto <code>pigz</code> apt se non già presente.",
|
||||
"Scrive uno script wrapper a <code>/bin/pigzwrapper</code> che inoltra ogni argomento a <code>/usr/bin/pigz</code>.",
|
||||
"Registra una diversione dpkg per il binario di sistema <code>gzip</code> (<code>/usr/bin/gzip</code> su Proxmox VE 9, <code>/bin/gzip</code> su Proxmox VE 8). Il binario originale resta accanto come <code>gzip.distrib</code> e il wrapper lo sostituisce. Da quel momento <em>qualsiasi programma</em> che chiama <code>gzip</code>, come logrotate, <code>tar czf</code>, script e vzdump, usa pigz in modo trasparente.",
|
||||
"Controlla che il file mantenuto come <code>gzip.distrib</code> sia un gzip funzionante prima che l'involucro sia messo in atto e reinstalla il pacchetto <code>gzip</code> prima quando non lo è. Un host che ha ancora il precedente swap <code>/bin/gzip.original</code> viene spostato alla diversione quando l'opzione viene applicata di nuovo."
|
||||
],
|
||||
"replacesTitle": "Sostituisce un binario di sistema",
|
||||
"replacesBody": "Mettere un wrapper al posto di <code>gzip</code> è insolito. È sicuro perché produce output compatibile gzip, ma gli script con percorsi fissi, eseguiti in chroot restrittivi o che verificano gli hash dei binari possono comportarsi diversamente. Il binario originale resta come <code>gzip.distrib</code>. Grazie alla diversione dpkg, un aggiornamento del pacchetto <code>gzip</code> o il passaggio da Proxmox VE 8 a 9 aggiorna quel file e mantiene il wrapper.",
|
||||
"revertTitle": "Reversibile dal menu Disinstalla",
|
||||
"revertBody": "Questa ottimizzazione è registrata. <link>Disinstalla ottimizzazioni</link> copia il binario originale da <code>gzip.distrib</code> al posto del wrapper, rimuove la diversione e <code>pigzwrapper</code>, commenta la riga <code>pigz</code> in <code>/etc/vzdump.conf</code> ed esegue <code>apt purge pigz</code> dopo aver verificato che gzip funziona. Equivalente manuale su Proxmox VE 9:",
|
||||
"verifyTitle": "Verifica",
|
||||
"verifyBody": "Dopo l'applicazione, <code>gzip --version</code> dovrebbe menzionare pigz. Un rapido benchmark mostra anche la differenza di velocità su un host multi-core:",
|
||||
"whenTitle": "Quando questo è più importante",
|
||||
"whenBody": "Il vantaggio cresce con il <strong>numero di core dell’host</strong> e la <strong>frequenza dei backup</strong>. Su un server domestico a 2 core con un vzdump al giorno è marginale. Su un host di produzione a 16 core che salva una dozzina di VM ogni notte, pigz può ridurre la finestra di backup a una frazione del tempo richiesto da gzip a thread singolo."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"label": "Comandi di backup e ripristino",
|
||||
"href": "/docs/help-info/backup-commands",
|
||||
"tailRich": " — riferimento CLI di vzdump, inclusa l’opzione <code>--pigz</code> per i thread."
|
||||
},
|
||||
{
|
||||
"label": "Archiviazione",
|
||||
"href": "/docs/post-install/storage",
|
||||
"tail": "— limiti di velocità di vzdump e sintonizzazione ZFS ARC."
|
||||
},
|
||||
{
|
||||
"label": "Sistema",
|
||||
"href": "/docs/post-install/system",
|
||||
"tail": " — regolazione dei descrittori di file e della memoria."
|
||||
},
|
||||
{
|
||||
"label": "Post-installazione personalizzabile",
|
||||
"href": "/docs/post-install/customizable",
|
||||
"tail": " — torna al menu superiore."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Post-Install: Sicurezza | Documentazione ProxMenux",
|
||||
"description": "Opzioni di sicurezza disponibili nello script ProxMenux Personalizzabile post-installazione. Attualmente un'unica opzione: disabilitare il servizio portmapper/rpcbind per ridurre la superficie di attacco dell'host."
|
||||
},
|
||||
"header": {
|
||||
"title": "Post-Install: Sicurezza",
|
||||
"section": "Impostazioni post-installazione Proxmox"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Che cosa copre questa categoria",
|
||||
"body": "La sicurezza post-installazione si limita al <strong>rafforzamento dell’host applicabile in sicurezza senza supervisione</strong>: disattivare servizi che quasi nessuno usa, con possibilità di annullamento dal menu Disinstalla. Gli strumenti attivi (Fail2Ban per prevenire intrusioni, Lynis per gli audit) si trovano nella voce <em>Sicurezza</em> del menu principale di ProxMenux, fuori dalla post-installazione."
|
||||
},
|
||||
"rpcbind": {
|
||||
"heading": "Disattivare il portmapper / rpcbind",
|
||||
"intro": "<code>rpcbind</code> (in precedenza <code>portmap</code>) associa i numeri dei programmi RPC alle porte di rete. È una dipendenza di NFS e di alcuni vecchi strumenti RPC. Su un tipico host Proxmox che non funge da server NFS, <strong>nulla lo usa</strong>; lasciarlo attivo mantiene la porta <code>111/tcp</code> in ascolto su ogni interfaccia.",
|
||||
"whyTitle": "Perché conviene disattivarlo",
|
||||
"whyItems": [
|
||||
"Riduce la superficie di attacco ospite — un servizio di ascolto in meno di preoccuparsi.",
|
||||
"Storicamente abusato come vettore di riflessione/amplificazione in attacchi DDoS. Disabilitare <code>rpcbind</code> rimuove quel fattore di amplificazione per il vostro host.",
|
||||
"Rimuove il rumore generato nei log e nell’output di <code>netstat</code> / <code>ss</code>, rendendo più facile individuare l’attività reale."
|
||||
],
|
||||
"nfsTitle": "Non disabilitarlo se si utilizza NFS",
|
||||
"nfsBody": "Sia il server NFS <strong>sia</strong> il client NFS dipendono da <code>rpcbind</code> per negoziare le porte usate da <code>mountd</code>, <code>statd</code>, <code>lockd</code> e altri servizi. Se il tuo host Proxmox <em>esporta</em> condivisioni NFS verso altri dispositivi oppure <em>monta</em> condivisioni NFS da un NAS, non applicare questa opzione. I montaggi fallirebbero con <code>mount.nfs: rpc.statd is not running</code> o errori simili.",
|
||||
"runsTitle": "Cosa esegue ProxMenux",
|
||||
"runsOutro": "Il pacchetto resta installato. ProxMenux registra lo stato originale di abilitazione e attività di rpcbind.service e rpcbind.socket, poi disabilita e arresta entrambe le unità per impedire che l’attivazione tramite socket riavvii il servizio.",
|
||||
"verifyTitle": "Verifica",
|
||||
"verifyBody": "Dopo l'applicazione, confermare <code>rpcbind</code> è spento e nulla sta ascoltando sulla porta 111:",
|
||||
"reversibleTitle": "Ripristinare lo stato di servizio originale",
|
||||
"reversibleBody": "La modifica è registrata in <code>installed_tools.json</code>. <link>Disinstalla ottimizzazioni</link> riporta ogni unità rpcbind agli stati abilitato/disabilitato e attivo/inattivo rilevati prima della modifica di ProxMenux; non presume che rpcbind fosse abilitato su tutti gli host."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"label": "Menu di sicurezza",
|
||||
"href": "/docs/security",
|
||||
"tail": " — strumenti più avanzati: Fail2Ban (prevenzione delle intrusioni) e Lynis (audit)."
|
||||
},
|
||||
{
|
||||
"label": "Lynis",
|
||||
"href": "/docs/security/lynis",
|
||||
"tail": " — per controllare l’host e trovare altri modi di rafforzarne la sicurezza."
|
||||
},
|
||||
{
|
||||
"label": "Comandi di sistema utili",
|
||||
"href": "/docs/help-info/system-commands",
|
||||
"tail": "— stato di servizio, journalctl, riferimento di audit lynis."
|
||||
},
|
||||
{
|
||||
"label": "Post-installazione personalizzabile",
|
||||
"href": "/docs/post-install/customizable",
|
||||
"tail": " — torna al menu superiore."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,167 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Post-installazione: Archiviazione | Documentazione ProxMenux",
|
||||
"description": "Ottimizzazioni di archiviazione dello script post-installazione personalizzabile ProxMenux: dimensione ZFS ARC in base alla RAM, snapshot periodici con zfs-auto-snapshot e rimozione dei limiti di velocità dei backup vzdump."
|
||||
},
|
||||
"header": {
|
||||
"title": "Post-installazione: Archiviazione",
|
||||
"section": "Impostazioni post-installazione Proxmox"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Che cosa copre questa categoria",
|
||||
"body": "Quattro ottimizzazioni di archiviazione: regolare <strong>ZFS ARC</strong> su una parte ragionevole della RAM, installare e pianificare <strong>snapshot automatici ZFS</strong>, abilitare <strong>ZFS autotrim</strong> su pool SSD/NVMe e rimuovere i limiti di <strong>vzdump</strong> per velocizzare i backup. Le opzioni sono indipendenti: scegli quelle adatte al sistema. Una quinta, <link>Log2RAM</link>, riduce l’usura SSD/NVMe spostando <code>/var/log</code> su ramdisk. È nella pagina Opzionali perché il menu personalizzabile la raggruppa lì."
|
||||
},
|
||||
"trackedTitle": "Tutti e quattro sono tracciati nel menu Disinstalla",
|
||||
"trackedBody": "Ogni opzione si registra in <code>installed_tools.json</code> per <link>Disinstalla ottimizzazioni</link>. <code>zfs_arc</code> rimuove <code>/etc/modprobe.d/99-zfsarc.conf</code> e ricrea initramfs; <code>zfs_auto_snapshot</code> annulla la pianificazione cron e offre la rimozione completa del pacchetto; <code>zfs_autotrim</code> imposta <code>autotrim=off</code> sui pool che ha abilitato; <code>vzdump_speed</code> ripristina <code>/etc/vzdump.conf</code> dal <code>.bak</code> creato all’installazione.",
|
||||
"arc": {
|
||||
"heading": "Ottimizza dimensione ZFS ARC",
|
||||
"intro": "La <strong>Adaptive Replacement Cache (ARC)</strong> è la cache di lettura ZFS in RAM. Le installazioni Proxmox VE dalla 8.1 impostano il 10% di RAM, massimo 16 GiB; host precedenti o aggiornati possono differire. Questa opzione scrive esplicitamente la stessa regola (RAM/10, massimo 16 GiB, minimo 64 MiB) in un proprio file, coprendo anche host precedenti o aggiornati. Controlla impostazioni e carico: una cache più piccola non è sempre più veloce.",
|
||||
"sizingTitle": "Regole di dimensionamento",
|
||||
"headerRam": "RAM dell'host",
|
||||
"headerMax": "Limite ARC",
|
||||
"rows": [
|
||||
{
|
||||
"ram": "Formula",
|
||||
"max": "RAM / 10, massimo 16 GiB e minimo 64 MiB"
|
||||
},
|
||||
{
|
||||
"ram": "host 8 GB",
|
||||
"max": "≈ 819 MiB (RAM/10)"
|
||||
},
|
||||
{
|
||||
"ram": "host 16 GB",
|
||||
"max": "≈ 1.6 GiB (RAM/10)"
|
||||
},
|
||||
{
|
||||
"ram": "host 64 GB",
|
||||
"max": "≈ 6.4 GiB (RAM/10)"
|
||||
},
|
||||
{
|
||||
"ram": "≥ host 160 GB",
|
||||
"max": "16 GiB (limite)"
|
||||
}
|
||||
],
|
||||
"after": "Il file <code>/etc/modprobe.d/99-zfsarc.conf</code> contiene solo <code>options zfs zfs_arc_max=…</code>. Gli altri parametri ZFS (<code>zfs_arc_min</code>, prelettura/limite scritture L2ARC, timeout TXG) non vengono regolati. Prima, una verifica cerca altri <code>*.conf</code> in <code>/etc/modprobe.d/</code> che impostano <code>zfs_arc_min</code> / <code>zfs_arc_max</code>, li salva con manifesto in <code>/usr/local/share/proxmenux/backups/zfs_arc/</code> e ne rimuove i valori <code>zfs_arc_min</code> / <code>zfs_arc_max</code> in conflitto (le altre opzioni di quelle righe restano), così solo il file ARC ProxMenux imposta il limite. Poi <code>update-initramfs -u -k all</code> e, se necessario, <code>proxmox-boot-tool refresh</code> portano il limite nell’initramfs dei sistemi con root ZFS.",
|
||||
"rebootTitle": "Richiede un riavvio per prendere effetto",
|
||||
"rebootBody": "Le impostazioni ARC vengono lette caricando il modulo <code>zfs</code>. Per gli host con root ZFS, ProxMenux rigenera initramfs con <code>update-initramfs -u -k all</code> e aggiorna se necessario il bootloader con <code>proxmox-boot-tool refresh</code>. Il nuovo parametro richiede comunque un riavvio, segnalato automaticamente.",
|
||||
"safeTitle": "Sicuro su host non-ZFS",
|
||||
"safeBody": "La funzione scrive la configurazione solo se <code>zpool list</code> segnala almeno un pool ZFS importato. Su host Proxmox con solo ext4/LVM o con strumenti ZFS ma nessun pool importato, selezionare questa opzione non modifica nulla.",
|
||||
"verifyTitle": "Verifica e rollback manuale"
|
||||
},
|
||||
"autoSnap": {
|
||||
"heading": "Installa ZFS auto-snapshot",
|
||||
"intro": "Installa il pacchetto <a>zfs-auto-snapshot</a> e riscrive i suoi programmi di cron in modo che le snapshot vengano prese automaticamente a diversi intervalli. Una grande rete di sicurezza senza sforzo sopra i vostri backup vzdump regolari.",
|
||||
"cadenceTitle": "Frequenza degli snapshot configurata da ProxMenux",
|
||||
"headerLabel": "Etichetta",
|
||||
"headerRuns": "Esecuzione",
|
||||
"headerKept": "Istantanee tenute",
|
||||
"rows": [
|
||||
{
|
||||
"label": "frequente",
|
||||
"runs": "ogni 15 min",
|
||||
"kept": "4"
|
||||
},
|
||||
{
|
||||
"label": "oraria",
|
||||
"runs": "ogni ora",
|
||||
"kept": "1"
|
||||
},
|
||||
{
|
||||
"label": "ogni giorno",
|
||||
"runs": "una volta al giorno",
|
||||
"kept": "1"
|
||||
},
|
||||
{
|
||||
"label": "settimanale",
|
||||
"runs": "una volta alla settimana",
|
||||
"kept": "1"
|
||||
},
|
||||
{
|
||||
"label": "mensile",
|
||||
"runs": "una volta al mese",
|
||||
"kept": "1"
|
||||
}
|
||||
],
|
||||
"conservativeTitle": "Conservazione limitata",
|
||||
"conservativeBody": "ProxMenux mantiene una conservazione limitata: 4 snapshot frequenti e 1 per ciascun intervallo più lungo, per contenere lo spazio ZFS. Per conservarne di più modifica i numeri in <code>/etc/cron.d/zfs-auto-snapshot</code>, <code>/etc/cron.hourly/zfs-auto-snapshot</code> ecc. dopo lo script.",
|
||||
"onlyZfsTitle": "Utile solo sui pool ZFS",
|
||||
"onlyZfsBody": "Installare il pacchetto su un host ext4-solo è innocuo ma inutile — non ci sono set di dati ZFS per esso di snapshot. Salta questa opzione se non si utilizza ZFS.",
|
||||
"verifyTitle": "Verifica e rollback manuale"
|
||||
},
|
||||
"autotrim": {
|
||||
"heading": "Abilita ZFS autotrim (pool SSD/NVMe)",
|
||||
"intro": "Abilita <code>autotrim</code> sui pool ZFS composti solo da SSD o NVMe con supporto TRIM. Per prudenza salta i pool con dispositivi rotanti. Quelli già impostati su <code>autotrim=on</code> restano invariati.",
|
||||
"trimTitle": "Cosa fa TRIM e perché conta su ZFS",
|
||||
"trimBody1": "SSD e NVMe gestiscono blocchi interni di cancellazione più grandi dei settori logici del filesystem. Quando si elimina un file, l’unità non sa ancora che i settori sono liberi e la pulizia interna può continuare a spostare dati obsoleti per liberare blocchi. <strong>TRIM</strong> indica all’unità i settori liberi per consentirne la cancellazione anticipata.",
|
||||
"trimBody2": "Senza TRIM, esaurire i blocchi già cancellati può degradare le prestazioni SSD e aumentare le scritture interne, riducendo la vita utile. Con TRIM, l’unità può mantenere blocchi vuoti pronti alla scrittura.",
|
||||
"trimBody3": "Con <code>autotrim=on</code>, ZFS esegue TRIM in background sullo spazio liberato di recente, raggruppando gli intervalli. Un <code>zpool trim <pool></code> periodico è un’alternativa. Autotrim evita una pianificazione separata, ma l’impatto dipende dai dispositivi; il TRIM manuale periodico può essere migliore su alcune unità economiche.",
|
||||
"practicalTitle": "Perché questo è pratico da abilitare?",
|
||||
"practicalItems": [
|
||||
"<strong>Prestazioni di scrittura sostenute.</strong> TRIM può aiutare a recuperare blocchi inutilizzati. Benefici e impatto sulla latenza dipendono da dispositivo e carico.",
|
||||
"<strong>Durata dell’unità.</strong> Evitare copie interne inutili può ridurre amplificazione di scrittura e usura NAND, senza garantire una durata aggiuntiva specifica.",
|
||||
"<strong>Nessun processo cron da pianificare.</strong> A differenza di un <code>zpool trim</code> periodico, autotrim viene gestito automaticamente dal pool."
|
||||
],
|
||||
"whenTitle": "Quando è necessario?",
|
||||
"whenIntro1": "<strong>Valuta l’attivazione</strong> sui pool ZFS solo con SSD/NVMe compatibili TRIM. Controlla comportamento e latenza; su alcuni dispositivi è preferibile TRIM manuale pianificato.",
|
||||
"whenIntro2": "<strong>Lo script lo ignora automaticamente</strong> su:",
|
||||
"whenSkipItems": [
|
||||
"Pool con vdev HDD rotanti: filtro hardware prudente di questo script.",
|
||||
"Drive senza <code>discard_granularity</code> esposti in sysfs — solitamente vecchi SSD senza TRIM, o percorsi passanti dove il sistema operativo non può vedere il dispositivo sottostante.",
|
||||
"Pools dove ZFS riporta la proprietà non supportato (raro; molto vecchio pools).",
|
||||
"Pools già predisposto per <code>autotrim=on</code> (no-op)."
|
||||
],
|
||||
"whenIntro3": "<strong>Non pertinente su host ext4-solo</strong> — non c'è nulla per ZFS da tagliare. La funzione esce con un messaggio amichevole in quel caso.",
|
||||
"recordedTitle": "Perché vengono registrati solo i pool modificati da ProxMenux",
|
||||
"recordedBody": "La funzione registra un pool nel file di stato interno (<code>/usr/local/share/proxmenux/zfs_autotrim_pools</code>) solo se lo ha cambiato da <code>off</code> a <code>on</code>. I pool già con autotrim prima dello script restano fuori elenco: una futura disinstallazione annulla solo le modifiche di ProxMenux, non quelle impostate da te.",
|
||||
"manualTitle": "Equivalente manuale (in esecuzione sul server)",
|
||||
"manualIntro": "La sequenza completa che lo script corre contro ogni pool è replicabile a mano. Questo è quello che si digiterebbe se si desidera fare la stessa cosa su un singolo pool senza ProxMenux:",
|
||||
"verifyTitle": "Verifica e rollback manuale",
|
||||
"oneShotTitle": "Preferisci un TRIM singolo invece di quello continuo?",
|
||||
"oneShotBody": "Alcuni amministratori preferiscono TRIM manuale nelle ore di minor carico. Disabilita autotrim e pianifica un processo cron con <code>zpool trim <pool></code>: stesso obiettivo, frequenza diversa."
|
||||
},
|
||||
"vzdump": {
|
||||
"heading": "Aumenta la velocità di backup di vzdump",
|
||||
"intro": "Scrive bwlimit: 0 e ionice: 5 nella configurazione globale vzdump. Proxmox non ha già limiti di banda predefiniti: rimuove un limite solo se configurato. Rispetto a ionice: 7, il valore 5 aumenta la priorità I/O best-effort se lo scheduler la rispetta. Può influire sugli ospiti e non garantisce backup più rapidi.",
|
||||
"changedTitle": "Cosa cambia in /etc/vzdump.conf",
|
||||
"backupTitle": "Prima esecuzione crea un .bak di vzdump.conf",
|
||||
"backupBody": "Alla prima esecuzione ProxMenux copia <code>/etc/vzdump.conf</code> in <code>/etc/vzdump.conf.bak</code> prima di modificarlo. Le esecuzioni successive non sovrascrivono la copia, lasciando recuperabile la configurazione precedente. <code>bwlimit</code> e <code>ionice</code> vengono modificati con <code>sed</code>; altre opzioni come compress, pigz, tmpdir ed exclude-path sono conservate.",
|
||||
"skipTitle": "Quando saltare questo",
|
||||
"skipBody": "Su un host con storage locale lento e VM sensibili alla latenza, togliere il limite di banda può causare rallentamenti durante i backup. Se hai impostato un <code>bwlimit</code> per questo motivo, conservalo e salta questa opzione.",
|
||||
"verifyTitle": "Verifica e rollback manuale"
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"label": "Comandi di gestione ZFS",
|
||||
"href": "/docs/help-info/zfs-commands",
|
||||
"tail": "— zpool / zfs riferimento per ARC, snapshot, scrub."
|
||||
},
|
||||
{
|
||||
"label": "Comandi di archiviazione e dischi",
|
||||
"href": "/docs/help-info/storage-commands",
|
||||
"tail": "— riferimento generico di blocco-dispositivo e di stoccaggio Proxmox."
|
||||
},
|
||||
{
|
||||
"label": "Comandi di backup e ripristino",
|
||||
"href": "/docs/help-info/backup-commands",
|
||||
"tail": " — riferimento CLI vzdump per banda e priorità I/O."
|
||||
},
|
||||
{
|
||||
"label": "Disinstalla ottimizzazioni",
|
||||
"href": "/docs/post-install/uninstall",
|
||||
"tail": " — annulla le modifiche ARC / vzdump."
|
||||
},
|
||||
{
|
||||
"label": "Log2RAM",
|
||||
"href": "/docs/post-install/optional#log2ram",
|
||||
"tail": " — riduce l’usura SSD/NVMe tenendo /var/log su ramdisk; documentato in Opzionali."
|
||||
},
|
||||
{
|
||||
"label": "Post-installazione personalizzabile",
|
||||
"href": "/docs/post-install/customizable",
|
||||
"tail": " — torna al menu superiore."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,133 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Post-Install: Sistema | Documentazione ProxMenux",
|
||||
"description": "Ottimizzazioni a livello di sistema nello script post-installazione personalizzabile ProxMenux: journald e limiti di dimensione logrotate, limiti più elevati del kernel e dei descrittori di file, ottimizzazione della memoria bilanciata, kexec per riavvii rapidi e ripristino dal kernel panico."
|
||||
},
|
||||
"header": {
|
||||
"title": "Dopo l'installazione: sistema",
|
||||
"section": "Impostazioni post-installazione Proxmox"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Che cosa copre questa categoria",
|
||||
"body": "Sei ottimizzazioni di sistema indipendenti. Regolano <strong>journald</strong> e <strong>logrotate</strong> per evitare che i log riempiano il disco, aumentano <strong>i limiti del kernel e dei descrittori di file</strong> per le applicazioni con molti file aperti, <strong>bilanciano la memoria</strong> su un host di virtualizzazione, aggiungono <strong>kexec</strong> per riavviare senza BIOS e configurano <strong>il ripristino automatico</strong> in caso di kernel panic. Tutte e sei sono registrate e reversibili dal menu Disinstalla."
|
||||
},
|
||||
"journald": {
|
||||
"heading": "Ottimizza journald",
|
||||
"intro": "Riscrive <code>/etc/systemd/journald.conf</code> con valori ragionevoli affinché il journal di systemd non riempia gradualmente la partizione root, poi riavvia <code>systemd-journald</code> e ripulisce i log esistenti.",
|
||||
"keyTitle": "Valori chiave",
|
||||
"keyItems": [
|
||||
"<code>Storage=persistent</code> — tenere i registri sul disco attraverso i reboots.",
|
||||
"<code>SystemMaxUse=64M</code> / <code>RuntimeMaxUse=60M</code> — limiti all’uso di disco e memoria del journal.",
|
||||
"<code>Compress=yes</code>, <code>Seal=no</code> — comprime i log, disabilita la sigillatura con sicurezza in avanti (risparmia CPU).",
|
||||
"<code>MaxLevelStore=info</code> — salva il livello info e quelli superiori, necessari al visualizzatore log ProxMenux Monitor e a Fail2Ban per rilevare gli accessi SSH/Proxmox falliti dal journal.",
|
||||
"Limite di frequenza: <code>1000 events / 30 s</code> per evitare un flusso eccessivo di log.",
|
||||
"<code>ForwardToSyslog=no</code>, <code>ForwardToWall=no</code> — non duplicare messaggi a syslog o trasmettere a console."
|
||||
],
|
||||
"tipTitle": "Perché MaxLevelStore=info conta",
|
||||
"tipBody": "Una soglia più rigorosa come <code>warning</code> fa mostrare a ProxMenux Monitor voci quasi identiche in tutti gli intervalli, perché gran parte dell’attività è di livello info, e impedisce a Fail2Ban di vedere gli accessi falliti. Per ridurre i log usa <code>SystemMaxUse</code> e <code>RateLimitBurst</code> senza restringere i livelli salvati."
|
||||
},
|
||||
"logrotate": {
|
||||
"heading": "Ottimizza logrotate",
|
||||
"intro": "Riscrive <code>/etc/logrotate.conf</code> con impostazioni globali giornaliere e di dimensione, 7 rotazioni conservate, compressione e <code>copytruncate</code> per consentire ai servizi di scrivere senza riaprire i log. La dimensione, indicata dopo la frequenza giornaliera, prevale salvo regole specifiche del log. Il <code>logrotate.conf</code> originale viene copiato in <code>.bak</code> alla prima applicazione.",
|
||||
"tipTitle": "Compatibile con Log2RAM",
|
||||
"tipBody": "La direttiva <code>size 10M</code> prevale sull’impostazione giornaliera precedente; <em>non</em> significa il primo dei due criteri. Logrotate controlla la soglia quando viene eseguito, e le regole specifiche possono sovrascrivere quelle globali. Con <code>/var/log</code> nella RAM di Log2RAM, verifica regole e frequenza del timer per controllare lo spazio."
|
||||
},
|
||||
"limits": {
|
||||
"heading": "Aumenta i vari limiti del sistema",
|
||||
"intro": "Aumenta i limiti di kernel, systemd e PAM che possono essere troppo bassi per un host con molte VM, container e servizi di rete.",
|
||||
"headerFile": "File",
|
||||
"headerSets": "Che cosa imposta",
|
||||
"rows": [
|
||||
{
|
||||
"file": "/etc/sysctl.d/99-maxwatches.conf",
|
||||
"sets": "<code>fs.inotify.max_user_watches / max_user_instances / max_queued_events = 1048576</code>"
|
||||
},
|
||||
{
|
||||
"file": "/etc/sysctl.d/99-maxkeys.conf",
|
||||
"sets": "<code>kernel.keys.maxkeys / root_maxkeys = 1000000</code>"
|
||||
},
|
||||
{
|
||||
"file": "/etc/sysctl.d/99-swap.conf",
|
||||
"sets": "<code>vm.swappiness = 10</code>, <code>vm.vfs_cache_pressure = 100</code>"
|
||||
},
|
||||
{
|
||||
"file": "/etc/sysctl.d/99-fs.conf",
|
||||
"sets": "<code>fs.nr_open / file-max = 2097152</code>, <code>fs.aio-max-nr = 1048576</code>"
|
||||
},
|
||||
{
|
||||
"file": "/etc/security/limits.d/99-limits.conf",
|
||||
"sets": "<code>nofile</code> e <code>nproc</code> a 1.048.576 (illimitati per root)"
|
||||
},
|
||||
{
|
||||
"file": "/etc/systemd/system.conf + user.conf",
|
||||
"sets": "<code>DefaultLimitNOFILE=1048576</code> per servizi systemd"
|
||||
},
|
||||
{
|
||||
"file": "/etc/pam.d/common-session + runuser-l",
|
||||
"sets": "<code>session required pam_limits.so</code> così il suddetto si applica alle shell di login"
|
||||
},
|
||||
{
|
||||
"file": "/root/.profile",
|
||||
"sets": "<code>ulimit -n 1048576</code> per la shell root"
|
||||
}
|
||||
],
|
||||
"tipTitle": "Perché inotify è importante",
|
||||
"tipBody": "Docker, Syncthing, gli osservatori di file Node.js e le scansioni Plex possono esaurire <code>max_user_watches</code>. Il valore predefinito dipende dal kernel e dalla RAM; non è sempre 8192. Il limite di 1M consente più osservatori senza preallocarli. Quelli attivi consumano memoria del kernel: controlla l’uso sugli host con poca RAM."
|
||||
},
|
||||
"memory": {
|
||||
"heading": "Ottimizzare le impostazioni di memoria",
|
||||
"intro": "Scrive un profilo sysctl bilanciato in <code>/etc/sysctl.d/99-memory.conf</code>. È pensato per un host hypervisor: preferisce tenere in RAM la memoria attivamente usata dalle VM e libera pagine in anticipo per evitare blocchi durante picchi di allocazione.",
|
||||
"warnTitle": "swappiness=10 sugli host con poca memoria",
|
||||
"warnBody": "Su un host con 16 GB di RAM e molte VM, abbassare swappiness può portare il kernel a terminare processi per memoria esaurita invece di usare lo swap. Se gli eventi OOM sono frequenti, riporta swappiness a 30–60 in <code>/etc/sysctl.d/99-memory.conf</code> dopo lo script."
|
||||
},
|
||||
"kexec": {
|
||||
"heading": "Attiva reboot veloci (kexec)",
|
||||
"intro": "Installa <code>kexec-tools</code> e lo collega in modo da poter riavviare l'host direttamente in un nuovo kernel <em> senza passare attraverso il firmware BIOS/UEFI</em>. Su grandi server dove POST prende 45 – 90 secondi, questo trasforma un riavvio da una pausa caffè in pochi secondi di downtime.",
|
||||
"installsTitle": "Cosa installa ProxMenux",
|
||||
"installsItems": [
|
||||
"Pacchetto <code>kexec-tools</code> (debconf preimpostato con <code>kexec-tools/load_kexec boolean false</code> per evitare domande di apt e lasciare disattivato il caricamento automatico allo spegnimento).",
|
||||
"Unità systemd <code>/etc/systemd/system/kexec-pve.service</code> — carica kernel Proxmox e initrd in memoria all’avvio, riutilizzando la riga di comando attuale del kernel.",
|
||||
"Un alias in <code>/root/.bash_profile</code>: <code>reboot-quick</code> → <code>systemctl kexec</code>."
|
||||
],
|
||||
"usageIntro": "Utilizzo dopo il riavvio successivo (o manuale <code>systemctl start kexec-pve</code>):",
|
||||
"warnTitle": "Quando non usare kexec",
|
||||
"warnBody": "kexec salta l’inizializzazione del firmware. Se BIOS/UEFI deve ripristinare lo stato hardware, per esempio una GPU in passthrough che si reimposta solo con POST completo o un firmware HBA problematico, i riavvii kexec possono lasciare i dispositivi parzialmente inizializzati. Usa un <code>reboot</code> normale dopo aggiornamenti del kernel o per applicare modifiche BIOS/UEFI. <code>reboot-quick</code> serve ai riavvii quotidiani."
|
||||
},
|
||||
"panic": {
|
||||
"heading": "Abilita riavvio in caso di kernel panic",
|
||||
"intro": "Fa <strong>riavviare automaticamente</strong> il kernel invece di lasciarlo bloccato sulla schermata di panic. Essenziale per host Proxmox remoti o senza console locale: un kernel bloccato ferma tutte le VM finché non puoi spegnere e riaccendere l’host.",
|
||||
"tipTitle": "Abbina questo con accesso remoto alla console",
|
||||
"tipBody": "Il riavvio automatico serve al recupero, non al debug. Per <em>indagare</em> su un panic invece di ripartire soltanto, usa <link>l’opzione kexec</link> con il supporto kdump del kernel, non configurato da ProxMenux, oppure registra una console seriale su un altro host prima di abilitare il riavvio automatico."
|
||||
},
|
||||
"verify": {
|
||||
"heading": "Verifica",
|
||||
"intro": "Dopo aver applicato le ottimizzazioni del sistema:",
|
||||
"tipTitle": "Ripristino e limiti",
|
||||
"tipBody": "Le sei opzioni sono registrate in <code>installed_tools.json</code> e disponibili in <link>Disinstalla ottimizzazioni</link>. Il ripristino rimuove i file di configurazione, l’unità e l’alias kexec, riscrive journald.conf con i valori predefiniti di systemd e ripristina logrotate.conf dal backup. Alcuni limiti attivi richiedono una nuova sessione o un riavvio."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"label": "Comandi di sistema utili",
|
||||
"href": "/docs/help-info/system-commands",
|
||||
"tail": "— verificare le modifiche (free -h, journalctl, ulimit -a)."
|
||||
},
|
||||
{
|
||||
"label": "Prestazioni",
|
||||
"href": "/docs/post-install/performance",
|
||||
"tail": "— regolazione supplementare del livello di sistema (pigz)."
|
||||
},
|
||||
{
|
||||
"label": "Disinstalla ottimizzazioni",
|
||||
"href": "/docs/post-install/uninstall",
|
||||
"tail": "— annullare qualsiasi modifica."
|
||||
},
|
||||
{
|
||||
"label": "Post-installazione personalizzabile",
|
||||
"href": "/docs/post-install/customizable",
|
||||
"tail": " — torna al menu superiore."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,271 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Disinstalla ottimizzazioni | Documentazione ProxMenux",
|
||||
"description": "Ripristina le modifiche di configurazione post-installazione reversibili applicate da ProxMenux. Gli strumenti registrati utilizzano disinstallatori dedicati che conservano lo stato host preesistente, laddove possibile."
|
||||
},
|
||||
"header": {
|
||||
"title": "Disinstalla ottimizzazioni",
|
||||
"description": "Ripristina le modifiche reversibili apportate dagli script post-installazione automatizzati o personalizzabili. ProxMenux registra ogni ottimizzazione supportata con la sua funzione di restauro dedicata; gli aggiornamenti dei pacchetti sono intenzionalmente esclusi.",
|
||||
"section": "Impostazioni post-installazione Proxmox"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Perché questo esiste",
|
||||
"body": "Ogni modifica reversibile supportata viene <strong>registrata</strong> in <code>/usr/local/share/proxmenux/installed_tools.json</code>. Il registro elenca le ottimizzazioni attive e richiama la funzione di ripristino corrispondente. Le azioni senza ripristino sicuro, come l’aggiornamento completo dei pacchetti, non vengono aggiunte."
|
||||
},
|
||||
"openMenu": {
|
||||
"heading": "Come aprirlo",
|
||||
"body": "Dal menu principale apri <strong>Impostazioni post-installazione Proxmox → Disinstalla ottimizzazioni</strong>. La lista mostra le ottimizzazioni <em>attualmente applicate</em>; quelle non applicate non compaiono.",
|
||||
"imageAlt": "Lista Disinstalla ottimizzazioni con modifiche attive sull’host e caselle per scegliere quali annullare"
|
||||
},
|
||||
"howWorks": {
|
||||
"heading": "Come funziona il ripristino",
|
||||
"steps": [
|
||||
{
|
||||
"title": "Registro e rilevamento automatico",
|
||||
"body1": "Alla prima esecuzione ProxMenux cerca indicatori sull’host: <code>/etc/sysctl.d/99-memory.conf</code>, <code>/etc/apt/apt.conf.d/99-force-ipv4</code>, pacchetto <code>haveged</code> installato, servizio Log2RAM attivo e simili. Gli elementi riconosciuti vengono registrati come reversibili anche se applicati da una versione precedente al registro.",
|
||||
"body2": "Questa migrazione funziona solo una volta. Dopo di che, ogni applicazione/ritorno aggiorna il registro direttamente."
|
||||
},
|
||||
{
|
||||
"title": "Scegli cosa ripristinare",
|
||||
"body1": "La lista mostra un nome comprensibile per ogni elemento, come <em>Ottimizzazione della memoria</em>, <em>Passthrough PCI IOMMU/VFIO</em> o <em>Log2RAM (protezione SSD)</em>. Seleziona quelli da annullare; gli altri non vengono modificati."
|
||||
},
|
||||
{
|
||||
"title": "Esecuzione del ripristino",
|
||||
"body1": "Per ogni elemento selezionato, ProxMenux chiama la sua funzione disinstallazione corrispondente. La maggior parte delle inversioni seguono uno dei tre modelli:",
|
||||
"items": [
|
||||
"<strong>Da backup</strong> — ripristina un <code>.bak</code> creato all’applicazione (bashrc, logrotate.conf, journald.conf, riga di comando GRUB/kernel).",
|
||||
"<strong>Rimozione della configurazione</strong> — elimina i file ProxMenux <code>/etc/sysctl.d/99-*.conf</code>, <code>/etc/apt/apt.conf.d/99-*</code> o l’unità systemd, poi ricarica.",
|
||||
"<strong>Reinstallazione dei pacchetti</strong> — per modifiche all’interfaccia come l’avviso di abbonamento, reinstalla i pacchetti originali con <code>--force-confnew</code> per ripristinare le impostazioni distribuite."
|
||||
],
|
||||
"body2": "Ogni inversione registra i suoi progressi. Gli elementi che richiedono un riavvio (VFIO, nomi di interfaccia persistenti) impostano una bandiera che attiva il prompt di riavvio alla fine."
|
||||
},
|
||||
{
|
||||
"title": "Richiesta di riavvio finale",
|
||||
"body1": "Dopo l'inversione il menu mostra un prompt di riavvio. Gli elementi che hanno cambiato i parametri del kernel, i moduli del kernel o la denominazione di rete (VFIO, i nomi di interfaccia persistenti) hanno bisogno del riavvio per prendere effetto; altri elementi non lo fanno, e il prompt è un default di sicurezza piuttosto che un controllo per-item."
|
||||
}
|
||||
]
|
||||
},
|
||||
"reversible": {
|
||||
"heading": "Che cosa è reversibile",
|
||||
"intro": "Le ottimizzazioni reversibili registrate e i loro disinstallatori corrispondenti sono raggruppati qui per area:",
|
||||
"groups": [
|
||||
{
|
||||
"title": "Repositori & APT",
|
||||
"items": [
|
||||
{
|
||||
"tool": "Rimozione dell’avviso di abbonamento",
|
||||
"restores": "Prima cerca di ripristinare i file UI da backup propri di ProxMenux (/usr/local/share/proxmenux/backups/proxmoxlib.js.backup.* e, quando l'interfaccia utente mobile viene patchata, index.html.tpl.backup.*). Solo se un backup è mancante o danneggiato, torna a reinstallare pve-manager, proxmox-widget-toolkit, libjs-extjs e libpve-http-server-perl con force-confnew. Inoltre cancella le copie cache .js / .gz."
|
||||
},
|
||||
{
|
||||
"tool": "Salta le lingue APT",
|
||||
"restores": "Rimuove /etc/apt/apt.conf.d/99-disable-translations, consentendo gli indici delle descrizioni tradotte secondo le altre impostazioni linguistiche APT."
|
||||
},
|
||||
{
|
||||
"tool": "Forza IPv4 per APT",
|
||||
"restores": "Rimuove /etc/apt/apt.conf.d/99-force-ipv4."
|
||||
},
|
||||
{
|
||||
"tool": "Utilità del sistema",
|
||||
"restores": "Rimuove completamente solo i pacchetti di utilità selezionati che ProxMenux ha registrato come appena installati. I pacchetti già presenti non entrano nell’elenco e restano intatti."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Limiti di Kernel, memoria e sistema",
|
||||
"items": [
|
||||
{
|
||||
"tool": "Impostazioni della memoria",
|
||||
"restores": "Rimuove /etc/sysctl.d/99-memory.conf e ricarica sysctl."
|
||||
},
|
||||
{
|
||||
"tool": "Configurazione del kernel panic",
|
||||
"restores": "Rimuove /etc/sysctl.d/99-kernelpanic.conf."
|
||||
},
|
||||
{
|
||||
"tool": "Aumento dei limiti di sistema",
|
||||
"restores": "Rimuove /etc/sysctl.d/99-maxwatches.conf, 99-maxkeys.conf, 99-swap.conf, 99-fs.conf e /etc/security/limits.d/99-limits.conf. Ripristina limiti PAM e DefaultLimitNOFILE systemd. In /root/.profile rimuove solo il vecchio ulimit -n 256000; ulimit -n 1048576 dell’installatore attuale può restare e richiedere rimozione manuale."
|
||||
},
|
||||
{
|
||||
"tool": "Profilo swap ZRAM",
|
||||
"restores": "Disattiva lo swap /dev/zram0, ferma dev-zram0.swap e rimuove /etc/systemd/zram-generator.conf.d/90-proxmenux.conf. Rimuove completamente systemd-zram-generator solo se installato da ProxMenux e senza altre configurazioni ZRAM. Se non può spostare le pagine fuori da ZRAM, il profilo rimane attivo e non elimina nulla."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Rete",
|
||||
"items": [
|
||||
{
|
||||
"tool": "Ottimizzazione della rete",
|
||||
"restores": "Rimuove /etc/sysctl.d/99-network.conf, 97-proxmenux-fwbr.conf e 98-proxmenux-rpf.conf, l’unità proxmenux-fwbr-tune.service, lo script /usr/local/sbin/proxmenux-fwbr-tune e la regola udev /etc/udev/rules.d/99-zz-proxmenux-fwbr-tune.rules. Elimina anche source /etc/network/interfaces.d/* da /etc/network/interfaces. Ricarica sysctl, systemd e le regole udev."
|
||||
},
|
||||
{
|
||||
"tool": "Open vSwitch",
|
||||
"restores": "Esegue apt purge su openvswitch-switch e openvswitch-common. Migrare eventuali ponti OVS indietro ai ponti Linux prima di eseguire questa disinstallazione — altrimenti le VM su quei ponti perdono la rete sul prossimo avvio."
|
||||
},
|
||||
{
|
||||
"tool": "TCP BBR + TCP Fast Open",
|
||||
"restores": "Rimuove /etc/sysctl.d/99-kernel-bbr.conf e 99-tcp-fastopen.conf e ricarica le altre impostazioni sysctl. Eliminare i file non ripristina i valori attivi; valori come cubic e tcp_fastopen=1 tornano al riavvio salvo altre configurazioni."
|
||||
},
|
||||
{
|
||||
"tool": "Nomi di interfaccia persistenti",
|
||||
"restores": "Rimuove solo i file 10-proxmenux-*.link che trasportano l'intestazione ProxMenux da /etc/systemd/network/. Qualsiasi file .link fornito da un altro pacchetto o scritto dall'utente viene lasciato in posizione. I nomi delle interfacce ritornano al comportamento predefinito di systemd nel prossimo riavvio."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Registrazione",
|
||||
"items": [
|
||||
{
|
||||
"tool": "Ottimizzazione di journald",
|
||||
"restores": "Riscrive /etc/systemd/journald.conf con i valori predefiniti originali e riavvia systemd-journald."
|
||||
},
|
||||
{
|
||||
"tool": "Ottimizzazione Logrotate",
|
||||
"restores": "Ripristina /etc/logrotate.conf dal file .bak catturato prima della modifica."
|
||||
},
|
||||
{
|
||||
"tool": "Log2RAM",
|
||||
"restores": "Ferma e disabilita servizio e timer. Elimina processi cron, unità systemd, binari, configurazione e /var/log.hdd. Rimuove anche il pacchetto apt se installato in quel modo."
|
||||
},
|
||||
{
|
||||
"tool": "TRIM automatico ZFS",
|
||||
"restores": "Legge /usr/local/share/proxmenux/zfs_autotrim_pools, l’elenco dei pool realmente modificati, ed esegue zpool set autotrim=off su ciascuno. Non tocca autotrim abilitato manualmente prima di ProxMenux."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Shell & apparenza",
|
||||
"items": [
|
||||
{
|
||||
"tool": "Personalizzazione di Bashrc",
|
||||
"restores": "Ripristina /root/.bashrc dal backup .bak. Se non esiste alcun backup, rimuove il blocco PMX_CORE_BASHRC da marcatori."
|
||||
},
|
||||
{
|
||||
"tool": "Banner MOTD personalizzato",
|
||||
"restores": "Ripristina l'esatto contenuto originale /etc/motd mantenuto sotto /usr/local/share/proxmenux, rimuove il file quando non esisteva prima, o rimuove in modo sicuro il marcatore legacy durante la migrazione di un'installazione precedente."
|
||||
},
|
||||
{
|
||||
"tool": "Fastfetch",
|
||||
"restores": "Rimuove binario, directory di configurazione, hook update-motd e blocco delimitato BEGIN FASTFETCH / END FASTFETCH da /root/.bashrc, ~/.profile, /etc/profile e /etc/profile.d/fastfetch.sh. Rimuove completamente il pacchetto apt se installato."
|
||||
},
|
||||
{
|
||||
"tool": "Figurine",
|
||||
"restores": "Rimuove il binario, la voce profile.d e il blocco alias in bashrc/profile."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Hardware e virtualizzazione",
|
||||
"items": [
|
||||
{
|
||||
"tool": "IOMMU / VFIO",
|
||||
"restores": "Rimuove i moduli vfio da /etc/modules, il nouveau / radeon / nvidia blacklist, e intel_iommu=on / amd_iommu=on / iommu=pt / pcie_acs_override parametri da /etc/kernel/cmdline (ZFS) o GRUB. Ricostruisce initramfs."
|
||||
},
|
||||
{
|
||||
"tool": "AMD CPU correzioni (Ryzen/EPYC)",
|
||||
"restores": "Rimuove idle=nomwait dal kernel cmdline (ZFS) o GRUB, e le opzioni ignore_msrs / report_ignored_msrs da /etc/modprobe.d/kvm.conf."
|
||||
},
|
||||
{
|
||||
"tool": "Agente guest per un host Proxmox virtualizzato",
|
||||
"restores": "Legge /usr/local/share/proxmenux/guest_agent.pkg e rimuove il pacchetto host registrato. L’installatore sceglie qemu-guest-agent, open-vm-tools o virtualbox-guest-utils secondo l’hypervisor. Senza registrazione prova quei tre pacchetti. Agisce sull’host Proxmox annidato, non sui modelli guest."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Archiviazione",
|
||||
"items": [
|
||||
{
|
||||
"tool": "Dimensionamento dell'ARC ZFS",
|
||||
"restores": "Rimuove /etc/modprobe.d/99-zfsarc.conf, ripristina i file *.conf esterni in conflitto salvati in /usr/local/share/proxmenux/backups/zfs_arc/, ricrea initramfs ed esegue proxmox-boot-tool refresh sugli host systemd-boot."
|
||||
},
|
||||
{
|
||||
"tool": "Snapshot automatici ZFS",
|
||||
"restores": "Rimuove le voci cron scritte dallo script e propone apt purge zfs-auto-snapshot. Gli snapshot esistenti sui pool restano intatti; eliminali separatamente se necessario."
|
||||
},
|
||||
{
|
||||
"tool": "Limiti di velocità di vzdump",
|
||||
"restores": "Ripristina /etc/vzdump.conf dal .bak l'installazione creata, riportando bwlimit e ionice ai valori pre-ProxMenux."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Servizi e extra",
|
||||
"items": [
|
||||
{
|
||||
"tool": "Sincronizzazione del tempo",
|
||||
"restores": "Imposta il fuso orario di ritorno a UTC (impostazione predefinita sicura) tramite timedatectl."
|
||||
},
|
||||
{
|
||||
"tool": "Generazione di entropia (haveged)",
|
||||
"restores": "Ferma, disabilita e rimuove completamente il pacchetto haveged."
|
||||
},
|
||||
{
|
||||
"tool": "kexec (riavvii rapidi)",
|
||||
"restores": "Disabilita kexec-pve.service, rimuove il file dell'unità e gli alias reboot-quick da /root/.bash_profile, purges kexec-tools."
|
||||
},
|
||||
{
|
||||
"tool": "RPC / rpcbind Disabilitazione",
|
||||
"restores": "Ripristina separatamente rpcbind.service e rpcbind.socket negli stati abilitato/disabilitato e attivo/inattivo registrati prima di ProxMenux."
|
||||
},
|
||||
{
|
||||
"tool": "pigz (gzip parallelo)",
|
||||
"restores": "Ripristina il vero gzip da gzip.distrib, rimuove la deviazione dpkg e /bin/pigzwrapper, commenta la riga pigz in /etc/vzdump.conf ed esegue apt purge pigz dopo aver verificato gzip."
|
||||
},
|
||||
{
|
||||
"tool": "Servizi di alta disponibilità",
|
||||
"restores": "Ferma e disabilita pve-ha-lrm, pve-ha-crm e corosync. I gruppi HA esistenti e le definizioni delle risorse non vengono eliminati — rimuoverli dall'interfaccia utente web se non ne hai più bisogno."
|
||||
},
|
||||
{
|
||||
"tool": "repository Ceph",
|
||||
"restores": "Rimuove completamente i pacchetti Ceph installati dall’opzione, elimina il file deb822 /etc/apt/sources.list.d/ceph.sources su PVE 9 o la vecchia lista Ceph su PVE 8 e aggiorna la cache APT."
|
||||
},
|
||||
{
|
||||
"tool": "OVH RTM (monitoraggio)",
|
||||
"restores": "Rimuove i pacchetti corrispondenti a ovh-rtm*, rtm e rtm-*, elimina /etc/rtm e la voce RTM dal registro. I residui Puppet in /etc/puppet/ possono richiedere verifica e pulizia manuale; la directory non viene eliminata. Su host non OVH l’installatore normalmente non modifica nulla."
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"edge": {
|
||||
"heading": "Casi particolari e limiti",
|
||||
"packageTitle": "La reinstallazione interessa pacchetti Proxmox in uso",
|
||||
"packageBody": "Se le copie ProxMenux non possono annullare <strong>Rimozione dell’avviso di abbonamento</strong>, il ripiego reinstalla <code>pve-manager</code>, <code>proxmox-widget-toolkit</code>, <code>libjs-extjs</code> e <code>libpve-http-server-perl</code> con <code>--force-confnew</code>. Interessa l’interfaccia web in uso: ricarica il browser e attendi qualche secondo per riconnetterti. Evitalo durante migrazioni o clonazioni.",
|
||||
"rebootTitle": "I nomi persistenti e VFIO hanno bisogno di un riavvio",
|
||||
"rebootBody": "Eliminare i file <code>10-proxmenux-*.link</code> (<em>Nomi persistenti delle interfacce</em>) e annullare <em>IOMMU/VFIO</em> non cambia il sistema già avviato: le modifiche si applicano dopo il riavvio. ProxMenux segnala automaticamente la necessità di riavviare.",
|
||||
"perItemTitle": "Puoi annullare una modifica e conservare le altre",
|
||||
"perItemBody": "Il disinstallatore opera per-item. Se si desidera solo rimuovere Log2RAM ma mantenere il tuning di rete e le modifiche bashrc, selezionare solo <em>Log2RAM</em>. Nient'altro è toccato, e il registro è aggiornato di conseguenza."
|
||||
},
|
||||
"inspect": {
|
||||
"heading": "Ispezione manuale del registro",
|
||||
"intro": "Se volete vedere cosa è tracciato senza aprire il menu:",
|
||||
"outro": "Ogni voce <code>\"tool\": true</code> corrisponde a qualcosa che ProxMenux applicato e può invertire. Rimuovere una voce manualmente non è raccomandato — utilizzare sempre il menu, che esegue anche la funzione inversione invece di semplicemente dimenticando il cambiamento.",
|
||||
"reinstallTitle": "Reinstallare dopo aver disinstallato",
|
||||
"reinstallBody": "Puoi riapplicare in seguito un’ottimizzazione annullata. Apri di nuovo <link>il menu post-installazione</link> ed esegui Automatizzato o Personalizzabile: il registro memorizzerà il nuovo stato."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"label": "Post-Install automatizzato",
|
||||
"href": "/docs/post-install/automated",
|
||||
"tail": " — riapplica la configurazione di base consigliata."
|
||||
},
|
||||
{
|
||||
"label": "Post-installazione personalizzabile",
|
||||
"href": "/docs/post-install/customizable",
|
||||
"tail": "— scegliere un sottoinsieme diverso."
|
||||
},
|
||||
{
|
||||
"label": "Disinstalla ProxMenux",
|
||||
"href": "/docs/settings/uninstall-proxmenux",
|
||||
"tail": "— operazione diversa: rimuove ProxMenux se stessa, non le sue ottimizzazioni applicate."
|
||||
},
|
||||
{
|
||||
"label": "Panoramica post-install",
|
||||
"href": "/docs/post-install",
|
||||
"tail": "."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,112 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Applica aggiornamenti disponibili — Ottimizzazioni post-installazione | Documentazione ProxMenux",
|
||||
"description": "Come ProxMenux rileva quando un'ottimizzazione post-install (Log2Ram, Impostazioni di memoria, Limiti di sistema, Logrotate, tuning di rete...) è stata aggiornata a monte e come applicare la nuova versione — dal menu Post-Install o dal cruscotto Monitor."
|
||||
},
|
||||
"header": {
|
||||
"title": "Applica aggiornamenti disponibili",
|
||||
"description": "Quando sul disco è presente una versione di un’ottimizzazione post-installazione (Log2Ram, impostazioni della memoria, limiti di sistema, Logrotate …) più recente di quella registrata sull’host, ProxMenux la segnala come aggiornamento disponibile. Puoi applicarla dal menu di post-installazione nell’interfaccia degli script oppure dalla dashboard del Monitor. Entrambi i percorsi rieseguono la stessa funzione di post-installazione e ne aggiornano la versione registrata.",
|
||||
"section": "Impostazioni post-installazione Proxmox"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Che cosa è questo",
|
||||
"body": "Le ottimizzazioni post-installazione ProxMenux hanno versioni, ad esempio <code>Log2ram SSD Protection v1.2</code>. L’host registra quelle attive e le relative versioni in <code>/usr/local/share/proxmenux/installed_tools.json</code>. Quando una nuova versione ProxMenux aggiorna un’ottimizzazione, viene rilevata la differenza ed è possibile riapplicare solo quella, senza ripetere tutta la post-installazione."
|
||||
},
|
||||
"why": {
|
||||
"heading": "Perché questo esiste",
|
||||
"body": "Le ottimizzazioni post-installazione ricevono miglioramenti: regolazioni sysctl, limiti Logrotate più severi, nuovi criteri di dimensionamento Log2RAM o correzioni di casi limite. Senza questa modalità occorreva ripetere lo script, che riapplica <em>tutte</em> le ottimizzazioni, oppure rinunciare al miglioramento. Applica aggiornamenti disponibili permette di scegliere solo quelle la cui versione è cambiata."
|
||||
},
|
||||
"detection": {
|
||||
"heading": "Come vengono rilevati gli aggiornamenti",
|
||||
"steps": [
|
||||
{
|
||||
"title": "Script con versione su disco",
|
||||
"body": "Ogni funzione post-installazione dichiara la sua versione all'interno dello script (<code>scripts/post_install/auto_post_install.sh</code> e <code>scripts/post_install/customizable_post_install.sh</code>). Uno scanner estrae queste versioni dalla fonte sul disco."
|
||||
},
|
||||
{
|
||||
"title": "Registro delle versioni sull’host",
|
||||
"body": "Quando l'operatore ha applicato ogni ottimizzazione, la corrispondente chiamata <code>register_tool</code> ha scritto la versione attiva in <code>/usr/local/share/proxmenux/installed_tools.json</code>. Questo file è la fonte della verità per \"che cosa è attivo su questo host in questo momento\"."
|
||||
},
|
||||
{
|
||||
"title": "Monitor confronta entrambi i lati",
|
||||
"body": "All’avvio e ogni 24 ore, Monitor confronta le versioni su disco con quelle registrate. Ogni differenza genera una voce in <code>/usr/local/share/proxmenux/updates_available.json</code>. Il file alimenta la voce del menu post-installazione e la scheda della dashboard Monitor."
|
||||
},
|
||||
{
|
||||
"title": "Una notifica per nuova versione",
|
||||
"body": "Quando almeno un’ottimizzazione ha un aggiornamento in attesa, Monitor invia un’unica notifica raggruppata, ad esempio <em>«4 aggiornamenti delle ottimizzazioni ProxMenux disponibili»</em>, con una riga per strumento nel formato <code>name (vX → vY)</code>, come per i pacchetti Proxmox. Non si ripete ogni giorno per lo stesso insieme: si riattiva solo con una nuova versione o un nuovo strumento nell’elenco."
|
||||
}
|
||||
]
|
||||
},
|
||||
"pathA": {
|
||||
"heading": "Percorso A — Dal menu post-installazione",
|
||||
"intro": "Dal menu principale ProxMenux, apri <strong>Impostazioni post-installazione Proxmox</strong>. Con aggiornamenti in attesa compare <strong>Applica aggiornamenti disponibili (N)</strong> sopra <em>Disinstalla ottimizzazioni</em>. Il numero indica quante ottimizzazioni hanno una versione su disco più recente di quella registrata. Se tutto è aggiornato, la voce è nascosta.",
|
||||
"menuAlt": "Menu degli script post-installazione con Applica aggiornamenti disponibili (N) sopra Disinstalla ottimizzazioni; il contatore indica quante ottimizzazioni hanno una versione più recente su disco",
|
||||
"menuCaption": "<em>Applica aggiornamenti disponibili (N)</em> compare solo se almeno un’ottimizzazione ha un aggiornamento in attesa; si nasconde quando l’host è aggiornato.",
|
||||
"checklistBody": "Apre una lista con tutti gli aggiornamenti in attesa, nel formato <code>name (vX → vY)</code>. Sono tutti selezionati per impostazione predefinita: deseleziona quelli che non vuoi applicare ora.",
|
||||
"checklistAlt": "Finestra Applica aggiornamenti disponibili con una riga per ottimizzazione in attesa, nome e passaggio di versione (attuale → disponibile). Tutte le righe sono selezionate.",
|
||||
"checklistCaption": "Seleziona le singole ottimizzazioni da aggiornare. Lo stesso motore usato per la post-installazione automatica e personalizzabile riesegue in background ogni funzione selezionata e ne aggiorna la versione registrata."
|
||||
},
|
||||
"pathB": {
|
||||
"heading": "Percorso B — Dalla dashboard Monitor",
|
||||
"intro": "Gli stessi aggiornamenti compaiono in Monitor sotto <link>Impostazioni → Ottimizzazioni ProxMenux</link>. La scheda mostra un <strong>contatore degli aggiornamenti</strong> in attesa che apre il selettore per ottimizzazione. Ogni strumento ha anche la propria azione di aggiornamento.",
|
||||
"imageAlt": "Scheda Ottimizzazioni ProxMenux nelle impostazioni Monitor con contatore degli aggiornamenti che apre il selettore e azioni di aggiornamento per ogni strumento",
|
||||
"imageCaption": "La scheda Ottimizzazioni di Monitor rende accessibili gli aggiornamenti dal contatore quando esiste una versione più recente su disco, senza accedere alla shell."
|
||||
},
|
||||
"applying": {
|
||||
"heading": "Cosa succede quando si applica",
|
||||
"steps": [
|
||||
{
|
||||
"title": "Riesegue la funzione post-installazione",
|
||||
"body": "La funzione scelta viene rieseguita sull’host. Essendo <strong>idempotente</strong>, non duplica la configurazione: sostituisce la versione precedente con la nuova, inclusi file sysctl, configurazioni aggiuntive e unità dei servizi."
|
||||
},
|
||||
{
|
||||
"title": "Aggiorna il registro",
|
||||
"body": "La chiamata <code>register_tool</code> nella funzione scrive la nuova versione in <code>installed_tools.json</code>. La scansione successiva non rileva più differenze e l’aggiornamento scompare dal menu e dalla scheda Monitor."
|
||||
},
|
||||
{
|
||||
"title": "Nessun riavvio a meno che la funzione non lo dica",
|
||||
"body": "La maggior parte degli aggiornamenti hanno effetto immediatamente. Gli aggiornamenti che toccano i moduli del kernel, i nomi di interfaccia persistenti, o VFIO mostrano lo stesso prompt di riavvio di una nuova installazione."
|
||||
},
|
||||
{
|
||||
"title": "Aggiornamento del Registro inviato al Monitor",
|
||||
"body": "Al termine del gruppo, il menu invia una richiesta POST a <code>http://127.0.0.1:8008/api/updates/post-install/scan</code> per ricostruire <code>/usr/local/share/proxmenux/updates_available.json</code>. Dopo tutti gli aggiornamenti scompaiono il contatore nella scheda Ottimizzazioni e la voce condizionale della shell, senza attendere la scansione successiva. La scheda resta disponibile."
|
||||
}
|
||||
],
|
||||
"jqTitle": "jq è necessario",
|
||||
"jqBody": "La lista del percorso A usa <code>jq</code> per leggere il JSON degli aggiornamenti. Se <code>jq</code> manca, termina senza messaggi: vedresti il menu con il conteggio ma nulla accadrebbe dopo la selezione. Su un’installazione Proxmox moderna <code>jq</code> è presente; in caso di dubbio esegui <code>apt install -y jq</code>."
|
||||
},
|
||||
"differs": {
|
||||
"heading": "Come differisce dagli altri percorsi",
|
||||
"headerPath": "Path",
|
||||
"headerScope": "Ambito",
|
||||
"headerWhen": "Quando ha senso",
|
||||
"rows": [
|
||||
{
|
||||
"pathLabel": "Automatizzato",
|
||||
"pathHref": "/docs/post-install/automated",
|
||||
"scope": "Riapplica <em>tutte</em> le ottimizzazioni del pacchetto.",
|
||||
"when": "Host nuovo o riapplicazione completa della configurazione di base di un nodo interamente gestito."
|
||||
},
|
||||
{
|
||||
"pathLabel": "Personalizzabile",
|
||||
"pathHref": "/docs/post-install/customizable",
|
||||
"scope": "Scegli dal catalogo completo.",
|
||||
"when": "Scegliere esattamente quali ottimizzazioni sono attive sull’host."
|
||||
},
|
||||
{
|
||||
"pathLabel": "Applica aggiornamenti disponibili",
|
||||
"pathHref": null,
|
||||
"scope": "Solo le ottimizzazioni con una versione più recente su disco.",
|
||||
"when": "Mantenere aggiornate le ottimizzazioni installate senza toccare il resto."
|
||||
},
|
||||
{
|
||||
"pathLabel": "Disinstalla ottimizzazioni",
|
||||
"pathHref": "/docs/post-install/uninstall",
|
||||
"scope": "Invertire l'ottimizzazione e rimuovere la sua voce di registro.",
|
||||
"when": "Annullare una modifica specifica."
|
||||
}
|
||||
]
|
||||
},
|
||||
"notifTitle": "Controllo della notifica",
|
||||
"notifBody": "L’evento <em>Aggiornamenti delle ottimizzazioni ProxMenux disponibili</em> annuncia gli aggiornamenti in attesa. È attivo per impostazione predefinita su ogni canale e può essere silenziato per canale in <link>Impostazioni → Notifiche</link>. Si attiva una sola volta per insieme distinto di aggiornamenti, non a ogni scansione di 24 ore."
|
||||
}
|
||||
@@ -0,0 +1,116 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Post-installazione: Virtualizzazione | Documentazione ProxMenux",
|
||||
"description": "Opzioni di virtualizzazione nel ProxMenux Personalizzabile script post-installazione: installare automaticamente l'agente ospite giusto se Proxmox viene eseguito all'interno di un VM e abilitare IOMMU / VFIO in modo da poter passare i dispositivi PCI (GPU, NIC, HBA) attraverso le proprie VM."
|
||||
},
|
||||
"header": {
|
||||
"title": "Post-Install: Virtualizzazione",
|
||||
"section": "Impostazioni post-installazione Proxmox"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Che cosa copre questa categoria",
|
||||
"body": "Due opzioni indipendenti. <strong>Installa il guest agent appropriato</strong> serve quando Proxmox stesso gira dentro un altro hypervisor. <strong>Abilita supporto VFIO IOMMU</strong> interessa la maggior parte degli utenti: attiva le funzioni del kernel per assegnare direttamente GPU, HBA o schede di rete a una VM con prestazioni quasi native."
|
||||
},
|
||||
"guestAgent": {
|
||||
"heading": "Installa il guest agent appropriato",
|
||||
"intro": "Rileva l’ambiente di virtualizzazione dell’host Proxmox tramite <code>systemd-detect-virt</code> e <code>dmidecode</code> e installa gli strumenti guest adatti per comunicare correttamente con l’hypervisor esterno: arresto ordinato, sincronizzazione dell’orologio, informazioni IP, ecc.",
|
||||
"headerDetected": "Host rilevato",
|
||||
"headerPackage": "Pacchetto installato",
|
||||
"rows": [
|
||||
{
|
||||
"detected": "QEMU / KVM",
|
||||
"package": "qemu-guest-agent"
|
||||
},
|
||||
{
|
||||
"detected": "VMware (ESXi, Workstation)",
|
||||
"package": "open-vm-tools"
|
||||
},
|
||||
{
|
||||
"detected": "VirtualBox",
|
||||
"package": "virtualbox-guest-utils"
|
||||
},
|
||||
{
|
||||
"detected": "Bare metal (nessuno)",
|
||||
"package": "— no-op, niente installato"
|
||||
}
|
||||
],
|
||||
"skipTitle": "Salta questo su bare-metal Proxmox",
|
||||
"skipBody": "Se Proxmox gira direttamente sull’hardware, il caso comune, selezionare l’opzione non cambia nulla: il rilevatore restituisce <code>none</code> e lo script termina senza modifiche. Serve solo alle configurazioni che eseguono Proxmox <em>come guest</em> per test o laboratori."
|
||||
},
|
||||
"vfio": {
|
||||
"heading": "Abilita supporto VFIO IOMMU",
|
||||
"intro": "Attiva IOMMU sull’host e carica i moduli per il passthrough PCI (<code>vfio</code>, <code>vfio_iommu_type1</code>, <code>vfio_pci</code>). Puoi così assegnare un dispositivo fisico a una VM, che vi accede direttamente con prestazioni quasi native.",
|
||||
"whoTitle": "Chi ha bisogno di questo",
|
||||
"whoItems": [
|
||||
"Vuoi assegnare una GPU a una VM Windows per il gaming o a una VM macOS.",
|
||||
"Hai un NIC 10G dedicato per un firewall/router VM (OPNsense, pfSense).",
|
||||
"Si desidera passare un HBA direttamente a un TrueNAS/Unraid VM per ZFS su dischi nudi.",
|
||||
"Prevedi di usare una <em>Coral TPU</em>, una scheda di acquisizione o un dongle SDR in una VM."
|
||||
],
|
||||
"whoOutro": "Se non ti serve nulla di questo, puoi saltare l’opzione. Per l’accesso ai dispositivi da un <strong>LXC</strong>, invece di una VM, IOMMU <em>non</em> è necessario.",
|
||||
"doesTitle": "Cosa fa ProxMenux",
|
||||
"doesIntro": "La funzione tiene conto del boot loader: rileva ZFS (systemd-boot) o LVM/ext4 (GRUB) e scrive nel file corretto. È idempotente: se i parametri esistono già, non li aggiunge di nuovo.",
|
||||
"headerBoot": "Tipo di avvio",
|
||||
"headerFile": "File modificato",
|
||||
"headerPost": "Passo dopo aggiornamento",
|
||||
"bootRows": [
|
||||
{
|
||||
"boot": "systemd-boot (ZFS)",
|
||||
"file": "/etc/kernel/cmdline",
|
||||
"post": "proxmox-boot-tool refresh"
|
||||
},
|
||||
{
|
||||
"boot": "GRUB (LVM/ext4)",
|
||||
"file": "/etc/default/grub",
|
||||
"post": "update-grub"
|
||||
}
|
||||
],
|
||||
"kernelIntro": "Parametri del kernel aggiunti:",
|
||||
"modulesIntro": "Moduli Kernel aggiunti a <code>/etc/modules</code>:",
|
||||
"blacklistIntro": "Driver in conflitto inseriti nella blacklist in <code>/etc/modprobe.d/blacklist.conf</code>:",
|
||||
"blacklistTitle": "La blacklist dei driver GPU impedisce l’uso della GPU sull’host",
|
||||
"blacklistBody": "La blacklist impedisce al kernel host di associare <em>qualsiasi</em> driver GPU, permettendo a VFIO di acquisire la GPU. È ciò che serve per il passthrough a una VM, ma è l’<strong>opposto</strong> di quanto necessario per <link>installare i driver NVIDIA sull’host</link>, ad esempio per la transcodifica LXC. Scegli un percorso per ogni GPU:",
|
||||
"pathItems": [
|
||||
"<strong>GPU → VM:</strong> abilita VFIO/IOMMU qui e lascia i driver GPU nella blacklist.",
|
||||
"<strong>GPU → LXC (o host):</strong> salta questa opzione, usa l’installazione NVIDIA sull’host e non inserire nvidia/nouveau nella blacklist.",
|
||||
"<strong>Due GPU:</strong> una può andare a una VM e l’altra a un LXC, ma serve una configurazione più precisa: associare solo una scheda a <code>vfio-pci</code> tramite ID PCI. La blacklist predefinita è troppo ampia: modifica poi <code>blacklist.conf</code>."
|
||||
],
|
||||
"acsTitle": "Informazioni su pcie_acs_override — sapere cosa stai abilitando",
|
||||
"acsBody": "<code>pcie_acs_override=downstream,multifunction</code> allenta il controllo PCIe Access Control Services. Il kernel può separare gruppi IOMMU che il firmware indica come indivisibili, talvolta l’unico modo per assegnare un dispositivo senza l’intero gruppo. Il compromesso è <strong>un isolamento ridotto tra dispositivi</strong>: una VM malevola o compromessa con passthrough ha una superficie di attacco DMA maggiore. Accettabile in un laboratorio domestico, da valutare bene su host con carichi non attendibili. Se non serve, rimuovi il parametro da <code>/etc/kernel/cmdline</code> o <code>/etc/default/grub</code> dopo lo script e ripeti l’aggiornamento del boot loader.",
|
||||
"rebootTitle": "Riavvio necessario",
|
||||
"rebootBody": "IOMMU, moduli VFIO e blacklist hanno effetto dopo la rigenerazione di initramfs e il riavvio. Lo script esegue <code>update-initramfs -u -k all</code>, aggiorna il boot loader e imposta «riavvio necessario», così Personalizzabile lo propone alla fine.",
|
||||
"verifyTitle": "Verifica dopo il riavvio",
|
||||
"revertTitle": "Reversibile dal menu Disinstalla",
|
||||
"revertBody": "<link>Rimuovi le ottimizzazioni</link> annulla tutte le modifiche: elimina i parametri IOMMU da <code>/etc/kernel/cmdline</code> o da GRUB, rimuove i moduli VFIO da <code>/etc/modules</code>, elimina le voci della blacklist dei driver e ricostruisce initramfs. Per applicare effettivamente il ripristino è necessario riavviare."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"label": "Aggiungi GPU a VM (Passthrough)",
|
||||
"href": "/docs/hardware/gpu-vm-passthrough",
|
||||
"tail": "— passo successivo naturale una volta abilitato IOMMU + VFIO."
|
||||
},
|
||||
{
|
||||
"label": "Aggiungi controller o NVMe a VM",
|
||||
"href": "/docs/disk-manager/add-controller-nvme-vm",
|
||||
"tail": " — la stessa infrastruttura di passthrough per i controller di archiviazione."
|
||||
},
|
||||
{
|
||||
"label": "Comandi di passaggio GPU",
|
||||
"href": "/docs/help-info/gpu-commands",
|
||||
"tail": "— Riferimento di verifica IOMMU."
|
||||
},
|
||||
{
|
||||
"label": "Disinstalla ottimizzazioni",
|
||||
"href": "/docs/post-install/uninstall",
|
||||
"tail": " — annulla IOMMU / VFIO in modo pulito."
|
||||
},
|
||||
{
|
||||
"label": "Post-installazione personalizzabile",
|
||||
"href": "/docs/post-install/customizable",
|
||||
"tail": " — torna al menu superiore."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,152 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Fail2Ban | Documentazione ProxMenux",
|
||||
"description": "Installa Fail2Ban con tre jails ottimizzati per Proxmox (SSH aggressivo, Proxmox UI 8006, ProxMenux Monitor 8008). Include la correzione journald MaxLevelStore, servizi di registro personalizzati per l'affidabilità, backend nftables/iptables rilevati automaticamente e SSH MaxAuthTries rafforzamento.",
|
||||
"ogTitle": "Fail2Ban | Documentazione ProxMenux",
|
||||
"ogDescription": "Protezione contro la forza bruta per SSH e le interfacce web Proxmox, con correzioni di journald e del backend specifiche per Proxmox."
|
||||
},
|
||||
"header": {
|
||||
"title": "Fail2Ban",
|
||||
"description": "Installa Fail2Ban per Proxmox: tre jail (SSH aggressivo, interfaccia Proxmox su 8006, ProxMenux Monitor su 8008 e proxy inverso), correzione del livello journald per salvare gli eventi SSH, due servizi che copiano il journal in file per aggirare un problema del backend systemd, rilevamento del backend firewall e rafforzamento SSH con MaxAuthTries.",
|
||||
"section": "Sicurezza"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Cosa fa",
|
||||
"body": "Installa Fail2Ban dai repository Debian e scrive una configurazione Proxmox che protegge subito SSH, interfaccia web Proxmox e ProxMenux Monitor. Se rileva una installazione esistente, offre invece un menu per reinstallare o rimuovere."
|
||||
},
|
||||
"firstLaunch": {
|
||||
"heading": "dialogo di primo lancio",
|
||||
"body": "Se Fail2Ban non è installato, lo script mostra una conferma con ciò che installerà e configurerà. Annulla termina senza modifiche; confermare avvia l'installazione.",
|
||||
"imageAlt": "Conferma di installazione di Fail2Ban con tre jail, correzione di journald e rafforzamento SSH"
|
||||
},
|
||||
"jails": {
|
||||
"heading": "Le tre jail",
|
||||
"headerJail": "Jail",
|
||||
"headerProtects": "Protegge",
|
||||
"headerRetries": "Tentativi / Finestra",
|
||||
"headerBan": "Durata del blocco",
|
||||
"rows": [
|
||||
{
|
||||
"jail": "[sshd]",
|
||||
"protects": "SSH (modalità aggressive — include ddos, mode, normal)",
|
||||
"retries": "2 / 60 min",
|
||||
"ban": "9 ore"
|
||||
},
|
||||
{
|
||||
"jail": "[proxmox]",
|
||||
"protects": "Proxmox web UI (porta 8006)",
|
||||
"retries": "3 / 10 min",
|
||||
"ban": "1 ora"
|
||||
},
|
||||
{
|
||||
"jail": "[proxmenux]",
|
||||
"protects": "ProxMenux Monitor (porta 8008 + proxy inverso http/https)",
|
||||
"retries": "3 / 10 min",
|
||||
"ban": "1 ora"
|
||||
}
|
||||
],
|
||||
"outro": "Impostazioni predefinite globali da <code>jail.local</code>: <code>ignoreip = 127.0.0.1/8 ::1</code>, <code>ignoreself = true</code>,<code> bantime = 86400</code> (fallback di 24 ore per jails che non lo sovrascrivono), <code>maxretry = 2</code>, <code>findtime = 1800</code>."
|
||||
},
|
||||
"journald": {
|
||||
"heading": "Perché la correzione journald è importante",
|
||||
"intro": "Proxmox fornisce <code>/etc/systemd/journald.conf</code> con <codeNw>MaxLevelStore=warning</codeNw>. journald scarta i messaggi di livello <em>inferiore</em> a warning prima di salvarli. SSH e PAM segnalano gli errori di autenticazione ai livelli <em>info</em> / <em>notice</em>, quindi:",
|
||||
"diagram": {
|
||||
"sshLabel": "SSH / PAM",
|
||||
"sshDetail": "errore di autenticazione\n(livello info / notice)",
|
||||
"journaldLabel": "journald",
|
||||
"journaldDetail": "MaxLevelStore=warning\n→ evento scartato senza avviso",
|
||||
"fail2banLabel": "Fail2Ban",
|
||||
"fail2banDetail": "non vede niente\n→ non vieta mai nulla",
|
||||
"arrowLabel": "Proxmox predefinito"
|
||||
},
|
||||
"afterDiagram": "L'installatore rileva questo e scrive un drop-in a <codeXs>/etc/systemd/journald.conf.d/proxmenux-loglevel.conf</codeXs> aumentando sia <code>MaxLevelStore</code> che <code>MaxLevelSyslog</code> a <code>info</code>:",
|
||||
"code": "[Journal]\nMaxLevelStore=info\nMaxLevelSyslog=info",
|
||||
"outro": "Poi riavvia <code>systemd-journald</code>. Il drop-in viene rimosso su disinstallazione, ripristinando il default Proxmox originale."
|
||||
},
|
||||
"loggers": {
|
||||
"heading": "Perché due servizi logger personalizzati",
|
||||
"intro1": "Fail2Ban può leggere direttamente il journal systemd (<code>backend = systemd</code>), ma su Proxmox questo backend ha problemi noti con i processi worker di <code>pvedaemon</code>: gli eventi di autenticazione compaiono nel journal ma non sempre vengono rilevati. Il problema riguarda occasionalmente anche <code>sshd</code>.",
|
||||
"intro2": "ProxMenux crea due piccoli servizi systemd che seguono le unità interessate con <code>journalctl -f</code> e aggiungono ogni riga a un file. Fail2Ban legge questi file con il backend affidabile <code>backend = auto</code> (modalità file):",
|
||||
"headerService": "Servizio",
|
||||
"headerSource": "Unità di origine",
|
||||
"headerOutput": "File di uscita",
|
||||
"rows": [
|
||||
{
|
||||
"service": "proxmox-auth-logger.service",
|
||||
"source": "pvedaemon.service",
|
||||
"output": "/var/log/proxmox-auth.log"
|
||||
},
|
||||
{
|
||||
"service": "ssh-auth-logger.service",
|
||||
"source": "ssh.service",
|
||||
"output": "/var/log/ssh-auth.log"
|
||||
}
|
||||
],
|
||||
"outro": "Entrambi i servizi sono dichiarati <code>PartOf=fail2ban.service</code> in modo da riavviare con Fail2Ban e fermarsi con esso. Modalità 640 di proprietà di <code>root:adm</code> sui file di registro. Il terzo registro utilizzato dalla prigione <code>[proxmenux]</code> (<code>/var/log/proxmenux-auth.log</code>) è scritto direttamente dall'app ProxMenux Monitor Flask — nessun servizio logger necessario per questo."
|
||||
},
|
||||
"backend": {
|
||||
"heading": "Auto-detezione backend Firewall",
|
||||
"intro": "L'installatore sonda l'host: se <code>nft list ruleset</code> funziona, sceglie <code>nftables</code> come l'azione di divieto. In caso contrario torna a <code>iptables-multiport</code> / <code>iptables-allports</code>. La scelta è scritta in <code>jail.local</code>:",
|
||||
"code": "# nftables host\nbanaction = nftables\nbanaction_allports = nftables[type=allports]\n\n# iptables host (fallback)\nbanaction = iptables-multiport\nbanaction_allports = iptables-allports"
|
||||
},
|
||||
"hardening": {
|
||||
"heading": "Rafforzamento SSH: MaxAuthTries",
|
||||
"intro": "Il controllo Lynis <strong>SSH-7408</strong> raccomanda <code>MaxAuthTries 3</code> in <code>sshd_config</code>. La jail SSH usa <code>maxretry = 2</code> per bloccare dopo errori ripetuti; MaxAuthTries limita i tentativi nella stessa connessione. Questa impostazione aggiunge protezione anche quando Fail2Ban è fermo per manutenzione.",
|
||||
"installerIntro": "L'installatore:",
|
||||
"items": [
|
||||
"Legge il valore attuale di <code>MaxAuthTries</code> (o di default a 6 se assente).",
|
||||
"Lo salva a <code>/usr/local/share/proxmenux/sshd_maxauthtries_backup</code>.",
|
||||
"Modifica <code>sshd_config</code> direttamente: sostituisce la riga esistente, rimuove il commento dalla riga commentata o ne aggiunge una nuova.",
|
||||
"Ricarica <code>sshd</code> senza riavviarlo, mantenendo attive le sessioni esistenti."
|
||||
],
|
||||
"outro": "Su disinstallazione, il valore originale salvato viene ripristinato e <code>sshd</code> viene ricaricato di nuovo."
|
||||
},
|
||||
"manage": {
|
||||
"heading": "Gestire un'installazione esistente",
|
||||
"intro": "Se Fail2Ban è già installato, lo script lo rileva e mostra un menu di gestione invece di ripetere l'installazione.",
|
||||
"headerAction": "Azione",
|
||||
"headerWhat": "Che cosa fa",
|
||||
"rows": [
|
||||
{
|
||||
"action": "Reinstallare",
|
||||
"what": "Esegue nuovamente l'installazione completa e riscrive tutte le jail con i valori attuali di ProxMenux. Usalo quando un aggiornamento modifica le raccomandazioni."
|
||||
},
|
||||
{
|
||||
"action": "Rimuovi",
|
||||
"what": "Arresta fail2ban e i due servizi di logger, elimina il pacchetto apt, rimuove tutti i jail / file filtro, elimina il drop-in journald (ripristinando le impostazioni predefinite di Proxmox) e ripristina il SSH originale MaxAuthTries."
|
||||
}
|
||||
]
|
||||
},
|
||||
"verify": {
|
||||
"heading": "Verifica che funzioni.",
|
||||
"intro": "Dopo l'installazione, comandi utili dall'host:",
|
||||
"code": "# Service status and version\nsystemctl status fail2ban\nfail2ban-client --version\n\n# All active jails\nfail2ban-client status\n\n# Detail on one jail\nfail2ban-client status sshd\nfail2ban-client status proxmox\nfail2ban-client status proxmenux\n\n# Currently banned IPs in a jail\nfail2ban-client status sshd | grep \"Banned IP\"\n\n# Manually unban an IP (use this if you ban yourself)\nfail2ban-client unban 192.0.2.10\n\n# Tail the auth logs Fail2Ban watches\ntail -f /var/log/ssh-auth.log\ntail -f /var/log/proxmox-auth.log\ntail -f /var/log/fail2ban.log"
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Risoluzione dei problemi",
|
||||
"neverBansTitle": "Fail2Ban corre ma non vieta mai nulla",
|
||||
"neverBansBody": "Verifica che <code>tail -f /var/log/ssh-auth.log</code> riceva una voce dopo un tentativo SSH con password errata da un'altra macchina. Se rimane vuoto, controlla <code>systemctl status ssh-auth-logger.service</code>. Se il logger è attivo, consulta gli eventi recenti con <code>journalctl -u ssh.service -n 50 --no-pager -p info</code> e verifica che il drop-in journald consenta il livello <em>info</em>.",
|
||||
"monitorEmptyTitle": "ProxMenux Monitor jail non ha voci anche dopo accessi non riusciti",
|
||||
"monitorEmptyBody": "Il <code>[proxmenux]</code> jail legge <code>/var/log/proxmenux-auth.log</code>, che è scritto dall'app ProxMenux Monitor Flask - non da un logger journald. Se non esegui il Monitor, il file rimane vuoto e il jail non si attiva mai. Questo è previsto; la configurazione jail è innocua. Se esegui il Monitor e il registro è vuoto, controlla la configurazione di registrazione Flask.",
|
||||
"selfBanTitle": "Ho bloccato il mio stesso accesso",
|
||||
"selfBanIntro": "Da una console / IPMI / iKVM (o da un altro IP whitelist):",
|
||||
"selfBanCode": "fail2ban-client unban '<'YOUR_IP'>'\n\n# To prevent it next time, edit /etc/fail2ban/jail.local and add your IP:\nignoreip = 127.0.0.1/8 ::1 192.168.1.0/24 203.0.113.42\n\n# Then reload\nfail2ban-client reload",
|
||||
"aptFailTitle": "apt-get non riesce: ''Unable to locate package fail2ban''",
|
||||
"aptFailBody": "L'host manca il repos Debian (comune sulle installazioni di Barebones Proxmox). L'installatore rileva questo e scrive <code>/etc/apt/sources.list.d/debian.sources</code> con il nome giusto in codice (<code>bookworm</code> / <code>trixie</code>) prima di riprovare. Se non riesce ancora, controllare <code>/etc/os-release</code> per <code>VERSION_CODENAME</code> e confermare che l'URL repo è raggiungibile.",
|
||||
"lockoutTitle": "SSH mi blocca dopo l'installazione",
|
||||
"lockoutBody": "L'installatore imposta <code>MaxAuthTries=3</code>. Se il tuo password manager / agente richiama più chiavi, puoi superarlo su un singolo tentativo di connessione. Limitare le chiavi offerte: <code>ssh -o IdentitiesOnly=yes -i ~/.ssh/specific_key user@host</code>. O sollevare temporaneamente <code>MaxAuthTries</code> in <code>sshd_config</code> mentre si debug."
|
||||
},
|
||||
"files": {
|
||||
"heading": "File scritti",
|
||||
"code": "/etc/fail2ban/jail.local # global defaults + [sshd]\n/etc/fail2ban/jail.d/proxmox.conf # [proxmox]\n/etc/fail2ban/jail.d/proxmenux.conf # [proxmenux]\n/etc/fail2ban/filter.d/proxmox.conf # auth-failure regex for pvedaemon\n/etc/fail2ban/filter.d/proxmenux.conf # auth-failure regex for Monitor\n/etc/systemd/system/proxmox-auth-logger.service # journal → file (pvedaemon)\n/etc/systemd/system/ssh-auth-logger.service # journal → file (sshd)\n/etc/systemd/journald.conf.d/proxmenux-loglevel.conf # MaxLevelStore=info\n/etc/ssh/sshd_config # MaxAuthTries=3 (in-place edit)\n/var/log/proxmox-auth.log # written by logger service\n/var/log/ssh-auth.log # written by logger service\n/var/log/proxmenux-auth.log # written by Monitor Flask app\n/usr/local/share/proxmenux/sshd_maxauthtries_backup # for restore on uninstall"
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"monitorLabel": "ProxMenux Monitor → Scheda di sicurezza",
|
||||
"monitorTail": " — installazione dal pannello, stato delle jail in tempo reale, IP bloccati e regolazione di tentativi e durata del blocco per ogni jail dal browser.",
|
||||
"lynisLabel": "Lynis",
|
||||
"lynisTail": " — esegui un audit prima e dopo per verificare che il controllo SSH-7408 sia soddisfatto.",
|
||||
"securityLabel": "Panoramica della sicurezza",
|
||||
"securityTail": "— di nuovo alla panoramica della sezione."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Sicurezza Proxmox — Fail2Ban e audit di rafforzamento Lynis | ProxMenux",
|
||||
"description": "Due strumenti di sicurezza installabili per Proxmox VE: Fail2Ban (prevenzione delle intrusioni per SSH, interfaccia web Proxmox e ProxMenux Monitor) e Lynis (analisi della sicurezza e del rafforzamento del sistema, installato dal repository ufficiale GitHub).",
|
||||
"ogTitle": "Sicurezza Proxmox — Fail2Ban e audit di rafforzamento Lynis",
|
||||
"ogDescription": "Fail2Ban e Lynis per Proxmox VE: prevenzione delle intrusioni e audit di rafforzamento, installati e gestiti da ProxMenux.",
|
||||
"twitterTitle": "Sicurezza Proxmox | ProxMenux",
|
||||
"twitterDescription": "Fail2Ban e Lynis per Proxmox VE: prevenzione delle intrusioni e audit di rafforzamento."
|
||||
},
|
||||
"header": {
|
||||
"title": "Sicurezza",
|
||||
"description": "Due strumenti complementari per Proxmox VE: difesa attiva (Fail2Ban blocca gli IP che attaccano SSH o le interfacce web) e audit locale (Lynis cerca lacune nel rafforzamento e assegna un punteggio da 0 a 100). Ognuno ha un menu di installazione e gestione che rileva installazioni esistenti prima di ogni azione.",
|
||||
"section": "Sicurezza"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Difesa attiva e audit locale",
|
||||
"body": "Rispondono a domande diverse. <strong>Fail2Ban</strong> risponde a <em>«Ci stanno attaccando ora?»</em> monitorando i log di autenticazione e bloccando gli IP responsabili. <strong>Lynis</strong> risponde a <em>«Quanto è rafforzata la sicurezza di questo host?»</em> con un audit singolo e raccomandazioni concrete. Usali insieme: Lynis indica cosa migliorare e Fail2Ban reagisce agli attacchi in corso."
|
||||
},
|
||||
"opening": {
|
||||
"heading": "Apertura del menu",
|
||||
"body": "Dal menu principale di ProxMenux seleziona <strong>Sicurezza</strong>. Vedrai questo:",
|
||||
"imageAlt": "Menu di sicurezza con opzioni Fail2Ban e Lynis"
|
||||
},
|
||||
"pick": {
|
||||
"heading": "Scegli il tuo strumento",
|
||||
"body": "I due strumenti di sicurezza sono indipendenti — installare uno, entrambi, o nessuno. Ogni scheda qui sotto salta alla sezione che spiega lo strumento in dettaglio."
|
||||
},
|
||||
"cards": {
|
||||
"fail2ban": {
|
||||
"title": "Fail2Ban",
|
||||
"body": "Prevenzione attiva delle intrusioni. Controlla i log di autenticazione SSH e web e blocca gli IP dopo errori ripetuti.",
|
||||
"bullets": [
|
||||
"Tre jails: SSH, Proxmox UI (8006), ProxMenux Monitor (8008)",
|
||||
"Corregge le impostazioni predefinite di Proxmox journald che bloccano i registri di autenticazione",
|
||||
"Rilevamento automatico nftables / iptables",
|
||||
"Indurimento SSH: MaxAuthTries=3 (Consiglio di Lynis)"
|
||||
]
|
||||
},
|
||||
"lynis": {
|
||||
"title": "Lynis",
|
||||
"body": "Auditor locale di sicurezza. Analizza l'host e mostra un punteggio di rafforzamento e suggerimenti concreti per correggere i problemi.",
|
||||
"bullets": [
|
||||
"Installato dal repository ufficiale CISOfy su GitHub (versione più recente)",
|
||||
"Punteggio di rafforzamento 0–100 ed elenco di avvisi e suggerimenti",
|
||||
"Audit e aggiornamento dal menu",
|
||||
"Progettato in sola lettura: non modifica mai il sistema"
|
||||
]
|
||||
}
|
||||
},
|
||||
"workflowTip": {
|
||||
"title": "Flusso di lavoro che utilizza entrambi",
|
||||
"body": "Esegui prima Lynis per vedere il punteggio iniziale e le raccomandazioni principali. Applica le correzioni desiderate. Poi installa Fail2Ban: implementa automaticamente la protezione SSH contro la forza bruta e regola <code>MaxAuthTries</code> in <code>sshd_config</code> per soddisfare il controllo SSH-7408. Esegui di nuovo Lynis per verificare il miglioramento."
|
||||
},
|
||||
"fail2banSection": {
|
||||
"heading": "Fail2Ban",
|
||||
"body": "ProxMenux installa Fail2Ban con una configurazione specifica per Proxmox. Oltre alla jail SSH standard protegge l'interfaccia web Proxmox e ProxMenux Monitor. Aggira due problemi specifici: un'impostazione journald che scarta gli eventi di autenticazione e un problema del backend systemd che impedisce la lettura affidabile di alcune fonti del registro. La pagina dettagliata spiega installazione, tre jail, correzione di journald, rafforzamento SSH e risoluzione dei problemi.",
|
||||
"optionTitle": "Fail2Ban — installazione e gestione",
|
||||
"optionDescription": "Tre jail preconfigurate (sshd aggressivo, interfaccia Proxmox su 8006, ProxMenux Monitor su 8008 e proxy inverso), rilevamento di nftables/iptables, correzione di journald e rafforzamento SSH con MaxAuthTries."
|
||||
},
|
||||
"lynisSection": {
|
||||
"heading": "Lynis",
|
||||
"body": "ProxMenux clona Lynis da <code>github.com/CISOfy/lynis</code> in <code>/opt/lynis</code> e lo rende disponibile come <code>/usr/local/bin/lynis</code>. Evita il pacchetto Debian perché è indietro di diverse versioni principali rispetto al progetto originale. La pagina dettagliata spiega installazione, audit, aggiornamento, disinstallazione, lettura del rapporto e azioni sui risultati.",
|
||||
"optionTitle": "Lynis — installazione, audit e gestione",
|
||||
"optionDescription": "Installa l'ultimo Lynis dal repo ufficiale CISOfy GitHub (non il vecchio pacchetto Debian), esegue controlli di sistema con punteggio di indurimento e aggiornamenti tramite git pull."
|
||||
},
|
||||
"componentStatus": {
|
||||
"heading": "Stato del componente",
|
||||
"body": "Entrambi gli installatori registrano il loro stato in <code>/usr/local/share/proxmenux/components_status.json</code> sotto la categoria <code>security</code>. ProxMenux utilizza questo file per decidere se mostrare l'installazione o il menu di gestione delle operazioni successive, e gli stessi dati alimentano le dashboard nel ProxMenux Monitor quando presente."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,170 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Lynis | Documentazione ProxMenux",
|
||||
"description": "Installa la versione più recente di Lynis dal repository ufficiale CISOfy su GitHub, esegui un audit con punteggio di rafforzamento 0–100 e aggiorna tramite git pull. Auditor in sola lettura: non modifica il sistema.",
|
||||
"ogTitle": "Lynis | Documentazione ProxMenux",
|
||||
"ogDescription": "Installa ed esegui Lynis su Proxmox VE. Installazione dal repository originale GitHub, audit e aggiornamento."
|
||||
},
|
||||
"header": {
|
||||
"title": "Lynis",
|
||||
"description": "Clona la versione più recente di Lynis dal repository ufficiale CISOfy su GitHub, la rende disponibile come /usr/local/bin/lynis e offre audit, aggiornamento, reinstallazione e disinstallazione dal menu. L'analisi è in sola lettura: produce rapporti senza modificare il sistema.",
|
||||
"section": "Sicurezza"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Cosa fa",
|
||||
"body": "Installa Lynis, auditor di sicurezza open source di CISOfy, dal repository GitHub in <code>/opt/lynis</code> e crea un lanciatore in <code>/usr/local/bin/lynis</code> per renderlo disponibile nel <code>PATH</code>. Se rileva una installazione esistente, mostra un menu per audit, aggiornamento, reinstallazione o rimozione."
|
||||
},
|
||||
"manageMenu": {
|
||||
"heading": "Menu di gestione (dopo l'installazione)",
|
||||
"intro": "Una volta che Lynis è installato, ogni successiva invocazione apre il menu di gestione invece di rifare l'installatore. Da qui si avvia un audit, si aggiorna tramite git pull, reinstalla o disinstalla:",
|
||||
"imageAlt": "Menù di gestione Lynis con controllo, aggiornamento, reinstallare e rimuovere le opzioni"
|
||||
},
|
||||
"whyUpstream": {
|
||||
"heading": "Perché il repository ufficiale GitHub invece di apt",
|
||||
"intro": "Debian distribuisce Lynis tramite apt, ma il pacchetto è spesso indietro di diverse versioni principali. Nuovi controlli, correzioni per nuovi vettori di attacco e raccomandazioni migliorate arrivano prima su GitHub. Lynis è uno script shell autonomo, senza compilazione e senza dipendenze di installazione oltre a <code>git</code>; clonare il repository è quindi il metodo raccomandato da CISOfy.",
|
||||
"headerSource": "Fonte",
|
||||
"headerPath": "Install path",
|
||||
"headerUpdate": "Metodo di aggiornamento",
|
||||
"headerFresh": "Aggiornamento della versione",
|
||||
"rows": [
|
||||
{
|
||||
"sourceRich": "<strong>ProxMenux (questo script)</strong>",
|
||||
"path": "/opt/lynis/",
|
||||
"update": "git pull (dal menu)",
|
||||
"fresh": "Ultima versione del progetto originale"
|
||||
},
|
||||
{
|
||||
"sourceRich": "<strong>Debian apt</strong>",
|
||||
"path": "/usr/bin/lynis",
|
||||
"update": "apt upgrade",
|
||||
"fresh": "Spesso mesi / anni dietro"
|
||||
}
|
||||
]
|
||||
},
|
||||
"install": {
|
||||
"heading": "Come funziona l'installazione",
|
||||
"node1Label": "github.com/CISOfy/lynis",
|
||||
"node1Detail": "git clone\n(installa prima git se manca)",
|
||||
"node2Label": "/opt/lynis/",
|
||||
"node2Detail": "repository completo\nincluso lo script ./lynis",
|
||||
"node3Label": "/usr/local/bin/lynis",
|
||||
"node3Detail": "wrapper:\ncd /opt/lynis && ./lynis $@",
|
||||
"outro": "Il wrapper è obbligatorio — Lynis insiste per essere eseguito dalla propria directory perché carica percorsi relativi per plugin e dati del profilo. L'involucro nasconde quel dettaglio così <code>lynis audit system</code> funziona da qualsiasi luogo."
|
||||
},
|
||||
"detection": {
|
||||
"heading": "Sentieri di rilevamento",
|
||||
"intro": "Prima di mostrare il menu, lo script controlla tre posizioni per decidere se Lynis è già presente:",
|
||||
"items": [
|
||||
"<code>/usr/local/bin/lynis</code> — wrapper installato da ProxMenux",
|
||||
"<code>/opt/lynis/lynis</code> — percorso diretto (nel caso in cui l'involucro sia stato rimosso)",
|
||||
"<code>/usr/bin/lynis</code> — versione apt-installata, se l'utente l'ha installato in quel modo prima"
|
||||
],
|
||||
"outro": "Se trova uno di questi percorsi apre il menu di gestione. Lo script <strong>non</strong> disinstalla Lynis installato con apt; rimuove solo quello gestito in <code>/opt/lynis</code> e il relativo lanciatore."
|
||||
},
|
||||
"audit": {
|
||||
"heading": "Eseguire un audit",
|
||||
"intro": "Dal menu di gestione scegli <strong>Esegui audit di sicurezza ora</strong>. Equivale a eseguire:",
|
||||
"code": "lynis audit system --no-colors",
|
||||
"outro": "L'audit richiede da 30 secondi ad alcuni minuti secondo le dimensioni dell'host. Lo output viene mostrato direttamente nel terminale, senza animazione di attesa. Lynis organizza i controlli per categoria e marca ogni test come <ok>[ OK ]</ok>, <warn>[ WARNING ]</warn> o <sugg>[ SUGGESTION ]</sugg>. Il riepilogo finale mostra i dati principali:",
|
||||
"summary": "================================================================================\n\n Lynis security scan details:\n\n Hardening index : 76 [############ ]\n Tests performed : 247\n Plugins enabled : 0\n\n Components:\n - Firewall [V]\n - Malware scanner [X]\n\n Lynis modules:\n - Compliance status [?]\n - Security audit [V]\n - Vulnerability scan [V]\n\n================================================================================"
|
||||
},
|
||||
"report": {
|
||||
"heading": "Leggere il rapporto",
|
||||
"intro": "Le due sezioni importanti sono <strong>Warnings</strong> (le cose che si devono risolvere presto) e <strong>Suggestions</strong> (raccomandazioni per migliorare l'indurimento). Ogni elemento porta un ID di controllo come <code>SSH-7408</code> — utile quando si cerca i documenti Lynis per la razionalità e la correzione.",
|
||||
"headerMarker": "Marcatore",
|
||||
"headerMeaning": "Significato",
|
||||
"headerAction": "Azione",
|
||||
"rows": [
|
||||
{
|
||||
"markerRich": "<strong>OK</strong>",
|
||||
"meaning": "Test superato",
|
||||
"action": "Niente."
|
||||
},
|
||||
{
|
||||
"markerRich": "<strong>WARNING</strong>",
|
||||
"meaning": "Problema reale, fix consigliato",
|
||||
"action": "Leggi la descrizione del controllo, pianifica una correzione"
|
||||
},
|
||||
{
|
||||
"markerRich": "<strong>SUGGESTION</strong>",
|
||||
"meaning": "Miglioramento dell'indurimento disponibile",
|
||||
"action": "Applica se adatto al modello di minaccia"
|
||||
}
|
||||
],
|
||||
"outro": "Il rapporto completo e i dati leggibili dalla macchina sono scritti a <code>/var/log/lynis.log</code> e <code>/var/log/lynis-report.dat</code> da Lynis stesso."
|
||||
},
|
||||
"pairFail2ban": {
|
||||
"title": "Combina con Fail2Ban",
|
||||
"body": "SSH-7408 (MaxAuthTries) è uno degli avvisi più comuni. Installazione di <link>Fail2Ban</link> da ProxMenux lo sgombera automaticamente perché l'installatore imposta <code>MaxAuthTries=3</code> come parte della sua fase di indurimento SSH. Eseguire Lynis di nuovo dopo per confermare che l'avvertimento è andato."
|
||||
},
|
||||
"update": {
|
||||
"heading": "Aggiornamento Lynis",
|
||||
"body": "Nel menu, <strong>Aggiorna Lynis all'ultima versione</strong> esegue <code>git pull --quiet</code> in <code>/opt/lynis</code>. Se la directory esiste ma non è una copia di lavoro Git, per esempio dopo una copia manuale dei file, lo script esegue una reinstallazione completa."
|
||||
},
|
||||
"reinstall": {
|
||||
"heading": "Reinstallare / disinstallare",
|
||||
"headerAction": "Azione",
|
||||
"headerWhat": "Che cosa fa",
|
||||
"rows": [
|
||||
{
|
||||
"actionRich": "<strong>Reinstalla</strong>",
|
||||
"whatRich": "Rimuove <code>/opt/lynis</code>, clona nuovamente da GitHub e ricrea il lanciatore. Usalo se la copia locale è danneggiata."
|
||||
},
|
||||
{
|
||||
"actionRich": "<strong>Rimuovi</strong>",
|
||||
"whatRich": "Elimina <code>/opt/lynis</code> e <code>/usr/local/bin/lynis</code>. I registri a <code>/var/log/lynis*</code> sono mantenuti (sono storia dell'audit). Un Lynis apt-installed a <code>/usr/bin/lynis</code> è lasciato intatto."
|
||||
}
|
||||
]
|
||||
},
|
||||
"cli": {
|
||||
"heading": "Opzioni utili CLI",
|
||||
"intro": "Una volta installato, Lynis può essere invocata direttamente da una shell con opzioni extra non esposte dal menu:",
|
||||
"code": "lynis show version # version + build date\nlynis show commands # list every available command\nlynis show details TEST-ID # explain a specific control\nlynis audit system --quick # skip slow tests (e.g. malware scan)\nlynis audit system --pentest # treat host as untrusted (more aggressive)\nlynis update info # check if a newer Lynis is available\n\n# Filter the report log for just the warnings\ngrep \"Warning\" /var/log/lynis.log\n\n# Same, for suggestions only\ngrep \"Suggestion\" /var/log/lynis.log"
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Risoluzione dei problemi",
|
||||
"cloneTitle": "git clone non riesce durante l'installazione",
|
||||
"cloneBody": "L'host ha bisogno di accesso alla rete e DNS per raggiungere <code>github.com</code>. Da una console: <code>curl -sI https://github.com</code> e <code>git ls-remote https://github.com/CISOfy/lynis.git</code> riveleranno l'errore effettivo (DNS, TLS, proxy, repo URL). Se è richiesto un proxy, impostare <code>https_proxy</code> nell'ambiente prima di ri-inviare il menu.",
|
||||
"notFoundTitle": "lynis: comando non trovato dopo l'installazione",
|
||||
"notFoundIntro": "L'involucro a <code>/usr/local/bin/lynis</code> non è stato creato o rimosso. Correzione più rapida: reinstallare dal menu. Correzione manuale:",
|
||||
"notFoundCode": "cat > /usr/local/bin/lynis <<'EOF'\n#!/bin/bash\ncd /opt/lynis && ./lynis \"$@\"\nEOF\nchmod +x /usr/local/bin/lynis",
|
||||
"sshTitle": "L'audit mostra \"Warning: Test SSH-7408 — MaxAuthTries set incorrectly\"",
|
||||
"sshIntro": "Il daemon SSH consente troppi tentativi auth per connessione. Installare <link>Fail2Ban</link> da ProxMenux (che imposta automaticamente <code>MaxAuthTries=3</code>) o modificare <code>/etc/ssh/sshd_config</code> a mano:",
|
||||
"sshCode": "sed -i 's/^#?MaxAuthTries.*/MaxAuthTries 3/' /etc/ssh/sshd_config\nsystemctl reload sshd",
|
||||
"scoreTitle": "Score è andato giù dopo un aggiornamento Proxmox",
|
||||
"scoreBody": "Eseguire <code>lynis update info</code> prima — un aggiornamento Lynis potrebbe aver aggiunto nuovi controlli che contrassegnano la configurazione esistente. Aggiornare Lynis dal menu, ri-audit e affrontare i nuovi risultati."
|
||||
},
|
||||
"files": {
|
||||
"heading": "File scritti",
|
||||
"code": "/opt/lynis/ # full Lynis git checkout\n/usr/local/bin/lynis # wrapper script (cd + exec)\n/var/log/lynis.log # human-readable audit log (Lynis itself)\n/var/log/lynis-report.dat # machine-readable report (Lynis itself)"
|
||||
},
|
||||
"sample": {
|
||||
"heading": "Rapporto di esempio",
|
||||
"intro": "ProxMenux Monitor genera per ogni esecuzione di Lynis un PDF multipagina dalla <link>scheda Sicurezza</link>. La prima pagina riepiloga punteggio di rafforzamento, informazioni di sistema e stato della sicurezza. Le successive spiegano ogni avviso, elencano i suggerimenti per impatto e includono l'inventario dei pacchetti usato nell'audit.",
|
||||
"imageAlt": "Prima pagina del Lynis Security Audit Report PDF — Riepilogo esecutivo con Hardening Index 71/100, blocco informazioni di sistema e panoramica della postura di sicurezza con firewall, malware scanner e pacchetti installati conteggio",
|
||||
"captionPrefix": "Prima pagina di un rapporto campione. Il PDF completo (",
|
||||
"captionLink": "campione",
|
||||
"captionSuffix": ") continua con avvisi dettagliati, suggerimenti e la lista dei pacchetti installati.",
|
||||
"cli": "Sul lato CLI gli stessi dati sono in <code>/var/log/lynis-report.dat</code> (file piatto leggibile dalla macchina) e <code>/var/log/lynis.log</code> (il registro di esecuzione leggibile dall'uomo). Il PDF viene generato su richiesta da ProxMenux Monitor — l'esecuzione di <code>lynis</code> dalla riga di comando non ne produce uno."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/monitor/dashboard/security",
|
||||
"label": "ProxMenux Monitor → Scheda di sicurezza",
|
||||
"tail": "— eseguire l'audit, sfogliare i rapporti storici e scaricare il PDF direttamente dal cruscotto."
|
||||
},
|
||||
{
|
||||
"href": "/docs/security/fail2ban",
|
||||
"label": "Fail2Ban",
|
||||
"tailRich": " — attua il SSH protezione brute-force che Lynis raccomanda."
|
||||
},
|
||||
{
|
||||
"href": "/docs/security",
|
||||
"label": "Panoramica della sicurezza",
|
||||
"tail": "— di nuovo alla panoramica della sezione."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,169 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "HTTPS per ProxMenux Monitor — certificato dell'host Proxmox o percorsi personalizzati | ProxMenux",
|
||||
"description": "Fornisce ProxMenux Monitor via HTTPS con il certificato dell'host Proxmox (rilevato automaticamente, incluso quello Let’s Encrypt installato tramite ACME di Proxmox) o con un certificato personalizzato in qualsiasi percorso sul disco.",
|
||||
"ogTitle": "HTTPS per ProxMenux Monitor — Host Proxmox o certificato personalizzato",
|
||||
"ogDescription": "Abilitare HTTPS sulla porta 8008 con il certificato host Proxmox o qualsiasi coppia di .pem / .key personalizzata."
|
||||
},
|
||||
"header": {
|
||||
"title": "HTTPS per ProxMenux Monitor",
|
||||
"description": "Attiva HTTPS per Monitor sulla porta 8008 con il certificato dell'host Proxmox rilevato automaticamente o uno personalizzato sul disco. L'opzione Proxmox preferisce il certificato ACME, se presente, e riutilizza Let’s Encrypt gestito da Proxmox senza un'ulteriore attività di rinnovo.",
|
||||
"section": "Sicurezza"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Che cosa questa pagina copre",
|
||||
"body": "Come cambiare il Monitor da HTTP a HTTPS nel pannello Impostazioni → Sicurezza, ciò che ogni fonte di certificato indica effettivamente sul disco, come l'opzione Proxmox si comporta quando l'host ha un cert Let's Encrypt e come impostare percorsi personalizzati se si gestisce certs al di fuori di Proxmox."
|
||||
},
|
||||
"wheresetting": {
|
||||
"heading": "Dove si trova l'impostazione",
|
||||
"body": "Apri Monitor e vai in <strong>Impostazioni → Sicurezza → HTTPS / SSL</strong>. Il pannello mostra HTTP o HTTPS e, se HTTPS non è attivo, le fonti di certificato rilevate.",
|
||||
"imageAlt": "Impostazioni → Sicurezza → HTTPS / Pannello SSL nel Monitor che mostra lo stato HTTPS-off, il certificato Proxmox auto-determinato (soggetto, emittente, scadenza) e l'opzione Usa Certificato personalizzato",
|
||||
"caption": "Pannello Impostazioni → Sicurezza → HTTPS / SSL prima dell'attivazione. Monitor mostra il certificato usato da Proxmox e permette di sceglierlo con un clic."
|
||||
},
|
||||
"twoways": {
|
||||
"heading": "Due modi per abilitare HTTPS",
|
||||
"proxmox": {
|
||||
"title": "Usa certificato Proxmox",
|
||||
"summary": "Un clic: Monitor riutilizza il certificato presentato da Proxmox VE sulla porta 8006.",
|
||||
"items": [
|
||||
"Rilevato automaticamente, nessun percorso da digitare",
|
||||
"Preferisce il certificato ACME se presente, altrimenti quello autofirmato predefinito",
|
||||
"Proxmox gestisce il rinnovo; Monitor convalida e carica il certificato alla prossima nuova connessione TLS"
|
||||
]
|
||||
},
|
||||
"custom": {
|
||||
"title": "Usa certificato personalizzato",
|
||||
"summaryRich": "Puntare il Monitor su una coppia <code>.pem</code> / <code>.key</code> ovunque sul disco.",
|
||||
"items": [
|
||||
"Solo percorsi assoluti (il processo Monitor deve essere in grado di leggere entrambi)",
|
||||
"Utile quando i cert vengono da <code>certbot</code>, <code>acme.sh</code> o una wildcard",
|
||||
"Gestisci tu il rinnovo: riavvia Monitor quando cambiano i file"
|
||||
]
|
||||
}
|
||||
},
|
||||
"proxmoxCert": {
|
||||
"heading": "Certificato di Proxmox — ciò che effettivamente indica",
|
||||
"intro": "Proxmox VE mantiene due coppie di certificati in <code>/etc/pve/local/</code>:",
|
||||
"table": {
|
||||
"headers": {
|
||||
"file": "File",
|
||||
"origin": "Origine",
|
||||
"when": "Quando il Monitor lo usa"
|
||||
},
|
||||
"rows": [
|
||||
{
|
||||
"fileRich": "<code>pveproxy-ssl.pem</code><br /><code>pveproxy-ssl.key</code>",
|
||||
"originRich": "Certificato personalizzato caricato tramite l'UI Proxmox — compreso il certificato Let's Encrypt rilasciato sotto <em>Datacenter → Nodo → Certificati → ACME</em>.",
|
||||
"when": "Preferito se entrambi i file esistono; Monitor usa il certificato presentato da Proxmox."
|
||||
},
|
||||
{
|
||||
"fileRich": "<code>pve-ssl.pem</code><br /><code>pve-ssl.key</code>",
|
||||
"originRich": "Certificato autofirmato generato al momento di installazione dal Proxmox PKI.",
|
||||
"whenRich": "Fallback quando non è presente nessun <code>pveproxy-ssl.pem</code>."
|
||||
}
|
||||
]
|
||||
},
|
||||
"callout": {
|
||||
"title": "Stessa priorità di Proxmox stesso",
|
||||
"bodyRich": "<code>pveproxy</code> applica la stessa selezione: scegliendo Proxmox, Monitor usa il certificato presentato dall'interfaccia Proxmox su 8006, senza copie né un processo di rinnovo separato."
|
||||
}
|
||||
},
|
||||
"letsencrypt": {
|
||||
"heading": "Ottenere un certificato Let's Encrypt tramite Proxmox ACME",
|
||||
"intro": "Proxmox VE include un client ACME. <em>«Order Certificate Now»</em> salva il risultato in <code>/etc/pve/local/pveproxy-ssl.pem</code>, letto da Monitor. I cinque passi seguenti riassumono la <extlink1>guida ufficiale Proxmox</extlink1> nei comandi necessari.",
|
||||
"prereqs": {
|
||||
"title": "Prerequisiti",
|
||||
"items": [
|
||||
"Il nodo ha un vero nome DNS (non solo un IP) che indica.",
|
||||
"<strong>O</strong> porta 80 raggiungibile da Internet (verifica HTTP-01, la più semplice), <strong>oppure</strong> un provider DNS con credenziali API (DNS-01, funziona dietro NAT e supporta wildcard).",
|
||||
"Un indirizzo email per l'account ACME."
|
||||
]
|
||||
},
|
||||
"step1": {
|
||||
"heading": "Passo 1 — Registrare l'account ACME",
|
||||
"introRich": "Sostituisci l'email con il tuo. Il nome dell'account <code>default</code> è solo un'etichetta — è possibile utilizzare qualsiasi stringa.",
|
||||
"code": "pvenode acme account register default you@example.com",
|
||||
"afterRich": "Proxmox chiede di accettare i termini di servizio Let's Encrypt. Dopo di che l'account è persistito sotto <code>/etc/pve/priv/acme/</code> e la scheda ACME nella GUI lo mostrerà."
|
||||
},
|
||||
"step2": {
|
||||
"heading": "Passo 2 — Scegli un tipo di sfida",
|
||||
"http01Rich": "<strong>HTTP-01</strong> è il più semplice: è costruito in, nessun plugin aggiuntivo. Let's Encrypt si collega a <code>http://<your-host>/.well-known/acme-challenge/...</code> sulla porta 80, quindi la porta 80 deve essere aperta da internet pubblico al nodo — tipicamente una porta avanti sul router.",
|
||||
"dns01Rich": "<strong>DNS-01</strong> funziona senza esporre la porta 80 (buona per le homelab dietro CG-NAT) ed è l'unica opzione per i certificati jolly. Aggiungi un plugin DNS una volta con il token API del tuo fornitore. Esempio Cloudflare:",
|
||||
"code": "pvenode acme plugin add dns cf \\\n --api cloudflare \\\n --data CF_Token=YOUR_CLOUDFLARE_API_TOKEN",
|
||||
"outroRich": "Per altri provider (Gandi, OVH, AWS Route 53, ecc.) consulta <code>pvenode acme plugin add dns --help</code>. Proxmox include <extlink2>tutti i plugin DNS di acme.sh</extlink2>."
|
||||
},
|
||||
"step3": {
|
||||
"heading": "Passo 3 — Legare il dominio al nodo",
|
||||
"http01Rich": "Per HTTP-01 (utilizza il plugin <code>standalone</code> integrato):",
|
||||
"code1": "pvenode config set --acme domains=host.example.com,account=default",
|
||||
"dns01": "Per DNS-01 con il plugin Cloudflare di Step 2:",
|
||||
"code2": "pvenode config set --acmedomain0 domain=host.example.com,plugin=cf\npvenode config set --acme account=default",
|
||||
"wildcardRich": "Certificato wildcard? Aggiungi <code>domain=*.example.com</code> in una voce separata <code>--acmedomainN</code>. I certificati wildcard richiedono DNS-01."
|
||||
},
|
||||
"step4": {
|
||||
"heading": "Passo 4 — Ordinare il certificato",
|
||||
"code": "pvenode acme cert order",
|
||||
"afterRich": "La prima esecuzione richiede tipicamente 30–60 secondi mentre la sfida si propaga. Su successo Proxmox scrive <code>/etc/pve/local/pveproxy-ssl.pem</code> + <code>.key</code>, riavvia <code>pveproxy</code>, e un cron di rinnovo è programmato automaticamente (Let's Encrypt certs sono validi 90 giorni; Proxmox rinnova a 60)."
|
||||
},
|
||||
"step5": {
|
||||
"heading": "Passo 5 — Verificare l'emittente",
|
||||
"code": "openssl x509 -in /etc/pve/local/pveproxy-ssl.pem -noout -issuer",
|
||||
"afterRich": "Dovrebbe stampare un emittente a partire da <code>O = Let's Encrypt</code>. Se invece legge <code>CN = Proxmox Virtual Environment</code> l'ordine non è riuscito e il file è ancora l'auto-firmato PVE cert — eseguire <code>pvenode acme cert order --debug 1</code> per vedere perché."
|
||||
},
|
||||
"gui": {
|
||||
"title": "Preferisci la GUI? Stessi cinque passi",
|
||||
"bodyRich": "<em>Datacenter → ACME</em> registra l'account; <em>Datacenter → ACME → Plugins</em> aggiunge il plugin DNS; <em>Node → Certificates → ACME</em> associa il dominio; <em>Order Certificates Now</em> esegue il passo 4. I comandi precedenti sono utili per script e sistemi senza interfaccia grafica."
|
||||
}
|
||||
},
|
||||
"switchToHttps": {
|
||||
"heading": "Passare il Monitor a HTTPS",
|
||||
"bodyRich": "Quando <code>/etc/pve/local/pveproxy-ssl.pem</code> è firmato da Let's Encrypt, apri <strong>Impostazioni → Sicurezza → HTTPS / SSL</strong>, verifica che l'emittente sia <em>Let's Encrypt</em> e non la CA locale Proxmox, poi fai clic su <strong>Usa certificato Proxmox</strong>. Monitor si riavvia e il caricamento successivo usa HTTPS su 8008 con una catena pubblicamente attendibile. I rinnovi ACME successivi sono convalidati e selezionati alla prossima nuova connessione TLS, senza controlli periodici né riavvio al rinnovo. <strong>Aggiorna certificato</strong> rimane disponibile in Sicurezza per diagnosi e recupero."
|
||||
},
|
||||
"custom": {
|
||||
"heading": "Certificato personalizzato — quando utilizzarlo",
|
||||
"intro": "Fai clic su <strong>Usa certificato personalizzato</strong> e inserisci due percorsi assoluti:",
|
||||
"items": [
|
||||
"<strong>Certificato</strong>: catena completa in PEM (<code>.pem</code> o <code>.crt</code>).",
|
||||
"<strong>Chiave privata</strong>: chiave corrispondente in PEM (<code>.key</code>)."
|
||||
],
|
||||
"outro": "Entrambi i file sono letti dal processo Monitor all'avvio. Assicurarsi che rimangano leggibili dall'utente l'unità systemd viene eseguita come (root per impostazione predefinita). Località comuni quando ACME è gestito fuori Proxmox:",
|
||||
"code": "# certbot\n/etc/letsencrypt/live/<your-host>/fullchain.pem\n/etc/letsencrypt/live/<your-host>/privkey.pem\n\n# acme.sh\n~/.acme.sh/<your-host>_ecc/fullchain.cer\n~/.acme.sh/<your-host>_ecc/<your-host>.key",
|
||||
"symlinkCallout": {
|
||||
"title": "Obiettivi Symlink vs. file",
|
||||
"bodyRich": "<code>certbot</code> memorizza i file reali in <code>/etc/letsencrypt/archive/</code> e il percorso <code>live/</code> è un symlink. Indirizzi il Monitor al simlink <code>live/</code>, non il file <code>archive/</code> — in questo modo ogni ciclo di rinnovo semplicemente riscrive l'obiettivo di symlink e il Monitor raccoglie il nuovo cert all'inizio del servizio successivo."
|
||||
}
|
||||
},
|
||||
"afterHttps": {
|
||||
"heading": "Dopo aver attivato HTTPS",
|
||||
"bodyRich": "Salvataggio del cambiamento scrive <code>/etc/proxmenux/ssl_config.json</code> e attiva un riavvio dell'unità <code>proxmenux-monitor</code> systemd. La scheda del browser perderà la sua connessione corrente — ricaricarla su <code>https://<host>:8008/</code>. Il primo carico con un cert Let's Encrypt non dovrebbe mostrare alcun avvertimento; con il Proxmox auto-firmato cert il browser richiederà un'eccezione, la stessa che per la porta 8006.",
|
||||
"reverse": {
|
||||
"heading": "Proxy inversi e webhook",
|
||||
"bodyRich": "Quando il Monitor passa a HTTPS, gli URL Proxmox VE webhook registrati per le notifiche girano automaticamente da <code>http://</code> a <code>https://</code>. Le voci webhook esistenti vengono riscritte la prossima volta che viene salvata o ri-detetta una regola di notifica, quindi non è necessaria alcuna modifica manuale della configurazione di notifica Proxmox."
|
||||
}
|
||||
},
|
||||
"trustCa": {
|
||||
"heading": "Considerare attendibile la CA autofirmata di Proxmox",
|
||||
"intro1Rich": "Per mantenere il certificato predefinito Proxmox senza ACME, importa la CA radice del cluster nell'archivio di fiducia del sistema o del browser. Monitor rileva <code>/etc/pve/local/pve-ssl.pem</code> come certificato alternativo. Il client considera attendibile l'emittente; l'URL deve comunque corrispondere a un nome del certificato.",
|
||||
"intro2Rich": "Il file CA vive a <code>/etc/pve/pve-root-ca.pem</code> su ogni nodo. In un cluster il percorso è sul filesystem <code>pmxcfs</code> condiviso in modo che tutti i nodi condividono la stessa radice, e una singol'importazione copre l'intero datacenter. Copialo sulla tua macchina:",
|
||||
"code": "scp root@<your-host>:/etc/pve/pve-root-ca.pem ./pve-root-ca.pem",
|
||||
"thenImport": "Poi importarlo sul lato cliente:",
|
||||
"items": [
|
||||
"<strong>Linux (intero sistema):</strong> esegui <code>sudo cp pve-root-ca.pem /usr/local/share/ca-certificates/pve-root-ca.crt</code> e poi <code>sudo update-ca-certificates</code>. I browser che usano l'archivio di sistema (Chromium, Edge) riconoscono la CA dopo il riavvio; Firefox usa un archivio proprio e richiede l'importazione manuale seguente.",
|
||||
"<strong>macOS:</strong> apri il file <code>.pem</code> con doppio clic in Accesso Portachiavi, aggiungilo al portachiavi <em>Sistema</em> e imposta <em>Attendibilità → Considera sempre attendibile</em>.",
|
||||
"<strong>Windows:</strong> clic destro sul file → <em>Installa certificato</em> → inseriscilo in <em>Autorità di certificazione radice attendibili</em>.",
|
||||
"<strong>Firefox (qualsiasi sistema operativo):</strong> <em>Impostazioni → Privacy e sicurezza → Certificati → Mostra certificati → Autorità → Importa</em>; seleziona <em>Considera attendibile questa CA per identificare siti web</em>."
|
||||
],
|
||||
"standalone": {
|
||||
"title": "Nodi standalone fuori da un cluster",
|
||||
"bodyRich": "Ogni host Proxmox non incluso ha il proprio <code>pve-root-ca.pem</code>. Se gestisci diversi host standalone, ripeti la copia/importazione per ciascuno, o unisciti a un cluster in modo da condividere una singola radice."
|
||||
}
|
||||
},
|
||||
"disable": {
|
||||
"heading": "Disabilitare HTTPS",
|
||||
"bodyRich": "Fai clic su <strong>Disabilita HTTPS</strong> nello stesso pannello. Monitor si riavvia con HTTP non cifrato, utile se un certificato personalizzato non è leggibile e il servizio non parte. Non serve una disinstallazione separata e i file di certificato non vengono modificati.",
|
||||
"stateCallout": {
|
||||
"title": "Dove viene salvato lo stato",
|
||||
"bodyRich": "<code>/etc/proxmenux/ssl_config.json</code> memorizza i percorsi di cert attivo e la fonte (<code>none</code>, <code>proxmox</code>, <code>custom</code>). Cancellare il file è equivalente a disabilitare HTTPS — il prossimo inizio il Monitor rientra a HTTP."
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,113 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Cambia canale di rilascio | Documentazione ProxMenux",
|
||||
"description": "Passa tra i canali Stable (main) e Beta (develop) di ProxMenux in una sola finestra. Bidirezionale e idempotente; esegue il programma di installazione ufficiale del canale scelto e normalizza il servizio Monitor.",
|
||||
"ogTitle": "Cambia canale di rilascio | Documentazione ProxMenux",
|
||||
"ogDescription": "Una opzione delle Impostazioni per passare tra Stable e Beta senza eseguire manualmente i programmi di installazione."
|
||||
},
|
||||
"header": {
|
||||
"title": "Cambia canale di rilascio",
|
||||
"description": "Una opzione unica delle Impostazioni passa tra Stable (ramo main) e Beta (ramo develop). La precedente opzione unidirezionale «Disattiva programma beta» è sostituita da una finestra bidirezionale che offre entrambi i sensi ed esegue il programma di installazione ufficiale del canale scelto.",
|
||||
"section": "Impostazioni"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Che cosa è cambiato",
|
||||
"body": "Prima esistevano due procedure: «Disattiva programma beta», visibile solo con beta attiva, e la riesecuzione manuale del programma beta per rientrare. Ora sono riunite in <strong>Cambia canale di rilascio</strong>, sempre disponibile, che mostra il canale corrente e permette il passaggio tra Stable e Beta in entrambi i sensi."
|
||||
},
|
||||
"why": {
|
||||
"heading": "Perché questa opzione esiste",
|
||||
"intro": "ProxMenux è distribuito da due rami Git:",
|
||||
"items": [
|
||||
"<strong>Stable</strong>: il ramo <code>main</code>, indicato nel README e adatto alla maggior parte degli amministratori. I rilasci sono meno frequenti e includono solo modifiche già passate dalla validazione beta.",
|
||||
"<strong>Beta</strong>: il ramo <code>develop</code>. Funzioni e build di Monitor più recenti, con il tag che erediterà la prossima versione stabile. Alcune funzioni potrebbero avere difetti: scegliendo questo canale partecipi ai test prima del rilascio."
|
||||
],
|
||||
"outro": "Prima occorreva ricordare l'URL corretto del programma di installazione, copiarlo dal README e modificare <code>config.json</code> manualmente in caso di problemi di sincronizzazione. L'opzione unica esegue tutta la procedura con un'azione guidata."
|
||||
},
|
||||
"dialog": {
|
||||
"heading": "La finestra di dialogo",
|
||||
"intro": "Dal menu principale: <strong>Impostazioni → Cambia canale di rilascio</strong>. Appare un menu con due voci:",
|
||||
"options": [
|
||||
"<code>stable</code> — Stable (ramo main)",
|
||||
"<code>beta</code> — Beta (ramo develop)"
|
||||
],
|
||||
"behaviour": "Il canale corrente è preselezionato e mostrato in alto. Scegliendo lo stesso appare «Questo canale di rilascio è già attivo»: la finestra è idempotente. Scegliendo un altro canale appare una conferma specifica:",
|
||||
"directions": [
|
||||
"<strong>Stable → Beta:</strong> avverte che le versioni beta possono contenere bug o funzioni incomplete.",
|
||||
"<strong>Beta → Stabile:</strong> avverte che i controlli di aggiornamento beta si fermeranno e l'installatore stabile reinstallerà i componenti del canale stabile."
|
||||
]
|
||||
},
|
||||
"confirm": {
|
||||
"heading": "Cosa succede quando confermi",
|
||||
"items": [
|
||||
"<strong>Scarica il programma di installazione ufficiale</strong> del canale scelto:<ul><li>Stable: <code>install_proxmenux.sh</code> da <code>main</code></li><li>Beta: <code>install_proxmenux_beta.sh</code> da <code>develop</code></li></ul>Prima di continuare verifica che il file sia presente e lo rende eseguibile.",
|
||||
"<strong>Esegue il programma di installazione completo</strong>, lo stesso indicato nel README. Rilevamento dei componenti, backup dei file, installazione delle dipendenze e conservazione della lingua seguono la procedura ufficiale del canale scelto.",
|
||||
"Passando a <strong>Stable</strong>, il menu elimina i metadati beta rimasti in <code>config.json</code>: <code>beta_program</code>, <code>beta_version</code>, <code>install_branch</code> e <code>update_available.beta*</code>. <code>proxmenux_monitor.status = beta_updated</code> diventa <code>updated</code>. Il file residuo <code>beta_version.txt</code> e i programmi di installazione beta scaricati vengono rimossi.",
|
||||
"Passando a Stable, l'unità systemd di Monitor viene riscritta dal modello Stable: «Beta» viene rimosso dalla descrizione e <code>ExecStart</code> torna a puntare alla directory di esecuzione. Una nuova esecuzione di <code>systemctl status</code> riflette quindi il canale attuale.",
|
||||
"Ricarica il menu di configurazione. <em>Mostra informazioni sulla versione</em> mostrerà il nuovo canale."
|
||||
]
|
||||
},
|
||||
"switching": {
|
||||
"heading": "Passare avanti e indietro",
|
||||
"intro": "Entrambe le direzioni passano attraverso lo stesso programma di installazione: <strong>non</strong> flussi di disinstallazione e reinstallazione speciali. Ciascuna direzione esegue semplicemente il programma di installazione del canale, progettato per essere idempotente e sicuro da eseguire nuovamente su un'installazione esistente. Conseguenze pratiche:",
|
||||
"items": [
|
||||
"La configurazione esistente, ProxMenux Monitor login (<code>auth.json</code>), canali di notifica, registro post-installazione, soglie personalizzate — nessuno di questi sono toccati. L'interruttore di canale scambia solo l'albero di script e il binario AppImage.",
|
||||
"Un Monitor attivo prima del cambio rimane attivo dopo; uno disattivato rimane disattivato.",
|
||||
"Il file <code>auth.json</code>, i token API e il segreto JWT di ProxMenux Monitor vengono conservati al cambio di canale. Le sessioni non vengono disconnesse.",
|
||||
"Puoi cambiare canale tutte le volte che vuoi: la finestra accetta ogni modifica ed esegue nuovamente il programma di installazione. Non è necessario riavviare Proxmox.",
|
||||
"Il cambio di canale sostituisce gli script di ProxMenux e non può essere eseguito nel terminale del browser di Monitor: il PTY verrebbe chiuso durante l'aggiornamento, bloccando la finestra. In quel terminale appare invece un messaggio con il comando ufficiale di una riga per il canale scelto. Eseguilo da SSH o dalla console dell'host Proxmox."
|
||||
]
|
||||
},
|
||||
"feedback": {
|
||||
"heading": "Segnalare problemi della beta",
|
||||
"intro": "Se qualcosa si comporta inaspettatamente mentre sei sul canale Beta, aprire un problema con un contesto sufficiente è quello che chiude il divario a un rilascio stabile. Il rapporto più utile comprende:",
|
||||
"items": [
|
||||
"Quello che hai fatto e quello che ti aspettavi.",
|
||||
"Eventuali messaggi di errore visualizzati sullo schermo.",
|
||||
"I relativi registri Monitor:"
|
||||
],
|
||||
"logsCommand": "journalctl -u proxmenux-monitor -n 50 --no-pager",
|
||||
"versionLine": "La versione attuale di ProxMenux (Impostazioni → <link>Mostra informazioni sulla versione</link>).",
|
||||
"issueLine": "Aprire un <ghlink>GitHub Issue</ghlink> con queste informazioni e arriviamo alla correzione più veloce."
|
||||
},
|
||||
"manual": {
|
||||
"heading": "Equivalente manuale",
|
||||
"intro": "Se preferisci la shell o automatizzi il cambio di canale, la finestra esegue questi comandi:"
|
||||
},
|
||||
"unifiedCallout": {
|
||||
"title": "Perché entrambe le direzioni sono ora un'opzione",
|
||||
"body": "La vecchia opzione «Disattiva programma beta» appariva solo dopo la adesione alla beta. Per <em>aderire</em> occorreva cercare altrove il programma di installazione; per <em>uscire</em> talvolta occorreva pulire manualmente i metadati <code>beta_*</code>. <strong>Cambia canale di rilascio</strong> appare sempre, mostra il canale corrente e tratta entrambe le direzioni come un'operazione eseguibile, ripetibile e idempotente."
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Risoluzione dei problemi",
|
||||
"downloadTitle": "“Impossibile scaricare l’installatore”",
|
||||
"downloadBody": "HTTPS in uscita a <code>raw.githubusercontent.com</code> fallito. Controllare la connettività e DNS dall'host:",
|
||||
"downloadCmd": "curl -fsSL -o /tmp/test https://raw.githubusercontent.com/MacRimi/ProxMenux/main/install_proxmenux.sh && head -1 /tmp/test",
|
||||
"downloadOutro": "Se questo non funziona al di fuori di ProxMenux, è un problema di rete / proxy sull'host.",
|
||||
"errorsTitle": "“Installer finito con errori”",
|
||||
"errorsBody": "Il programma di installazione ha restituito un codice diverso da zero. Non è previsto un ripristino automatico: alcuni file o componenti potrebbero essere già cambiati. Leggi l'output del programma di installazione mostrato sopra l'errore prima di premere Invio e controlla lo stato attuale, poi riprova dal menu o esegui il programma manualmente via SSH o dalla console dell'host.",
|
||||
"configTitle": "“Impossibile aggiornare il file di configurazione” dopo il passaggio a stabile",
|
||||
"configBody": "La pulizia post-installazione dei metadati beta non è riuscita — di solito perché <code>config.json</code> ha un errore di sintassi da una modifica manuale. Convalidalo:",
|
||||
"configCmd": "jq . /usr/local/share/proxmenux/config.json",
|
||||
"configOutro": "Correggi o ripristina il file ed esegui nuovamente l'opzione."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/settings/show-version-information",
|
||||
"label": "Mostra informazioni sulla versione",
|
||||
"tail": "— confermare quale canale è attivo ora."
|
||||
},
|
||||
{
|
||||
"href": "/docs/settings/proxmenux-monitor",
|
||||
"label": "ProxMenux Monitor",
|
||||
"tail": " — il servizio Monitor ricreato durante il cambio di canale."
|
||||
},
|
||||
{
|
||||
"href": "/docs/settings",
|
||||
"label": "Panoramica delle impostazioni",
|
||||
"tail": "."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,108 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Cambia lingua | Documentazione ProxMenux",
|
||||
"description": "Scegli tra otto lingue per ProxMenux. Ogni installazione include cataloghi JSON di traduzioni pregenerati; l'host non richiede un servizio di traduzione né un ambiente Python. Il menu si ricarica automaticamente.",
|
||||
"ogTitle": "Cambia lingua | Documentazione ProxMenux",
|
||||
"ogDescription": "Scegli una delle otto lingue di ProxMenux dalle Impostazioni. Disponibile in ogni installazione."
|
||||
},
|
||||
"header": {
|
||||
"title": "Cambia lingua",
|
||||
"description": "Passa tra le otto lingue supportate da ProxMenux. La scelta viene salvata in config.json e il menu viene riavviato nella nuova lingua. Ogni installazione include i cataloghi di traduzioni.",
|
||||
"section": "Impostazioni"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Che cosa è questo",
|
||||
"body": "Una finestra elenca le otto lingue supportate. ProxMenux salva la scelta in <code>config.json</code> come <code>.language</code>, poi riavvia <code>config_menu.sh</code> per applicarla subito."
|
||||
},
|
||||
"warn": {
|
||||
"title": "Disponibile in ogni installazione",
|
||||
"body": "Le Impostazioni mostrano sempre Cambia lingua. I cataloghi vengono installati in <code>/usr/local/share/proxmenux/lang/</code> <em>e</em> la lingua scelta viene salvata in <code>config.json</code>. Il precedente ambiente Python di traduzione non è necessario."
|
||||
},
|
||||
"supported": {
|
||||
"heading": "Lingue supportate",
|
||||
"headerCode": "Code",
|
||||
"headerLang": "Lingua",
|
||||
"headerNotes": "Note",
|
||||
"rows": [
|
||||
{
|
||||
"code": "en",
|
||||
"lang": "Inglese",
|
||||
"notes": "Lingua sorgente — più accurata"
|
||||
},
|
||||
{
|
||||
"code": "es",
|
||||
"lang": "Spagnolo",
|
||||
"notes": "Catalogo JSON pregenerato"
|
||||
},
|
||||
{
|
||||
"code": "fr",
|
||||
"lang": "Francese",
|
||||
"notes": "Catalogo JSON pregenerato"
|
||||
},
|
||||
{
|
||||
"code": "de",
|
||||
"lang": "Tedesco",
|
||||
"notes": "Catalogo JSON pregenerato"
|
||||
},
|
||||
{
|
||||
"code": "it",
|
||||
"lang": "Italiano",
|
||||
"notes": "Catalogo JSON pregenerato"
|
||||
},
|
||||
{
|
||||
"code": "pt",
|
||||
"lang": "Portoghese",
|
||||
"notes": "Catalogo JSON pregenerato"
|
||||
},
|
||||
{
|
||||
"code": "sk",
|
||||
"lang": "Slovacco",
|
||||
"notes": "Catalogo JSON pregenerato"
|
||||
},
|
||||
{
|
||||
"code": "sv",
|
||||
"lang": "Svedese",
|
||||
"notes": "Catalogo JSON pregenerato"
|
||||
}
|
||||
]
|
||||
},
|
||||
"englishTip": {
|
||||
"title": "L'inglese è il più accurato",
|
||||
"body": "I testi nelle altre lingue provengono dai cataloghi JSON pregenerati inclusi in ProxMenux. Le traduzioni mancanti usano il testo inglese; non vengono effettuate chiamate di traduzione sull'host. In caso di dubbi, l'inglese resta il riferimento."
|
||||
},
|
||||
"underHood": {
|
||||
"heading": "Come funziona sotto il cofano",
|
||||
"items": [
|
||||
"La finestra elenca otto codici lingua; scegline uno.",
|
||||
"Se esiste <code>config.json</code>: <code>jq --arg lang \"$new_language\" '.language = $lang''</code> aggiorna il campo in posizione.",
|
||||
"Se <code>config.json</code> non esiste, viene creato un nuovo file con il codice della lingua in un oggetto contenente un solo campo.",
|
||||
"Finestra di conferma: <em>\"Lingua cambiata in [code]\"</em>.",
|
||||
"<code>exec bash config_menu.sh</code> ricarica il menu Impostazioni con la nuova lingua attiva."
|
||||
]
|
||||
},
|
||||
"manual": {
|
||||
"heading": "Equivalente manuale"
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Risoluzione dei problemi",
|
||||
"noOptionTitle": "L'opzione non appare in Impostazioni",
|
||||
"noOptionBody": "Cambia lingua è sempre disponibile nelle versioni attuali. Se manca, aggiorna ProxMenux con il programma di installazione ufficiale e riapri le Impostazioni.",
|
||||
"stillEnglishTitle": "La lingua è cambiata ma l'interfaccia utente mostra ancora inglese",
|
||||
"stillEnglishBody": "Il menu si riavvia dopo la modifica. Se hai aperto una nuova shell e avviato un altro punto di ingresso di ProxMenux, esegui di nuovo <code>menu</code> per applicare la nuova lingua. Verifica con <code>jq -r '.language' /usr/local/share/proxmenux/config.json</code>."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/settings/show-version-information",
|
||||
"label": "Mostra informazioni sulla versione",
|
||||
"tail": " — conferma il canale di rilascio, i file di traduzione e la lingua attuale."
|
||||
},
|
||||
{
|
||||
"href": "/docs/settings",
|
||||
"label": "Panoramica delle impostazioni",
|
||||
"tail": "."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Impostazioni ProxMenux — Attivazione di Monitor, canale di rilascio, lingue | ProxMenux",
|
||||
"description": "Impostazioni di ProxMenux: servizio Monitor e reimpostazione della password, canale Stable/Beta, otto lingue, diagnostica della versione e disinstallazione. Le opzioni Monitor appaiono quando il servizio è installato.",
|
||||
"ogTitle": "Impostazioni ProxMenux — Attivazione di Monitor, canale di rilascio, lingue",
|
||||
"ogDescription": "Configura ProxMenux: servizio Monitor, canale di rilascio, lingua, informazioni sulla versione e disinstallazione.",
|
||||
"twitterTitle": "Impostazioni ProxMenux",
|
||||
"twitterDescription": "Attivazione di Monitor, cambio del canale di rilascio, lingue, informazioni sulla versione e disinstallazione."
|
||||
},
|
||||
"header": {
|
||||
"title": "Impostazioni",
|
||||
"description": "Configura ProxMenux: attiva o disattiva Monitor, reimposta le credenziali, passa tra Stable e Beta in entrambe le direzioni, scegli una delle otto lingue, consulta la diagnostica della versione e disinstalla. Le azioni di Monitor richiedono il servizio installato; la scelta della lingua è sempre disponibile.",
|
||||
"section": "Impostazioni"
|
||||
},
|
||||
"intro": {
|
||||
"title": "A cosa serve questo menu",
|
||||
"body": "Amministrazione di ProxMenux stesso: servizio Monitor, uscita dal canale beta, lingua, diagnostica della versione e disinstallazione. Nessun'opzione di questo menu modifica VM, container o archiviazione."
|
||||
},
|
||||
"opening": {
|
||||
"heading": "Apertura del menu",
|
||||
"body": "Dal menu principale di ProxMenux premi <kbd>s</kbd>. Le azioni Monitor appaiono se il servizio è installato; le altre impostazioni sono sempre disponibili:",
|
||||
"imageAlt": "Menu Impostazioni di ProxMenux con azioni Monitor condizionali"
|
||||
},
|
||||
"installTypes": {
|
||||
"heading": "Una installazione, tutte le lingue",
|
||||
"intro": "Le versioni attuali includono cataloghi JSON statici in ogni installazione. Le vecchie versioni offrivano modalità separate con traduzione e normale:",
|
||||
"headerType": "Tipo di installazione",
|
||||
"headerBundles": "Componenti inclusi",
|
||||
"headerMenu": "Mostra menu",
|
||||
"rows": [
|
||||
{
|
||||
"type": "Installazione attuale",
|
||||
"bundles": "Cataloghi JSON statici per sette lingue più l’inglese integrato; nessun ambiente Python di traduzione",
|
||||
"menuRich": "<strong>Cambia lingua</strong> + Mostra versione + Disinstalla"
|
||||
},
|
||||
{
|
||||
"type": "Vecchie modalità con traduzione / normale",
|
||||
"bundles": "Vecchia separazione tra ambiente di traduzione e installazione solo in inglese",
|
||||
"menu": "Aggiorna con il programma ufficiale per usare il menu unificato attuale"
|
||||
}
|
||||
],
|
||||
"detectionTitle": "La scelta della lingua è sempre disponibile",
|
||||
"detectionBody": "Il menu non verifica più un ambiente di traduzione. Ogni installazione include <code>/usr/local/share/proxmenux/lang/</code> e salva il valore <code>language</code> scelto in <code>config.json</code>."
|
||||
},
|
||||
"options": {
|
||||
"heading": "Opzioni menu",
|
||||
"intro": "Questi strumenti gestiscono ProxMenux stesso. <em>Condizionale</em> indica che le azioni Monitor appaiono solo se il servizio systemd è installato. Canale di rilascio, lingua, diagnostica della versione e disinstallazione sono sempre disponibili.",
|
||||
"list": [
|
||||
{
|
||||
"icon": "Activity",
|
||||
"href": "/docs/settings/proxmenux-monitor",
|
||||
"title": "ProxMenux Monitor",
|
||||
"description": "Attiva / disattiva l'unità proxmenux-monitor.service systemd, controlla lo stato attuale e ripristina la password di accesso del cruscotto se è stata persa. UI Web disponibile su TCP 8008.",
|
||||
"badge": "Condizionale"
|
||||
},
|
||||
{
|
||||
"icon": "TestTube",
|
||||
"href": "/docs/settings/beta-program",
|
||||
"title": "Cambia canale di rilascio",
|
||||
"description": "Passa tra Stable (main) e Beta (develop) in entrambe le direzioni da una sola finestra. Esegue il programma di installazione ufficiale del canale scelto; è idempotente e sempre visibile.",
|
||||
"badge": "Sempre disponibile"
|
||||
},
|
||||
{
|
||||
"icon": "Info",
|
||||
"href": "/docs/settings/show-version-information",
|
||||
"title": "Mostra informazioni sulla versione",
|
||||
"description": "Versione di ProxMenux, canale di rilascio, componenti installati, percorsi dei file, file di traduzione e lingua attuale."
|
||||
},
|
||||
{
|
||||
"icon": "Trash2",
|
||||
"href": "/docs/settings/uninstall-proxmenux",
|
||||
"title": "Disinstalla ProxMenux",
|
||||
"description": "Rimuovere ProxMenux e (opzionalmente) le sue dipendenze. Inoltre ripristina i backup /root/.bashrc e /etc/motd creati al momento dell'installazione."
|
||||
}
|
||||
]
|
||||
},
|
||||
"configTip": {
|
||||
"title": "Dove viene salvata la configurazione",
|
||||
"bodyRich": "La maggior parte dello stato gestito da questo menu è salvata in <code>/usr/local/share/proxmenux/config.json</code>: <code>language</code>, <code>beta_program.status</code> e indicatori di installazione per ciascun componente. Lo stato del servizio Monitor è gestito da systemd (<code>proxmenux-monitor.service</code>), non qui. La versione viene letta da <code>/usr/local/share/proxmenux/version.txt</code>."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,119 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "ProxMenux Monitor | Documentazione ProxMenux",
|
||||
"description": "Attiva o disattiva l'unità systemd proxmenux-monitor.service e verifica il suo stato. Monitor fornisce un'interfaccia web sulla porta TCP 8008 per il monitoraggio visivo dell'host.",
|
||||
"ogTitle": "ProxMenux Monitor | Documentazione ProxMenux",
|
||||
"ogDescription": "Attiva o disattiva il servizio systemd proxmenux-monitor e controllane lo stato dalle Impostazioni."
|
||||
},
|
||||
"header": {
|
||||
"title": "ProxMenux Monitor",
|
||||
"description": "Due azioni correlate nelle Impostazioni: attivare o disattivare l'unità systemd proxmenux-monitor.service (avvio/arresto e abilitazione/disabilitazione insieme) e visualizzarne lo stato dettagliato. Monitor fornisce un'interfaccia web sulla porta TCP 8008 per il monitoraggio visivo dell'host.",
|
||||
"section": "Impostazioni"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Cos'è ProxMenux Monitor?",
|
||||
"body": "ProxMenux Monitor è un cruscotto web integrato che fornisce visibilità in tempo reale nell'infrastruttura Proxmox, accessibile da qualsiasi browser della rete, senza bisogno di un terminale."
|
||||
},
|
||||
"offers": {
|
||||
"heading": "Cosa offre",
|
||||
"items": [
|
||||
"Monitoraggio in tempo reale di CPU, RAM, utilizzo del disco e traffico di rete.",
|
||||
"Panoramica dell'esecuzione di VM e contenitori LXC con indicatori di stato.",
|
||||
"Autenticazione di accesso per proteggere l'interfaccia.",
|
||||
"Autenticazione a due fattori (2FA) con supporto TOTP.",
|
||||
"Supporto proxy inverso (Nginx / Traefik).",
|
||||
"Progettato per lavorare su dispositivi desktop e mobili."
|
||||
]
|
||||
},
|
||||
"access": {
|
||||
"heading": "Accesso",
|
||||
"intro": "Una volta installato, il cruscotto è disponibile a:",
|
||||
"url": "http://<your-proxmox-ip>:8008",
|
||||
"outro": "Il Monitor viene installato automaticamente nell'ambito dell'installazione standard ProxMenux e viene eseguito come servizio systemd (<code>proxmenux-monitor.service</code>) che inizia automaticamente sul boot."
|
||||
},
|
||||
"warnConditional": {
|
||||
"title": "Opzioni delle impostazioni visibili solo quando Monitor è installato",
|
||||
"body": "Le due voci del menu descritte di seguito appaiono solo in Impostazioni se <code>proxmenux-monitor.service</code> è registrato con systemd. Se non li vedi, il Monitor non è stato installato (è opzionale durante l'installazione ProxMenux). Per aggiungerlo in seguito, reinstallare ProxMenux con l'ultima versione e selezionare l'opzione Monitor."
|
||||
},
|
||||
"toggle": {
|
||||
"heading": "Attivare / disattivare",
|
||||
"intro": "La prima voce del menu alterna tra due stati in base al fatto che il servizio sia in esecuzione:",
|
||||
"headerState": "Stato attuale",
|
||||
"headerLabel": "Etichetta del menu",
|
||||
"headerAction": "Azione sulla conferma",
|
||||
"rows": [
|
||||
{
|
||||
"state": "attivo",
|
||||
"label": "Disattiva ProxMenux Monitor",
|
||||
"action": "systemctl stop + disable"
|
||||
},
|
||||
{
|
||||
"state": "inattivo",
|
||||
"label": "Attiva ProxMenux Monitor",
|
||||
"action": "systemctl enable + start"
|
||||
}
|
||||
],
|
||||
"outro": "Ogni modifica richiede una conferma sì/no. Disattivare arresta il servizio <em>e</em> disabilita l'avvio automatico; attivare abilita l'avvio automatico <em>e</em> avvia subito il servizio."
|
||||
},
|
||||
"status": {
|
||||
"heading": "Mostra stato servizio Monitor",
|
||||
"intro": "La seconda voce del menu è di sola lettura. Sgombera lo schermo, mostra il logo ProxMenux e il titolo <em>\"ProxMenux Monitor Service Verification\"</em>, poi segnala:",
|
||||
"items": [
|
||||
"<strong>Stato di servizio:</strong> attivo, inattivo o not_installed.",
|
||||
"<strong>Web UI URL</strong> (solo quando attivo): <code>http://<host_ip>:8008</code> — derivato da <code>hostname -I | awk '''{print $1}'''</code>.",
|
||||
"<strong>Dettaglio systemd uscita:</strong> <code>systemctl status proxmenux-monitor.service --no-pager -l</code> — mostra le linee di log recenti, ExecStart, MainPID, ecc."
|
||||
]
|
||||
},
|
||||
"manual": {
|
||||
"title": "Equivalenti manuali",
|
||||
"intro": "Da qualsiasi shell:",
|
||||
"code": "systemctl status proxmenux-monitor.service # detailed status\nsystemctl is-active proxmenux-monitor.service # one-word status\nsystemctl enable --now proxmenux-monitor.service # enable + start\nsystemctl disable --now proxmenux-monitor.service # stop + disable\njournalctl -u proxmenux-monitor.service -f # follow live logs"
|
||||
},
|
||||
"reset": {
|
||||
"heading": "Reimposta password ProxMenux Monitor",
|
||||
"intro": "Percorso di recupero per l'operatore che ha perso la password del cruscotto (o dispositivo 2FA). L'opzione viene visualizzata solo quando il Monitor viene installato sull'host. Selezione:",
|
||||
"items": [
|
||||
"Chiede la conferma con una finestra di dialogo sì/no — l'azione è distruttiva per le credenziali di accesso.",
|
||||
"Il backup del <code>/root/.config/proxmenux-monitor/auth.json</code> esistente a <code>auth.json.bak-<UTC timestamp></code> (mode <code>0600</code>) così lo stato precedente può essere ripristinato manualmente se il reset è stato un errore.",
|
||||
"Arresta il servizio <code>proxmenux-monitor</code> per evitare conflitti tra la modifica del file e un accesso in corso.",
|
||||
"Cancella i campi di identità in <code>auth.json</code>: <code>enabled=false</code>, <code>configured=false</code>, svuota <code>username</code>, <code>password_hash</code>, <code>totp_secret</code> e l'array dei codici di backup.",
|
||||
"<strong>Conserva</strong> <code>jwt_secret</code> e i dati registrati <code>api_tokens</code> / <code>revoked_tokens</code>, così i token di lunga durata usati da Home Assistant o altri script <em>continuano ad autenticarsi</em> dopo la reimpostazione.",
|
||||
"Riavvia il servizio. La prossima visita a <code>http://<host>:8008</code> mostra la procedura guidata di configurazione del primo lancio in modo da poter creare un nuovo account di amministrazione."
|
||||
],
|
||||
"preservedTitle": "Cosa viene conservato e cosa viene cancellato",
|
||||
"preservedBody": "<strong>Cancellati:</strong> nome utente, hash della password, segreto TOTP 2FA e codici di recupero. <strong>Conservati:</strong> <code>jwt_secret</code>, metadati <code>api_tokens</code> e lista <code>revoked_tokens</code>. Per invalidare anche tutti i token API e ripartire da zero, elimina <code>auth.json</code> manualmente invece di usare questa opzione. Al prossimo avvio il servizio rigenera il segreto JWT e tutti gli altri dati.",
|
||||
"trustTitle": "L'accesso fisico-host è l'ancora di fiducia",
|
||||
"trustBody": "Questo percorso di reset richiede shell radice sull'host. Chiunque può eseguire il comando <code>menu</code> come root controlla già la casella, quindi dare loro il recupero password non è un escalation privilegio — è coerente con come ogni altro strumento di amministrazione su Proxmox funziona. Il corollario: il login Monitor non proteggerà nulla da qualcuno che hai già lasciato nel guscio Proxmox.",
|
||||
"seeAlso": "Vedi anche <link>Monitor → Accesso e autenticazione → Recuperare una password persa</link> per la stessa procedura dal pannello e i dettagli sul calcolo degli hash delle password e sulla generazione del segreto JWT."
|
||||
},
|
||||
"files": {
|
||||
"heading": "File coinvolti",
|
||||
"code": "/etc/systemd/system/proxmenux-monitor.service # systemd unit\n/root/.config/proxmenux-monitor/ # runtime config dir\n/var/log/proxmenux-auth.log # Flask app auth log\n # (read by Fail2Ban [proxmenux] jail)"
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Risoluzione dei problemi",
|
||||
"missingTitle": "Entrambe le opzioni di menu mancano",
|
||||
"missingBody": "Il Monitor non è registrato con systemd. Confermare con <code>systemctl list-unit-files | grep proxmenux-monitor</code> — se non c'è uscita, reinstallare ProxMenux dal programma di installazione ufficiale con l'ultima versione e selezionare l'opzione Monitor durante l'installazione.",
|
||||
"unreachableTitle": "Servizio attivato ma l'URL non è raggiungibile",
|
||||
"unreachableBody": "L'uscita di stato delle impostazioni ti dà l'IP. Conferma:",
|
||||
"unreachableCmd": "ss -tlnp | grep 8008 # is anything listening?\njournalctl -u proxmenux-monitor -n 100 --no-pager # recent errors\ncurl -sI http://localhost:8008 # local reachability",
|
||||
"unreachableOutro": "Se localhost funziona ma non è esterno, controlla il firewall host (<code>pve-firewall</code> o nftables) per TCP 8008 in entrata.",
|
||||
"stopsTitle": "Attivato il servizio ma si ferma pochi secondi dopo",
|
||||
"stopsBody": "Di solito si tratta di un conflitto sulla porta 8008 o di un controllo delle dipendenze non riuscito. Il registro di sistema indica la causa: <code>journalctl -u proxmenux-monitor.service -b</code>."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/security/fail2ban",
|
||||
"label": "Fail2Ban",
|
||||
"tailRich": "— la prigione <code>[proxmenux]</code> protegge il Monitor su TCP 8008."
|
||||
},
|
||||
{
|
||||
"href": "/docs/settings",
|
||||
"label": "Panoramica delle impostazioni",
|
||||
"tail": "."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Mostra informazioni sulla versione | Documentazione ProxMenux",
|
||||
"description": "Diagnostica di ProxMenux in sola lettura: versione, canale di rilascio, componenti registrati in config.json, percorsi dei file, cataloghi di traduzioni e lingua attuale.",
|
||||
"ogTitle": "Mostra informazioni sulla versione | Documentazione ProxMenux",
|
||||
"ogDescription": "Dati diagnostici su versione di ProxMenux, canale di rilascio, componenti, file e lingua."
|
||||
},
|
||||
"header": {
|
||||
"title": "Mostra informazioni sulla versione",
|
||||
"description": "Diagnostica in sola lettura. Legge version.txt, config.json e percorsi di file noti, poi mostra una casella di testo scorrevole con versione, canale di rilascio, componenti installati, presenza dei file, file di traduzione e lingua attuale.",
|
||||
"section": "Impostazioni"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Che cosa è questo",
|
||||
"body": "Un autodiagnostico. Utile quando si segnala un problema (incolla il contenuto di dialogo nel bug report) o per confermare un'installazione completata in modo pulito. Non modifica niente."
|
||||
},
|
||||
"reports": {
|
||||
"heading": "Che cosa riferisce",
|
||||
"headerSection": "Sezione",
|
||||
"headerSource": "Fonte",
|
||||
"headerContent": "Contenuto",
|
||||
"rows": [
|
||||
{
|
||||
"section": "Versione attuale",
|
||||
"source": "version.txt",
|
||||
"contentRich": "Numero di versione su una sola riga; <code>Unknown</code> se il file manca"
|
||||
},
|
||||
{
|
||||
"section": "Canale di rilascio",
|
||||
"source": "Stato del programma beta in config.json",
|
||||
"content": "Stable (main) o Beta (develop); versione beta se disponibile"
|
||||
},
|
||||
{
|
||||
"section": "Componenti installati",
|
||||
"source": "config.json",
|
||||
"content": "Stato di ciascun componente (✓ installato / creato / aggiornato, ✗ assente)"
|
||||
},
|
||||
{
|
||||
"section": "File ProxMenux",
|
||||
"source": "controllo filesystem",
|
||||
"contentRich": "<code>menu</code>, <code>utils.sh</code>, <code>config.json</code>, <code>version.txt</code> presenza + percorsi"
|
||||
},
|
||||
{
|
||||
"section": "File di traduzione",
|
||||
"source": "/usr/local/share/proxmenux/lang/",
|
||||
"content": "Presenza della directory lang/ inclusa in ogni installazione"
|
||||
},
|
||||
{
|
||||
"section": "Lingua attuale",
|
||||
"source": "config.json",
|
||||
"contentRich": "Codice lingua da <code>.language</code>; usa <code>en</code> se non impostato"
|
||||
}
|
||||
]
|
||||
},
|
||||
"sampleHeading": "Esempio di output",
|
||||
"manualHeading": "Equivalenti manuali",
|
||||
"troubleshoot": {
|
||||
"heading": "Risoluzione dei problemi",
|
||||
"unknownTitle": "La versione mostra \"Unknown\"",
|
||||
"unknownBody": "<code>/usr/local/share/proxmenux/version.txt</code> è mancante o illeggibile. Il più spesso causato da un'installazione parziale. Reinstallare dalla sorgente ufficiale ProxMenux.",
|
||||
"noConfigTitle": "Nessuna informazione di installazione disponibile",
|
||||
"noConfigBody": "<code>config.json</code> manca. Senza questo file lo script non può elencare i componenti. Reinstalla per ricrearlo.",
|
||||
"wrongStatusTitle": "Un componente mostra ✗ anche se sono sicuro di averlo installato",
|
||||
"wrongStatusBody": "Significa che <code>config.json</code> non registra quel componente come installato: potrebbe trattarsi di uno script che non si registra ancora, oppure di una installazione manuale eseguita senza ProxMenux. La finestra riflette il contenuto di <code>config.json</code>, non lo stato effettivo del disco."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/settings/uninstall-proxmenux",
|
||||
"label": "Disinstalla ProxMenux",
|
||||
"tail": "— rimuovere tutti questi file."
|
||||
},
|
||||
{
|
||||
"href": "/docs/settings",
|
||||
"label": "Panoramica delle impostazioni",
|
||||
"tail": "."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,92 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Disinstalla ProxMenux | Documentazione ProxMenux",
|
||||
"description": "Disinstallazione pulita di ProxMenux con rimozione facoltativa di jq e dialog, pulizia dei vecchi file di traduzione e del servizio Monitor e ripristino dei backup di sistema.",
|
||||
"ogTitle": "Disinstalla ProxMenux | Documentazione ProxMenux",
|
||||
"ogDescription": "Pulitamente rimuovere ProxMenux da un host Proxmox con pulizia di dipendenza opzionale."
|
||||
},
|
||||
"header": {
|
||||
"title": "Disinstalla ProxMenux",
|
||||
"description": "Rimuove ProxMenux dall'host Proxmox con un processo interattivo: conferma, rimozione facoltativa delle dipendenze, pulizia del servizio ProxMenux Monitor e ripristino dei backup di /root/.bashrc e /etc/motd. Mostra una barra di avanzamento per tutta la durata del processo.",
|
||||
"section": "Impostazioni"
|
||||
},
|
||||
"scopeWarn": {
|
||||
"title": "Riguarda solo l'installazione di ProxMenux, non VM / CT / archiviazione",
|
||||
"body": "La disinstallazione rimuove gli script ProxMenux, il lanciatore del menu, il servizio Monitor facoltativo e i backup dei file di sistema creati da ProxMenux durante l'installazione. <strong>Non modifica VM, container, archiviazione, configurazione di rete, Fail2Ban, driver NVIDIA o qualsiasi altro elemento installato tramite ProxMenux.</strong> Questi rimangono invariati."
|
||||
},
|
||||
"flow": {
|
||||
"heading": "Procedura di disinstallazione",
|
||||
"items": [
|
||||
"<strong>Finestra di conferma.</strong> Sì/no: «Vuoi davvero disinstallare ProxMenux?»",
|
||||
"<strong>Elenco delle dipendenze da rimuovere.</strong> Propone jq e dialog. Entrambe le caselle sono deselezionate; scegli solo le dipendenze che nessun'altra applicazione richiede.",
|
||||
"<strong>La rimozione mostra una barra di avanzamento.</strong> Rimuove ogni vecchio ambiente di traduzione rimasto, il lanciatore <code>menu</code>, la struttura <code>/usr/local/share/proxmenux/</code>, il servizio ProxMenux Monitor se presente insieme alla destinazione di notifica registrata in Proxmox VE (<code>proxmenux-webhook</code> e la relativa regola di corrispondenza), le dipendenze selezionate e infine ripristina i backup dei file di sistema (vedi sotto).",
|
||||
"<strong>Finestra di completamento.</strong> Elenca le dipendenze rimosse e termina."
|
||||
]
|
||||
},
|
||||
"deps": {
|
||||
"heading": "Rimozione della dipendenza: cosa è offerto",
|
||||
"intro": "La lista propone jq e dialog. <strong>Nessuna casella è selezionata per impostazione predefinita</strong>: altre applicazioni potrebbero usare questi pacchetti di sistema, quindi è più sicuro conservarli.",
|
||||
"headerType": "Installazione",
|
||||
"headerOffered": "Offerto per la rimozione",
|
||||
"rows": [
|
||||
{
|
||||
"type": "Versioni attuali",
|
||||
"offeredRich": "<code>dialog</code>, <code>jq</code>"
|
||||
},
|
||||
{
|
||||
"type": "Vecchie installazioni dopo l'aggiornamento",
|
||||
"offeredRich": "<code>dialog</code>, <code>jq</code>"
|
||||
}
|
||||
],
|
||||
"warnTitle": "Pacchetti a livello di sistema — pensare due volte",
|
||||
"warnBody": "La lista attuale propone <code>jq</code> e <code>dialog</code>, non <code>python3</code>. Altri strumenti potrebbero richiedere questi pacchetti di sistema. La rimozione può eliminare anche pacchetti dipendenti o dipendenze inutilizzate. Conserva i pacchetti necessari e controlla ogni proposta di rimozione prima di eseguire apt manualmente."
|
||||
},
|
||||
"removed": {
|
||||
"heading": "Cosa viene rimosso",
|
||||
"code": "/usr/local/bin/menu # the launcher\n/usr/local/share/proxmenux/ # everything: scripts, config, cache, version\n/opt/googletrans-env/ # leftover legacy translation environment\n/etc/systemd/system/proxmenux-monitor.service # Monitor service unit\n/root/.config/proxmenux-monitor/ # Monitor config dir\n # + dependencies you ticked in the checklist"
|
||||
},
|
||||
"restored": {
|
||||
"heading": "Che cosa viene ripristinato",
|
||||
"items": [
|
||||
"Se <code>/root/.bashrc.bak</code> esiste, viene rinominato in <code>/root/.bashrc</code> (ripristinando il file bashrc originale).",
|
||||
"Se <code>/etc/motd.bak</code> esiste, viene rinominato in <code>/etc/motd</code>. Altrimenti sed rimuove dal motd esistente la riga ProxMenux (<em>“This system is optimised by: ProxMenux”</em>)."
|
||||
]
|
||||
},
|
||||
"othersCallout": {
|
||||
"title": "Gli altri componenti installati da ProxMenux rimangono",
|
||||
"body": "Tutto ciò che ProxMenux è installato tramite altri menu — Fail2Ban, Lynis, NVIDIA driver, modifiche post-installazione — <strong>non</strong> viene toccato da questo programma di disinstallazione. Ognuno ha il proprio flusso di disinstallazione all'interno del rispettivo menu (oppure puoi rimuoverlo direttamente con apt). Guarda prima <em>Mostra informazioni sulla versione</em> per vedere cosa è registrato."
|
||||
},
|
||||
"manual": {
|
||||
"heading": "Disinstallazione manuale",
|
||||
"intro": "Se per qualche motivo il disinstallatore del menu non può essere eseguito (ad es. <code>dialog</code> già mancante), la sequenza manuale equivalente:",
|
||||
"code": "# 1. Stop and remove the Monitor service (if installed)\nsystemctl stop proxmenux-monitor.service 2>/dev/null\nsystemctl disable proxmenux-monitor.service 2>/dev/null\nrm -f /etc/systemd/system/proxmenux-monitor.service\nrm -rf /root/.config/proxmenux-monitor\nsystemctl daemon-reload\nsystemctl reset-failed 2>/dev/null\n\n# 2. Remove a leftover legacy translation environment\nrm -rf /opt/googletrans-env\n\n# 3. Remove ProxMenux files\nrm -f /usr/local/bin/menu\nrm -rf /usr/local/share/proxmenux\n\n# 4. Restore backups\n[ -f /root/.bashrc.bak ] && mv /root/.bashrc.bak /root/.bashrc\n[ -f /etc/motd.bak ] && mv /etc/motd.bak /etc/motd \\\n || sed -i '/This system is optimised by: ProxMenux/d' /etc/motd"
|
||||
},
|
||||
"reinstall": {
|
||||
"heading": "Reinstallare più tardi",
|
||||
"body": "Esegui di nuovo il programma di installazione ufficiale di ProxMenux. Le versioni attuali usano un'unica modalità di installazione che include tutte le otto lingue dell'interfaccia."
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Risoluzione dei problemi",
|
||||
"hangTitle": "La disinstallazione si blocca durante la rimozione di un vecchio ambiente di traduzione",
|
||||
"hangBody": "Le versioni attuali rimuovono un ambiente residuo con <code>rm -rf /opt/googletrans-env</code>; non eseguono <code>pip uninstall</code>. Se questo passaggio si blocca, esaminalo da un'altra shell e verifica il filesystem dell'host prima di riprovare.",
|
||||
"aptTitle": "apt segnala pacchetti ancora in uso durante la rimozione delle dipendenze",
|
||||
"aptBody": "I pacchetti selezionati vengono contrassegnati come automatici e passati a <code>apt-get -y --purge autoremove</code>. Questo non garantisce la protezione dei servizi dipendenti. Lascia deselezionate le dipendenze necessarie ad altri strumenti e controlla le rimozioni proposte da apt prima di qualsiasi pulizia manuale.",
|
||||
"motdTitle": "MOTD mostra ancora la linea ProxMenux dopo la disinstallazione",
|
||||
"motdBody": "Può accadere se <code>/etc/motd.bak</code> non esisteva e sed non ha trovato la riga (per esempio perché era stata modificata). Modifica <code>/etc/motd</code> manualmente e rimuovi ogni riga ProxMenux rimasta."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/settings/show-version-information",
|
||||
"label": "Mostra informazioni sulla versione",
|
||||
"tail": " — verifica cosa verrebbe rimosso prima di disinstallare."
|
||||
},
|
||||
{
|
||||
"href": "/docs/settings",
|
||||
"label": "Panoramica delle impostazioni",
|
||||
"tail": "."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,123 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Host: Aggiungi il target iSCSI come storage Proxmox | Documentazione ProxMenux",
|
||||
"description": "Registra un target iSCSI come storage Proxmox con ProxMenux. La procedura installa open-iscsi, rileva il portale tramite sendtargets, consente di scegliere il target ed esegue pvesm add iscsi. Fornisce dispositivi a blocchi raw per le immagini disco delle VM.",
|
||||
"ogTitle": "Host: Aggiungi il target iSCSI come storage Proxmox | Documentazione ProxMenux",
|
||||
"ogDescription": "Registra un target iSCSI come storage Proxmox con rilevamento guidato. Usa pvesm add iscsi e fornisce dispositivi a blocchi raw per i dischi delle VM."
|
||||
},
|
||||
"header": {
|
||||
"title": "Host: Aggiungi il target iSCSI come storage Proxmox",
|
||||
"description": "Registra un target iSCSI (SAN, TrueNAS / FreeNAS, Synology, Windows Server o qualsiasi array compatibile con iSCSI) come storage Proxmox. I LUN esportati appaiono come dispositivi a blocchi e possono ospitare immagini disco VM con prestazioni vicine a quelle locali tramite la rete.",
|
||||
"section": "Archiviazione e condivisione · Host"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Cosa succede?",
|
||||
"body": "ProxMenux offre una procedura guidata per <code>pvesm add iscsi</code>: installa <code>open-iscsi</code> se necessario, chiede il portale iSCSI (IP:porta), esegue <code>iscsiadm --mode discovery --type sendtargets</code> sul portale, permette di scegliere l’IQN del target e registra lo storage iSCSI in Proxmox. Il servizio <code>iscsid</code> mantiene quindi la sessione iSCSI anche dopo i riavvii."
|
||||
},
|
||||
"vocab": {
|
||||
"heading": "Vocabolario iSCSI (riferimento rapido)",
|
||||
"headerTerm": "Termine",
|
||||
"headerMeaning": "Significato",
|
||||
"rows": [
|
||||
{
|
||||
"term": "Portale",
|
||||
"meaningRich": "L'endpoint del servizio iSCSI sul server di destinazione — un IP (o un hostname) più una porta TCP. La porta di default è <code>3260</code>; ProxMenux lo assume se non si specifica uno."
|
||||
},
|
||||
{
|
||||
"term": "Destinazione",
|
||||
"meaningRich": "Un singolo \"server\" esportato all'interno del portale, identificato dal suo IQN (<em>iSCSI Qualified Name</em>). Un portale può ospitare molti obiettivi."
|
||||
},
|
||||
{
|
||||
"term": "IQN",
|
||||
"meaningRich": "La forma canonica è <code>iqn.YYYY-MM.reverse.domain:identifier</code>, ad esempio <code>iqn.2024-08.com.truenas:proxmox-pool</code>. Sia l'obiettivo che l'iniziatore hanno il proprio IQN."
|
||||
},
|
||||
{
|
||||
"term": "LUN",
|
||||
"meaningRich": "Un dispositivo a blocchi all'interno di un target (numero unità logica). Un singolo obiettivo può esporre diversi LUN; ogni LUN appare come un proprio disco in Proxmox e può diventare un disco VM."
|
||||
},
|
||||
{
|
||||
"term": "Iniziatore",
|
||||
"meaningRich": "Il cliente che si collega a un obiettivo — in questo caso, il vostro host Proxmox. L'iniziatore ha il proprio IQN memorizzato in <code>/etc/iscsi/initiatorname.iscsi</code>. Gli obiettivi tipicamente accettano solo sessioni da parte dell'iniziatore pre-autorizzato IQNs."
|
||||
}
|
||||
]
|
||||
},
|
||||
"opening": {
|
||||
"heading": "Apertura dello strumento",
|
||||
"body": "Dal menu principale di ProxMenux, aprire <strong>Storage & Share Manager → Aggiungi iSCSI Target come Proxmox Storage</strong>. Vedrete questo sub-menu con quattro opzioni:",
|
||||
"imageAlt": "iSCSI Host Manager menu — Aggiungi / Visualizza / Rimuovi / Test connettività"
|
||||
},
|
||||
"howRuns": {
|
||||
"heading": "Come funziona lo script (Aggiungi flusso)",
|
||||
"body": "Il flusso ha due fasi con chiara separazione tra \"impostare l'iniziatore, scoprire gli obiettivi\" e \"registrare effettivamente lo storage in Proxmox\". A differenza di NFS / Samba, non c'è auto-scoperta sulla sottorete — è necessario conoscere l'indirizzo del portale (iSCSI non è broadcast-friendly)."
|
||||
},
|
||||
"add": {
|
||||
"heading": "Aggiungere l'obiettivo iSCSI come storage Proxmox",
|
||||
"items": [
|
||||
"<strong>Inserimento del portale</strong> — digitare il nome IP o host del server di destinazione iSCSI. Port <code>3260</code> è assunto a meno che non si digita <code>host:port</code>.",
|
||||
"<strong>Rilevamento dei target</strong> — ProxMenux chiama <code>iscsiadm --mode discovery --type sendtargets --portal <ip:port></code>. Il server risponde con ogni IQN che consente a questo iniziatore di vedere. Se la scoperta fallisce, lo script mostra l'errore esatto da <code>iscsiadm</code> e elenca cause comuni (IP errato, firewall, iniziatore IQN non autorizzato).",
|
||||
"<strong>Selezione del target</strong> — un solo target viene selezionato automaticamente; con più target viene mostrato un menu.",
|
||||
"<strong>Storage ID</strong> — default è <code>iscsi-<last IQN segment, 20 chars max></code>. Solo lettere, cifre, <code>-</code> e <code>_</code>.",
|
||||
"<strong>Tipo di contenuto</strong> — a differenza di NFS / Samba, il contenuto di iSCSI è <strong>fissato a <code>images</code></strong>. iSCSI espone dispositivi a blocchi raw, non un filesystem, quindi Proxmox consente solo di ospitare dischi VM su di esso."
|
||||
],
|
||||
"authTitle": "Autorizzare l'iniziatore Proxmox sul bersaglio",
|
||||
"authBody1": "Prima che il flusso Add funzioni end-to-end, l'obiettivo iSCSI deve conoscere il vostro host Proxmox. Ottieni il tuo iniziatore IQN:",
|
||||
"authBody2": "Quindi aggiungere che IQN alla lista di accesso dell'obiettivo (in TrueNAS: <em>Sharing → Block → Gruppi Iniziatori</em>; in Synology: <em>SAN Manager → iSCSI → Target → Modifica → Initiators</em>; ecc.). Se l'iniziatore non è autorizzato, la scoperta di <code>iscsiadm</code> restituisce un elenco vuoto o un errore di autenticazione."
|
||||
},
|
||||
"manual": {
|
||||
"heading": "Equivalente manuale",
|
||||
"body": "L'intero flusso mappa a questi comandi:"
|
||||
},
|
||||
"view": {
|
||||
"heading": "Visualizzare gli archivi iSCSI configurati",
|
||||
"body": "Elenca ogni voce iSCSI in Proxmox (<code>pvesm status | awk ''$2 == \"iscsi\"''</code>) con portale, target IQN, tipo di contenuto e stato live."
|
||||
},
|
||||
"remove": {
|
||||
"heading": "Rimuovere lo storage iSCSI",
|
||||
"body": "Esegue <code>pvesm remove <storage-id></code> dopo aver confermato il portale, l'obiettivo e il contenuto. Solo la registrazione Proxmox viene rimossa — <strong> l'obiettivo iSCSI stesso non è toccato</strong> e le sessioni esistenti sul lato del kernel possono indugiare fino al prossimo riavvio.",
|
||||
"warnTitle": "Prima controlla i dischi VM presenti su questo iSCSI",
|
||||
"warnBody": "La rimozione di uno storage iSCSI mentre le VM hanno ancora dischi su di esso lascia quelle VM che puntano in un storage non più registrato. Proxmox segnalerà l'errore, ma i dati LUN sono intatti sul bersaglio — è possibile re-registrare lo storage più tardi per ottenere i dischi indietro. Tuttavia, spostare o eseguire il backup delle VM prima di essere al sicuro."
|
||||
},
|
||||
"test": {
|
||||
"heading": "Test di connettività iSCSI",
|
||||
"body": "Esegue un passaggio diagnostico: controlla che <code>iscsiadm</code> è installato, stampa il tuo iniziatore IQN, conferma che <code>iscsid</code> è in esecuzione, pings ogni portale registrato, sonde la sua porta, e segnala <code>pvesm status</code> più se una sessione iSCSI è attualmente attiva (<code>iscsiadm --mode session</code>). Sessione attiva più il portale raggiungibile ma \"inattiva\" in Proxmox di solito significa uno stato obsoleto - prova <code>pvesm set <id> --disable 0</code>."
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Risoluzione dei problemi",
|
||||
"portalTitle": "\"Impossibile raggiungere il portale\" ma il server IP risponde altrove",
|
||||
"portalBody": "Il ping all’indirizzo del portale non è riuscito. Controlla di raggiungere l’interfaccia della <em>rete di storage</em> (iSCSI spesso usa una VLAN o subnet separata dalla rete di gestione). Verifica anche il DNS se hai indicato un nome host.",
|
||||
"discoverTitle": "\"iSCSI scoperta fallita\" da iscsiadm",
|
||||
"discoverIntro": "Lo script mostra l'errore esatto. Cause più comuni:",
|
||||
"discoverItems": [
|
||||
"Portale IP / porta sbagliato (doppio controllo, default è 3260).",
|
||||
"Il servizio iSCSI non viene eseguito sul server di destinazione.",
|
||||
"Firewall blocca 3260 tra Proxmox e l'obiettivo.",
|
||||
"<strong>L’IQN dell’iniziatore non è autorizzato sul target.</strong> Causa più frequente negli array aziendali. Aggiungi prima l’IQN Proxmox all’ACL degli iniziatori del target."
|
||||
],
|
||||
"noTargetTitle": "Nessun obiettivo trovato ma la scoperta è riuscita",
|
||||
"noTargetBody": "Il server ha accettato l’iniziatore ma non gli espone alcun target. Controlla autenticazione e accessi: alcuni array consentono il rilevamento a tutti gli IQN ma filtrano i target visibili a ciascuno.",
|
||||
"noLunTitle": "I LUN non appaiono in /dev/disk/by-path dopo la registrazione",
|
||||
"noLunBody": "<code>pvesm add iscsi</code> è riuscito ma il kernel non vede dispositivi a blocchi. Controlla <code>iscsiadm --mode session</code>: se non esistono sessioni attive, avviane una con <code>iscsiadm --mode node --login</code>. Se una sessione esiste ma mancano i LUN, forza una nuova scansione: <code>iscsiadm --mode session --rescan</code>. Se non appare ancora nulla, il target probabilmente non ha LUN assegnati a questo IQN; configura la mappatura LUN sul target.",
|
||||
"chapTitle": "autenticazione CHAP",
|
||||
"chapBody": "ProxMenux non offre campi utente/password CHAP nella procedura interattiva. Se il rilevamento fallisce, lo script si ferma prima di <code>pvesm add</code> e non registra comunque lo storage. Configura separatamente i requisiti CHAP del target in <code>open-iscsi</code>, inclusa l’autenticazione del rilevamento se necessaria, poi riprova. Controlla la configurazione con <code>iscsiadm</code> e verifica le sessioni attive con <code>iscsiadm --mode session</code>."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/storage-share/host-nfs",
|
||||
"label": "Condivisione NFS come storage Proxmox",
|
||||
"tail": "— alternativa a livello di file. Più semplice da configurare, più flessibile (backup / ISO / tmpl / immagini), leggermente più lento per dischi VM dal vivo."
|
||||
},
|
||||
{
|
||||
"href": "/docs/storage-share/host-samba",
|
||||
"label": "Samba / CIFS come storage Proxmox",
|
||||
"tail": " — un’altra opzione a livello di file; da evitare per i dischi delle VM in esecuzione a causa della semantica dei blocchi."
|
||||
},
|
||||
{
|
||||
"href": "/docs/storage-share/host-local-disk",
|
||||
"label": "Aggiungere disco locale come archiviazione Proxmox",
|
||||
"tail": " — quando il disco è locale all’host Proxmox anziché su un’altra macchina in rete."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,186 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Host: Aggiungere disco locale come archiviazione Proxmox | Documentazione ProxMenux",
|
||||
"description": "Formatta un disco SATA, SAS o NVMe locale sull’host Proxmox e registralo come storage di tipo directory o pool ZFS. Include selezione sicura del disco, conferma delle operazioni distruttive, fstab basato su UUID, creazione del pool ZFS e uso di pvesm add dir / zfspool.",
|
||||
"ogTitle": "Host: Aggiungere disco locale come archiviazione Proxmox | Documentazione ProxMenux",
|
||||
"ogDescription": "Formatta un disco locale e registralo come storage directory o pool ZFS in Proxmox con una procedura guidata e filtri di sicurezza."
|
||||
},
|
||||
"header": {
|
||||
"title": "Host: Aggiungi disco locale come archiviazione Proxmox",
|
||||
"description": "Scegli un disco fisico sull’host Proxmox, formattalo se necessario in ext4, xfs, btrfs o zfs e registralo come storage directory con pvesm add dir oppure come pool ZFS con pvesm add zfspool. ProxMenux esclude il disco di sistema e quelli in uso e descrive ogni operazione distruttiva prima di eseguirla.",
|
||||
"section": "Archiviazione e condivisione · Host"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Cosa succede?",
|
||||
"body": "Altri strumenti <em>Host</em> in questa sezione affrontano lo storage <strong>di rete</strong> (NFS / Samba / iSCSI). Questo si occupa di dischi <strong>locali</strong> — unità di ricambio fisicamente attaccate al vostro host Proxmox che si desidera utilizzare per dischi, backup, ISO o modelli VM. ProxMenux prepara il disco (partizione + formato + montaggio) e lo registra in Proxmox in modo che l'interfaccia utente possa inserire il contenuto lì."
|
||||
},
|
||||
"destructive": {
|
||||
"title": "Strumento distruttivo per il percorso 'format'",
|
||||
"body": "La procedura <em>Formatta</em> <strong>distrugge le partizioni e i dati esistenti sul disco selezionato</strong>. ProxMenux mostra un avviso, esclude i dischi in uso e richiede conferma prima di eseguire <code>wipefs</code> / <code>sgdisk</code> / <code>mkfs</code>. Non è una sovrascrittura sicura di ogni byte. Controlla due volte il percorso del dispositivo prima di confermare."
|
||||
},
|
||||
"compare": {
|
||||
"heading": "Directory o pool ZFS — quale scegliere?",
|
||||
"headerDir": "Directory (ext4 / xfs / btrfs)",
|
||||
"headerZfs": "Pool ZFS",
|
||||
"rows": [
|
||||
{
|
||||
"label": "Tipo di stoccaggio Proxmox",
|
||||
"dirRich": "<code>dir</code>",
|
||||
"zfsRich": "<code>zfspool</code>"
|
||||
},
|
||||
{
|
||||
"label": "Formato del disco VM",
|
||||
"dir": "File qcow2 / raw su un file system",
|
||||
"zfs": "Nativo ZFS dataset (zvol) per disco"
|
||||
},
|
||||
{
|
||||
"label": "Istantanee",
|
||||
"dir": "snapshot qcow2; btrfs snapshots se fs=btrfs",
|
||||
"zfs": "Nativo, istantaneo, copia su scrittura"
|
||||
},
|
||||
{
|
||||
"label": "Provisioning sottile",
|
||||
"dir": "Sì (qcow2 default)",
|
||||
"zfs": "Sì (ZFS default)"
|
||||
},
|
||||
{
|
||||
"label": "RAM esigenze",
|
||||
"dir": "Basso",
|
||||
"zfs": "Elevati — ZFS usa la RAM libera come cache ARC"
|
||||
},
|
||||
{
|
||||
"label": "Supporta i tipi di contenuti",
|
||||
"dir": "images, backup, iso, vztmpl, snippets, rootdir",
|
||||
"zfs": "solo images e rootdir (storage a blocchi)"
|
||||
},
|
||||
{
|
||||
"label": "Il meglio per",
|
||||
"dir": "Disco generico: mix di dischi VM, backup, ISO",
|
||||
"zfs": "Pure VM / LXC disco dati con istantanee + esigenze di integrità"
|
||||
}
|
||||
]
|
||||
},
|
||||
"opening": {
|
||||
"heading": "Apertura dello strumento",
|
||||
"body": "Dal menu principale di ProxMenux, aprire <strong>Storage & Share Manager → Aggiungi disco locale come Proxmox Storage</strong>. Vedrete questo sub-menu con quattro opzioni:",
|
||||
"imageAlt": "Menu Local Disk Manager — Aggiungi / Visualizza / Rimuovi / Elenca dischi disponibili"
|
||||
},
|
||||
"howRuns": {
|
||||
"heading": "Come funziona lo script (Aggiungi flusso)",
|
||||
"body": "Il flusso ha due fasi con un filtro di sicurezza con tre controlli. Fase 1 scopre dischi sicuri, decide cosa fare con quello scelto e raccoglie i parametri di archiviazione; Fase 2 fa il lavoro distruttivo. Fino alla conferma finale il disco è intatto."
|
||||
},
|
||||
"format": {
|
||||
"heading": "Formattare un disco vuoto",
|
||||
"intro": "Il percorso per un disco fresco o uno il cui contenuto non ti interessa.",
|
||||
"items": [
|
||||
"Scegliere il disco (sistema / dischi in uso sono nascosti).",
|
||||
"Scegliere \"Format disk (ERASE tutti i dati)\".",
|
||||
"Scegli il filesystem — vedi la tabella sopra per i trade-off.",
|
||||
"ID di archiviazione (default <code>disk-<device></code>), percorso di montaggio, preimpostazione del tipo di contenuto.",
|
||||
"Conferma nel dialogo <strong>CONFERMA FINALE — I DATI SARANNO CANCELLATI</strong>.",
|
||||
"ProxMenux cancella la tabella delle partizioni e crea una partizione sull’intero disco. Esegue <code>mkfs.<fs></code> o <code>zpool create</code> e monta il risultato. I file system normali ricevono una voce UUID in <code>/etc/fstab</code> con <code>defaults,nofail</code>; ZFS usa la configurazione di montaggio del pool. Se <em>Come storage Proxmox</em> è selezionato (sempre per ZFS), viene poi registrato con <code>pvesm add dir</code> o <code>pvesm add zfspool</code>; altrimenti resta solo un montaggio dell’host."
|
||||
],
|
||||
"tipTitle": "Perché UUID + nofail in /etc/fstab",
|
||||
"tipBody": "Lo script scrive <code>UUID=… /mnt/<id> <fs> defaults,nofail 0 2</code>. UUID sopravvive al riordino del dispositivo attraverso i reboots (così <code>/dev/sdc</code> diventando <code>/dev/sdd</code> non rompe l'avvio). <code>nofail</code> significa che se il disco scomparirà mai (guasto hardware, scollegamento), Proxmox si avvia comunque — lo storage mostra solo come inattivo fino a quando il disco torna indietro."
|
||||
},
|
||||
"reuse": {
|
||||
"heading": "Riutilizzare un filesystem esistente",
|
||||
"intro": "Il percorso per un disco che si desidera mantenere i dati su — forse si è spostato da un altro host Proxmox, o il disco ha già backup / ISO che si desidera mantenere accessibile.",
|
||||
"items": [
|
||||
"Scegli il disco.",
|
||||
"Scegliere \"Usa filesystem esistente\".",
|
||||
"ID di archiviazione, percorso di montaggio, preimpostazione di tipo di contenuto.",
|
||||
"ProxMenux <strong>non</strong> tocca i dati: crea il punto di montaggio, monta il disco, aggiunge una voce UUID a <code>/etc/fstab</code> e lo registra come archivio <code>dir</code> Proxmox."
|
||||
],
|
||||
"warnTitle": "Il riutilizzo non gestisce i pool ZFS",
|
||||
"warnBody": "Se il disco contiene già un ZFS pool, il percorso di <em>riutilizzo</em> qui cerca solo di montarlo come un filesystem regolare — che non riesce. Importare un esistente ZFS pool uso <code>zpool import <name></code> sulla riga di comando e quindi registrarlo manualmente con <code>pvesm add zfspool</code>."
|
||||
},
|
||||
"presets": {
|
||||
"heading": "Preimpostazioni di tipo contenuto",
|
||||
"intro": "ProxMenux offre tre preimpostazioni e un’opzione personalizzata. La stringa di contenuto scelta viene passata a <code>pvesm add … --content <csv></code>:",
|
||||
"headerPreset": "Preimpostazione",
|
||||
"headerContent": "stringa di contenuti",
|
||||
"headerUse": "Caso di utilizzo",
|
||||
"rows": [
|
||||
{
|
||||
"preset": "Storage VM",
|
||||
"content": "images,backup",
|
||||
"use": "Uno storage dedicato ai dischi delle VM che conserva anche i backup delle stesse VM."
|
||||
},
|
||||
{
|
||||
"preset": "NAS standard",
|
||||
"content": "backup,iso,vztmpl",
|
||||
"use": "Un disco di archivio / media — backup, ISO e modelli LXC. Qui non ci sono dischi VM."
|
||||
},
|
||||
{
|
||||
"preset": "Tutti i tipi",
|
||||
"content": "images,backup,iso,vztmpl,snippets",
|
||||
"use": "Questa preimpostazione ampia abilita immagini, backup, ISO, modelli LXC e snippet. Aggiungi altri tipi supportati, come rootdir, tramite Personalizzato se necessario."
|
||||
},
|
||||
{
|
||||
"preset": "Personalizzato",
|
||||
"content": "(ingresso libero)",
|
||||
"useRich": "Digitare il CSV esatto da soli, ad esempio. <code>images</code> da solo, o <code>rootdir,images</code>."
|
||||
}
|
||||
],
|
||||
"zfsTitle": "ZFS pool il contenuto è più stretto",
|
||||
"zfsBody": "Con <strong>zfs</strong>, uno <code>zfspool</code> supporta solo <code>images</code> e <code>rootdir</code>, non file ISO o backup. Inserisci una lista supportata tramite Personalizzato. Lo script la inoltra invariata; tipi non supportati possono far fallire la registrazione. Controlla poi <code>pvesm status</code>."
|
||||
},
|
||||
"manual": {
|
||||
"heading": "Equivalente manuale",
|
||||
"extIntro": "Formato + registra un disco come archiviazione directory ext4:",
|
||||
"zfsIntro": "O come una ZFS pool:"
|
||||
},
|
||||
"view": {
|
||||
"heading": "Visualizza gli archivi del disco",
|
||||
"body": "Elenca ogni archiviazione Proxmox su disco (entrambi <code>dir</code> e <code>zfspool</code> che sono creati dall'utente — i pool di sistema come <code>rpool</code> sono nascosti). Mostra il percorso di montaggio / pool nome, tipi di contenuti e stato dal vivo."
|
||||
},
|
||||
"remove": {
|
||||
"heading": "Rimuovi storage su disco",
|
||||
"body": "Rimuove lo storage da Proxmox (<code>pvesm remove</code>) e offre la pulizia della voce corrispondente in <code>/etc/fstab</code>. Lo script <strong>non</strong> distrugge automaticamente i pool ZFS: è un passaggio separato con <code>zpool destroy <name></code> da eseguire manualmente quando sei sicuro.",
|
||||
"warnTitle": "Dati e dipendenze VM esistenti",
|
||||
"warnBody": "La rimozione dello storage non modifica il file system o il pool: i dati restano sul disco. Tuttavia, VM e CT che lo usano tramite ID non potranno avviarsi. Prima di rimuoverlo, sposta i dischi delle VM su un altro storage o esegui un backup."
|
||||
},
|
||||
"list": {
|
||||
"heading": "Elenca i dischi disponibili",
|
||||
"body": "Una visione diagnostica di sola lettura: stampa l'output di <code>lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT,MODEL</code> seguito dagli storage <code>dir</code> / <code>zfspool</code> già noti a Proxmox. Buona prima fermata quando si apre lo strumento e si desidera vedere \"che cosa è su questo host?\" prima di aggiungere qualcosa."
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Risoluzione dei problemi",
|
||||
"noDisksTitle": "\"Nessun disco disponibile trovato\"",
|
||||
"noDisksIntro": "Il filtro di sicurezza ha nascosto ogni disco. Motivi comuni:",
|
||||
"noDisksItems": [
|
||||
"Solo il disco radice è presente.",
|
||||
"Ogni altro disco fa parte di un array attivo ZFS / LVM / RAID.",
|
||||
"Ogni altro disco è riferito da una configurazione VM o LXC (passthrough).",
|
||||
"Il disco è in sola lettura (guasto hardware o blocco delle scritture)."
|
||||
],
|
||||
"noDisksOutro": "Usa <em>Elenca dischi disponibili</em> nel menu per vedere l’output grezzo di <code>lsblk</code> e capire cosa sta accadendo.",
|
||||
"mountedTitle": "Formato fallisce con \"il dispositivo è montato\"",
|
||||
"mountedBody": "Qualcosa ha montato automaticamente il disco (udisksd, un desktop manager, un'unità systemd persistente). Smontare: <code>umount /dev/sdX?*</code> o <code>systemctl stop <whatever-mounts-it></code>, poi riprovare. Il filtro di sicurezza dello script dovrebbe aver nascosto i dischi montati, quindi se avete raggiunto questo errore il montaggio è avvenuto tra il menu che mostra e si conferma.",
|
||||
"zpoolTitle": "zpool create fallisce con «invalid vdev specification»",
|
||||
"zpoolBody": "Di solito significa che il disco ha ancora le firme GPT / LVM / ZFS stanti che <code>zpool</code> rifiuta di sovrascrivere senza forza. Lo script esegue <code>wipefs</code> e <code>sgdisk --zap-all</code> prima del formato, ma un disco molto testardo può ancora avere un'etichetta stante. Forzare una pulizia pulita manualmente: <code>zpool labelclear -f /dev/sdX</code> o <code>dd if=/dev/zero of=/dev/sdX bs=1M count=10</code> e riprovare.",
|
||||
"inactiveTitle": "Mostra come inattivo dopo il riavvio",
|
||||
"inactiveBody": "Controlla <code>findmnt <mount-path></code>. Se il montaggio manca, qualcosa in <code>/etc/fstab</code> non ha funzionato. <code>dmesg | tail</code> di solito indica la causa: UUID non corrispondente, filesystem danneggiato o tentativo saltato in presenza di <code>nofail</code>. Dopo aver corretto la causa, <code>mount -a</code> in genere rende nuovamente disponibile lo storage."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/disk-manager/format-disk",
|
||||
"label": "Disk Manager: Formato / Pulisci disco fisico",
|
||||
"tail": "— alternativa di basso livello quando si desidera solo preparare un disco senza registrarlo come archiviazione Proxmox."
|
||||
},
|
||||
{
|
||||
"href": "/docs/storage-share/host-iscsi",
|
||||
"label": "Aggiungere l'obiettivo iSCSI come storage Proxmox",
|
||||
"tail": " — equivalente di rete se il dispositivo a blocchi si trova su un’altra macchina."
|
||||
},
|
||||
{
|
||||
"href": "/docs/storage-share/host-local-shared",
|
||||
"label": "Aggiungi Directory condivisa su host",
|
||||
"tail": " — prepara una directory sull’host per i bind mount LXC, senza registrarla come storage Proxmox."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,103 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Host: Aggiungi directory condivisa su Host | ProxMenux Documentazione",
|
||||
"description": "Crea una directory sull’host pronta per i bind mount LXC, con permessi compatibili sia con i container privilegiati sia con quelli non privilegiati. Usa sticky bit, permessi rwx per tutti e ACL per l’ereditarietà predefinita.",
|
||||
"ogTitle": "Host: Aggiungi directory condivisa su Host | ProxMenux Documentazione",
|
||||
"ogDescription": "Prepara una directory sull’host per i bind mount LXC con permessi compatibili con CT privilegiati e non privilegiati."
|
||||
},
|
||||
"header": {
|
||||
"title": "Host: Aggiungi directory condivisa su Host",
|
||||
"description": "Crea una directory sull’host da rendere accessibile a uno o più container LXC tramite bind mount. ProxMenux applica permessi compatibili con CT privilegiati e non privilegiati, senza dover allineare gli UID spostati o eseguire chown per ogni container, e registra la directory per renderla disponibile a LXC Mount Manager.",
|
||||
"section": "Archiviazione e condivisione · Host"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Ciò che è (e NON è)",
|
||||
"body": "Questo strumento <strong>non</strong> registra nulla in Proxmox (nessun <code>pvesm add</code> qui). Prepara semplicemente una directory sull'host — <code>/mnt/shared</code>, per impostazione predefinita — con autorizzazioni che qualsiasi contenitore LXC può leggere e scrivere, indipendentemente dal fatto che il CT sia privilegiato o non privilegiato. Il solito passaggio successivo è collegarlo al montaggio in ogni CT con <mountLink>LXC Mount Manager</mountLink>."
|
||||
},
|
||||
"why": {
|
||||
"heading": "Perché uno strumento dedicato per questo",
|
||||
"intro": "Quando si esegue il bind mount di una directory host in un contenitore LXC, le autorizzazioni dipendono da:",
|
||||
"items": [
|
||||
"Se il CT è <strong>privilegiato</strong> (UID 0 nel CT = UID 0 sull’host) o <strong>non privilegiato</strong> (UID 0 nel CT = UID 100000 sull’host, con uno spostamento di +100000).",
|
||||
"La proprietà della directory host (un file dell’UID 1000 sull’host usa i permessi per «altri» dal punto di vista di un CT non privilegiato, poiché nessun utente del CT corrisponde a quell’UID host).",
|
||||
"Se più CT condividono la stessa directory (le TC differenti possono avere diversi intervalli UID)."
|
||||
],
|
||||
"outro": "ProxMenux usa una soluzione pratica: <strong>dare accesso a tutti</strong> a livello di filesystem, con rwx per tutti, sticky bit e ACL per l’ereditarietà dei permessi. Qualsiasi UID mappato può leggere e scrivere; non serve allineare UID/GID."
|
||||
},
|
||||
"howRuns": {
|
||||
"heading": "Come funziona lo script",
|
||||
"body": "Lo script non ha menu principale — esegue una singola azione, <strong>Crea directory condivisa</strong>. Fase 1 raccoglie il percorso di destinazione; Fase 2 crea la directory e applica autorizzazioni."
|
||||
},
|
||||
"bits": {
|
||||
"heading": "Che ogni bit di autorizzazione fa",
|
||||
"intro": "Il numero <strong>1777</strong> non è arbitrario: è la stessa modalità che utilizza Linux per <code>/tmp</code>. Tre proprietà combinate:",
|
||||
"headerBit": "Bit",
|
||||
"headerEffect": "Effetto",
|
||||
"headerWhy": "Perché è importante qui",
|
||||
"rows": [
|
||||
{
|
||||
"bit": "1 (sticky bit)",
|
||||
"effect": "Solo il proprietario del file, quello della directory o un processo con privilegi sufficienti può eliminare o rinominare il file.",
|
||||
"why": "Aiuta a impedire agli utenti con UID mappati diversi di eliminare i file altrui. Non isola CT con lo stesso UID mappato o accesso root privilegiato."
|
||||
},
|
||||
{
|
||||
"bit": "777 (rwx-rwx-rwx)",
|
||||
"effect": "Tutti possono leggere, scrivere e attraversare.",
|
||||
"why": "Gli UID dei CT non privilegiati (100000+) usano i permessi per “altri” sull’host; rwx per tutti concede loro accesso."
|
||||
},
|
||||
{
|
||||
"bit": "ACL (predefinite)",
|
||||
"effect": "Ereditate su ogni nuovo file / subdir creato.",
|
||||
"why": "I nuovi contenuti ereditano le ACL predefinite senza rieseguire lo script. Le applicazioni possono comunque richiedere modalità restrittive o modificare i permessi in seguito."
|
||||
}
|
||||
],
|
||||
"privTitle": "I CT privilegiati vedono lo stesso risultato, senza lo spostamento degli UID",
|
||||
"privBody": "Per un CT privilegiato, UID 0 nel CT è UID 0 sull'host, così <code>root</code> all'interno del CT può leggere / scrivere direttamente la directory host. <code>1777</code> è ancora bene — significa solo che gli utenti non-root all'interno del CT possono anche usare la directory. Gli stessi permessi coprono entrambi i casi."
|
||||
},
|
||||
"where": {
|
||||
"heading": "Dove mettere la directory condivisa",
|
||||
"intro": "Il localizzatore offre quattro opzioni:",
|
||||
"opt1Title": "1. Crea una nuova cartella in /mnt",
|
||||
"opt1Body": "La solita scelta. ProxMenux suggerisce automaticamente il primo nome libero (<code>shared</code>, <code>shared2</code>, <code>shared3</code>, ...). Basta confermare o digitare un nome diverso.",
|
||||
"opt2Title": "2. Inserisci il percorso personalizzato",
|
||||
"opt2Body": "Per le directory al di fuori di <code>/mnt</code>. Qualsiasi percorso assoluto funziona (ad es. <code>/srv/media</code>, <code>/data/family</code>). Lo script applica le stesse autorizzazioni.",
|
||||
"opt3Title": "3. Visualizza le cartelle esistenti in /mnt",
|
||||
"opt3Body": "Diagnostica di sola lettura: elenca ogni directory sotto <code>/mnt</code> con le sue autorizzazioni, proprietario e spazio disponibile. Utile prima di creare un nuovo per evitare collisioni di nome.",
|
||||
"opt4Title": "4. Annulla",
|
||||
"opt4Body": "Esce senza creare nulla, come premendo <kbd>Esc</kbd>.",
|
||||
"tipTitle": "Dove vive /mnt?",
|
||||
"tipBody": "Per impostazione predefinita <code>/mnt</code> siede sul filesystem Proxmox root. Se si desidera la directory condivisa su un disco diverso (un disco di dati, un ZFS pool), montare il disco sotto <code>/mnt/<name></code> primo (Disk Manager o <diskLink>Aggiungere il disco locale come archiviazione Proxmox</diskLink>), e quindi creare la directory condivisa come una sottocartella all'interno di esso — o scegliere \"Inserisci percorso personalizzato\" qui e puntare al disco montato."
|
||||
},
|
||||
"manual": {
|
||||
"heading": "Equivalente manuale",
|
||||
"body": "L'intero flusso può essere riprodotto a mano:"
|
||||
},
|
||||
"next": {
|
||||
"heading": "Passaggio successivo: bind mount nei container",
|
||||
"body": "La creazione della directory la prepara solo: nessun contenitore la vede ancora. Per renderlo visibile all'interno di uno o più LXC, utilizzare <mountLink>LXC Mount Manager</mountLink> per collegare il montaggio <code>/mnt/<name></code> ai CT. Poiché i permessi sono già aperti, Mount Manager <strong>non</strong> offrirà di modificarli: la directory è pronta per l'uso così com'è."
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Risoluzione dei problemi",
|
||||
"mkdirTitle": "\"Failed to create directory\"",
|
||||
"mkdirBody": "Di solito un problema filesystem: <code>/mnt</code> è su un filesystem di sola lettura, il percorso contiene un componente che non è una directory (ad esempio digitato <code>/etc/passwd/sub</code>), o disco è pieno. Controllare con <code>df -h /mnt</code> e <code>mount | grep /mnt</code>.",
|
||||
"writeTitle": "Container non può scrivere nonostante le autorizzazioni aperte",
|
||||
"writeBody": "Verifica che il CT stia realmente usando il bind mount con <code>pct config <ctid> | grep ^mp</code>. Nel CT esegui <code>touch /mnt/data/test-$(date +%s)</code>. Se ricevi un errore di accesso negato, la directory potrebbe trovarsi su un filesystem dell’host che non rispetta le ACL, come alcune vecchie configurazioni <code>ext3</code> o <code>vfat</code>. Sposta la directory condivisa su un filesystem ext4, xfs, btrfs o zfs.",
|
||||
"aclTitle": "ACL comanda silenziosamente non disponibile",
|
||||
"aclBody": "In un’installazione minima di Proxmox, <code>setfacl</code> / <code>getfacl</code> potrebbero non essere installati. Lo script ricade con grazia (controllo <code>command -v setfacl</code>) e applica solo le autorizzazioni POSIX — che è spesso abbastanza, ma i nuovi file non erediteranno automaticamente il profilo permissivo. Installare <code>acl</code> con <code>apt-get install -y acl</code> e eseguire nuovamente lo script nella directory."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/storage-share/lxc-mount-points",
|
||||
"label": "Gestore montaggi LXC",
|
||||
"tail": "— il passo successivo naturale: legare-montare questa directory in uno o più contenitori."
|
||||
},
|
||||
{
|
||||
"href": "/docs/storage-share/host-local-disk",
|
||||
"label": "Aggiungere disco locale come archiviazione Proxmox",
|
||||
"tailRich": "— se si desidera la directory condivisa su un disco dedicato, preparare il disco prima, montarlo sotto <code>/mnt</code>, quindi creare la sottocartella condivisa qui."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,174 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Host: monta condivisione NFS sull’host | Documentazione ProxMenux",
|
||||
"description": "Monta un’esportazione NFS esterna sull’host Proxmox come storage Proxmox tramite pvesm add nfs, come semplice montaggio fstab sull’host non visibile in Datacenter > Storage oppure in entrambi i modi. Il metodo fstab è adatto a condividere il percorso con i container LXC tramite bind mount senza registrarlo come storage Proxmox.",
|
||||
"ogTitle": "Host: monta condivisione NFS sull’host | Documentazione ProxMenux",
|
||||
"ogDescription": "Monta un’esportazione NFS esterna sull’host Proxmox tramite pvesm, fstab o entrambi. La modalità fstab è adatta ai bind mount LXC."
|
||||
},
|
||||
"header": {
|
||||
"title": "Host: monta condivisione NFS sull’host",
|
||||
"description": "Monta sull’host Proxmox un’esportazione NFS proveniente da un NAS, un altro server o una condivisione del tuo homelab. Puoi registrarla come storage Proxmox visibile in Datacenter > Storage, aggiungere un montaggio tramite /etc/fstab in un percorso a scelta oppure usare entrambi i metodi. Il percorso separato è utile per i bind mount nei container LXC senza registrare uno storage Proxmox.",
|
||||
"section": "Archiviazione e condivisione · Host"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Cosa succede?",
|
||||
"body": "ProxMenux offre due metodi per montare un’esportazione NFS: <strong>(1) Storage Proxmox</strong> tramite <code>pvesm add nfs</code>. La condivisione compare in Datacenter > Storage e Proxmox gestisce il montaggio in <code>/mnt/pve/<id></code>. <strong>(2) Montaggio fstab sull’host</strong> in un percorso a scelta, reso permanente tramite <code>/etc/fstab</code>. Non compare come storage Proxmox ed è adatto ai bind mount nei container LXC, senza aggiungere voci nell’interfaccia Proxmox. Puoi usare uno dei due metodi oppure entrambi."
|
||||
},
|
||||
"opening": {
|
||||
"heading": "Apertura dello strumento",
|
||||
"body": "Dal menu principale di ProxMenux, apri <strong>Storage & Share Manager → Mount NFS Share on Host</strong>. Il sottomenu presenta quattro opzioni:",
|
||||
"imageAlt": "Menu NFS host — Monta / Visualizza / Rimuovi / Testa connettività"
|
||||
},
|
||||
"howRuns": {
|
||||
"heading": "Come funziona lo script",
|
||||
"body": "Il flusso ha due fasi con chiara separazione tra \"scoprire, validare e scegliere\" e \"montare effettivamente e scrivere la configurazione\". Dopo aver selezionato un'esportazione, scegli il metodo di montaggio (s) tramite una lista di controllo; il resto delle finestre di dialogo chiede solo params per i metodi selezionati. Fino alla conferma finale, non si toccano né <code>/etc/pve/storage.cfg</code> né <code>/etc/fstab</code>."
|
||||
},
|
||||
"modes": {
|
||||
"heading": "Selezione del metodo di montaggio (una o entrambe le opzioni)",
|
||||
"intro": "Dopo aver selezionato e convalidato l'esportazione, ProxMenux mostra una lista di controllo con i due metodi di montaggio. Puoi selezionare uno o entrambi. Se si preme OK senza marcare nulla, la finestra di dialogo riappare fino a quando si sceglie almeno una opzione o premere Annulla per uscire dal flusso.",
|
||||
"imageAlt": "Elenco di controllo del metodo di montaggio con opzioni pvesm e fstab",
|
||||
"headerMethod": "Metodo",
|
||||
"headerMount": "Percorso di montaggio",
|
||||
"headerUi": "Visibile in Datacenter > Storage",
|
||||
"headerUseCase": "Caso di uso tipico",
|
||||
"rows": [
|
||||
{
|
||||
"method": "<strong>Come storage Proxmox (pvesm)</strong>",
|
||||
"mountRich": "<code>/mnt/pve/<storage-id></code> (gestito da Proxmox)",
|
||||
"ui": "Sì",
|
||||
"useCase": "VM immagini disco, backup, ISO, modelli LXC — tutto ciò che deve apparire nell'interfaccia utente Proxmox."
|
||||
},
|
||||
{
|
||||
"method": "<strong>Solo fstab dell'host</strong>",
|
||||
"mountRich": "<code>/mnt/<path></code> (si sceglie il percorso)",
|
||||
"ui": "No",
|
||||
"useCaseRich": "Collega la condivisione a uno o più LXC tramite bind mount <em>senza</em> registrarla come storage Proxmox. Mantiene ordinata l’interfaccia Datacenter."
|
||||
},
|
||||
{
|
||||
"method": "<strong>Entrambi</strong>",
|
||||
"mount": "Entrambi i percorsi sopra (due punti di montaggio della stessa esportazione NFS)",
|
||||
"ui": "Sì",
|
||||
"useCase": "Integrazione nell’interfaccia e percorso stabile separato sull’host con permessi aperti per bind mount LXC."
|
||||
}
|
||||
],
|
||||
"bothTitle": "“Entrambi” crea due montaggi NFS indipendenti",
|
||||
"bothBody": "I due metodi vengono eseguiti separatamente: pvesm monta in <code>/mnt/pve/<id></code> e fstab in <code>/mnt/<path></code>. Si ottiene un montaggio gestito da Proxmox con opzioni predefinite e un montaggio host separato per bind mount LXC. Due punti di montaggio non garantiscono due connessioni TCP: il client NFS può riutilizzare le connessioni di trasporto."
|
||||
},
|
||||
"pvesmBranch": {
|
||||
"heading": "Metodo A — Come stoccaggio Proxmox (pvesm)",
|
||||
"intro": "Se è selezionato <em>Come storage Proxmox</em>, ProxMenux esegue la procedura pvesm originale:",
|
||||
"items": [
|
||||
"<strong>Storage ID</strong> — ciò che Proxmox chiamerà questo storage. Predefinito è <code>nfs-<server-ip-with-dashes></code>. Sono accettate solo lettere, cifre, <code>-</code> e <code>_</code>.",
|
||||
"<strong>Content type</strong> — Proxmox lega le categorie di contenuti ai volumi di archiviazione; selezionare ciò che questo NFS è permesso di tenere:"
|
||||
],
|
||||
"headerType": "Tipo di contenuto",
|
||||
"headerAllows": "Cosa permette",
|
||||
"rows": [
|
||||
{
|
||||
"type": "import",
|
||||
"allowsRich": "Importazioni dell'immagine del disco (selezionate per impostazione predefinita). Necessità di <em>Import Disk Image a VM</em>."
|
||||
},
|
||||
{
|
||||
"type": "backup",
|
||||
"allowsRich": "File di backup VM e CT (<code>vzdump</code>)."
|
||||
},
|
||||
{
|
||||
"type": "iso",
|
||||
"allows": "Installazione immagini ISO."
|
||||
},
|
||||
{
|
||||
"type": "vztmpl",
|
||||
"allows": "Modelli LXC."
|
||||
},
|
||||
{
|
||||
"type": "images",
|
||||
"allows": "Immagini disco delle VM in uso: rende NFS uno storage per dischi VM."
|
||||
},
|
||||
{
|
||||
"type": "rootdir",
|
||||
"allows": "File system radice LXC (rari su NFS — leggi la nota sotto)."
|
||||
},
|
||||
{
|
||||
"type": "snippets",
|
||||
"allows": "Script hook e frammenti cloud-init."
|
||||
}
|
||||
],
|
||||
"warnTitle": "images e rootdir su NFS",
|
||||
"warnBody": "Selezionando <code>images</code> puoi archiviare dischi VM su NFS. Le prestazioni dipendono da rete, server e carico; un’interruzione può bloccare l’I/O che dipende dal montaggio. <code>rootdir</code> archivia file system radice LXC su NFS, dove i container non privilegiati possono incontrare limiti di mappatura UID, overlay e proprietà. Valuta questi requisiti prima di collocarvi <code>images</code> / <code>rootdir</code>; NFS è utile anche per <code>backup</code> / <code>iso</code> / <code>vztmpl</code>.",
|
||||
"result": "Il risultato è <code>pvesm add nfs <id> --server <srv> --export <path> --content <csv></code> e Proxmox auto-mount a <code>/mnt/pve/<id></code>."
|
||||
},
|
||||
"fstabBranch": {
|
||||
"heading": "Metodo B — solo montaggio tramite fstab sull’host",
|
||||
"intro": "Se <em>Solo montaggio fstab sull’host</em> è contrassegnato, ProxMenux chiede un percorso di montaggio host e opzioni persistenti, quindi monta e scrive l'ingresso a <code>/etc/fstab</code>:",
|
||||
"items": [
|
||||
"<strong>Percorso di montaggio sull’host</strong> — default <code>/mnt/<export-basename></code>. Dev'essere un percorso assoluto. Se qualcosa è già montato là, o una voce fstab esiste per lo stesso percorso, ProxMenux vi avverte e le offerte per sostituirlo.",
|
||||
"<strong>Opzioni di montaggio</strong> — <em>Lettura/scrittura</em> (predefinito: <code>rw,hard,nofail,_netdev,rsize=131072,wsize=131072,timeo=600,retrans=2</code>), <em>Sola lettura</em>, <em>Personalizzato</em> (inserisci le tue opzioni)."
|
||||
],
|
||||
"appliesIntro": "Dopo la conferma, lo script:",
|
||||
"applies": [
|
||||
"<code>mkdir -p</code> il percorso di montaggio.",
|
||||
"<code>mount -t nfs -o <opts> <srv>:<export> <path></code>.",
|
||||
"Scrive una voce di una linea a <code>/etc/fstab</code>: <code><srv>:<export> <path> nfs <opts> 0 0</code>.",
|
||||
"Esegue <code>systemctl daemon-reload</code> così systemd raccoglie la nuova voce fstab.",
|
||||
"Tenta <code>chmod 1777</code> e <code>setfacl o::rwx</code> sul punto di montaggio, ignorando gli eventuali errori. Riesce solo se il server NFS lo permette; molte esportazioni NAS consentono già la scrittura a tutti gli utenti."
|
||||
],
|
||||
"lxcTitle": "Usare da un LXC il filesystem montato tramite fstab",
|
||||
"lxcBody": "Lo script mostra un comando <code>pct set</code> per un bind mount, ad esempio <code>pct set <ctid> -mp0 /mnt/<path>,mp=/mnt/<ct-path>,shared=1,backup=0</code>. In alternativa, <mountLink>LXC Mount Manager</mountLink> rileva i montaggi fstab. <strong>Non viene modificato nulla nel container</strong>. L’accesso di un CT non privilegiato dipende dai permessi sul server per i suoi UID/GID mappati. Lo script tenta solo modifiche ai permessi dall’host e non garantisce esportazioni scrivibili o impostazioni predefinite dei produttori. Se l’accesso fallisce, consulta Risoluzione dei problemi.",
|
||||
"noUiTitle": "Il montaggio tramite fstab NON è uno storage Proxmox",
|
||||
"noUiBody": "Il montaggio tramite fstab sull’host rimane intenzionalmente invisibile nell’interfaccia web Proxmox. Non compare in <em>Datacenter > Storage</em>, non è selezionabile durante la creazione di VM o CT e non può essere scelto come destinazione dei processi di backup Proxmox. È soltanto un percorso nel filesystem dell’host. Per avere anche l’integrazione nell’interfaccia, seleziona <em>entrambi</em> i metodi."
|
||||
},
|
||||
"manual": {
|
||||
"heading": "Equivalente manuale",
|
||||
"pvesmIntro": "Il metodo A (pvesm) corrisponde a:",
|
||||
"fstabIntro": "Il metodo B (fstab) corrisponde a:"
|
||||
},
|
||||
"view": {
|
||||
"heading": "Visualizzare gli archivi NFS configurati",
|
||||
"body": "Elenca tutte le voci NFS registrate in Proxmox (<code>pvesm status | awk ''$2 == \"nfs\"''</code>) con server, esportazione, tipi di contenuto, percorso e stato attuale del montaggio. <strong>Nota:</strong> questa vista mostra solo gli storage registrati tramite pvesm. I montaggi configurati soltanto in fstab non compaiono; controllali con <code>findmnt -t nfs</code> o <code>grep nfs /etc/fstab</code>."
|
||||
},
|
||||
"remove": {
|
||||
"heading": "Rimuovere lo storage NFS",
|
||||
"body": "Esegue <code>pvesm remove <storage-id></code> dopo una conferma che mostra il server / esportazione / contenuto. Solo la registrazione sul lato Proxmox viene rimossa — <strong> il server NFS remoto non viene mai toccato</strong>, nessun file viene eliminato. Per rimuovere un montaggio solo fstab, modificare <code>/etc/fstab</code> a mano ed eseguire <code>umount <path></code>.",
|
||||
"warnTitle": "Prima esegui il backup delle dipendenze",
|
||||
"warnBody": "Se VM, CT o lavori di backup fanno ancora riferimento a questo storage (da ID), rimuoverlo li lascia puntare in uno storage non più disponibile. Proxmox segnalerà l’errore ma non ripulirà. Spostare o rilasciare i riferimenti prima, quindi rimuovere lo storage."
|
||||
},
|
||||
"test": {
|
||||
"heading": "Test di connettività NFS",
|
||||
"body": "Esegue un passaggio diagnostico su ogni storage NFS registrato in Proxmox: controlla che <code>showmount</code> è disponibile, che <code>rpcbind</code> è in esecuzione, pings ogni server, sonde porta 2049, chiama <code>showmount -e</code>, e infine segnala la propria vista di Proxmox (<code>pvesm status</code>). Buona prima fermata quando uno storage mostra come <em>inactive</em> nell'interfaccia Proxmox."
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Risoluzione dei problemi",
|
||||
"noServersTitle": "\"Nessun server NFS trovato sulla rete\"",
|
||||
"noServersBody": "Auto-scoprimento utilizza <code>nmap -p 2049 --open <subnet>/24</code>. Il server non può rispondere se: è su una diversa VLAN / subnet, il suo firewall blocca nmap sonde (molti fanno) o la porta 2049 è volutamente chiusa su quell'interfaccia. Utilizzare l'opzione <em>Manual</em> con IP o hostname del server.",
|
||||
"portTitle": "«La porta NFS (2049) non è accessibile»",
|
||||
"portBody": "Ping riuscì ma <code>nc -z -w 3 <server> 2049</code> fallì. Controllare il servizio NFS è in esecuzione sul server (<code>systemctl status nfs-server</code> su Linux, Pannello di controllo → File Services on Synology, NFS plugin su OMV / TrueNAS), e che il firewall consente 2049 dall'host Proxmox.",
|
||||
"showmountTitle": "\"Failed to connect\" da showmount",
|
||||
"showmountBody": "Il server ha rifiutato la query della lista delle esportazioni. Cause comuni: il server applica il client rigoroso ACLs (il vostro IP Proxmox non è nell'elenco consentito), <code>rpcbind</code> non è in esecuzione sul server, o il server espone solo NFSv4 con <code>showmount</code> disabilitato. Il percorso di esportazione può ancora essere aggiunto manualmente se lo conosci.",
|
||||
"inactiveTitle": "Lo stoccaggio mostra come inattivo nell'UI Proxmox",
|
||||
"inactiveBody": "Esegui prima <em>Testa connettività NFS</em>: verifica che il server risponda al ping, che la porta 2049 sia aperta e che l’elenco delle esportazioni (<code>showmount -e</code>) sia disponibile. Se la connessione funziona ma lo storage rimane inattivo, controlla <code>journalctl -u pvestatd</code> e la configurazione server/esportazione. Ripristina prima connessione o permessi. <code>pvesm set <id> --disable 0</code> abilita uno storage disabilitato; non è una riparazione generica di NFS.",
|
||||
"lxcNoWriteTitle": "Il montaggio fstab funziona ma il LXC non privilegiato non può scrivere tramite bind mount",
|
||||
"lxcNoWriteBody": "L’accesso NFS dipende da proprietari, ACL e squash sul server. Le opzioni CIFS <code>uid=</code> e <code>file_mode=</code> <strong>non</strong> si applicano a NFS. Con la mappatura LXC predefinita, root nel CT diventa UID 100000 sull’host, non UID remoto 0. Configura l’accesso per l’UID/GID mappato effettivo o l’identità anonima del server. <code>no_root_squash</code> riguarda solo l’UID remoto 0 e non risolve ogni caso di UID 100000. Lo script tenta <code>chmod 1777</code> ma non aggira i permessi del server.",
|
||||
"fstabBootTitle": "fstab mount non arriva dopo il riavvio",
|
||||
"fstabBootBody": "Lo script aggiunge <code>nofail,_netdev</code> quindi una parte mancante all'avvio non blocca l'avvio. Se il montaggio non arriva mai: confermare la rete è raggiungibile (<code>ping <server></code>), controllare <code>journalctl -u remote-fs.target</code>, e verificare che l'ingresso sia valido con <code>mount -fav | grep nfs</code>. <code>mount -a</code> dopo il boot monta tutto ciò che attualmente manca."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/storage-share/host-samba",
|
||||
"label": "Samba / CIFS come storage Proxmox",
|
||||
"tail": "— stesso modello di flusso (Method A pvesm + Metodo B fstab) per le condivisioni SMB/CIFS."
|
||||
},
|
||||
{
|
||||
"href": "/docs/storage-share/lxc-mount-points",
|
||||
"label": "Gestore montaggi LXC",
|
||||
"tailRich": "— eseguire il bind mount del percorso <code>/mnt/<path></code> in uno o più contenitori."
|
||||
},
|
||||
{
|
||||
"href": "/docs/storage-share/lxc-nfs-client",
|
||||
"label": "client NFS in LXC",
|
||||
"tail": "— alternativa: montare NFS direttamente dall'interno di un contenitore privilegiato (senza passare dall’host)."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,172 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Host: monta condivisione Samba sull’host | Documentazione ProxMenux",
|
||||
"description": "Monta una condivisione Samba o CIFS esterna sull’host Proxmox come storage Proxmox tramite pvesm add cifs, come montaggio fstab con opzioni uid/gid/file_mode aperte non visibile in Datacenter > Storage oppure in entrambi i modi. Il metodo fstab consente a un LXC non privilegiato di leggere e scrivere tramite bind mount, senza modifiche all’interno del container.",
|
||||
"ogTitle": "Host: monta condivisione Samba sull’host | Documentazione ProxMenux",
|
||||
"ogDescription": "Monta una condivisione Samba / CIFS esterna sull’host Proxmox tramite pvesm, fstab con permessi aperti per bind mount LXC o entrambi."
|
||||
},
|
||||
"header": {
|
||||
"title": "Host: monta condivisione Samba sull’host",
|
||||
"description": "Monta sull’host Proxmox una condivisione Samba esterna (SMB / CIFS) proveniente da un NAS, un PC Windows o un’esportazione SMB TrueNAS. Puoi registrarla come storage Proxmox visibile in Datacenter > Storage, aggiungere un montaggio tramite /etc/fstab in un percorso a scelta oppure usare entrambi i metodi. Le opzioni uid/gid/file_mode aperte consentono agli LXC non privilegiati di leggere e scrivere tramite bind mount, senza modifiche nel container.",
|
||||
"section": "Archiviazione e condivisione · Host"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Cosa succede?",
|
||||
"body": "ProxMenux offre due metodi per una condivisione Samba: <strong>(1) Storage Proxmox</strong> tramite <code>pvesm add cifs</code>, visibile in Datacenter > Storage e montato su <code>/mnt/pve/<id></code>. La password è salvata in chiaro in <code>/etc/pve/priv/storage/<id>.pw</code>, protetta dalla directory privata accessibile solo a root: è controllo degli accessi, non cifratura. <strong>(2) Mount fstab dell’host</strong> su un percorso scelto, persistente tramite <code>/etc/fstab</code> e montato con <code>uid=0,gid=0,file_mode=0777,dir_mode=0777</code> per consentire la scrittura ai bind mount degli LXC non privilegiati. Le credenziali sono in un file riservato a root sotto <code>/etc/samba/credentials/</code>, mai direttamente in <code>fstab</code>. Puoi usare un metodo o entrambi."
|
||||
},
|
||||
"opening": {
|
||||
"heading": "Apertura dello strumento",
|
||||
"body": "Dal menu principale di ProxMenux, apri <strong>Storage & Share Manager → Mount Samba Share on Host</strong>. Il sottomenu presenta quattro opzioni:",
|
||||
"imageAlt": "Menu Samba host — Monta / Visualizza / Rimuovi / Testa connettività"
|
||||
},
|
||||
"howRuns": {
|
||||
"heading": "Come funziona lo script",
|
||||
"body": "Il flusso ha due fasi. Fase 1: scopri il server, convalida le credenziali, scegli la condivisione, quindi scegli il metodo di montaggio (s) tramite una lista di controllo. Fase 2: vengono eseguiti solo i metodi contrassegnati. Le credenziali sono necessarie fin dall’inizio perché <code>smbclient</code> ha bisogno di loro per elencare le condivisioni. Fino alla conferma finale, né <code>/etc/pve/storage.cfg</code> né <code>/etc/fstab</code> sono toccati."
|
||||
},
|
||||
"modes": {
|
||||
"heading": "Selezione del metodo di montaggio (una o entrambe le opzioni)",
|
||||
"intro": "Dopo aver selezionato la condivisione e convalidare le credenziali, ProxMenux mostra una lista di controllo con i due metodi di montaggio. Puoi selezionare uno o entrambi. Se si preme OK senza marcare nulla, la finestra di dialogo riappare fino a quando si sceglie almeno una opzione o premere Annulla per uscire dal flusso.",
|
||||
"headerMethod": "Metodo",
|
||||
"headerMount": "Percorso di montaggio",
|
||||
"headerUi": "Visibile in Datacenter > Storage",
|
||||
"headerUseCase": "Caso di uso tipico",
|
||||
"rows": [
|
||||
{
|
||||
"method": "<strong>Come storage Proxmox (pvesm)</strong>",
|
||||
"mountRich": "<code>/mnt/pve/<storage-id></code> (gestito da Proxmox)",
|
||||
"ui": "Sì",
|
||||
"useCase": "Backup, ISO, modelli LXC — tutto ciò che deve apparire nell'interfaccia utente Proxmox. Live VM dischi sono tecnicamente supportati ma scoraggiati su CIFS (bloccando semantica)."
|
||||
},
|
||||
{
|
||||
"method": "<strong>Solo fstab dell'host</strong>",
|
||||
"mountRich": "<code>/mnt/<path></code> con uid aperto/gid/file_mode",
|
||||
"ui": "No",
|
||||
"useCaseRich": "Collega la condivisione ai LXC tramite bind mount <em>senza</em> registrare uno storage Proxmox. I permessi locali aperti facilitano l’accesso dei CT non privilegiati, ma il server SMB deve comunque consentire la scrittura all’utente autenticato."
|
||||
},
|
||||
{
|
||||
"method": "<strong>Entrambi</strong>",
|
||||
"mount": "Entrambi i percorsi sopra (due punti di montaggio della stessa esportazione CIFS)",
|
||||
"ui": "Sì",
|
||||
"useCase": "Vuoi sia l’integrazione nell’interfaccia sia un percorso stabile sull’host con permessi aperti per i bind mount LXC. Il montaggio tramite pvesm usa i valori predefiniti di Proxmox; quello tramite fstab applica separatamente le opzioni uid/gid/file_mode aperte."
|
||||
}
|
||||
],
|
||||
"bothTitle": "«Entrambi» crea due punti di montaggio CIFS",
|
||||
"bothBody": "pvesm monta in <code>/mnt/pve/<id></code> con le opzioni Proxmox predefinite. fstab monta in <code>/mnt/<path></code> con <code>uid=0,gid=0,file_mode=0777,dir_mode=0777</code> per l’accesso locale tramite bind mount LXC. Il server SMB applica comunque i permessi dell’utente del montaggio. Due punti di montaggio non garantiscono due connessioni TCP separate."
|
||||
},
|
||||
"pvesmBranch": {
|
||||
"heading": "Metodo A — Come stoccaggio Proxmox (pvesm)",
|
||||
"intro": "Se è selezionato <em>Come storage Proxmox</em>, ProxMenux esegue la procedura pvesm originale:",
|
||||
"items": [
|
||||
"<strong>Storage ID</strong> — default <code>cifs-<server-ip-with-dashes></code>. Solo lettere, cifre, <code>-</code> e <code>_</code>.",
|
||||
"<strong>Tipi di contenuto</strong> — questa lista ProxMenux offre <strong>6</strong> opzioni. Omette <code>rootdir</code> rispetto a NFS: è una scelta dello script, non significa che ogni versione del backend CIFS Proxmox vieti i file system radice LXC:"
|
||||
],
|
||||
"headerType": "Tipo di contenuto",
|
||||
"headerAllows": "Cosa permette",
|
||||
"rows": [
|
||||
{
|
||||
"type": "import",
|
||||
"allows": "Importazioni dell'immagine del disco (selezionate per impostazione predefinita)."
|
||||
},
|
||||
{
|
||||
"type": "backup",
|
||||
"allowsRich": "File di backup VM e CT (<code>vzdump</code>)."
|
||||
},
|
||||
{
|
||||
"type": "iso",
|
||||
"allows": "Installazione immagini ISO."
|
||||
},
|
||||
{
|
||||
"type": "vztmpl",
|
||||
"allows": "Modelli LXC."
|
||||
},
|
||||
{
|
||||
"type": "images",
|
||||
"allowsRich": "Immagini disco delle VM in uso — <strong>avviso nel dialogo</strong>, vedi sotto."
|
||||
},
|
||||
{
|
||||
"type": "snippets",
|
||||
"allows": "Script hook e frammenti cloud-init."
|
||||
}
|
||||
],
|
||||
"warnTitle": "Live dischi VM su CIFS",
|
||||
"warnBody": "Selezionare <code>images</code> attiva un avviso ProxMenux: CIFS/SMB può causare problemi di blocco nelle operazioni sui dischi VM. Lo script consiglia NFS ma consente di continuare. Backup e ISO sono usi comuni di CIFS. Valuta blocchi, snapshot, migrazione e carico prima di usare CIFS per <code>images</code>.",
|
||||
"credsTitle": "Dove pvesm memorizza le credenziali",
|
||||
"credsBody": "La password non è scritta in <code>/etc/pve/storage.cfg</code>. Proxmox salva credenziali in chiaro in <code>/etc/pve/priv/storage/<storage-id>.pw</code>, nell’area privata del file system del cluster, leggibile solo da <code>root</code> (modalità <code>0600</code>); sono protette dai permessi di accesso, non dalla cifratura. Dopo un cambio password sul server usa <code>pvesm set <id> --password <new></code> oppure rimuovi e aggiungi lo storage tramite ProxMenux."
|
||||
},
|
||||
"fstabBranch": {
|
||||
"heading": "Metodo B — solo montaggio tramite fstab sull’host",
|
||||
"intro": "Se è selezionato <em>Solo montaggio fstab sull’host</em>, ProxMenux chiede percorso e opzioni persistenti, crea un file di credenziali riservato a root in modalità utente, quindi monta la condivisione e scrive la voce in <code>/etc/fstab</code>:",
|
||||
"items": [
|
||||
"<strong>Percorso di montaggio sull’host</strong> — default <code>/mnt/<share-name></code>. Dev'essere un percorso assoluto. Se qualcosa è già montato là, o una voce fstab esiste, ProxMenux offre per sostituirla.",
|
||||
"<strong>Opzioni di montaggio</strong> — <em>Lettura/scrittura</em> (predefinito: <code>rw,uid=0,gid=0,file_mode=0777,dir_mode=0777,iocharset=utf8,nofail,_netdev</code>), <em>Sola lettura</em> (<code>file_mode=0555,dir_mode=0555</code>), <em>Personalizzato</em> (inserisci le tue opzioni). Lo script consiglia uid/gid/file_mode aperti per scrivere tramite bind mount LXC."
|
||||
],
|
||||
"credsTitle": "File Credenziali (Modalità utente)",
|
||||
"credsBody": "In modalità utente, ProxMenux crea un file di credenziali riservato a root in <code>/etc/samba/credentials/<server>_<share>.cred</code> (modalità <code>0600</code>) con righe <code>username=</code> e <code>password=</code>. La voce fstab lo richiama tramite <code>credentials=</code>: la password in chiaro non compare in <code>/etc/fstab</code>. In modalità ospite viene aggiunto <code>guest</code> e non viene creato alcun file di credenziali.",
|
||||
"appliesIntro": "Dopo la conferma, lo script:",
|
||||
"applies": [
|
||||
"<code>mkdir -p</code> il percorso di montaggio.",
|
||||
"<code>mount -t cifs -o <opts>,credentials=<file></code> (o <code>guest</code>) <code>//<srv>/<share> <path></code>.",
|
||||
"Scrive una voce di una linea a <code>/etc/fstab</code>: <code>//<srv>/<share> <path> cifs <opts> 0 0</code>.",
|
||||
"Esegue <code>systemctl daemon-reload</code> così systemd raccoglie la nuova voce fstab."
|
||||
],
|
||||
"lxcTitle": "Usare da un LXC non privilegiato il filesystem montato tramite fstab",
|
||||
"lxcBody": "Le opzioni CIFS <code>uid=0,gid=0,file_mode=0777,dir_mode=0777</code> aprono i controlli locali dei permessi per bind mount LXC. ACL del server e semantica Unix/POSIX negoziata possono ancora influire sull’accesso. <strong>Non viene modificato nulla nel container</strong>: nessun <code>chown</code> nel CT, gruppi o modifiche a <code>/etc/lxc</code>. La riga <code>mp</code> è gestita nella configurazione Proxmox del CT. Usa il comando <code>pct set</code> mostrato o <mountLink>LXC Mount Manager</mountLink>.",
|
||||
"noUiTitle": "Il montaggio tramite fstab NON è uno storage Proxmox",
|
||||
"noUiBody": "Il montaggio tramite fstab sull’host rimane intenzionalmente invisibile nell’interfaccia web Proxmox. Non compare in <em>Datacenter > Storage</em>, non è selezionabile durante la creazione di VM o CT e non può essere scelto come destinazione dei processi di backup Proxmox. È soltanto un percorso nel filesystem dell’host. Per avere anche l’integrazione nell’interfaccia, seleziona <em>entrambi</em> i metodi."
|
||||
},
|
||||
"manual": {
|
||||
"heading": "Equivalente manuale",
|
||||
"pvesmIntro": "Il metodo A (pvesm) corrisponde a:",
|
||||
"fstabUserIntro": "Metodo B (fstab, user auth) — file credenziali + montaggio:",
|
||||
"fstabGuestIntro": "Metodo B (fstab, guest auth) — nessun file di credenziali:"
|
||||
},
|
||||
"view": {
|
||||
"heading": "Visualizza storage CIFS e montaggi host",
|
||||
"body": "Mostra gli storage CIFS registrati (<code>pvesm status | awk ''$2 == \"cifs\"''</code>) con server, condivisione, contenuto, utente o <em>Ospite</em>, percorso e stato. Le password <strong>non vengono mai mostrate</strong>. <strong>Nota:</strong> una seconda sezione elenca montaggi fstab host, opzioni, percorso del file di credenziali e stato attivo/inattivo. Verifica manualmente con <code>findmnt -t cifs</code> o <code>grep cifs /etc/fstab</code>."
|
||||
},
|
||||
"remove": {
|
||||
"heading": "Rimuovi storage CIFS o montaggio host",
|
||||
"body": "Il selettore offre storage pvesm e montaggi fstab host. Per pvesm esegue <code>pvesm remove <storage-id></code> e Proxmox rimuove le credenziali associate. Per fstab tenta <code>umount <path></code>, rimuove la voce da <code>/etc/fstab</code> e le credenziali in <code>/etc/samba/credentials/</code>, poi la directory vuota se possibile. Se lo smontaggio fallisce, serve uno smontaggio manuale o un riavvio. <strong>Il server Samba remoto e i suoi file non vengono modificati</strong>.",
|
||||
"warnTitle": "Prima esegui il backup delle dipendenze",
|
||||
"warnBody": "VM, CT o processi di backup che fanno riferimento a questo ID di storage non funzioneranno dopo la rimozione. Sposta o elimina quei riferimenti prima di rimuovere lo storage."
|
||||
},
|
||||
"test": {
|
||||
"heading": "Prova la connettività Samba",
|
||||
"body": "Diagnostica ogni storage CIFS registrato in Proxmox: verifica la presenza di <code>smbclient</code>, prova ping e porte 445/139, tenta un elenco come ospite e mostra lo stato secondo Proxmox (<code>pvesm status</code>). «Autenticazione richiesta» nel test ospite significa che il server espone le condivisioni solo agli utenti autenticati, come nella maggior parte dei NAS."
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Risoluzione dei problemi",
|
||||
"noServersTitle": "\"Nessun server Samba trovato sulla rete\"",
|
||||
"noServersBody": "Auto-scoprimento utilizza <code>nmap -p 139,445</code>. Il server può essere su una subnet diversa, firewalled, o solo raggiungibile tramite hostname (mDNS / WINS). Utilizzare l'opzione <em>Manual</em> con il nome IP o host.",
|
||||
"noSharesTitle": "«Nessuna condivisione accessibile trovata»",
|
||||
"noSharesBody": "<code>smbclient -L</code> non ha restituito nulla per queste credenziali. Cause: l'utente non ha il permesso di elencare le condivisioni (prova con le credenziali di amministratore una volta, o inserire manualmente il nome della condivisione), il server ha la visibilità condivisa disabilitata, o le credenziali sono errate. Lo script consente di digitare il nome di condivisione a mano in questo caso.",
|
||||
"denyTitle": "Il montaggio Proxmox fallisce con NT_STATUS_ACCESS_DENIED",
|
||||
"denyBody": "Le credenziali memorizzate pvesm non sono sincronizzate con il server Samba (password modificata, disabilitato account, dominio / workgroup mismatch). Reinserire le credenziali con <code>pvesm set <id> --username <u> --password <p></code> o rimuovere e riadd da ProxMenux. Se il server è in un dominio AD, aggiungere <code>--domain <DOMAIN></code> alla chiamata <code>pvesm set</code>.",
|
||||
"sleepTitle": "\"host is down\" o lo stato di archiviazione va inattivo di notte",
|
||||
"sleepBody": "Alcuni elettrodomestici NAS messi SMB dormire aggressivamente. <code>pvestatd</code> poi vede l'archiviazione inattiva fino a quando il primo accesso non sveglia il NAS. Se questo è cosmetico, niente è rotto. Se provoca guasti di backup, disabilitare SMB disconnettere il NAS o programmare i backup fuori dalla finestra di sonno.",
|
||||
"lxcNoWriteTitle": "Il LXC non privilegiato non può scrivere nel percorso fstab tramite bind mount",
|
||||
"lxcNoWriteBody": "Controlla le opzioni previste con <code>findmnt /mnt/<path></code>, ad esempio <code>uid=0,gid=0,file_mode=0777,dir_mode=0777</code>. Permessi locali insufficienti possono bloccare gli UID LXC mappati. Riapplica il profilo RW o adatta le opzioni personalizzate. Verifica anche i diritti dell’utente SMB sul server e se le estensioni Unix/POSIX forniscono modalità server: i permessi locali aperti non aggirano le ACL del server.",
|
||||
"fstabBootTitle": "fstab mount non arriva dopo il riavvio",
|
||||
"fstabBootBody": "Lo script aggiunge <code>nofail,_netdev</code> quindi una parte mancante all'avvio non blocca l'avvio. Se il montaggio non arriva mai: confermare la rete è raggiungibile (<code>ping <server></code>), controllare <code>journalctl -u remote-fs.target</code>, verificare che il file delle credenziali esista ancora (<code>ls -l /etc/samba/credentials/</code>) ed è leggibile, e provare <code>mount -a</code> manualmente."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/storage-share/host-nfs",
|
||||
"label": "Condivisione NFS come storage Proxmox",
|
||||
"tail": " — pagina correlata con lo stesso schema (metodo A pvesm + metodo B fstab) e confronto dei compromessi."
|
||||
},
|
||||
{
|
||||
"href": "/docs/storage-share/lxc-mount-points",
|
||||
"label": "Gestore montaggi LXC",
|
||||
"tailRich": "— eseguire il bind mount del percorso <code>/mnt/<path></code> in uno o più contenitori."
|
||||
},
|
||||
{
|
||||
"href": "/docs/storage-share/lxc-samba-client",
|
||||
"label": "client Samba in LXC",
|
||||
"tail": "— alternativa: montare Samba direttamente dall'interno di un contenitore privilegiato (senza passare dall’host)."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,135 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Proxmox NFS, Samba, iSCSI e punti di montaggio LXC — Storage e condivisioni | ProxMenux",
|
||||
"description": "Integra lo storage esterno e locale in Proxmox VE e condividi cartelle fra l’host e i container LXC. Aggiungi condivisioni NFS, Samba (CIFS) e target iSCSI come storage Proxmox, configura i bind mount LXC con Mount Manager ed esegui client e server NFS o Samba all’interno dei container.",
|
||||
"ogTitle": "Proxmox NFS, Samba, iSCSI e punti di montaggio LXC — Storage e condivisioni",
|
||||
"ogDescription": "Integra storage esterno o locale in Proxmox VE: registrazione di NFS, Samba e iSCSI, bind mount LXC e condivisione in rete.",
|
||||
"twitterTitle": "Proxmox NFS, Samba, iSCSI | ProxMenux",
|
||||
"twitterDescription": "Aggiungere NFS / Samba / iSCSI come Proxmox storage e condividere cartelle tra host e LXC."
|
||||
},
|
||||
"header": {
|
||||
"title": "Gestore storage e condivisioni",
|
||||
"description": "Integra lo storage esterno o locale in Proxmox VE e condividi cartelle tra l’host e i container LXC. Tre gruppi di strumenti: integrazione dello storage sull’host (registrazione in Proxmox), LXC Mount Manager (bind mount con gestione pratica dei permessi) e condivisione di rete LXC (procedure client e server NFS o Samba per casi specifici).",
|
||||
"section": "Storage e condivisioni"
|
||||
},
|
||||
"intro": {
|
||||
"title": "A cosa serve questo menu",
|
||||
"body": "Disk Manager opera al livello dei <em>singoli dischi fisici</em>. Storage & Share Manager opera un livello sopra: <strong>registra pool di storage e condivisioni di rete in Proxmox</strong> (per renderli disponibili all’interfaccia e allo strumento di creazione delle VM) e <strong>configura la condivisione di file tra l’host e i container</strong>."
|
||||
},
|
||||
"opening": {
|
||||
"heading": "Apertura del menu",
|
||||
"body": "Dal menu principale di ProxMenux, selezionare <strong>Storage & Share Manager</strong>. Vedrai questo:",
|
||||
"imageAlt": "Menu Storage & Share Manager con blocchi HOST e LXC"
|
||||
},
|
||||
"groups": {
|
||||
"heading": "Tre gruppi di strumenti",
|
||||
"intro": "Il menu è diviso in tre gruppi. <strong>Integrazione dello storage sull’host</strong> registra lo storage esterno o locale in Proxmox. <strong>LXC Mount Manager</strong> è lo strumento principale per condividere cartelle con i container: una procedura di bind mount che gestisce sul lato host la mappatura degli UID dei CT non privilegiati. <strong>Condivisione di rete LXC</strong> copre quattro scenari aggiuntivi in cui un container deve <em>utilizzare</em> o <em>esporre</em> direttamente condivisioni NFS o Samba.",
|
||||
"hostTitle": "storage host",
|
||||
"hostBody": "Registra lo storage esterno e locale in Proxmox tramite <code>pvesm add …</code>. Una volta registrato, l'archiviazione appare nella UI Proxmox ed è disponibile per i creatori VM e CT.",
|
||||
"hostItems": [
|
||||
"NFS esterno / Samba / iSCSI → storage Proxmox",
|
||||
"Disco locale → Proxmox directory o archiviazione ZFS",
|
||||
"Directory locale condivisa per bind mount fra più CT"
|
||||
],
|
||||
"lxcMountTitle": "Gestore montaggi LXC",
|
||||
"lxcMountBody": "Lo strumento principale di condivisione LXC. Rende accessibili le directory dell’host nei container tramite bind mount con <code>pct set -mpN</code> e gestisce i permessi particolari dei CT non privilegiati senza creare gruppi o utenti nel container.",
|
||||
"lxcMountItems": [
|
||||
"Funziona con CT privilegiati e non privilegiati",
|
||||
"Propone <code>o+rwx</code> sulla directory host per gli UID non privilegiati",
|
||||
"Corregge, se necessario, i montaggi CIFS e NFS esistenti"
|
||||
],
|
||||
"lxcNetTitle": "condivisione di rete LXC",
|
||||
"lxcNetBody": "Quattro procedure aggiuntive per i container che devono utilizzare o esporre direttamente condivisioni NFS o Samba. Tutte richiedono un container <strong>privilegiato</strong>.",
|
||||
"lxcNetItems": [
|
||||
"<strong>Client</strong> NFS / Samba (utilizza condivisioni esterne)",
|
||||
"NFS / Samba <strong>server</strong> (esporre cartelle CT)"
|
||||
]
|
||||
},
|
||||
"host": {
|
||||
"heading": "Integrazione di storage host",
|
||||
"intro": "Registra lo storage in Proxmox. Ogni opzione chiama <code>pvesm add …</code> sotto il cofano, quindi lo storage si presenta in <strong>Datacenter → Storage</strong> e diventa disponibile per i creatori VM / CT.",
|
||||
"options": [
|
||||
{
|
||||
"href": "/docs/storage-share/host-nfs",
|
||||
"icon": "Network",
|
||||
"title": "Aggiungi una condivisione NFS come storage Proxmox",
|
||||
"description": "Registra un’esportazione NFS esterna come storage Proxmox tramite pvesm add nfs. Proxmox gestisce il montaggio, senza voci aggiuntive in fstab."
|
||||
},
|
||||
{
|
||||
"href": "/docs/storage-share/host-samba",
|
||||
"icon": "Share2",
|
||||
"title": "Aggiungi una condivisione Samba come storage Proxmox",
|
||||
"description": "Registra una condivisione Samba o CIFS esterna come storage Proxmox tramite pvesm add cifs. Proxmox gestisce il montaggio e le credenziali."
|
||||
},
|
||||
{
|
||||
"href": "/docs/storage-share/host-iscsi",
|
||||
"icon": "Database",
|
||||
"title": "Aggiungere l'obiettivo iSCSI come storage Proxmox",
|
||||
"description": "Collegati a un obiettivo iSCSI esterno e registralo come storage Proxmox (dispositivo a blocchi) per le immagini disco VM."
|
||||
},
|
||||
{
|
||||
"href": "/docs/storage-share/host-local-disk",
|
||||
"icon": "HardDrive",
|
||||
"title": "Aggiungere disco locale come archiviazione Proxmox",
|
||||
"description": "Formatta un disco locale SATA / SAS / NVMe e registralo come storage Proxmox di tipo directory o pool ZFS."
|
||||
},
|
||||
{
|
||||
"href": "/docs/storage-share/host-local-shared",
|
||||
"icon": "FolderOpen",
|
||||
"title": "Aggiungi directory condivisa su Host",
|
||||
"description": "Crea una directory sull’host da rendere accessibile in più CT tramite bind mount. È una risorsa dell’host per i container LXC e non viene registrata come storage Proxmox."
|
||||
}
|
||||
]
|
||||
},
|
||||
"lxcMount": {
|
||||
"heading": "Gestore montaggi LXC",
|
||||
"intro": "Lo strumento principale per condividere cartelle tra l’host Proxmox e i container LXC. Usa <code>pct set -mpN</code> per rendere accessibile una directory dell’host nel container tramite bind mount e gestisce sul lato host i permessi dei CT non privilegiati (non vengono creati gruppi o utenti nel container).",
|
||||
"card": {
|
||||
"title": "Punti di montaggio LXC (Host ↔ CT)",
|
||||
"description": "Rendi accessibile una directory dell’host in un container LXC tramite bind mount con pct set -mpN. Funziona con CT privilegiati e non privilegiati; propone chmod o+rwx e ACL per la directory sull’host e corregge, se necessario, i montaggi CIFS o NFS esistenti."
|
||||
}
|
||||
},
|
||||
"lxcNet": {
|
||||
"heading": "condivisione di rete LXC",
|
||||
"intro": "Usa queste procedure quando il container deve <em>essere</em> un endpoint NFS o Samba: può usare una condivisione esterna come client oppure esporre le proprie cartelle come server. Per le comuni esigenze di condivisione tramite bind mount fra host e CT, <mountLink>LXC Mount Manager</mountLink> è più semplice e non richiede container privilegiati.",
|
||||
"options": [
|
||||
{
|
||||
"href": "/docs/storage-share/lxc-nfs-client",
|
||||
"icon": "Download",
|
||||
"title": "client NFS in LXC",
|
||||
"description": "Monta condivisioni NFS esterne dall’interno di un container LXC privilegiato. Supporta rilevamento automatico, persistenza in /etc/fstab e smontaggio pulito."
|
||||
},
|
||||
{
|
||||
"href": "/docs/storage-share/lxc-samba-client",
|
||||
"icon": "Download",
|
||||
"title": "client Samba in LXC",
|
||||
"description": "Monta condivisioni Samba / CIFS dall’interno di un container LXC privilegiato. Credenziali archiviate con protezione e rilevamento automatico disponibile."
|
||||
},
|
||||
{
|
||||
"href": "/docs/storage-share/lxc-nfs-server",
|
||||
"icon": "Upload",
|
||||
"title": "Server NFS in LXC",
|
||||
"description": "Esporta cartelle su NFS dall'interno di un contenitore privilegiato LXC."
|
||||
},
|
||||
{
|
||||
"href": "/docs/storage-share/lxc-samba-server",
|
||||
"icon": "Upload",
|
||||
"title": "Server Samba in LXC",
|
||||
"description": "Esporre cartelle su SMB / CIFS dall'interno di un contenitore privilegiato LXC."
|
||||
}
|
||||
]
|
||||
},
|
||||
"privReq": {
|
||||
"title": "Requisito di container privilegiato",
|
||||
"body": "Le quattro procedure di <strong>condivisione di rete LXC</strong> sopra richiedono un container <strong>privilegiato</strong>. Gli script impongono questa modalità supportata prima di configurare servizi e strumenti di montaggio (<code>nfs-kernel-server</code>, <code>smbd</code>, <code>mount.nfs</code>, <code>mount.cifs</code>). Per condividere file tra l’host e un CT non privilegiato, usa <mountLink>LXC Mount Manager</mountLink>: esegue i bind mount e regola i permessi sull’host, consentendo al container di leggere e scrivere senza configurare tali servizi o strumenti al suo interno."
|
||||
},
|
||||
"unprivExplain": {
|
||||
"title": "Come ProxMenux gestisce i permessi dei CT non privilegiati",
|
||||
"body": "I container LXC non privilegiati spostano gli UID di <strong>+100000</strong> sull’host (UID 0 nel container = UID 100000 sull’host, UID 1000 nel container = UID 101000 sull’host, …). Un file creato da un utente del container appare quindi sull’host come <em>altri</em>, senza corrispondere a un normale utente o gruppo dell’host. LXC Mount Manager adotta una soluzione pratica: invece di allineare UID/GID fra host e CT, propone <code>chmod o+rwx</code> e le ACL corrispondenti sulla directory dell’host, così ogni UID mappato può leggere e scrivere. Per CIFS rimonta con <code>uid=0,gid=0,file_mode=0777,dir_mode=0777</code>; per NFS imposta una directory scrivibile da tutti con sticky bit e, se il server applica root squash, indica la correzione da eseguire sul server."
|
||||
},
|
||||
"scripts": {
|
||||
"heading": "Scripts coinvolti",
|
||||
"intro": "Ogni singola pagina collega allo script che guida il suo flusso. Il file sottostante è un helper condiviso che non è documentato come propria pagina, ma viene utilizzato da diversi flussi di condivisione della rete LXC:",
|
||||
"itemTail": "— validazione CT, selezione del punto di montaggio, controllo privilegiato e helper di configurazione del gruppo universale condivisi attraverso i flussi client / server LXC."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,174 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Punti di montaggio LXC (host ↔ container) | Documentazione ProxMenux",
|
||||
"description": "LXC Mount Manager rende accessibile una directory dell’host in uno o più container LXC tramite bind mount con pct set -mpN. Gestisce le particolarità dei permessi nei container non privilegiati, corregge i montaggi CIFS e NFS sul lato host e non modifica nulla all’interno del container.",
|
||||
"ogTitle": "Punti di montaggio LXC (host ↔ container) | Documentazione ProxMenux",
|
||||
"ogDescription": "Monta directory dell’host nei container LXC tramite bind mount. Gestisce la mappatura UID non privilegiata in modo pratico e corregge l’accesso CIFS / NFS sull’host."
|
||||
},
|
||||
"header": {
|
||||
"title": "LXC Punti di montaggio (Host ↔ Contenitore)",
|
||||
"description": "Lo strumento principale per condividere cartelle fra l’host Proxmox e i container LXC. Rende accessibile una directory dell’host in uno o più container tramite bind mount con la sintassi nativa pct set -mpN. Gestisce i permessi dei container non privilegiati sul lato host, senza modificare nulla all’interno del container.",
|
||||
"section": "Archiviazione e condivisione · LXC"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Cosa succede?",
|
||||
"body": "Prendere una directory che vive sull'host Proxmox (una cartella locale, una condivisione NAS montata, un deposito gestito da Proxmox...) e farlo apparire all'interno di un contenitore LXC in un percorso scelto, con autorizzazioni che funzionano anche per contenitori non privilegiati - senza toccare nulla all'interno del contenitore."
|
||||
},
|
||||
"bigPicture": {
|
||||
"heading": "Come funziona (il quadro grande)",
|
||||
"intro": "Con un bind mount, Proxmox chiede al kernel di rendere la directory <code>X</code> dell’host accessibile anche nel percorso <code>Y</code> del container. Non ci sono copie, sincronizzazioni o trasferimenti di rete: entrambi vedono contemporaneamente gli <em>stessi file</em>.",
|
||||
"sourceLabel": "Host Proxmox",
|
||||
"sourceDetail": "/mnt/data\n(la tua cartella)",
|
||||
"targetLabel": "Contenitore LXC",
|
||||
"targetDetail": "/mnt/data\n(vedi qui)",
|
||||
"arrowLabel": "bind mount",
|
||||
"outro": "Il percorso host sulla sinistra e il percorso contenitore sulla destra possono essere diversi — ad esempio, <code>/mnt/nas-films</code> sull'host può diventare <code>/media/films</code> all'interno del contenitore. Lo script aggiunge l'ingresso al contenitore config (<code>/etc/pve/lxc/<ctid>.conf</code>) utilizzando il prossimo indice <code>mpN</code> libero, con due impostazioni di sicurezza integrate:",
|
||||
"items": [
|
||||
"<code>shared=1</code> — indica a Proxmox che i dati sono condivisi e non vanno migrati con il CT. Il flag non replica i dati: lo stesso percorso e gli stessi dati devono essere già disponibili sul nodo di destinazione.",
|
||||
"<code>backup=0</code> — il bind mount resta escluso dai backup <code>vzdump</code>. I dati risiedono sull’host e vanno salvati separatamente."
|
||||
]
|
||||
},
|
||||
"perms": {
|
||||
"heading": "Gestione delle autorizzazioni — la parte smart",
|
||||
"intro": "Il principio dei bind mount è semplice; la parte delicata sono i permessi. Un container LXC <strong>non privilegiato</strong> applica uno spostamento di <strong>+100000</strong> agli UID. Un file creato dall’utente 1000 nel container appare quindi sull’host con UID 101000, che non appartiene a nessun utente dell’host. Per evitare di dover allineare gli UID, ProxMenux adatta i permessi sul lato <em>host</em> in base al tipo di directory scelto:",
|
||||
"headerType": "Tipo di directory host",
|
||||
"headerAction": "Cosa offre lo script da fare",
|
||||
"localType": "Cartella locale",
|
||||
"localTypeSub": "ad esempio. /mnt/data",
|
||||
"localActionRich": "<code>chmod o+rwx</code> + <code>setfacl o::rwx</code> nella directory host. Solo se il CT non è privilegiato e le autorizzazioni attuali sono insufficienti.",
|
||||
"cifsType": "montato CIFS / SMB",
|
||||
"cifsTypeSub": "ad esempio. /mnt/pve/cifs-…",
|
||||
"cifsActionRich": "Rimontare con <code>uid=0, gid=0, file_mode=0777, dir_mode=0777</code> in modo che il CT (qualsiasi UID) possa leggere e scrivere la condivisione. <code>/etc/fstab</code> è aggiornato.",
|
||||
"nfsType": "NFS montato",
|
||||
"nfsTypeSub": "ad esempio. /mnt/pve/nfs-…",
|
||||
"nfsActionRich": "<code>chmod 1777</code> e <code>setfacl o::rwx</code> sul montaggio NFS. Non possono aggirare lo squashing applicato dal server: se nemmeno root sull’host riesce a scrivere, la procedura ti invita a correggere l’esportazione sul server NFS.",
|
||||
"privTitle": "I container privilegiati non richiedono questi adattamenti",
|
||||
"privBody": "Per contenitori privilegiati, UID 0 nel CT è UID 0 sull'host — root all'interno del CT può leggere e scrivere la directory host direttamente senza alcun trucco di autorizzazione. Lo script rileva e salta completamente il passo \"aprire le autorizzazioni\".",
|
||||
"noCtTitle": "Lo script non modifica mai nulla all'interno del contenitore",
|
||||
"noCtBody": "Tutte le modifiche di autorizzazione avvengono sul filesystem <strong>host</strong>. Nessun chowns <code>pct exec</code>, nessun gruppo creato nel CT, nessun fstab all'interno del contenitore. Se riutilizzate la directory in un altro CT in seguito, le stesse autorizzazioni si applicano automaticamente, nessuna configurazione per-container."
|
||||
},
|
||||
"writes": {
|
||||
"heading": "Che cosa scrive ProxMenux — e che cosa non fa",
|
||||
"intro": "Un equivoco comune sui bind mount nei CT non privilegiati è pensare che ProxMenux debba aggiungere voci <code>lxc.idmap</code> in <code>/etc/pve/lxc/<CTID>.conf</code>. <strong>Non lo fa.</strong> A quel file viene aggiunta una sola riga, quella del bind mount:",
|
||||
"outro": "La linea di uscita che vedi alla fine della corsa, <em>\"Container non privilegiato — UID offset: 100000\"</em>, è puramente informativo — ti dice solo che il CT sta usando la mappatura non privilegiata predefinita di Proxmox (root in CT = UID 100000 sull'host). Lo script non configura nulla intorno a esso.",
|
||||
"twoWaysHeading": "I due modi per far funzionare le autorizzazioni — e perché ProxMenux sceglie uno",
|
||||
"headerApproach": "Approccio",
|
||||
"headerChanges": "Cosa cambia",
|
||||
"headerWhen": "Quando si adatta",
|
||||
"hostType": "Permessi sull’host",
|
||||
"hostTypeSub": "(che cosa fa questo script)",
|
||||
"hostChangesRich": "<code>chmod o+rwx</code> + <code>setfacl o::rwx</code> nella directory host. Gli UID mappati di CT (100000+) cadono nel secchio \"altri\", quindi l'apertura di <em>altri</em> è sufficiente.",
|
||||
"hostWhen": "Accesso generico a cartella condivisa da qualsiasi CT. Multiple CTs che condividono la stessa directory host. Semplice e riutilizzabile.",
|
||||
"idmapTypeRich": "<code>lxc.idmap</code>",
|
||||
"idmapTypeSub": "(non usato da questo script)",
|
||||
"idmapChangesRich": "Mapping UID/GID personalizzato in <code>/etc/pve/lxc/<CTID>.conf</code> più abbinato <code>/etc/subuid</code> + <code>/etc/subgid</code> voci sull'host. CT deve essere riavviata su ogni cambiamento.",
|
||||
"idmapWhenRich": "Hai bisogno di un UID <em>specifico</em> all'interno del CT per mappare un UID <em>specifico</em> sull'host (ad es. <code>media:1000</code> nel CT deve possedere i file come <code>media:1000</code> sull'host in modo che NFS non squash). Una configurazione più rigida, normalmente ne vale solo la pena per quello scenario esatto.",
|
||||
"idmapTipTitle": "Quando hai veramente bisogno lxc.idmap",
|
||||
"idmapTipBody": "Usa la mappatura manuale quando i file scritti nel CT devono avere uno specifico UID/GID numerico sull’host, ad esempio per condividere il proprietario con un utente host. Non aggira <code>all_squash</code> di NFS: il server decide comunque identità anonima e permessi. Aggiungi manualmente voci <code>lxc.idmap</code> se necessario. La riga del bind mount è indipendente da queste voci."
|
||||
},
|
||||
"opening": {
|
||||
"heading": "Apertura dello strumento",
|
||||
"body": "Dal menu principale di ProxMenux, aprire <strong>Storage & Share Manager → Configurare LXC Mount Points (Host ↔ Container)</strong>. Vedrete questo sub-menu con tre opzioni:",
|
||||
"imageAlt": "LXC Mount Manager menu — Aggiungi / Vedi / Rimuovi"
|
||||
},
|
||||
"addFlow": {
|
||||
"heading": "Aggiungere un montaggio — procedura completa",
|
||||
"intro": "La vista tecnica, per quando si desidera sapere esattamente ciò che ogni dialogo fa:"
|
||||
},
|
||||
"sources": {
|
||||
"heading": "Cosa puoi scegliere come directory host",
|
||||
"intro": "Il raccoglitore host-directory è il più accurato nella sezione Storage & Share. Scansiona quattro fonti e presenta una lista deduplicata:",
|
||||
"headerSource": "Fonte",
|
||||
"headerWhere": "Da dove viene",
|
||||
"headerLabel": "Etichetta nel menu",
|
||||
"rows": [
|
||||
{
|
||||
"source": "Montaggi di rete attivi",
|
||||
"whereRich": "Condivisioni CIFS / NFS attualmente montate, lette da <code>/proc/mounts</code>.",
|
||||
"labelRich": "<code>NFS [used/size]</code> o <code>CIFS/SMB [used/size]</code>"
|
||||
},
|
||||
{
|
||||
"source": "Montaggi fstab inattivi",
|
||||
"whereRich": "Definito in <code>/etc/fstab</code> ma non attualmente montato.",
|
||||
"labelRich": "<code>fstab(off)-NFS</code> / <code>fstab(off)-CIFS/SMB</code>"
|
||||
},
|
||||
{
|
||||
"source": "Directory locali",
|
||||
"whereRich": "Sottodirectory di <code>/mnt</code> che non corrispondono a montaggi di rete.",
|
||||
"labelRich": "<code>Local [size]</code>"
|
||||
},
|
||||
{
|
||||
"source": "Stoccaggio Proxmox",
|
||||
"whereRich": "Percorsi di stoccaggio sotto <code>/mnt/pve/*</code> (NFS / CIFS registrati tramite <code>pvesm</code>).",
|
||||
"labelRich": "<code>PVE-NFS</code> / <code>PVE-CIFS/SMB</code> / <code>Proxmox-Storage</code>"
|
||||
},
|
||||
{
|
||||
"source": "Entrata manuale",
|
||||
"where": "Qualsiasi altra cosa — digitare il percorso assoluto da soli.",
|
||||
"labelRich": "<em>Inserisci percorso manualmente</em>"
|
||||
}
|
||||
],
|
||||
"tipTitle": "I percorsi Proxmox interni sono filtrati",
|
||||
"tipBody": "Il raccoglitore salta esplicitamente i percorsi interni Proxmox (<code>/mnt/pve/local</code>, <code>/mnt/pve/local-lvm</code>, <code>/mnt/pve/backup</code>, ...) — quelli sono riservati per gli interni Proxmox e non è necessario legare-montare. Vengono visualizzati solo gli storage aggiunti dall'utente."
|
||||
},
|
||||
"manual": {
|
||||
"heading": "Equivalente manuale",
|
||||
"privIntro": "Per un contenitore privilegiato — il caso più semplice, nessun trucco di autorizzazione:",
|
||||
"unprivLocalIntro": "Per un contenitore non privilegiato con una directory host locale — aprire le autorizzazioni sull'host prima:",
|
||||
"unprivCifsIntro": "Per un contenitore non privilegiato con una condivisione CIFS già montata sull'host:"
|
||||
},
|
||||
"view": {
|
||||
"heading": "Visualizza i punti di montaggio",
|
||||
"body": "Elenca ogni ingresso <code>mpN</code> su ogni contenitore su questo host Proxmox, raggruppato da CT id e che mostra il percorso host → percorso container più eventuali opzioni extra. sola lettura — utile come controllo di sanità prima di aggiungere o rimuovere nulla."
|
||||
},
|
||||
"remove": {
|
||||
"heading": "Rimuovi un punto di montaggio",
|
||||
"body": "Scegli il contenitore, scegli la voce <code>mpN</code>, conferma. Lo script esegue <code>pct set --delete mpN</code> per rilasciare l'ingresso dalla configurazione CT e offre di riavviare il contenitore se è in esecuzione. La directory host e i suoi contenuti sono <strong>non toccati</strong> — è possibile ri-add il montaggio in seguito (o collegare la stessa directory a un diverso CT).",
|
||||
"warnTitle": "I container in esecuzione richiedono un riavvio per applicare le modifiche",
|
||||
"warnBody": "Sia l'aggiunta che la rimozione dei punti di montaggio diventano visibili solo all'interno del contenitore dopo un riavvio. Lo script offre un <code>pct reboot</code> con un solo clic alla fine di ogni operazione; è possibile declinare e riavviare manualmente in seguito."
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Risoluzione dei problemi",
|
||||
"noMountTitle": "Il montaggio appare in pct config ma non all'interno del contenitore",
|
||||
"noMountBody": "I bind mount vengono collegati all’avvio del container. Se hai aggiunto il montaggio mentre il CT era in esecuzione, riavvialo con <code>pct reboot <ctid></code>. Se manca anche dopo il riavvio, controlla con <code>pct config <ctid></code> che la voce esista e che il percorso sull’host contenga effettivamente una directory.",
|
||||
"noWriteTitle": "Il contenitore può vedere la directory ma non può scrivere",
|
||||
"noWriteBody": "Quasi sempre un problema di autorizzazioni. Per i contenitori non privilegiati, eseguire nuovamente la correzione del permesso dello script — gli ACL della directory host possono essere stati ripristinati da un altro strumento (rsync, ripristino da backup, manuale <code>chmod</code>). Per CIFS, controllare le opzioni di montaggio sull'host: <code>findmnt /mnt/pve/cifs-…</code>, cercare i valori <code>uid=</code> / <code>gid=</code> / <code>file_mode=</code>.",
|
||||
"alreadyTitle": "\"Questo percorso è già utilizzato come punto di montaggio in questo contenitore\"",
|
||||
"alreadyBody": "Hai scelto lo stesso percorso contenitore che è già collegato a una directory host diversa. Scegliere un percorso contenitore diverso o rimuovere prima il punto di montaggio esistente.",
|
||||
"nfsTitle": "L'accesso NFS bloccato anche dopo aver applicato la correzione dell'host",
|
||||
"nfsIntro": "Il server NFS sta schiacciando root o tutte le connessioni. Lo script può rilevare questo (cerca di scrivere un file di prova dall'host) e mostra la guida lato server. Due correzioni lato server comuni per l'esportazione:",
|
||||
"nfsItems": [
|
||||
"<code>no_root_squash</code> — i CT privilegiati possono scrivere direttamente.",
|
||||
"<code>all_squash,anonuid=65534,anongid=65534</code> — per CT non privilegiati."
|
||||
],
|
||||
"nfsOutro": "Queste modifiche avvengono sul server NFS (TrueNAS, Synology, la tua esportazione personalizzata, ...), non su Proxmox.",
|
||||
"fstabOffTitle": "Il montaggio delle voci \"fstab(off)\" non fa nulla",
|
||||
"fstabOffBody": "La selezione mostra voci <code>fstab(off)-</code> quando un montaggio di rete è definito in fstab ma non è attivo. Lo script consente di collegare il percorso tramite bind mount, ma la directory resterà vuota finché non monterai la condivisione sull’host con <code>mount <path></code>. Montala prima e poi collegala al CT."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/storage-share/host-local-shared",
|
||||
"label": "Aggiungi Directory condivisa su host",
|
||||
"tailRich": "— primo passo tipico: preparare un <code>/mnt/shared</code> sull'host prima di legarlo in una o più CT qui."
|
||||
},
|
||||
{
|
||||
"href": "/docs/storage-share/host-nfs",
|
||||
"label": "Aggiungi condivisione NFS come storage Proxmox",
|
||||
"extraHref": "/docs/storage-share/host-samba",
|
||||
"extraLabel": "Aggiungi condivisione Samba come storage Proxmox",
|
||||
"joiner": " / ",
|
||||
"tailRich": "— registrare una condivisione esterna in Proxmox prima, quindi legare-montare il suo percorso <code>/mnt/pve/<id></code> nel CT qui."
|
||||
},
|
||||
{
|
||||
"href": "/docs/storage-share/lxc-nfs-client",
|
||||
"label": "client NFS in LXC",
|
||||
"extraHref": "/docs/storage-share/lxc-samba-client",
|
||||
"extraLabel": "client Samba in LXC",
|
||||
"joiner": " / ",
|
||||
"tail": "— l'alternativa quando si desidera che il CT stesso monti la condivisione (richiede un contenitore privilegiato)."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,128 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "client NFS in LXC | Documentazione ProxMenux",
|
||||
"description": "Monta condivisioni NFS direttamente in un container LXC Proxmox con ProxMenux. Installa automaticamente nfs-common, rileva i server nella LAN, supporta montaggi persistenti via /etc/fstab e impostazioni di avvio sicure. Richiede un container privilegiato.",
|
||||
"ogTitle": "client NFS in LXC | Documentazione ProxMenux",
|
||||
"ogDescription": "Monta condivisioni NFS in un container LXC privilegiato. Rilevamento automatico, persistenza in /etc/fstab e impostazioni di avvio sicure."
|
||||
},
|
||||
"header": {
|
||||
"title": "client NFS in LXC",
|
||||
"description": "Monta condivisioni NFS direttamente in un container LXC Proxmox. Il container diventa un vero client NFS: comunica con il server in rete, esegue mount.nfs e scrive in /etc/fstab. ProxMenux installa nfs-common, aiuta a trovare server ed esportazioni e applica impostazioni di avvio sicure.",
|
||||
"section": "Archiviazione e condivisione · LXC"
|
||||
},
|
||||
"privReq": {
|
||||
"title": "Contenitore privilegiato richiesto",
|
||||
"body": "Il client NFS che usa <code>mount.nfs</code> richiede capacità (almeno <code>SYS_ADMIN</code>) non disponibili nei container LXC non privilegiati. Lo script chiede di scegliere un CT e <strong>si interrompe se non è privilegiato</strong>. Per usare la condivisione in un CT non privilegiato, montala prima sull’host Proxmox con <hostNfsLink>Condivisione NFS come storage Proxmox</hostNfsLink> e rendila accessibile al CT tramite bind mount con <mountLink>LXC Mount Manager</mountLink>."
|
||||
},
|
||||
"what": {
|
||||
"heading": "Cosa succede?",
|
||||
"body": "A differenza di LXC Mount Manager — che permette al CT di vedere una risorsa <em>tramite</em> l'host Proxmox — questo script dà al contenitore il suo <strong>proprio client NFS</strong>: parla NFS sulla rete, monta condivisioni direttamente dal server NFS, e memorizza il montaggio nel contenitore <code>/etc/fstab</code>. L'host Proxmox non è nel percorso dati.",
|
||||
"diagramServerLabel": "Server NFS",
|
||||
"diagramServerDetail": "/export/data",
|
||||
"diagramHostLabel": "Host Proxmox",
|
||||
"diagramHostDetail": "(solo un\nponte di rete)",
|
||||
"diagramCtLabel": "LXC (privilegiato)",
|
||||
"diagramCtDetail": "/mnt/data\nmount.nfs nel CT",
|
||||
"diagramArrow": "NFS",
|
||||
"twoWaysTitle": "Due modi per dare un accesso CT NFS — scegliere uno",
|
||||
"twoWaysBind": "<strong>Bind mount tramite host</strong> (<mountLink>LXC Mount Manager</mountLink>): l’host monta NFS una volta e ogni CT riceve lo stesso percorso tramite bind mount. Funziona con CT non privilegiati. Consigliato quando più CT usano la stessa condivisione.",
|
||||
"twoWaysDirect": "<strong>Montaggio NFS diretto nel CT</strong> (questa pagina): il CT monta NFS da sé. Richiede un CT privilegiato. Utile se il CT deve gestire la propria connessione e le credenziali o se ciascun CT usa un server diverso."
|
||||
},
|
||||
"opening": {
|
||||
"heading": "Apertura dello strumento",
|
||||
"body": "Dal menu principale apri <strong>Storage & Share Manager → Configura client NFS in LXC (solo privilegiato)</strong>. ProxMenux chiede di <strong>scegliere il CT di destinazione</strong>, lo avvia se è fermo e si interrompe se non è privilegiato. Dopo la selezione compare questo sottomenu:",
|
||||
"imageAlt": "Menu client NFS — Monta / Visualizza / Smonta / Verifica connettività"
|
||||
},
|
||||
"howRuns": {
|
||||
"heading": "Come viene eseguito lo script (Mount flow)"
|
||||
},
|
||||
"fstabFlags": {
|
||||
"heading": "Perché quelle bandiere di fstab",
|
||||
"intro": "Per montare permanente lo script aggiunge tre bandiere oltre le opzioni standard NFS: <code>_netdev,x-systemd.automount,noauto</code>. Ognuno risolve un problema di boot-time reale:",
|
||||
"headerFlag": "Bandiera",
|
||||
"headerEffect": "Che cosa fa",
|
||||
"rows": [
|
||||
{
|
||||
"flag": "_netdev",
|
||||
"effect": "Segnala al sistema di inizializzazione che questo montaggio richiede la rete. L’avvio non resta bloccato in attesa del montaggio prima che la rete sia disponibile."
|
||||
},
|
||||
{
|
||||
"flag": "x-systemd.automount",
|
||||
"effectRich": "Crea un'unità auto-montaggio systemd: il montaggio avviene solo la prima volta che qualcosa accede a <code>/mnt/<path></code>. Il server NFS non raggiungibile all'avvio non blocca il CT."
|
||||
},
|
||||
{
|
||||
"flag": "noauto",
|
||||
"effect": "Evita il montaggio immediato all’avvio. In combinazione con l’unità automount descritta sopra, il filesystem viene montato solo al primo accesso."
|
||||
}
|
||||
],
|
||||
"netEffectTitle": "Effetto netto",
|
||||
"netEffectBody": "Il filesystem NFS viene montato al <em>primo accesso</em> anziché subito durante l’avvio. Se il server è offline, l’accesso può attendere o fallire e influire sui servizi che dipendono dal percorso. Automount riduce la dipendenza all’avvio, ma non garantisce che tutti i servizi del CT restino indipendenti da un guasto NFS."
|
||||
},
|
||||
"manual": {
|
||||
"heading": "Equivalente manuale",
|
||||
"body": "Replica l'intero flusso a mano — ogni comando viene eseguito <strong>dentro il CT</strong> tramite <code>pct exec <ctid> --</code> o direttamente tramite <code>pct enter <ctid></code>:"
|
||||
},
|
||||
"view": {
|
||||
"heading": "Visualizzare i montaggi correnti",
|
||||
"body": "Elenca i punti di montaggio NFS attivi nel CT tramite <code>mount | grep nfs</code> e tutte le righe NFS del suo <code>/etc/fstab</code>. Per ciascuna voce di fstab mostra se il montaggio è attualmente attivo, così puoi individuare quelli permanenti che non sono stati ripristinati all’avvio."
|
||||
},
|
||||
"unmount": {
|
||||
"heading": "Smonta la condivisione NFS",
|
||||
"body": "Combina i montaggi live e le voci fstab in un unico elenco, ti consente di sceglierne uno e <strong>rimuove la riga corrispondente da <code>/etc/fstab</code></strong>. Lo script <em>non</em> esegue <code>umount</code> sul montaggio live, invece ti dice che è necessario un riavvio CT affinché lo smontaggio abbia effetto.",
|
||||
"warnTitle": "Lo script rimuove le voci da fstab, senza smontare i filesystem attivi",
|
||||
"warnBody": "È una scelta voluta: <code>umount</code> fallisce con “device busy” se un processo nel CT usa ancora il montaggio. Rimuovere la voce da fstab impedisce che venga ripristinato al prossimo avvio del CT. Se vuoi smontarlo <em>subito</em> e sei certo che non sia in uso, esegui manualmente <code>pct exec <ctid> -- umount /mnt/<path></code> dopo la fine dello script."
|
||||
},
|
||||
"test": {
|
||||
"heading": "Test di connettività NFS",
|
||||
"body": "La diagnostica nel CT verifica che <code>nfs-common</code> sia installato e che <code>rpcbind</code> sia in esecuzione, poi elenca i montaggi NFS attivi. Per ogni server NFS indicato in fstab controlla ping, porta 2049 e <code>showmount -e</code>. È un buon primo passo se un montaggio permanente non si attiva."
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Risoluzione dei problemi",
|
||||
"privTitle": "Container privilegiato richiesto (lo script si interrompe)",
|
||||
"privBody": "Il CT selezionato non è privilegiato. Il client NFS del kernel richiede la capacità <code>SYS_ADMIN</code>, non esposta dai CT non privilegiati. Converti il CT in privilegiato (la conversione con Disk Manager & è descritta in <importLink>Importa disco in LXC</importLink>) oppure usa l’alternativa indicata nell’avviso all’inizio di questa pagina.",
|
||||
"aptTitle": "apt-get install nfs-common fails",
|
||||
"aptIntro": "Lo script assume una famiglia Debian CT (<code>apt-get</code>). Se il CT funziona Alpine / Arch / Rocky / Alma, la fase di installazione non riesce silenziosamente. Installare il client NFS a mano per quella distro:",
|
||||
"aptItems": [
|
||||
"Alpine: <code>apk add nfs-utils</code>",
|
||||
"Arch: <code>pacman -S nfs-utils</code>",
|
||||
"Rocky / Alma: <code>dnf install nfs-utils</code>"
|
||||
],
|
||||
"aptOutro": "Quindi eseguire nuovamente lo script ProxMenux — il passaggio di installazione salta quando gli strumenti sono già presenti.",
|
||||
"portTitle": "\"NFS port (2049) is not accessible\"",
|
||||
"portBody": "Ping è riuscito ma <code>nc -z <server> 2049</code> non è riuscito da dentro il CT. Controllare che il servizio NFS sia in esecuzione sul server, che il firewall consenta a 2049 dalla rete CT e che il CT abbia effettivamente un percorso di rete valido (prova <code>pct exec <ctid> -- ip route</code>).",
|
||||
"bootTitle": "Il montaggio permanente riesce, ma non viene ripristinato all’avvio",
|
||||
"bootBody": "Quasi sempre uno di: la rete non è pronta quando CT monta (lo script <code>_netdev,x-systemd.automount,noauto</code> le opzioni risolvono il problema — aggiungi di nuovo il montaggio tramite lo script se hai scritto la linea fstab a mano senza quelle), il server è irraggiungibile all'avvio (auto-mount aspetta per il primo accesso — che è normale), o DNS è irrisolto all'avvio (utilizzare l'IP del server, non il suo nome host).",
|
||||
"squashTitle": "Server squash root, nessun accesso di scrittura dall'interno CT",
|
||||
"squashIntro": "L'esportazione NFS utilizza <code>root_squash</code> (il default) e il CT scrive come root. Due opzioni:",
|
||||
"squashItems": [
|
||||
"lato server: cambiare l'esportazione in <code>no_root_squash</code> (solo se ti fidi della CT).",
|
||||
"CT-side: scrivere come utente non-root che il server accetta, o chown la parte in modo appropriato."
|
||||
],
|
||||
"squashOutro": "ProxMenux non può risolvere questo problema — è la politica del server."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/storage-share/lxc-mount-points",
|
||||
"label": "LXC Punti di montaggio (Host ↔ Contenitore)",
|
||||
"tail": " — l'alternativa per le TC non private: montare su host, legare in CT."
|
||||
},
|
||||
{
|
||||
"href": "/docs/storage-share/lxc-samba-client",
|
||||
"label": "client Samba in LXC",
|
||||
"tail": " — pagina correlata con lo stesso schema per le condivisioni SMB / CIFS."
|
||||
},
|
||||
{
|
||||
"href": "/docs/storage-share/lxc-nfs-server",
|
||||
"label": "Server NFS in LXC",
|
||||
"tailRich": " — l’inverso: esporre cartelle <em>da</em> un CT tramite NFS."
|
||||
},
|
||||
{
|
||||
"href": "/docs/storage-share/host-nfs",
|
||||
"label": "Condivisione NFS come storage Proxmox",
|
||||
"tail": " — registrare la condivisione in Proxmox anziché in un singolo CT."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,159 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Server NFS in LXC | Documentazione ProxMenux",
|
||||
"description": "Condividi cartelle via NFS da un container LXC Proxmox con ProxMenux. Installa automaticamente nfs-kernel-server e configura il gruppo comune sharedfiles, /etc/exports, ACL di rete e disinstallazione completa. Richiede un container privilegiato.",
|
||||
"ogTitle": "Server NFS in LXC | Documentazione ProxMenux",
|
||||
"ogDescription": "Esegui un server NFS in un LXC privilegiato con il gruppo comune sharedfiles, ACL di rete e disinstallazione completa."
|
||||
},
|
||||
"header": {
|
||||
"title": "Server NFS in LXC",
|
||||
"description": "Esegui un server NFS del kernel in un container LXC Proxmox ed esponi cartelle ad altre macchine della rete. ProxMenux installa nfs-kernel-server, configura il gruppo comune sharedfiles per condividere correttamente i file fra più CT privilegiati, gestisce /etc/exports e offre la disinstallazione completa.",
|
||||
"section": "Archiviazione e condivisione · LXC"
|
||||
},
|
||||
"privReq": {
|
||||
"title": "Contenitore privilegiato richiesto",
|
||||
"body": "<code>nfs-kernel-server</code> deve montare il file system del kernel <code>nfsd</code> in <code>/proc/fs/nfsd</code>. Serve <code>CAP_SYS_ADMIN</code> nello spazio dei nomi del kernel host, non soltanto in quello utente del container. I LXC non privilegiati non hanno questa capacità: <code>rpc.nfsd: Unable to access /proc/fs/nfsd errno 2 (No such file or directory)</code>; systemd segnala un errore di dipendenza per <code>nfs-server.service</code>. Lo script richiede quindi un CT privilegiato e <strong>si interrompe se il CT non è privilegiato</strong>. In alternativa, esegui il server NFS in una VM."
|
||||
},
|
||||
"what": {
|
||||
"heading": "Cosa succede?",
|
||||
"body": "È il caso inverso rispetto alla pagina <em>client NFS</em>: il CT diventa un <strong>server NFS</strong> e condivide una propria cartella con altri CT, l’host Proxmox, VM o macchine fisiche.",
|
||||
"diagramServerLabel": "LXC (privilegiato) — server NFS",
|
||||
"diagramServerDetail": "/mnt/data\n(cartella condivisa)\n\nchown root:sharedfiles\nchmod 2775 (SGID)\n\nnfs-kernel-server\n+ rpcbind in esecuzione",
|
||||
"diagramClientLabel": "Qualsiasi client sulla rete",
|
||||
"diagramClientDetail": "un altro CT, l'host,\nun VM, una macchina fisica...",
|
||||
"diagramArrow": "Esportazione NFS"
|
||||
},
|
||||
"shared": {
|
||||
"heading": "La convenzione di gruppo \"sharedfiles\"",
|
||||
"body": "Prima di esportare la cartella, ProxMenux crea un gruppo chiamato <code>sharedfiles</code> con <strong>GID 101000</strong> all'interno del contenitore, aggiunge ogni utente regolare ad esso, quindi imposta la directory di esportazione a <code>root:sharedfiles</code> con modalità <code>2775</code>. Il <code>2</code> sul davanti è il bit SGID — ogni file o cartella creata all'interno eredita automaticamente il gruppo <code>sharedfiles</code>.",
|
||||
"gidTitle": "Perché GID 101000 specificamente",
|
||||
"gidBody": "Con la mappatura ID predefinita di LXC (+100000), il GID 101000 dell’host appare come GID <strong>1000</strong> in un CT non privilegiato. Questo flusso server usa un CT <strong>privilegiato</strong>, senza spostamento. Due CT privilegiati con <code>sharedfiles</code> al GID 101000 condividono quindi lo stesso ID numerico di gruppo.",
|
||||
"remapTitle": "La creazione dei vecchi utenti «remap_*» viene saltata nei CT privilegiati",
|
||||
"remapBody": "Il vecchio ramo per CT non privilegiati creerebbe utenti <code>remap_<uid></code> con UID <code><uid> + 100000</code>, tutti in <code>sharedfiles</code>, per utenti normali e UID comuni (33, 1000, 1001, 1002). Questo spostamento <code>+100000</code> non si applica ai CT <strong>privilegiati</strong> richiesti qui, quindi lo script salta il ramo. L’assenza di account <code>remap_*</code> in <code>getent passwd</code> è prevista e non indica un errore."
|
||||
},
|
||||
"defaults": {
|
||||
"heading": "Opzioni di esportazione predefinite — leggere questo primo",
|
||||
"warnTitle": "Opzioni di default includono no_root_squash",
|
||||
"warnBody": "ProxMenux usa per impostazione predefinita <code>rw,sync,no_subtree_check,'<'strong'>'no_root_squash'<'/strong'>'</code>. <strong>Qualsiasi utente root di un client può scrivere come root sull’esportazione.</strong> Usalo solo in una LAN domestica affidabile. Se il CT è raggiungibile da reti non fidate (VPS o VLAN non fidata), <strong>cambia l’opzione in <code>root_squash</code></strong> nel dialogo delle opzioni personalizzate."
|
||||
},
|
||||
"opening": {
|
||||
"heading": "Apertura dello strumento",
|
||||
"body": "Dal menu principale, apri <strong>Storage & Share Manager → Configure NFS Server in LXC</strong>. Sono elencati solo i CT privilegiati. Scegli il CT di destinazione; lo script lo avvia se è fermo e rifiuta i CT non privilegiati. Il menu presenta cinque opzioni.",
|
||||
"imageAlt": "NFS Server Manager menu — Crea / Visualizza / Elimina / Stato / disinstallare"
|
||||
},
|
||||
"howRuns": {
|
||||
"heading": "Come funziona lo script (Crea flusso)"
|
||||
},
|
||||
"network": {
|
||||
"heading": "Rete ACL — che può montare la quota",
|
||||
"intro": "<code>/etc/exports</code> filtra i client autorizzati a montare l’esportazione. Il dialogo offre tre modalità:",
|
||||
"headerMode": "Modalità",
|
||||
"headerValue": "Valore scritto a /etc/exports",
|
||||
"headerWhen": "Quando scegliere",
|
||||
"rows": [
|
||||
{
|
||||
"mode": "Rete locale",
|
||||
"value": "192.168.0.0/16",
|
||||
"whenRich": "Per reti domestiche o SOHO standard. Include tutti gli indirizzi <code>192.168.*.*</code>."
|
||||
},
|
||||
{
|
||||
"mode": "Sottorete personalizzata",
|
||||
"value": "il tuo CIDR (ad es. 10.0.0.0/24)",
|
||||
"when": "Quando la tua LAN non è in 192.168.x.x o vuoi una portata più stretta."
|
||||
},
|
||||
{
|
||||
"mode": "Singolo host",
|
||||
"value": "il tuo IP (ad es. 10.0.0.42)",
|
||||
"when": "Solo una macchina specifica dovrebbe montare. Molto restrittiva."
|
||||
}
|
||||
]
|
||||
},
|
||||
"options": {
|
||||
"heading": "Opzioni di esportazione spiegate",
|
||||
"headerOption": "Opzione",
|
||||
"headerEffect": "Che cosa fa",
|
||||
"rows": [
|
||||
{
|
||||
"option": "rw / ro",
|
||||
"effect": "Consente l’accesso in lettura e scrittura o in sola lettura ai client che si connettono."
|
||||
},
|
||||
{
|
||||
"option": "sync",
|
||||
"effectRich": "Risponde alle richieste di scrittura solo dopo che i dati sono sul disco. Più sicuro di <code>async</code>, a scapito delle prestazioni."
|
||||
},
|
||||
{
|
||||
"option": "no_subtree_check",
|
||||
"effect": "Salta il controllo, a ogni richiesta, che il file sia ancora nel sottoalbero esportato. È più veloce ed evita problemi se i file vengono rinominati durante l’operazione."
|
||||
},
|
||||
{
|
||||
"option": "no_root_squash",
|
||||
"effectRich": "<strong>Considera attendibile root sul client.</strong> Un client che monta come root scrive come root sul server. Utile nelle LAN fidate, ad esempio per conservare i proprietari durante i backup. Sostituisci con <code>root_squash</code> se non ti fidi pienamente di ogni macchina ammessa dall’ACL di rete."
|
||||
}
|
||||
]
|
||||
},
|
||||
"manual": {
|
||||
"heading": "Equivalente manuale",
|
||||
"body": "Riproduci manualmente l’intera procedura. Ogni comando viene eseguito <strong>nel CT</strong> tramite <code>pct exec <ctid> --</code> o <code>pct enter <ctid></code>:"
|
||||
},
|
||||
"view": {
|
||||
"heading": "Visualizza le esportazioni correnti",
|
||||
"body": "Mostra <code>/etc/exports</code> dal CT saltando commenti e righe vuote, quindi elenca ogni esportazione con ACL di rete e opzioni. Utile per verificare le cartelle esposte prima di comunicare l’IP del CT."
|
||||
},
|
||||
"delete": {
|
||||
"heading": "Eliminare un'esportazione",
|
||||
"body": "Elenca ogni linea in <code>/etc/exports</code> per la selezione, rimuove quella scelta (<code>sed -i</code>), esegue <code>exportfs -ra</code> e riavvia <code>nfs-kernel-server</code>. La cartella stessa e il suo contenuto sono lasciati intatti."
|
||||
},
|
||||
"status": {
|
||||
"heading": "Controlla lo stato NFS",
|
||||
"body": "Passo diagnostico: conferma <code>nfs-kernel-server</code> e <code>rpcbind</code> sono installati e attivi, stampa l'uscita <code>exportfs -v</code>, elenca le sessioni NFS attive (<code>showmount -a</code>) e le connessioni client attuali."
|
||||
},
|
||||
"uninstall": {
|
||||
"heading": "Disinstallare il server NFS",
|
||||
"body": "Pulizia completa dopo conferma: arresta e disabilita <code>nfs-kernel-server</code> e <code>rpcbind</code>, svuota <code>/etc/exports</code>, rimuove i pacchetti NFS con <code>apt-get purge</code>, elimina il gruppo <code>sharedfiles</code> e gli utenti <code>remap_*</code> e termina i processi residui. Le <strong>cartelle esportate non vengono eliminate</strong>; vengono rimossi soltanto configurazione e pacchetti NFS.",
|
||||
"warnTitle": "Lo script si ferma alla linea di esportazione, non ai dati",
|
||||
"warnBody": "<em>Elimina esportazione</em> e <em>Disinstalla server NFS</em> rimuovono la configurazione. I dati della cartella esportata vengono conservati. Per eliminarli, usa esplicitamente <code>rm -rf</code> dopo la fine dello script e prima esegui un backup se potrebbero ancora servire."
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Risoluzione dei problemi",
|
||||
"privTitle": "Richiesto un container privilegiato (lo script si interrompe)",
|
||||
"privBody": "Il CT selezionato non è privilegiato. <code>nfs-kernel-server</code> non può cominciare perché il montaggio di <code>/proc/fs/nfsd</code> ha bisogno di <code>CAP_SYS_ADMIN</code> nello spazio dei nomi del kernel host, e il modulo <code>nfsd</code> non è esposto allo spazio dei nomi del contenitore (<code>modprobe nfsd</code> dall’interno restituisce <code>FATAL: Module nfsd not found</code>). Se si bypassa il controllo, si vedrà <code>rpc.nfsd: Unable to access /proc/fs/nfsd errno 2 (No such file or directory)</code> nel journal e nessuna porta NFS verrà aperta. Le uniche opzioni praticabili sono: convertire il CT in privilegiato, o spostare il server NFS in una VM.",
|
||||
"aptTitle": "apt-get install non riesce",
|
||||
"aptIntro": "Lo script assume una famiglia Debian CT. Su Alpine / Arch / Rocky / Alma, installare i pacchetti server NFS a mano:",
|
||||
"aptItems": [
|
||||
"Alpine: <code>apk add nfs-utils</code>",
|
||||
"Arch: <code>pacman -S nfs-utils</code>",
|
||||
"Rocky / Alma: <code>dnf install nfs-utils</code>"
|
||||
],
|
||||
"aptOutro": "Esegui di nuovo lo script ProxMenux; l’installazione viene saltata se gli strumenti sono già presenti.",
|
||||
"aclTitle": "Il client non può montare: 'accesso negato dal server'",
|
||||
"aclBody": "L’IP del client è fuori dall’ACL di rete configurata. Ricrea l’esportazione con una sottorete più ampia o aggiungi l’IP esatto del client. Attenzione: attraverso un router NAT il client può apparire con l’IP WAN del router anziché il proprio IP LAN. Verifica sul server con <code>tcpdump -n port 2049</code>.",
|
||||
"ownTitle": "I file scritti dal client appaiono con strana proprietà sul server",
|
||||
"ownIntro": "Due possibilità:",
|
||||
"ownItems": [
|
||||
"Con <code>no_root_squash</code> (default), root client scrive come root sul server. I file sono di proprietà di <code>root:sharedfiles</code> grazie al SGID nella cartella.",
|
||||
"Gli utenti client non-root scrivono come propri UID/GID. Se il loro UID non esiste sul server, i file appaiono con numeri grezzi (ad es. <code>1234:1234</code>). Utilizzare anche il gruppo <code>sharedfiles</code> sul client o allineare gli UID attraverso i sistemi che condividono i file."
|
||||
],
|
||||
"noShowTitle": "Server raggiungibile ma showmount non restituisce nulla",
|
||||
"noShowBody": "Dopo aver modificato <code>/etc/exports</code>, è necessario ricaricare la tabella di esportazione con <code>exportfs -ra</code> e riavviare <code>nfs-kernel-server</code> — lo script fa entrambi, ma se hai modificato il file a mano, fai da te. Confermare anche il firewall sul CT (e sull'host Proxmox) consente a TCP/UDP 2049 e alla porta rpcbind (111)."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/storage-share/lxc-nfs-client",
|
||||
"label": "client NFS in LXC",
|
||||
"tail": " — il caso inverso: montare condivisioni NFS esterne nel CT."
|
||||
},
|
||||
{
|
||||
"href": "/docs/storage-share/lxc-samba-server",
|
||||
"label": "Server Samba in LXC",
|
||||
"tail": " — pagina correlata, stesso schema con SMB / CIFS al posto di NFS."
|
||||
},
|
||||
{
|
||||
"href": "/docs/storage-share/host-nfs",
|
||||
"label": "Condivisione NFS come storage Proxmox",
|
||||
"tailRich": " — quando il CT espone l’esportazione, registra la condivisione NFS in Proxmox per visualizzarla in <em>Datacenter → Storage</em>."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,155 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "client Samba in LXC | Documentazione ProxMenux",
|
||||
"description": "Monta le condivisioni Samba o CIFS direttamente da un container Proxmox LXC con ProxMenux. Lo script installa cifs-utils e smbclient, rileva automaticamente i server, protegge le credenziali e configura montaggi permanenti tramite /etc/fstab. Richiede un container privilegiato.",
|
||||
"ogTitle": "client Samba in LXC | Documentazione ProxMenux",
|
||||
"ogDescription": "Monta condivisioni Samba / CIFS in un container LXC privilegiato. Rilevamento automatico, file delle credenziali protetto e persistenza in /etc/fstab."
|
||||
},
|
||||
"header": {
|
||||
"title": "client Samba in LXC",
|
||||
"description": "Monta condivisioni Samba (SMB / CIFS) direttamente in un container Proxmox LXC. Il contenitore diventa un vero client CIFS — parla al server Samba sulla rete, esegue mount.cifs, memorizza le credenziali in modo sicuro, e scrive a /etc/fstab. ProxMenux installa cifs-utils + smbclient per voi e valida le credenziali contro il server prima del montaggio.",
|
||||
"section": "Archiviazione e condivisione · LXC"
|
||||
},
|
||||
"privReq": {
|
||||
"title": "Contenitore privilegiato richiesto",
|
||||
"body": "Il client Samba / CIFS che usa <code>mount.cifs</code> richiede capacità (almeno <code>SYS_ADMIN</code>) non disponibili nei container LXC non privilegiati. Lo script chiede di scegliere un CT e <strong>si interrompe se non è privilegiato</strong>. Per usare la condivisione in un CT non privilegiato, montala prima sull’host Proxmox con <hostSambaLink>Condivisione Samba / CIFS come storage Proxmox</hostSambaLink> e rendila accessibile al CT tramite bind mount con <mountLink>LXC Mount Manager</mountLink>."
|
||||
},
|
||||
"what": {
|
||||
"heading": "Cosa succede?",
|
||||
"body": "Il contenitore parla CIFS sulla rete e monta la condivisione da solo. L'host Proxmox è solo il ponte di rete — non vede o gestisce il montaggio.",
|
||||
"diagramServerLabel": "Server Samba",
|
||||
"diagramServerDetail": "//srv/share",
|
||||
"diagramHostLabel": "Host Proxmox",
|
||||
"diagramHostDetail": "(solo un\nponte di rete)",
|
||||
"diagramCtLabel": "LXC (privilegiato)",
|
||||
"diagramCtDetail": "/mnt/share\nmount.cifs all'interno di CT",
|
||||
"diagramArrow": "CIFS",
|
||||
"twoWaysTitle": "Due modi per dare un CT una quota Samba — scegliere uno",
|
||||
"twoWaysBind": "<strong>Bind mount tramite host</strong> (<mountLink>LXC Mount Manager</mountLink>): l’host monta CIFS una volta e ogni CT riceve lo stesso percorso tramite bind mount. Funziona con CT non privilegiati. Consigliato quando più CT usano la stessa condivisione.",
|
||||
"twoWaysDirect": "<strong>Montaggio CIFS diretto nel CT</strong> (questa pagina): il CT monta CIFS da sé. Richiede un CT privilegiato. Utile quando il CT deve gestire le proprie credenziali o ogni CT usa un server diverso."
|
||||
},
|
||||
"opening": {
|
||||
"heading": "Apertura dello strumento",
|
||||
"body": "Dal menu principale apri <strong>Storage & Share Manager → Configura client Samba in LXC (solo privilegiato)</strong>. ProxMenux chiede di <strong>scegliere il CT di destinazione</strong>, lo avvia se è fermo e si interrompe se non è privilegiato. Dopo la selezione compare questo sottomenu:",
|
||||
"imageAlt": "Menu client Samba — Monta / Visualizza / Smonta / Verifica connettività"
|
||||
},
|
||||
"howRuns": {
|
||||
"heading": "Come viene eseguito lo script (Mount flow)"
|
||||
},
|
||||
"creds": {
|
||||
"heading": "Dove vive la password",
|
||||
"body": "ProxMenux <strong>non inserisce la password nel comando di montaggio</strong> o in <code>/etc/fstab</code>. Crea invece un file di credenziali nel CT. Il file contiene credenziali in chiaro protette da permessi riservati a root; non è crittografato:",
|
||||
"whyTitle": "Perché un file separato piuttosto che fstab",
|
||||
"whyBody": "Il modulo CIFS accetta <code>username=</code> / <code>password=</code> opzioni in linea in fstab, ma chiunque può leggere <code>/etc/fstab</code> vede la password in chiaro. Mettere le credenziali in un file root-only e puntare fstab ad esso (<code>credentials=</code>) mantiene la password fuori dalla configurazione leggibile in tutto il mondo."
|
||||
},
|
||||
"options": {
|
||||
"heading": "Opzioni di montaggio spiegato",
|
||||
"headerOption": "Opzione",
|
||||
"headerEffect": "Che cosa fa",
|
||||
"rows": [
|
||||
{
|
||||
"option": "rw / ro",
|
||||
"effect": "Modalità lettura-scrittura o sola lettura per l'intero montaggio."
|
||||
},
|
||||
{
|
||||
"option": "file_mode=0664",
|
||||
"effect": "Permessi riportati per i file tramite CIFS. Default permette al proprietario + gruppo di scrivere, altri leggere."
|
||||
},
|
||||
{
|
||||
"option": "dir_mode=0775",
|
||||
"effect": "Le autorizzazioni riportate per le directory. Default consente al proprietario+gruppo di entrare e creare, altri traversi."
|
||||
},
|
||||
{
|
||||
"option": "iocharset=utf8",
|
||||
"effect": "Forza UTF-8 per i nomi di file ricevuti dalla rete, evitando caratteri illeggibili nei nomi non ASCII."
|
||||
},
|
||||
{
|
||||
"option": "credentials=file",
|
||||
"effect": "Leggi nome utente / password dal file (aggiunto automaticamente per utente auth)."
|
||||
},
|
||||
{
|
||||
"option": "guest",
|
||||
"effect": "Autentica come ospite, nessuna credenziali necessaria (aggiunta automaticamente quando viene scelto l'ospite)."
|
||||
},
|
||||
{
|
||||
"option": "_netdev",
|
||||
"effect": "Segnala al sistema di inizializzazione che questo montaggio richiede la rete. L’avvio non resta bloccato in attesa del montaggio."
|
||||
},
|
||||
{
|
||||
"option": "x-systemd.automount",
|
||||
"effect": "Montaggio al primo accesso: il filesystem viene montato solo quando viene usato. Se il server CIFS non è raggiungibile all’avvio, il CT non resta bloccato."
|
||||
},
|
||||
{
|
||||
"option": "noauto",
|
||||
"effect": "Evita il montaggio immediato all’avvio. In combinazione con l’unità automount, il filesystem viene montato solo quando serve."
|
||||
}
|
||||
],
|
||||
"netEffectTitle": "Effetto netto delle bandiere fstab",
|
||||
"netEffectBody": "Il filesystem CIFS viene montato al <em>primo accesso</em> anziché subito durante l’avvio. Se il server è offline, l’accesso può attendere o fallire e influire sui servizi che dipendono dal percorso. Automount riduce la dipendenza all’avvio, ma non garantisce che tutti i servizi del CT restino indipendenti da un guasto CIFS."
|
||||
},
|
||||
"manual": {
|
||||
"heading": "Equivalente manuale",
|
||||
"body": "Replica l'intero flusso a mano — ogni comando viene eseguito <strong>dentro il CT</strong> tramite <code>pct exec <ctid> --</code> o direttamente tramite <code>pct enter <ctid></code>:",
|
||||
"guestIntro": "variante ospite — nessun file di credenziali necessario:"
|
||||
},
|
||||
"view": {
|
||||
"heading": "Visualizzare i montaggi correnti",
|
||||
"body": "Elenca i punti di montaggio CIFS attivi nel CT tramite <code>mount -t cifs</code> e tutte le righe CIFS del suo <code>/etc/fstab</code>. Per ciascuna voce di fstab mostra se il montaggio è attivo, così puoi individuare quelli permanenti che non sono stati ripristinati all’avvio."
|
||||
},
|
||||
"unmount": {
|
||||
"heading": "Smonta la condivisione Samba",
|
||||
"body": "Riunisce i montaggi attivi e le voci di fstab in un elenco. Per l’elemento scelto <strong>rimuove la riga corrispondente da <code>/etc/fstab</code></strong> e il relativo file delle credenziali. Lo script non esegue <code>umount</code> sul filesystem attivo: segnala che occorre riavviare il CT per completare lo smontaggio.",
|
||||
"warnTitle": "Lo script rimuove le voci da fstab, senza smontare i filesystem attivi",
|
||||
"warnBody": "Segue lo stesso criterio del client NFS: <code>umount</code> fallisce con “device busy” se il montaggio è ancora in uso. Rimuovere la voce da fstab impedisce che venga ripristinato al prossimo avvio del CT. Per smontarlo <em>subito</em>, esegui manualmente <code>pct exec <ctid> -- umount /mnt/<path></code> dopo la fine dello script."
|
||||
},
|
||||
"test": {
|
||||
"heading": "Prova la connettività Samba",
|
||||
"body": "La diagnostica nel CT verifica l’installazione di <code>cifs-utils</code>, elenca i montaggi CIFS attivi e controlla per ogni server indicato in fstab ping, porte 139/445 ed elenco delle condivisioni accessibili come guest. “Autenticazione richiesta” nel test guest è normale se il server non espone condivisioni pubbliche."
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Risoluzione dei problemi",
|
||||
"privTitle": "Container privilegiato richiesto (lo script si interrompe)",
|
||||
"privBody": "Il CT selezionato non è privilegiato. Il client CIFS del kernel richiede la capacità <code>SYS_ADMIN</code>, non disponibile nei CT non privilegiati. Converti il CT in privilegiato oppure usa l’alternativa indicata nell’avviso all’inizio della pagina.",
|
||||
"aptTitle": "apt-get install fails",
|
||||
"aptIntro": "Lo script assume una famiglia Debian CT (<code>apt-get</code>). Su Alpine / Arch / Rocky / Alma, installare il client CIFS a mano:",
|
||||
"aptItems": [
|
||||
"Alpine: <code>apk add cifs-utils samba-client</code>",
|
||||
"Arch: <code>pacman -S cifs-utils smbclient</code>",
|
||||
"Rocky / Alma: <code>dnf install cifs-utils samba-client</code>"
|
||||
],
|
||||
"aptOutro": "Quindi eseguire nuovamente lo script ProxMenux — il passaggio di installazione salta quando gli strumenti sono già presenti.",
|
||||
"guestFallbackTitle": "\"Il server ti ha collegato come ospite invece dell'utente specificato\"",
|
||||
"guestFallbackBody": "La validazione attiva dello script ha preso un vero problema auth. Il server ha accettato la connessione ma l'ha degradata agli ospiti perché le credenziali sono sbagliate. Cause comuni: typo nel nome utente / password, l'utente non esiste sul server, l'utente è bloccato, o il gruppo di lavoro / dominio è errato. Ripeti la procedura e reinserisci con attenzione le credenziali (la password è nascosta nella finestra di dialogo).",
|
||||
"denyTitle": "\"NT_STATUS_ACCESS_DENIED\" durante il montaggio",
|
||||
"denyBody": "Le credenziali sono state convalidate ma la quota nega l'accesso. Controllare sul lato server se l'utente ha autorizzazioni su quella specifica quota (validazione conferma solo il login, non per-share ACLs). Verificare anche se il server richiede una specifica versione del protocollo SMB: aggiungere <code>vers=3.0</code> (o <code>2.1</code>, <code>2.0</code>) alle opzioni di montaggio.",
|
||||
"utf8Title": "Nomi di file UTF-8 / non ASCII visualizzati male",
|
||||
"utf8Body": "Le opzioni di default includono <code>iocharset=utf8</code>, ma alcune configurazioni del server segnalano una pagina di codice inaspettata. Se i nomi di file con accenti / simboli sembrano sbagliati, anche provare <code>nounix</code> (alcuni server Samba Linux ne hanno bisogno quando il client è anche Linux) o impostare il lato server a <code>unix extensions = no</code>.",
|
||||
"bootTitle": "Il montaggio permanente riesce, ma non viene ripristinato all’avvio",
|
||||
"bootBody": "Le cause più comuni sono la rete non ancora pronta quando il CT tenta il montaggio, il server non raggiungibile all’avvio oppure DNS non disponibile. Le opzioni <code>_netdev,x-systemd.automount,noauto</code> dello script risolvono il primo caso; automount attende normalmente il primo accesso. Per problemi DNS usa l’IP del server anziché il nome host."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/storage-share/lxc-mount-points",
|
||||
"label": "LXC Punti di montaggio (Host ↔ Contenitore)",
|
||||
"tail": " — l'alternativa per le TC non private: montare su host, legare in CT."
|
||||
},
|
||||
{
|
||||
"href": "/docs/storage-share/lxc-nfs-client",
|
||||
"label": "client NFS in LXC",
|
||||
"tail": " — pagina correlata con lo stesso schema per le condivisioni NFS."
|
||||
},
|
||||
{
|
||||
"href": "/docs/storage-share/lxc-samba-server",
|
||||
"label": "Server Samba in LXC",
|
||||
"tailRich": " — l’inverso: esporre cartelle <em>da</em> un CT tramite Samba."
|
||||
},
|
||||
{
|
||||
"href": "/docs/storage-share/host-samba",
|
||||
"label": "Samba / CIFS come storage Proxmox",
|
||||
"tail": " — registrare la condivisione in Proxmox anziché in un singolo CT."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,132 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Server Samba in LXC | Documentazione ProxMenux",
|
||||
"description": "Esegui un server Samba (SMB / CIFS) in un container LXC Proxmox con ProxMenux. Installa samba automaticamente e gestisce /etc/samba/smb.conf, utenti smbpasswd e il gruppo sharedfiles per cartelle montate tramite bind mount. Richiede un container privilegiato.",
|
||||
"ogTitle": "Server Samba in LXC | Documentazione ProxMenux",
|
||||
"ogDescription": "Condividi cartelle via SMB/CIFS da un LXC privilegiato. Installazione automatica, utente smbpasswd e permessi adatti ai bind mount."
|
||||
},
|
||||
"header": {
|
||||
"title": "Server Samba in LXC",
|
||||
"description": "Eseguire un server Samba (SMB / CIFS) all'interno di un contenitore Proxmox LXC ed esporre le cartelle ai client Windows / macOS / Linux sulla rete. ProxMenux installa samba, crea un utente Samba con smbpasswd, gestisce /etc/samba/smb.conf, e applica permessi adatti ai bind mount quando la cartella condivisa viene dall'host.",
|
||||
"section": "Archiviazione e condivisione · LXC"
|
||||
},
|
||||
"privReq": {
|
||||
"title": "Contenitore privilegiato richiesto",
|
||||
"body": "Samba impersona l'utente di collegamento con <code>setgroups()</code> su ogni connessione albero (il momento in cui un cliente apre una condivisione). In un LXC non privilegiato, il kernel rifiuta la chiamata di sistema perché lo spazio di nome utente del contenitore è creato con <code>setgroups=deny</code> — e <code>smbd</code> risponde interrompendo il processo di lavorazione con <code>PANIC: sys_setgroups failed</code>. Il risultato è che <code>smbd</code> inizia e lega porte 139/445, ma ogni connessione client non funziona con <code>NT_STATUS_CONNECTION_DISCONNECTED</code>. Lo script applica un CT privilegiato per questo motivo e <strong>si interrompe se il CT non è privilegiato</strong>. Non c'è correzione pulita sul lato server; utilizzare un CT privilegiato, o eseguire Samba all'interno di una VM."
|
||||
},
|
||||
"what": {
|
||||
"heading": "Cosa succede?",
|
||||
"body": "Il contenitore diventa un server SMB/CIFS: esegue <code>smbd</code>, espone una cartella tramite <code>/etc/samba/smb.conf</code> e accetta le connessioni client sulle porte <code>139</code> / <code>445</code>. I client vedono la condivisione a <code>\\\\<ct-ip>\\<share-name></code> in Windows Explorer, <code>smb://<ct-ip>/<share-name></code> in macOS Finder, o tramite <code>mount.cifs</code> su Linux.",
|
||||
"diagramServerLabel": "LXC (privilegiato) — server Samba",
|
||||
"diagramServerDetail": "/mnt/data\n(cartella condivisa)\n\nsmbd + nmbd in esecuzione\n\nUtente: <username>\n(via smbpasswd)\n\nGruppo imposto:\nsharedfiles",
|
||||
"diagramClientLabel": "Qualsiasi client sulla rete",
|
||||
"diagramClientDetail": "Windows: \\\\<ip>\\<share>\nmacOS: smb://<ip>/<share>\nLinux: mount.cifs",
|
||||
"diagramArrow": "SMB / CIFS"
|
||||
},
|
||||
"perms": {
|
||||
"heading": "Due percorsi di autorizzazione a seconda del tipo di cartella",
|
||||
"body": "Prima di aggiungere la condivisione a <code>smb.conf</code>, lo script verifica se la cartella scelta è un <strong>bind mount proveniente dall’host</strong> oppure una normale <strong>cartella locale nel CT</strong>. Imposta quindi proprietario e permessi in modo diverso:",
|
||||
"headerType": "Tipo di cartella",
|
||||
"headerAction": "Cosa fa lo script",
|
||||
"bindType": "Bind-mount da host",
|
||||
"bindTypeSubRich": "rilevato tramite uscita <code>mount</code>",
|
||||
"bindActionRich": "Crea gruppo <code>sharedfiles</code> (default GID 999, dinamico se assunto), aggiunge l'utente Samba ad esso, poi <code>chown root:sharedfiles</code> + <code>chmod 2775</code> (SGID — nuovi file ereditano il gruppo). Se l'utente non può ancora scrivere, applica <code>setfacl -m u:<user>:rwx</code>.",
|
||||
"localType": "Cartella locale dentro CT",
|
||||
"localTypeSub": "nessun bind mount rilevato",
|
||||
"localActionRich": "Proprietà standard: <code>chown -R <user>:<user></code> + <code>chmod -R 755</code>. Nessun gruppo condiviso necessario perché nessun altro CT scrive a questa cartella. Torna a <code>setfacl</code> se manca ancora l'accesso alla scrittura.",
|
||||
"gidTitle": "GID per 'sharedfiles' differisce dal flusso server NFS",
|
||||
"gidBody": "Lo script del server Samba utilizza GID <strong>999</strong> per <code>sharedfiles</code>, mentre il <nfsLink>flusso del server NFS</nfsLink> utilizza GID <strong>101000</strong>. Se si esegue entrambi i server nello stesso CT e desiderare un singolo gruppo condiviso su entrambi i protocolli, modificare uno di loro per abbinare l'altro dopo l'installazione (ad es. <code>groupmod -g 101000 sharedfiles</code>) e riapplicare la proprietà sulle cartelle interessate. Questa è una nota incoerenza negli script attuali."
|
||||
},
|
||||
"opening": {
|
||||
"heading": "Apertura dello strumento",
|
||||
"body": "Dal menu principale, apri <strong>Storage & Share Manager → Configure Samba Server in LXC</strong>. Sono elencati solo i CT privilegiati. Scegli il CT di destinazione; lo script lo avvia se è fermo e rifiuta i CT non privilegiati. Il menu presenta cinque opzioni.",
|
||||
"imageAlt": "Menu Samba Server Manager — Crea / Visualizza / Elimina / Stato / Disinstallare"
|
||||
},
|
||||
"howRuns": {
|
||||
"heading": "Come funziona lo script (Crea flusso)"
|
||||
},
|
||||
"modes": {
|
||||
"heading": "Le tre modalità di condivisione",
|
||||
"intro": "Ogni modalità scrive una sezione diversa in <code>smb.conf</code>. Tutti e tre includono <code>valid users = <username></code> (non anonimo), <code>force group = sharedfiles</code> (così nuovi file appartengono al gruppo condiviso) e <code>veto files = /lost+found/</code> (nascondere dai clienti).",
|
||||
"headerMode": "Modalità",
|
||||
"headerBlock": "Blocco scritto a smb.conf",
|
||||
"rwMode": "Lettura e scrittura",
|
||||
"roMode": "Sola lettura",
|
||||
"customMode": "Personalizzato",
|
||||
"customBodyRich": "Digita le tue direttive in una scatola di testo libero. ProxMenux li avvolge ancora in un blocco <code>[share]</code> con lo standard <code>path</code>, <code>valid users</code>, <code>force group</code> e <code>veto files</code>."
|
||||
},
|
||||
"manual": {
|
||||
"heading": "Equivalente manuale",
|
||||
"body": "Riproduci manualmente l’intera procedura. Ogni comando viene eseguito <strong>nel CT</strong> tramite <code>pct exec <ctid> --</code> o <code>pct enter <ctid></code>:"
|
||||
},
|
||||
"connect": {
|
||||
"heading": "Collegamento da clienti",
|
||||
"headerOs": "Sistema operativo del client",
|
||||
"headerHow": "Come collegare",
|
||||
"windowsOs": "Windows",
|
||||
"windowsHowRich": "Esplora file → barra degli indirizzi: <code>\\\\<ct-ip>\\<share-name></code>. Oppure <em>Connetti unità di rete</em> → seleziona «Connetti con credenziali diverse».",
|
||||
"macosOs": "macOS",
|
||||
"macosHowRich": "Finder → <em>Vai → Connessione al server...</em> → <code>smb://<ct-ip>/<share-name></code>. O <code>mount_smbfs //user@<ct-ip>/<share> /mountpoint</code>.",
|
||||
"linuxOs": "Linux",
|
||||
"linuxHowRich": "<code>mount -t cifs //<ct-ip>/<share> /mnt/x -o username=<u>,password=<p>,iocharset=utf8</code>. Oppure utilizzare il client <clientLink>Samba nella pagina LXC</clientLink> se il client è un altro Proxmox CT."
|
||||
},
|
||||
"view": {
|
||||
"heading": "Visualizza le condivisioni attuali",
|
||||
"body": "Analizza <code>/etc/samba/smb.conf</code> all'interno del CT e elenca ogni blocco <code>[share]</code> (saltando <code>[global]</code>, <code>[homes]</code>, <code>[printers]</code>) con il suo percorso. Utile come un inventario rapido."
|
||||
},
|
||||
"delete": {
|
||||
"heading": "Elimina una condivisione",
|
||||
"body": "Consente di selezionare una condivisione per nome, rimuove il blocco da <code>smb.conf</code> (<code>sed</code> cancella da <code>[share]</code> fino alla prossima riga vuota), e riavvia <code>smbd</code>. La cartella stessa e il suo contenuto sono lasciati intatti."
|
||||
},
|
||||
"status": {
|
||||
"heading": "Controlla lo stato Samba",
|
||||
"body": "Indica se <code>smbd</code> e <code>nmbd</code> sono installati e attivi, elenca gli utenti Samba (<code>pdbedit -L</code>) e mostra le sessioni attive (<code>smbstatus</code>)."
|
||||
},
|
||||
"uninstall": {
|
||||
"heading": "Disinstallare il server Samba",
|
||||
"body": "Pulizia completa dopo conferma: arresta e disabilita <code>smbd</code> e <code>nmbd</code>, salva <code>smb.conf</code> in <code>smb.conf.backup.YYYYMMDD_HHMMSS</code>, rimuove gli utenti Samba con <code>smbpasswd -x</code> e i pacchetti Samba con <code>apt-get purge</code>. Le <strong>cartelle esportate non vengono eliminate</strong>.",
|
||||
"warnTitle": "Le cartelle rimangono — esegui il backup dei dati separatamente",
|
||||
"warnBody": "<em>Elimina condivisione</em> e <em>Disinstalla server Samba</em> rimuovono la configurazione della condivisione. I dati delle cartelle esportate vengono conservati. Per eliminarli, usa esplicitamente <code>rm -rf</code> dopo la fine dello script."
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Risoluzione dei problemi",
|
||||
"privTitle": "Richiesto un container privilegiato (lo script si interrompe)",
|
||||
"privBody": "Il CT selezionato non è privilegiato e <code>smbd</code> non può servire i file lì. Se si bypassa il controllo e si configura Samba a mano, <code>smbd</code> inizia e le porte si aprono, ma la prima connessione client provoca un arresto con <code>PANIC: sys_setgroups failed</code> in <code>/var/log/samba/log.<client></code> e il client vede <code>NT_STATUS_CONNECTION_DISCONNECTED</code>. La causa è lo spazio di nome utente non privilegiato con <code>setgroups=deny</code>, che blocca l'impersonazione per connessione di Samba. Né <code>features=keyctl=1</code> né rimuovere <code>force user</code> / <code>force group</code> cambia questo. Le uniche opzioni praticabili sono: convertire il CT in privilegiato, o spostare Samba in una VM.",
|
||||
"aptTitle": "apt-get install non riesce",
|
||||
"aptIntro": "Lo script assume una famiglia Debian CT. Su Alpine / Arch / Rocky / Alma, installare Samba a mano:",
|
||||
"aptItems": [
|
||||
"Alpine: <code>apk add samba</code>",
|
||||
"Arch: <code>pacman -S samba</code>",
|
||||
"Rocky / Alma: <code>dnf install samba</code>"
|
||||
],
|
||||
"aptOutro": "Esegui di nuovo lo script ProxMenux; l’installazione viene saltata se gli strumenti sono già presenti.",
|
||||
"noShareTitle": "Il client si connette ma non vede la condivisione",
|
||||
"noShareBody": "Controllare che <code>browseable = yes</code> è impostato nel blocco della condivisione (default per modalità rw / ro; può essere mancante in personalizzato). Controllare anche il firewall CT e il firewall host Proxmox consentire TCP 445 (SMB) e 139 (NetBIOS). Alcuni client Windows richiedono anche la risoluzione dei nomi — prova l'IP direttamente prima.",
|
||||
"authTitle": "L'autenticazione fallisce (NT_STATUS_LOGON_FAILURE)",
|
||||
"authBody": "La password è errata (le password Samba sono <em>separate</em> da quelle di sistema; elenca gli utenti Samba con <code>pdbedit -L</code>) oppure l’utente manca in <code>valid users</code> per la condivisione. Reimposta la password nel CT con <code>smbpasswd <user></code>.",
|
||||
"groupTitle": "I file scritti dal client appaiono con gruppo sbagliato sul server",
|
||||
"groupBody": "Lo script imposta <code>force group = sharedfiles</code> nel blocco della condivisione, quindi nuovi file dovrebbero essere di gruppo <code>sharedfiles</code>. Se non lo sono, il bit SGID sulla directory principale può essere perso (qualcuno ha eseguito <code>chmod</code> a mano). Riapplica: <code>chmod 2775 /mnt/<share></code>.",
|
||||
"bothTitle": "Condividere la stessa cartella sia su NFS che su Samba",
|
||||
"bothBody": "ProxMenux utilizza diversi GID per <code>sharedfiles</code> in ogni script (Samba: 999, NFS: 101000). Se si serve la stessa cartella tramite entrambi, decidere su un GID e allineare entrambi. La soluzione più semplice: dopo aver eseguito entrambi gli script, modificare il GID più piccolo:"
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/storage-share/lxc-samba-client",
|
||||
"label": "client Samba in LXC",
|
||||
"tail": " — il caso inverso: montare condivisioni Samba esterne nel CT."
|
||||
},
|
||||
{
|
||||
"href": "/docs/storage-share/lxc-nfs-server",
|
||||
"label": "Server NFS in LXC",
|
||||
"tail": " — pagina correlata, stesso schema con NFS al posto di CIFS."
|
||||
},
|
||||
{
|
||||
"href": "/docs/storage-share/host-samba",
|
||||
"label": "Samba / CIFS come storage Proxmox",
|
||||
"tailRich": " — quando il CT espone l’esportazione, registra la condivisione Samba in Proxmox per visualizzarla in <em>Datacenter → Storage</em>."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,145 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Esportare una VM in OVA / OVF | Documentazione ProxMenux",
|
||||
"description": "Esporta una VM Proxmox in un archivio OVA portabile o in una directory OVF usando lo schema DMTF standard. Dischi VMDK in formato streamOptimized e manifesto SHA1. Importabile in VMware ESXi / Workstation / Fusion, VirtualBox e nuovamente in Proxmox.",
|
||||
"ogTitle": "Esportare una VM in OVA / OVF | Documentazione ProxMenux",
|
||||
"ogDescription": "Converti una VM Proxmox in un pacchetto OVA / OVF portabile compatibile con VMware e VirtualBox."
|
||||
},
|
||||
"header": {
|
||||
"title": "Esportare una VM in OVA / OVF",
|
||||
"description": "Converte una VM Proxmox in un pacchetto OVA portabile (un unico archivio TAR) o OVF (descrittore e file VMDK) usando lo schema OVF standard di DMTF. I dischi vengono convertiti con qemu-img in VMDK streamOptimized. Il risultato è importabile in VMware (ESXi / Workstation / Fusion), VirtualBox e nuovamente in Proxmox tramite lo strumento di importazione.",
|
||||
"section": "Utilità"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Cosa fa",
|
||||
"body": "Legge la configurazione di una VM arrestata, converte ogni disco in VMDK streamOptimized, genera un descrittore OVF e un manifesto SHA1 e raggruppa tutto in un unico file <code>.ova</code> o in una directory <code>-ovf</code>. La VM di origine non viene mai modificata."
|
||||
},
|
||||
"picker": {
|
||||
"heading": "Selettore di VM",
|
||||
"body": "All’avvio, lo script elenca tutte le VM di <code>qm list</code> con VMID, nome e stato. Scegli quella da esportare:",
|
||||
"imgAlt": "Finestra di selezione della VM da esportare con l’elenco di tutte le VM"
|
||||
},
|
||||
"stopped": {
|
||||
"heading": "La VM deve essere arrestata",
|
||||
"intro": "Per ottenere un’immagine disco coerente la VM deve essere arrestata. Se la VM selezionata è in esecuzione, ProxMenux propone di arrestarla:",
|
||||
"items": [
|
||||
"Arresto regolare tramite <code>qm shutdown $VMID --timeout 120</code> (attende 2 minuti l’arresto ACPI del sistema guest).",
|
||||
"Se scade il tempo di attesa, propone un arresto forzato: <code>qm stop $VMID</code> (equivale a togliere l’alimentazione).",
|
||||
"Se rifiuti entrambe le opzioni, l’esportazione viene annullata senza modificare i dati."
|
||||
],
|
||||
"warnTitle": "L’arresto forzato equivale a togliere l’alimentazione",
|
||||
"warnBody": "<code>qm stop</code> equivale a staccare la corrente. Al successivo avvio il sistema guest potrebbe richiedere una riparazione del file system. Preferisci l’arresto regolare quando possibile e riserva quello forzato ai sistemi guest che non rispondono."
|
||||
},
|
||||
"format": {
|
||||
"heading": "Selettore del formato: OVA oppure OVF",
|
||||
"headerFormat": "Formato",
|
||||
"headerOutput": "Output",
|
||||
"headerPros": "Vantaggi",
|
||||
"headerCons": "Svantaggi",
|
||||
"rows": [
|
||||
{
|
||||
"format": "OVA",
|
||||
"output": "name-vmid-ts.ova",
|
||||
"pros": "Un unico file autonomo, facile da spostare, trasferire tramite sftp o allegare a un ticket.",
|
||||
"cons": "Richiede ~220% della dimensione virtuale del disco (spazio aggiuntivo per l’archivio TAR durante la creazione)."
|
||||
},
|
||||
{
|
||||
"format": "OVF",
|
||||
"output": "name-vmid-ts-ovf/",
|
||||
"pros": "~120% della dimensione virtuale del disco. Più facile da esaminare, perché il descrittore è XML testuale. Modificabile prima dell’importazione.",
|
||||
"cons": "Più file, da trasferire tutti insieme."
|
||||
}
|
||||
]
|
||||
},
|
||||
"destination": {
|
||||
"heading": "Directory di destinazione",
|
||||
"body": "Scegli un percorso predefinito (<code>/var/lib/vz/dump</code>, <code>/var/lib/vz/template/iso</code>) oppure inseriscine uno personalizzato. Lo script verifica che la directory sia scrivibile e avvisa se lo spazio libero sembra insufficiente prima di iniziare.",
|
||||
"calloutTitle": "Stima orientativa dello spazio libero",
|
||||
"calloutBody": "Per esportare in OVF una VM con dischi che totalizzano 100 GB virtuali, prevedi ~120 GB liberi; per OVA, ~220 GB. L’utilizzo effettivo può essere inferiore per dischi quasi vuoti. L’archivio OVA viene creato con TAR non compresso mentre esistono ancora i file VMDK temporanei: occorre quindi spazio per entrambi. Se lo spazio termina durante l’esportazione, il gestore di EXIT pulisce la directory temporanea e devi ricominciare."
|
||||
},
|
||||
"package": {
|
||||
"heading": "Cosa finisce nel pacchetto",
|
||||
"intro": "Per un OVA / OVF chiamato <code>myvm-100-2026-04-26_18-30-15</code>:",
|
||||
"code": "# OVA mode (single .ova file is a TAR of):\nmyvm-100-2026-04-26_18-30-15.ovf # XML descriptor (DMTF OVF 1.0 + RASD + VSSD)\nmyvm-100-2026-04-26_18-30-15.mf # SHA1 manifest\nmyvm-100-2026-04-26_18-30-15-disk0.vmdk\nmyvm-100-2026-04-26_18-30-15-disk1.vmdk\n...\n\n# OVF mode (a directory):\nmyvm-100-2026-04-26_18-30-15-ovf/\n├── myvm-100-2026-04-26_18-30-15.ovf\n├── myvm-100-2026-04-26_18-30-15.mf\n├── myvm-100-2026-04-26_18-30-15-disk0.vmdk\n└── myvm-100-2026-04-26_18-30-15-disk1.vmdk"
|
||||
},
|
||||
"exported": {
|
||||
"heading": "Cosa viene esportato",
|
||||
"items": [
|
||||
"<strong>Dischi:</strong> tutte le voci <code>scsi*</code>, <code>sata*</code>, <code>virtio*</code> e <code>ide*</code> nella configurazione della VM, convertite in VMDK streamOptimized.",
|
||||
"<strong>Numero di vCPU</strong> (RASD ResourceType 3) e <strong>memoria</strong> in MiB (ResourceType 4).",
|
||||
"<strong>Numero di schede di rete</strong> (ResourceType 10: solo il numero, senza bridge o modello).",
|
||||
"<strong>Nome della VM</strong> e indicazione del tipo di sistema operativo."
|
||||
],
|
||||
"notTitle": "Che cosa NON è esportato",
|
||||
"notItems": [
|
||||
"Montaggi CD-ROM e ISO, esclusi intenzionalmente.",
|
||||
"Unità cloud-init (escluse intenzionalmente).",
|
||||
"Bridge e modello specifici della scheda di rete (viene conservato solo il numero).",
|
||||
"Scelta BIOS / UEFI, da riconfigurare durante l’importazione.",
|
||||
"Configurazione del passthrough PCI.",
|
||||
"Snapshot: viene acquisito solo lo stato attuale.",
|
||||
"Opzioni di livello VM (NUMA, pagine enormi, hotplug, ...)."
|
||||
]
|
||||
},
|
||||
"conversion": {
|
||||
"heading": "Conversione del disco",
|
||||
"intro": "Ogni disco viene convertito con:",
|
||||
"code": "qemu-img convert -p -O vmdk -o subformat=streamOptimized \\\n \"$source_path\" \\\n \"$work_dir/<base_name>-disk<N>.vmdk\"",
|
||||
"outro": "<code>streamOptimized</code> è il formato VMware leggibile in un solo passaggio, supportato da ESXi 6.7+, VMware Workstation, VirtualBox e dallo stesso Proxmox. È il sottoformato VMDK più ampiamente compatibile e adatto alla portabilità. Lo svantaggio è che non consente l’accesso casuale e quindi non può essere montato direttamente senza conversione."
|
||||
},
|
||||
"manifest": {
|
||||
"heading": "Manifesto SHA1",
|
||||
"intro": "Ogni pacchetto include un file <code>.mf</code> con gli hash SHA1 del descrittore OVF e di ogni VMDK:",
|
||||
"code": "SHA1(myvm-100-2026-04-26_18-30-15.ovf)= 3a7bd3e2360a3d29eea436fcfb7e44c735d117c9\nSHA1(myvm-100-2026-04-26_18-30-15-disk0.vmdk)= b7e23ec29af22b0b4e41da31e868d57226121c84\nSHA1(myvm-100-2026-04-26_18-30-15-disk1.vmdk)= a87ff679a2f3e71d9181a67b7542122c",
|
||||
"outro": "È facoltativo nella specifica OVF e molti programmi lo ignorano, ma serve a verificare che il pacchetto sia stato trasferito integro. Verificalo manualmente con <code>sha1sum -c file.mf</code>."
|
||||
},
|
||||
"import": {
|
||||
"heading": "Importazione del risultato",
|
||||
"intro": "Il pacchetto esportato può essere importato in:",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/utils/import-vm",
|
||||
"preRich": "<strong>Proxmox</strong> — usa lo strumento corrispondente ",
|
||||
"linkLabel": "Importa VM da OVA / OVF",
|
||||
"tailRich": "."
|
||||
},
|
||||
{
|
||||
"tailRich": "<strong>VMware ESXi</strong> — Datacenter → Deploy OVF Template; seleziona il file .ova o .ovf."
|
||||
},
|
||||
{
|
||||
"tailRich": "<strong>VMware Workstation / Fusion</strong> — File → Open; seleziona il file .ova o .ovf."
|
||||
},
|
||||
{
|
||||
"tailRich": "<strong>VirtualBox</strong> — File → Import Appliance; seleziona il file .ova o .ovf."
|
||||
}
|
||||
]
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Risoluzione dei problemi",
|
||||
"noSpaceTitle": "qemu-img convert si interrompe durante la conversione con \"No space left on device\"",
|
||||
"noSpaceBody": "La destinazione ha esaurito lo spazio. Il gestore di EXIT pulisce automaticamente la directory temporanea. Scegli una destinazione con più spazio libero (vedi la stima precedente) e ripeti l’esportazione.",
|
||||
"unsupportedHwTitle": "L’esportazione termina ma VMware rifiuta l’importazione: \"Unsupported hardware family\"",
|
||||
"unsupportedHwBody": "Alcune versioni di ESXi rifiutano descrittori OVF che dichiarano una famiglia hardware sconosciuta. Apri il .ovf in un editor di testo, oppure estrai prima il .ova, cerca <code><vssd:VirtualSystemType></code> e imposta un valore accettato da ESXi, ad esempio <code>vmx-13</code> per ESXi 6.5+. Per aggirare rapidamente il problema, prova VirtualBox, che è più permissivo.",
|
||||
"nicTitle": "La VM importata usa una scheda di rete o un controller SCSI diverso",
|
||||
"nicBody": "L’OVF conserva il numero di schede di rete, non il modello originale. Controlla le impostazioni di rete della VM importata nell’hypervisor di destinazione. L’esportazione dichiara un controller SCSI lsilogic per la compatibilità con VMware. Quando reimporti in Proxmox con ProxMenux, la VM viene creata con un controller LSI e schede e1000; passa poi a <code>VirtIO SCSI</code> e VirtIO se il sistema guest dispone dei driver adatti.",
|
||||
"runningTitle": "La VM era in esecuzione e ho rifiutato di arrestarla: esportazione annullata",
|
||||
"runningBody": "Lo script non può produrre un’immagine coerente mentre vengono scritti dati sui dischi. Accetta la richiesta di arresto la prossima volta, oppure arresta prima la VM manualmente (<code>qm shutdown $VMID</code>) e ripeti l’esportazione.",
|
||||
"slowTitle": "La conversione del disco è lenta",
|
||||
"slowBody": "<code>qemu-img convert</code> usa un solo thread e legge l’origine alla massima velocità. Per un disco da 100 GB su un disco rigido meccanico, prevedi 15–30 minuti. Da NVMe a NVMe è 5–10 volte più veloce. I dischi di una VM vengono convertiti in sequenza; il tempo aumenta linearmente con la dimensione virtuale totale."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/utils/import-vm",
|
||||
"label": "Importa VM da OVA / OVF",
|
||||
"tail": " — lo strumento complementare per reimportare la VM."
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils",
|
||||
"label": "Panoramica delle utilità",
|
||||
"tail": " — torna alla panoramica della sezione."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,218 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Importare una VM da OVA / OVF | Documentazione ProxMenux",
|
||||
"description": "Importa una VM VMware ESXi / Workstation / Fusion / VirtualBox / ProxMenux in Proxmox VE. Estrae automaticamente OVA, analizza i metadati OVF, crea la VM e importa ogni disco nel formato nativo dello storage (qcow2 / raw).",
|
||||
"ogTitle": "Importare una VM da OVA / OVF | Documentazione ProxMenux",
|
||||
"ogDescription": "Importa in Proxmox le VM esportate da VMware, VirtualBox o ProxMenux. I dischi vengono convertiti automaticamente nel formato nativo dello storage."
|
||||
},
|
||||
"header": {
|
||||
"title": "Importa VM da OVA / OVF",
|
||||
"description": "Importa un pacchetto OVA / OVF in Proxmox VE: estrae gli archivi OVA, legge dal descrittore OVF vCPU, memoria, numero di schede di rete e riferimenti ai dischi, poi crea la VM e importa ogni disco con qm importdisk nello storage scelto. Compatibile con le esportazioni VMware (ESXi / Workstation / Fusion), VirtualBox e ProxMenux.",
|
||||
"section": "Utilità"
|
||||
},
|
||||
"intro": {
|
||||
"title": "Cosa fa",
|
||||
"body": "Crea una VM completa in Proxmox da un pacchetto portabile. Dopo l’importazione è pronta per l’avvio; si consigliano alcuni controlli e regolazioni di modello della scheda di rete, firmware e tipo di sistema operativo per prestazioni e compatibilità."
|
||||
},
|
||||
"picker": {
|
||||
"heading": "Selettore di file",
|
||||
"intro": "Al lancio, lo script offre due directory preimpostate o un percorso manuale:",
|
||||
"items": [
|
||||
"<code>/var/lib/vz/dump</code> — la directory di backup Proxmox vzdump predefinita.",
|
||||
"<code>/var/lib/vz/template/iso</code> — utile se vi hai trasferito il file OVA tramite sftp.",
|
||||
"Percorso manuale — per i file OVA / OVF altrove sull'host."
|
||||
],
|
||||
"outro": "Quindi elenca ogni file <code>.ova</code> e <code>.ovf</code> nella directory selezionata.",
|
||||
"imageAlt": "Finestra di selezione del file della VM da importare"
|
||||
},
|
||||
"flow": {
|
||||
"heading": "Come funziona l'importazione",
|
||||
"nodes": [
|
||||
{
|
||||
"label": "Ingresso OVA / OVF",
|
||||
"detail": ".ova → tar xf in\n /tmp/.proxmenux-import-*\n.ovf → usa il file sul posto",
|
||||
"variant": "source"
|
||||
},
|
||||
{
|
||||
"label": "Analisi e finestre di dialogo",
|
||||
"detail": "AWK legge OVF\n(nome, vCPU, RAM, NIC,\ndischi). Scelta di\nVMID / storage / bridge",
|
||||
"variant": "bridge"
|
||||
},
|
||||
{
|
||||
"label": "qm create + importdisk",
|
||||
"detail": "qm create $VMID\nqm importdisk\n(VMDK → formato dello storage)\nqm set --scsiN",
|
||||
"variant": "target"
|
||||
}
|
||||
]
|
||||
},
|
||||
"ovf": {
|
||||
"heading": "Analisi OVF",
|
||||
"intro": "Un parser <strong>gawk</strong> legge il descrittore OVF ed estrae i metadati della VM. Usa <code>match()</code> con tre argomenti, una funzione specifica di gawk non supportata da mawk, il <code>awk</code> predefinito in Debian / Proxmox. Se manca, alla prima importazione gawk viene installato con <code>ensure_repositories</code> + <code>install_single_package</code>; le importazioni successive non richiedono questo passaggio. Campi estratti:",
|
||||
"headerField": "Campo",
|
||||
"headerSource": "Fonte in OVF",
|
||||
"headerDefault": "Predefinito se manca",
|
||||
"rows": [
|
||||
{
|
||||
"field": "Nome VM",
|
||||
"source": "<Name> (prima corrispondenza)",
|
||||
"default": "imported-vm"
|
||||
},
|
||||
{
|
||||
"field": "Conteggio vCPU",
|
||||
"source": "RASD ResourceType 3 → VirtualQuantity",
|
||||
"default": "1"
|
||||
},
|
||||
{
|
||||
"field": "Memoria (MiB)",
|
||||
"source": "RASD ResourceType 4 → VirtualQuantity",
|
||||
"default": "1024"
|
||||
},
|
||||
{
|
||||
"field": "Numero di schede di rete",
|
||||
"source": "conteggio di ResourceType 10",
|
||||
"default": "1"
|
||||
},
|
||||
{
|
||||
"field": "Tipo di sistema operativo",
|
||||
"source": "/Linux/ o /Windows/ nella descrizione",
|
||||
"default": "other"
|
||||
},
|
||||
{
|
||||
"field": "Riferimenti del disco",
|
||||
"source": "attributi href che terminano in .vmdk / .qcow2 / .img / .raw",
|
||||
"default": "Nessuno (importazione annullata)"
|
||||
}
|
||||
]
|
||||
},
|
||||
"memWarn": {
|
||||
"title": "Ambiguità delle unità di memoria",
|
||||
"body": "Il parser converte le unità di memoria riconosciute in <strong>MiB</strong>, inclusi byte, KiB, MiB, GiB e le etichette testuali supportate. Le unità mancanti o sconosciute sono <em>trattate come MiB</em>. Dopo l’importazione, confronta <code>qm config $VMID | grep memory</code> con la RAM documentata della VM di origine e, se serve, correggila con <code>qm set $VMID --memory <MiB></code>."
|
||||
},
|
||||
"dialog": {
|
||||
"heading": "Sequenza delle finestre di importazione",
|
||||
"items": [
|
||||
"<strong>VMID</strong> — propone il prossimo identificativo disponibile (<code>pvesh get /cluster/nextid</code>).",
|
||||
"<strong>Nome della VM</strong> — usa il nome letto nell’OVF; puoi modificarlo.",
|
||||
"<strong>Storage di destinazione</strong> — elenco degli storage con contenuto <code>images</code>, ottenuto da <code>pvesm status -content images</code>.",
|
||||
"<strong>Bridge di rete</strong> — elenco dei bridge da <code>ip link show type bridge</code>. Se ne esiste uno solo, viene scelto automaticamente; il valore predefinito è <code>vmbr0</code>.",
|
||||
"<strong>Conferma</strong> — riepilogo con VMID, nome, vCPU, memoria, schede di rete, storage, bridge e dischi da importare. Annullando qui non viene modificato nulla."
|
||||
]
|
||||
},
|
||||
"create": {
|
||||
"heading": "Creazione VM",
|
||||
"intro": "Dopo la conferma, lo script viene eseguito:",
|
||||
"code": "qm create $VMID \\\n --name \"$NAME\" \\\n --memory $MEMORY \\\n --cores $VCPU \\\n --ostype $OSTYPE \\\n --scsihw lsi \\\n --net0 e1000,bridge=$BRIDGE\n\n# For each additional NIC:\nqm set $VMID --netN e1000,bridge=$BRIDGE",
|
||||
"outro": "Il controller SCSI predefinisce <code>lsi</code> (LSI Logic) per la compatibilità VMDK. NIC di default a <code>e1000</code> (compatibilità universale) sul ponte scelto."
|
||||
},
|
||||
"diskLoop": {
|
||||
"heading": "loop di importazione del disco",
|
||||
"intro": "Per ogni riferimento del disco nell'OVF:",
|
||||
"items": [
|
||||
"<code>qm importdisk $VMID $disk_path $STORAGE</code> — importa il disco in un formato supportato dallo storage di destinazione e crea una voce <code>unusedN:</code> nella configurazione della VM.",
|
||||
"Lo script cerca con grep nella configurazione il riferimento <code>unusedN</code> appena creato.",
|
||||
"<code>qm set $VMID --scsiN $unused_disk</code> — collega il disco come <code>scsi0</code>, <code>scsi1</code>, ...",
|
||||
"<code>qm set $VMID --delete unusedN</code> — elimina il marcatore inutilizzato ormai ridondante."
|
||||
],
|
||||
"outro": "Boot è impostato sul primo disco SCSI: <code>qm set $VMID --boot c --bootdisk scsi0</code>."
|
||||
},
|
||||
"postImport": {
|
||||
"heading": "Regolazioni consigliate dopo l’importazione",
|
||||
"intro": "L’importazione usa impostazioni ampiamente compatibili per favorire l’avvio al primo tentativo. Dopo aver verificato l’avvio, puoi scegliere impostazioni più efficienti dall’interfaccia Proxmox o dalla CLI:",
|
||||
"headerSetting": "Impostazione",
|
||||
"headerDefault": "Predefinito dopo l'importazione",
|
||||
"headerRecommended": "Consigliato se supportato dal sistema guest",
|
||||
"rows": [
|
||||
{
|
||||
"setting": "Modello NIC",
|
||||
"default": "e1000",
|
||||
"recommended": "VirtIO (molto più veloce, richiede un driver nel sistema guest)"
|
||||
},
|
||||
{
|
||||
"setting": "Controller SCSI",
|
||||
"default": "LSI",
|
||||
"recommended": "VirtIO SCSI single (Linux recente o Windows con driver VirtIO)"
|
||||
},
|
||||
{
|
||||
"setting": "Firmware (BIOS / UEFI)",
|
||||
"default": "Predefinizione Proxmox (BIOS)",
|
||||
"recommended": "Usa il firmware della VM di origine; una scelta errata impedisce l’avvio"
|
||||
},
|
||||
{
|
||||
"setting": "QEMU agente ospite",
|
||||
"default": "Disattivato",
|
||||
"recommendedRich": "Attiva e installa <code>qemu-guest-agent</code> nel sistema guest (backup migliori e rilevamento degli IP)"
|
||||
},
|
||||
{
|
||||
"setting": "Tipo di sistema operativo",
|
||||
"default": "l26 / win10 / other (euristica)",
|
||||
"recommended": "Verificare contro il sistema operativo ospite effettivo"
|
||||
},
|
||||
{
|
||||
"setting": "Schermo",
|
||||
"default": "Predefinito",
|
||||
"recommended": "VirtIO-GPU o SPICE (migliori prestazioni della console)"
|
||||
}
|
||||
]
|
||||
},
|
||||
"fwWarn": {
|
||||
"title": "Firmware mismatch = nessun boot",
|
||||
"body": "Se la VM di origine usava UEFI ma Proxmox la crea con BIOS, o viceversa, il sistema guest non trova un disco avviabile. Controlla <em>FirmwareType / firmware</em> nell’OVF o nella VM originale e usa la stessa scelta in Proxmox: <code>qm set $VMID --bios ovmf</code> per UEFI; il valore predefinito per BIOS è <code>seabios</code>."
|
||||
},
|
||||
"notImported": {
|
||||
"heading": "Cosa NON viene importato",
|
||||
"items": [
|
||||
"<strong>Bridge di rete specifici</strong> — viene conservato solo il numero di schede. Tutte usano il bridge scelto durante l’importazione.",
|
||||
"<strong>Modello della scheda di rete</strong> — usa e1000 come valore predefinito.",
|
||||
"<strong>Tipo di firmware BIOS / UEFI</strong> — usa il valore predefinito Proxmox, BIOS.",
|
||||
"<strong>Configurazione del passthrough PCI</strong>.",
|
||||
"<strong>TPM</strong> (vTPM).",
|
||||
"Unità <strong>cloud-init</strong>.",
|
||||
"<strong>Snapshots</strong> — solo lo stato attuale.",
|
||||
"<strong>USB / dispositivi seriali / paralleli</strong> dichiarati nell'OVF.",
|
||||
"<strong>VM tag / note / start-on-boot</strong> opzioni."
|
||||
]
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Risoluzione dei problemi",
|
||||
"orphanTitle": "La VM è stata creata ma l’importazione dei dischi è fallita: rimane una VM parziale",
|
||||
"orphanIntro": "Se l’importazione fallisce, lo script propone di eliminare la VM parziale e i dischi importati. Se hai rifiutato o l’eliminazione automatica è fallita, esamina la VM ed eliminala manualmente con:",
|
||||
"orphanCode": "qm destroy $VMID --destroy-unreferenced-disks 1",
|
||||
"orphanOutro": "Correggi poi la causa, probabilmente lo spazio nello storage di destinazione, e ripeti l’importazione.",
|
||||
"memTitle": "La VM importata ha 8 MB di RAM, oppure 8 TB",
|
||||
"memIntro": "Il parser converte le AllocationUnits riconosciute in MiB. Le unità mancanti o sconosciute sono trattate come MiB. Esamina l’OVF e confronta la memoria importata con quella della VM di origine. Correggila se necessario:",
|
||||
"memCode": "qm set $VMID --memory 8192 # 8 GiB",
|
||||
"bootTitle": "La VM importata non si avvia: \"No bootable device\"",
|
||||
"bootIntro": "Una causa frequente è la mancata corrispondenza BIOS / UEFI. La VM usava UEFI, ma Proxmox l’ha creata con BIOS. Imposta il firmware corrispondente:",
|
||||
"bootCode": "qm set $VMID --bios ovmf # UEFI\n# also add an EFI disk for the EFI vars:\nqm set $VMID --efidisk0 $STORAGE:1,format=qcow2,efitype=4m,pre-enrolled-keys=1",
|
||||
"bootOutro": "Un’altra causa frequente: l’ordine di avvio indica scsi0, ma il disco del sistema operativo è scsi1. Modifica l’ordine nella scheda Opzioni della VM.",
|
||||
"bsodTitle": "Una VM Windows esportata da VMware mostra una schermata blu al primo avvio",
|
||||
"bsodBody": "Windows è sensibile ai cambiamenti del controller disco. Installa i driver VirtIO <em>prima</em> dell’esportazione da VMware oppure mantieni il controller <code>lsi</code> predefinito. Passa a VirtIO SCSI solo dopo aver avviato il sistema guest e installato i driver VirtIO in Windows.",
|
||||
"zeroTitle": "Il parser OVF rileva 0 dischi",
|
||||
"zeroBody": "L’OVF potrebbe usare riferimenti ai dischi non riconosciuti dal parser. Aprilo e cerca per ogni disco una voce <code><File ovf:href=\"...vmdk\" ...></code>. Se il disco è davvero VMDK, ma ha un’estensione insolita come <code>.dat</code>, rinominalo in <code>.vmdk</code> e aggiorna il riferimento OVF. Rinominare non converte il formato.",
|
||||
"awkTitle": "awk: errore sintassi a o vicino , — parser fallisce su ogni OVA / OVF",
|
||||
"awkIntro": "Il parser OVF usa la sintassi gawk di <code>match()</code> con tre argomenti, non supportata da mawk, il <code>awk</code> predefinito di Debian / Proxmox. Le versioni recenti installano gawk al primo utilizzo tramite <code>ensure_repositories</code> + <code>install_single_package</code>. Se usi una copia precedente, installalo manualmente:",
|
||||
"awkCode": "apt-get install -y gawk",
|
||||
"awkOutro": "Poi ripeti l’importazione.",
|
||||
"netTitle": "Rete che non funziona dopo il primo avvio",
|
||||
"netBody": "Il sistema guest potrebbe non avere i driver per il modello e1000, oppure il bridge scelto potrebbe essere errato. Nella scheda Hardware della VM, cambia Network Device → Model. Controlla anche <code>ip a</code> nel sistema guest: l’interfaccia potrebbe chiamarsi ens18 anziché eth0, mentre la configurazione di rete usa ancora il vecchio nome."
|
||||
},
|
||||
"files": {
|
||||
"heading": "File coinvolti",
|
||||
"code": "scripts/utilities/import_vm_ova_ovf.sh # this script\n/tmp/.proxmenux-import-*/ # temp extraction dir for OVA\n/etc/pve/nodes/<node>/qemu-server/<vmid>.conf # created by qm create\n<storage>/<vmid>/<vmid>-disk-<n>.<fmt> # disk images, format depends on storage"
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/utils/export-vm",
|
||||
"label": "Esportazione VM a OVA / OVF",
|
||||
"tail": " — lo strumento complementare per esportare la VM."
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils",
|
||||
"label": "Panoramica delle utilità",
|
||||
"tail": " — torna alla panoramica della sezione."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,115 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Utilità Proxmox — UUP Dump, aggiornamento da PVE 8 a 9, esportazione/importazione OVA | ProxMenux",
|
||||
"description": "Utilità quotidiane per Proxmox VE: creare ISO di Windows con UUP Dump, installare una selezione di strumenti CLI, aggiornare il sistema Proxmox in sicurezza, passare da PVE 8 a PVE 9, esportare VM in OVA / OVF e importare VM OVA / OVF da VMware o VirtualBox.",
|
||||
"ogTitle": "Utilità Proxmox — UUP Dump, aggiornamento da PVE 8 a 9, esportazione/importazione OVA",
|
||||
"ogDescription": "Crea ISO di Windows, installa strumenti CLI, esegui un aggiornamento sicuro, passa da PVE 8 a PVE 9 ed esporta o importa VM OVA / OVF.",
|
||||
"twitterTitle": "Utilità Proxmox | ProxMenux",
|
||||
"twitterDescription": "Creazione di ISO, strumenti CLI, aggiornamento di Proxmox, passaggio PVE 8→9 e portabilità delle VM OVA / OVF."
|
||||
},
|
||||
"header": {
|
||||
"title": "Utilità e strumenti",
|
||||
"description": "Sei strumenti completano le attività quotidiane in Proxmox VE: creazione di ISO, manutenzione del sistema e portabilità delle VM. Ogni opzione è indipendente: scegli quella che ti serve; non viene installato nulla finché non lo richiedi.",
|
||||
"section": "Utilità"
|
||||
},
|
||||
"intro": {
|
||||
"title": "A cosa serve questo menu",
|
||||
"body": "Tre gruppi di strumenti indipendenti ma spesso utili: <strong>creare una ISO di Windows</strong> con UUP Dump, <strong>gestire la manutenzione dell’host Proxmox</strong> (utilità CLI, aggiornamenti e passaggio di versione principale) e <strong>importare ed esportare VM</strong> in Proxmox nel formato standard OVA / OVF."
|
||||
},
|
||||
"opening": {
|
||||
"heading": "Apertura del menu",
|
||||
"body": "Dal menu principale di ProxMenux, seleziona <strong>Utilities</strong>. Vedrai questa schermata:",
|
||||
"imageAlt": "Menu delle utilità con UUP Dump, utilità di sistema, aggiornamento, passaggio di versione, esportazione e importazione"
|
||||
},
|
||||
"groups": {
|
||||
"heading": "Tre gruppi di strumenti",
|
||||
"intro": "I sei strumenti sono suddivisi in tre gruppi indipendenti. Fai clic su una scheda qui sotto per passare alla sezione corrispondente.",
|
||||
"iso": {
|
||||
"title": "Creazione ISO",
|
||||
"body": "Crea ISO ufficiali di Windows con UUP Dump direttamente sull’host Proxmox.",
|
||||
"bullets": [
|
||||
"Link condiviso di UUP Dump → ISO avviabile",
|
||||
"Dipendenze installate automaticamente",
|
||||
"Il risultato viene salvato nella directory dei modelli ISO di Proxmox"
|
||||
]
|
||||
},
|
||||
"maintenance": {
|
||||
"title": "Manutenzione del sistema",
|
||||
"body": "Mantieni l’host in buone condizioni con strumenti CLI, aggiornamenti regolari e il passaggio di versione principale quando necessario.",
|
||||
"bullets": [
|
||||
"Installatore di utilità di sistema (25 strumenti CLI)",
|
||||
"Aggiornamento del sistema Proxmox (apt + dist-upgrade)",
|
||||
"Passaggio di versione principale PVE 8 → PVE 9"
|
||||
]
|
||||
},
|
||||
"portability": {
|
||||
"title": "Portabilità VM",
|
||||
"body": "Spostare le VM dentro e fuori Proxmox utilizzando il formato standard OVA / OVF.",
|
||||
"bullets": [
|
||||
"Esportazione Proxmox VM → OVA / OVF",
|
||||
"Importazione OVA / OVF → Proxmox VM",
|
||||
"Compatibile con VMware e VirtualBox"
|
||||
]
|
||||
}
|
||||
},
|
||||
"upgradeWarn": {
|
||||
"title": "L'aggiornamento PVE 8 → 9 è distruttivo e non reversibile",
|
||||
"body": "Un aggiornamento di versione principale sostituisce sul posto la base Debian (Bookworm → Trixie) e i componenti Proxmox. Non è previsto un ripristino della versione precedente: prima di iniziare servono <strong>backup verificati</strong> di ogni VM e CT e <strong>accesso tramite console / IPMI / iKVM</strong>. Per questo lo strumento rifiuta l’esecuzione dal terminale web di Proxmox."
|
||||
},
|
||||
"isoSection": {
|
||||
"heading": "Creazione ISO",
|
||||
"body": "Crea una nuova ISO di installazione di Windows aggiornata direttamente sull’host Proxmox. Lo script automatizza l’intero processo UUP Dump: installazione delle dipendenze (aria2c, cabextract, wimlib-imagex, …), download parallelo dei file di aggiornamento tramite aria2 e conversione in una singola ISO avviabile. La ISO viene salvata in <code>/var/lib/vz/template/iso</code>, pronta da collegare a una VM.",
|
||||
"options": [
|
||||
{
|
||||
"title": "Creatore di ISO UUP Dump",
|
||||
"description": "Crea una ISO di installazione di Windows aggiornata da un link condiviso di UUP Dump. Dipendenze, download e conversione sono completamente automatizzati; la ISO risultante viene salvata in /var/lib/vz/template/iso, pronta per creare una VM.",
|
||||
"href": "/docs/utils/UUp-Dump-ISO-Creator"
|
||||
}
|
||||
]
|
||||
},
|
||||
"maintenanceSection": {
|
||||
"heading": "Manutenzione del sistema",
|
||||
"body": "Tre strumenti coprono le attività quotidiane e occasionali sull’host. L’<strong>Installatore di utilità di sistema</strong> configura gli strumenti CLI utili dopo una nuova installazione. L’<strong>Aggiornamento del sistema Proxmox</strong> esegue la manutenzione settimanale o mensile. Il <strong>Passaggio da PVE 8 a PVE 9</strong> è il grande cambiamento di ogni ciclo di versione principale, con controlli di sicurezza aggiuntivi perché non è reversibile.",
|
||||
"options": [
|
||||
{
|
||||
"title": "Installatore di utilità di sistema",
|
||||
"description": "Selettore di 25 strumenti CLI scelti (htop, btop, iperf3, tmux, ...) con selezione personalizzata o gruppi predefiniti (base, sviluppo, compressione, multiplexer, analisi, rete). Usa il flusso standard con repository e comando di verifica.",
|
||||
"href": "/docs/utils/system-utils"
|
||||
},
|
||||
{
|
||||
"title": "Aggiornamento sistema Proxmox",
|
||||
"description": "Controllo dei repository + apt update + apt dist-upgrade, con conferma prima del riavvio. Rileva la versione principale di PVE (8 o 9), mantiene i repository configurati e chiede conferma prima di passare un host senza abbonamento al repository no-subscription, quindi esegue autoremove.",
|
||||
"href": "/docs/utils/system-update"
|
||||
},
|
||||
{
|
||||
"title": "Aggiorna PVE 8 a PVE 9",
|
||||
"description": "Passaggio di versione principale (Debian Bookworm → Trixie + PVE 8 → 9). Controlli preliminari, migrazione dei repository, modalità automatizzata o interattiva, verifica finale e riavvio. Rifiuta l’esecuzione dal terminale web.",
|
||||
"href": "/docs/utils/upgrade-pve8-pve9"
|
||||
}
|
||||
]
|
||||
},
|
||||
"portabilitySection": {
|
||||
"heading": "Portabilità VM (OVA / OVF)",
|
||||
"body": "OVA e OVF sono formati di pacchettizzazione tra hypervisor definiti dallo standard DMTF e supportati da VMware, VirtualBox e Proxmox. I due strumenti consentono esportazione e reimportazione: una VM esportata da Proxmox può essere reimportata e viceversa. Usali per migrare carichi di lavoro da ESXi, creare un backup portabile di una VM o condividere una VM preparata con chi usa VirtualBox.",
|
||||
"options": [
|
||||
{
|
||||
"title": "Esportazione VM a OVA / OVF",
|
||||
"description": "Converti una VM Proxmox in un archivio OVA portabile o in una directory OVF. Schema DMTF standard, manifesto SHA1 e dischi VMDK in formato streamOptimized. Importabile in VMware (ESXi / Workstation / Fusion), VirtualBox e nuovamente in Proxmox.",
|
||||
"href": "/docs/utils/export-vm"
|
||||
},
|
||||
{
|
||||
"title": "Importa VM da OVA / OVF",
|
||||
"description": "Importa in Proxmox un’esportazione di VMware / VirtualBox / ProxMenux. Estrae automaticamente OVA, analizza i metadati OVF, crea la VM e importa ogni disco nel formato nativo dello storage.",
|
||||
"href": "/docs/utils/import-vm"
|
||||
}
|
||||
]
|
||||
},
|
||||
"diskSpaceCallout": {
|
||||
"title": "Una nota sullo spazio su disco per l'esportazione / importazione",
|
||||
"body": "Entrambi gli strumenti convertono i formati dei dischi: l’esportazione usa <code>qemu-img convert -O vmdk -o subformat=streamOptimized</code>; l’importazione usa <code>qm importdisk</code> per tornare al formato nativo dello storage (qcow2 / raw). Per esportare, prevedi <strong>~120% della dimensione virtuale del disco</strong> per OVF e <strong>~220%</strong> per OVA. L’archivio OVA usa TAR non compresso e viene creato mentre esistono ancora i file VMDK temporanei. Verifica che nella directory di destinazione ci sia spazio sufficiente prima di iniziare."
|
||||
},
|
||||
"fitsTogether": {
|
||||
"heading": "Come è organizzato il menu",
|
||||
"body": "Ogni strumento ha uno script dedicato in <code>scripts/utilities/</code>. L’aggiornamento del sistema Proxmox richiama un unico script sicuro in <code>scripts/global/</code>, update-pve-safe.sh, che rileva la versione principale e gestisce PVE 8 e PVE 9. Il passaggio PVE 8 → 9 offre due azioni aggiuntive nel proprio menu: un <em>Controllo preliminare all’aggiornamento</em> indipendente (esegue <code>pve8to9 --full</code>) e una <em>Guida all’aggiornamento manuale</em> in sola lettura (procedura di 17 passaggi), per chi vuole esaminare il processo o eseguirlo a mano."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,168 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Aggiornamento del sistema Proxmox | Documentazione ProxMenux",
|
||||
"description": "Aggiorna i pacchetti nella versione principale attuale di Proxmox con apt-get update e apt full-upgrade -y. Controlla spazio su disco e repository, tenta il recupero delle chiavi GPG, controlla e ripara vecchi header PV LVM, ricompila i driver DKMS gestiti quando necessario, esegue autoremove/autoclean e propone il riavvio se serve.",
|
||||
"ogTitle": "Aggiornamento del sistema Proxmox | Documentazione ProxMenux",
|
||||
"ogDescription": "apt full-upgrade con controllo dei repository, autoremove/autoclean e richiesta di riavvio quando necessario."
|
||||
},
|
||||
"header": {
|
||||
"title": "Aggiornamento sistema Proxmox",
|
||||
"description": "Richiama un unico script operativo (<code>update-pve-safe.sh</code>) che rileva la versione principale di Proxmox. I repository vengono letti tramite l’API Proxmox e conservati; un host senza abbonamento con il solo Enterprise deve confermare il passaggio a no-subscription. Lo script aggiorna i pacchetti e ricompila i driver DKMS gestiti da ProxMenux per un kernel pronto per il prossimo avvio. Lo script principale propone il riavvio se esiste il marcatore di sistema o se il kernel installato più recente è diverso da quello in esecuzione. Il processo è disponibile anche da <em>Update Now</em> nell’intestazione di ProxMenux Monitor quando ci sono aggiornamenti in sospeso.",
|
||||
"section": "Utilità"
|
||||
},
|
||||
"calloutWhat": {
|
||||
"title": "Cosa fa",
|
||||
"body": "Porta l'host all'ultimo livello di patch della versione principale corrente. <strong>non</strong> si aggiorna tra le versioni principali: per PVE 8 → PVE 9 vedere <link>Aggiornamento da PVE 8 a PVE 9</link>."
|
||||
},
|
||||
"official": {
|
||||
"heading": "Raccomandazione ufficiale Proxmox",
|
||||
"intro": "La guida di aggiornamento di Proxmox per un host in esecuzione (nella stessa versione principale) è quella di eseguire:",
|
||||
"code": "apt update && apt full-upgrade -y",
|
||||
"outro": "Questa riga è il comando ufficiale per le versioni attuali di Proxmox. Occorre anche verificare che i repository siano corretti, che siano abilitati quelli giusti e che l’host resti in uno stato coerente dopo l’aggiornamento."
|
||||
},
|
||||
"onTop": {
|
||||
"heading": "Cosa aggiunge ProxMenux: verificato nello script",
|
||||
"intro": "Usa <strong>la stessa operazione apt full-upgrade</strong>, con controlli dei repository, ricompilazione DKMS e pulizia finale. I passaggi seguenti corrispondono a <code>scripts/utilities/proxmox_update.sh</code> e al suo unico script operativo <code>scripts/global/update-pve-safe.sh</code>:",
|
||||
"items": [
|
||||
"<strong>Rileva la versione principale di PVE</strong> nello script operativo (<code>pveversion | grep -oP ''pve-manager/\\K[0-9]+''</code>). Un unico script gestisce PVE 8 e PVE 9; i repository vengono conservati, a meno che un host senza abbonamento accetti il cambio proposto.",
|
||||
"<strong>Conserva i repository configurati.</strong> <code>ensure_repositories</code> legge i repository e lo stato dell’abbonamento tramite l’API Proxmox. Con un abbonamento attivo o un repository no-subscription o test già usato, non cambia nulla. Se un host senza abbonamento attivo ha il solo Enterprise, chiede conferma per passare a no-subscription. Rifiutando, l’aggiornamento termina senza modificare le sorgenti.",
|
||||
"<strong>Esegue l’aggiornamento senza interazione</strong> con <code>DEBIAN_FRONTEND=noninteractive</code> e <code>--force-confdef --force-confold</code>. Per le decisioni sui file di configurazione dpkg accetta l’azione predefinita, se presente; altrimenti conserva il file esistente.",
|
||||
"<strong>Non impone le utilità facoltative.</strong> Lo script non forza l’installazione di <code>zfsutils-linux</code>, <code>chrony</code>, <code>ifupdown2</code> o pacchetti simili. Se l’installazione Proxmox ha scelto di farne a meno, mantiene questa scelta. I pacchetti mancanti vengono segnalati dai processi di installazione superiori, non dall’aggiornamento.",
|
||||
"<strong>Controllo e riparazione dei metadati LVM.</strong> Rileva vecchi header PV ed esegue vgck --updatemetadata e vgchange -ay sui gruppi di volumi interessati. Può modificare metadati LVM; non si limita a mostrare avvisi.",
|
||||
"<strong>Pulizia finale:</strong> <code>apt-get autoremove -y</code> + <code>apt-get autoclean -y</code>.",
|
||||
"<strong>Ricompilazione DKMS prima della richiesta di riavvio.</strong> Lo script operativo richiama <code>pmx_rebuild_dkms_after_kernel</code> quando è pronto un kernel installato più recente. Lo script principale controlla <code>/var/run/reboot-required</code> e usa <code>dpkg-query</code> per confrontare il kernel indicato da <code>uname -r</code> con il pacchetto <code>proxmox-kernel-*-pve-signed</code> / <code>pve-kernel-*-pve</code> installato più recente. Il marcatore può mancare sugli host senza <code>needrestart</code>; il confronto dei kernel funziona comunque."
|
||||
]
|
||||
},
|
||||
"calloutOneSentence": {
|
||||
"title": "In una frase",
|
||||
"body": "Aggiorna i pacchetti dell’host, conserva i repository salvo un cambio accettato, controlla i metadati LVM, ricompila i driver DKMS gestiti, esegue autoremove/autoclean e propone il riavvio se necessario."
|
||||
},
|
||||
"confirm": {
|
||||
"heading": "Finestra di conferma",
|
||||
"intro": "Selezionando l’opzione si apre un riepilogo delle azioni previste e viene richiesta una conferma esplicita:",
|
||||
"imageAlt": "Finestra di conferma dell’aggiornamento Proxmox con controllo dei repository, aggiornamento dei pacchetti e pulizia"
|
||||
},
|
||||
"routes": {
|
||||
"heading": "Come lo script principale delega l’esecuzione",
|
||||
"nodes": {
|
||||
"source": {
|
||||
"label": "proxmox_update.sh",
|
||||
"detail": "pveversion |\ngrep -oP ''pve-manager/\\K[0-9]+''"
|
||||
},
|
||||
"bridge": {
|
||||
"label": "Un unico script operativo",
|
||||
"detail": "update-pve-safe.sh\n(rileva PVE 8 / 9\ninternamente)"
|
||||
},
|
||||
"target": {
|
||||
"label": "Dopo l'aggiornamento",
|
||||
"detail": "apt-get autoremove\napt-get autoclean\nRichiesta di riavvio se necessario"
|
||||
}
|
||||
}
|
||||
},
|
||||
"worker": {
|
||||
"heading": "Cosa fa lo script operativo",
|
||||
"intro": "Un unico script (<code>scripts/global/update-pve-safe.sh</code>) gestisce PVE 8 (<code>bookworm</code>) e PVE 9 (<code>trixie</code>). Rileva la versione principale e controlla i repository esistenti senza riscrivere le sorgenti di base Debian. Le fasi sono:",
|
||||
"items": [
|
||||
"<strong>Controlli preliminari.</strong> Verifica che ci sia almeno ~1 GB libero in <code>/var/cache/apt/archives</code>. In caso contrario si interrompe subito con un messaggio chiaro, per evitare un errore nel mezzo di un’operazione apt.",
|
||||
"<strong>Controllo dei repository.</strong> <code>ensure_repositories</code> legge repository e stato dell’abbonamento. Con un repository Proxmox utilizzabile non cambia nulla. Se un host senza abbonamento attivo usa il solo Enterprise, chiede conferma prima di passare a no-subscription e interrompe l’aggiornamento in caso di rifiuto.",
|
||||
"<strong>apt update con recupero automatico GPG.</strong> In caso di <code>NO_PUBKEY</code> per un repository, anche di terze parti, lo script importa la chiave mancante e riprova automaticamente prima di segnalare l’errore.",
|
||||
"<strong>Aggiornamenti in sospeso e di sicurezza.</strong> Indica quanti pacchetti cambieranno e quanti provengono dalla suite di sicurezza, per mostrare numeri concreti nella finestra di conferma.",
|
||||
"<strong>Finestra di conferma.</strong> Dopo aver aggiornato gli elenchi dei pacchetti, lo script chiede un sì esplicito prima di aggiornarli.",
|
||||
"<strong>apt full-upgrade.</strong> Usa <code>DEBIAN_FRONTEND=noninteractive</code> e <code>--force-confdef --force-confold</code>. Dpkg segue l’azione predefinita per i file di configurazione, se presente; altrimenti conserva il file esistente.",
|
||||
"<strong>Controllo LVM.</strong> <code>lvm_repair_check</code> aggiorna i metadati dei gruppi di volumi quando i dischi assegnati direttamente alle VM guest (DSM, TrueNAS o appliance di storage) tornano con vecchi header PV.",
|
||||
"<strong>Ricompilazione DKMS dei driver gestiti da ProxMenux.</strong> Quando è pronto un nuovo kernel, <code>pmx_rebuild_dkms_after_kernel</code> legge i driver installati da ProxMenux in <code>components_status.json</code> (attualmente <code>nvidia_driver</code> → modulo <code>nvidia</code> e <code>coral_driver</code> → modulo <code>gasket</code>), installa gli header corrispondenti (<code>proxmox-headers-<newkver></code> se disponibile, altrimenti <code>pve-headers-<newkver></code>) ed esegue <code>dkms autoinstall -k <newkver></code>. Se <code>dkms status</code> non mostra i moduli compilati per il nuovo kernel, richiama ogni installatore con <code>--auto-reinstall</code>. Gli errori vengono registrati senza interrompere l’aggiornamento, che arriva comunque alla richiesta di riavvio.",
|
||||
"<strong>Pulizia finale.</strong> <code>apt-get autoremove</code> + <code>apt-get autoclean</code> prima di restituire il controllo allo script principale."
|
||||
]
|
||||
},
|
||||
"post": {
|
||||
"heading": "Pulizia e riavvio dopo l’aggiornamento",
|
||||
"intro": "Al termine dello script operativo, lo script principale esegue:",
|
||||
"code": "apt-get autoremove -y # drop unused dependencies pulled in by old packages\napt-get autoclean # drop downloaded .deb files no longer in the index",
|
||||
"afterCode": "Lo script principale controlla anche se occorre riavviare. Ciascuno di questi segnali fa comparire la richiesta:",
|
||||
"items": [
|
||||
"Esiste <code>/var/run/reboot-required</code>: un pacchetto o uno strumento di sistema ha indicato che l’host deve essere riavviato.",
|
||||
"Il pacchetto del kernel Proxmox installato più recente è diverso dal kernel in esecuzione, secondo <code>dpkg-query</code> e uname -r."
|
||||
],
|
||||
"outro": "Se una delle condizioni è vera, una finestra whiptail chiede <em>«Alcune modifiche richiedono un riavvio. Vuoi riavviare ora?»</em>. Rifiuta per continuare con il kernel attuale fino al riavvio manuale, ad esempio durante una finestra di manutenzione programmata."
|
||||
},
|
||||
"end": {
|
||||
"heading": "Cosa vedi alla fine",
|
||||
"intro": "Al termine dello script operativo, il terminale mostra il risultato della pulizia e, se necessario, la richiesta di riavvio:",
|
||||
"imageAlt": "Riepilogo del completamento dell'aggiornamento del sistema Proxmox con l'output di pulizia e il prompt di riavvio"
|
||||
},
|
||||
"calloutDeclineReboot": {
|
||||
"title": "Rimanda il riavvio solo per un motivo preciso",
|
||||
"body": "Installare un nuovo pacchetto <code>proxmox-kernel-*</code> non sostituisce il kernel in esecuzione fino al riavvio. Il nuovo kernel e i suoi moduli corrispondenti diventano attivi al prossimo avvio. Programma il riavvio in una finestra di manutenzione adatta e controlla prima gli avvisi di compilazione DKMS."
|
||||
},
|
||||
"noSub": {
|
||||
"heading": "Come lo script gestisce il repository Enterprise",
|
||||
"intro": "Proxmox abilita il repository Enterprise per impostazione predefinita. Senza un abbonamento attivo, questo restituisce 401 durante <code>apt-get update</code>. Lo script modifica i repository solo in questo caso e dopo conferma, tramite l’API Proxmox usata da <em>Node → Updates → Repositories</em>. Ecco i diversi casi:",
|
||||
"items": [
|
||||
"Con un <strong>abbonamento attivo</strong>, i repository restano invariati ed Enterprise fornisce gli aggiornamenti.",
|
||||
"Con il <strong>repository no-subscription o test già abilitato</strong>, i repository restano invariati, qualunque altra sorgente sia configurata.",
|
||||
"Con <strong>nessun abbonamento attivo e il solo repository Enterprise</strong>, una finestra propone il cambio. Accettando, Enterprise viene disabilitato, no-subscription viene abilitato e gli elenchi dei pacchetti vengono aggiornati. La modifica compare nella vista <em>Changes</em> di Audit & Report. Rifiutando, l’aggiornamento termina senza modificare le sorgenti.",
|
||||
"Le <strong>sorgenti Ceph Enterprise</strong> presenti vengono disabilitate durante lo stesso cambio, senza scegliere un altro canale Ceph. Un host che usa Ceph deve configurare il relativo canale separatamente.",
|
||||
"Se <strong>non è disponibile un terminale per chiedere conferma</strong>, nessuna sorgente viene modificata e l’aggiornamento termina con un messaggio che rimanda a <em>Node → Updates → Repositories</em>."
|
||||
],
|
||||
"outro": "Le sorgenti Debian e tutti gli altri file dei repository non vengono mai modificati da questa procedura. Una voce che mescola Enterprise con altri componenti non viene cambiata: l’aggiornamento si interrompe e chiede di separarla dalla vista dei repository Proxmox."
|
||||
},
|
||||
"cluster": {
|
||||
"heading": "Considerazioni di cluster",
|
||||
"calloutTitle": "Su cluster: aggiornare un nodo alla volta",
|
||||
"calloutBody": "In un cluster Proxmox, esegui questa opzione su <strong>un nodo alla volta</strong> e attendi il completamento del riavvio prima di passare al successivo. Migra prima i sistemi guest dal nodo per evitare interruzioni del servizio nell’intero cluster. Versioni minori diverse, come 8.4.1 e 8.4.5, possono coesistere per alcune ore; kernel in esecuzione diversi possono causare comportamenti imprevisti per i sistemi guest gestiti da HA."
|
||||
},
|
||||
"doesnt": {
|
||||
"heading": "Cosa non fa",
|
||||
"items": [
|
||||
"<strong>Passaggio di versione principale.</strong> Il passaggio 8 → 9 è un’operazione separata; vedi <link>Aggiornamento da PVE 8 a PVE 9</link>.",
|
||||
"<strong>Backup.</strong> Nessuna snapshot, nessun rollback. Le operazioni Apt non sono transazionali. Combina con la tua normale disciplina di backup (PBS, vzdump, snapshot ZFS).",
|
||||
"<strong>Aggiornamenti di container / VM.</strong> Viene aggiornato solo l’host; i sistemi guest restano invariati.",
|
||||
"<strong>Scrittura dedicata del firmware.</strong> Questo strumento non serve a programmare BIOS o firmware dei dispositivi. I pacchetti di firmware o microcodice CPU già installati possono comunque ricevere aggiornamenti tramite apt."
|
||||
]
|
||||
},
|
||||
"troubleshooting": {
|
||||
"heading": "Risoluzione dei problemi",
|
||||
"items": [
|
||||
{
|
||||
"title": "apt update fallisce con 401 Unauthorized",
|
||||
"body": "Il repository Enterprise è abilitato, ma l’host non ha un abbonamento attivo. Prima di <code>apt-get update</code>, lo script propone il passaggio a no-subscription. Se hai rifiutato, ripeti l’aggiornamento e accetta, oppure disabilita Enterprise in <em>Node → Updates → Repositories</em> e abilita no-subscription."
|
||||
},
|
||||
{
|
||||
"title": "dist-upgrade si blocca su \"Configuring grub-pc\"",
|
||||
"body": "Se compare una richiesta interattiva di GRUB, chiede i dispositivi su cui installare il boot loader. L’opzione <code>--force-confold</code> riguarda i file di configurazione, non questa selezione. Usa <kbd>Tab</kbd> + <kbd>Space</kbd> per scegliere i dischi di avvio appropriati, poi OK. Puoi configurare la scelta in anticipo con <code>dpkg-reconfigure grub-pc</code>."
|
||||
},
|
||||
{
|
||||
"title": "Il kernel è stato aggiornato, ma mancano i nuovi moduli di un driver esterno",
|
||||
"body": "Per i driver gestiti (<code>nvidia_driver</code> e <code>coral_driver</code>), la funzione esegue <code>dkms autoinstall -k <newkver></code> e può ripetere gli installatori con <code>--auto-reinstall</code>. Controlla il risultato con <code>dkms status</code>. Il comando autoinstall può ricompilare anche altri moduli DKMS registrati; gli installatori alternativi sono limitati alle voci gestite di <code>components_status.json</code>. Esamina eventuali moduli di terze parti ancora mancanti e ricompilali se necessario con <code>dkms autoinstall</code>."
|
||||
},
|
||||
{
|
||||
"title": "Il prompt del riavvio non è apparso ma sono sicuro che il kernel sia cambiato",
|
||||
"body": "I segnali sono alternativi: <code>/var/run/reboot-required</code> oppure una differenza tra il kernel in esecuzione e il kernel Proxmox installato più recente. Lo script principale non analizza le voci linux-image del registro apt. Controlla la versione in esecuzione con <code>uname -r</code> e i pacchetti del kernel installati con <code>dpkg-query</code>. Programma il riavvio necessario o esegui <code>shutdown -r now</code> quando sei pronto."
|
||||
}
|
||||
]
|
||||
},
|
||||
"files": {
|
||||
"heading": "File coinvolti",
|
||||
"code": "scripts/utilities/proxmox_update.sh # this script (wrapper)\nscripts/global/update-pve-safe.sh # single safe worker (PVE 8 + PVE 9)\nscripts/global/repository-functions.sh # ensure_repositories\nscripts/global/repository_policy.py # reads and switches repositories through the Proxmox API\nscripts/global/utils-install-functions.sh # pmx_rebuild_dkms_after_kernel\n/usr/local/share/proxmenux/components_status.json # ProxMenux-managed DKMS driver registry\n/etc/apt/sources.list.d/proxmox.sources # no-subscription source, written by Proxmox when the switch is accepted\n/var/run/reboot-required # read to decide on reboot prompt\n# Reboot fallback when needrestart isn't installed:\n# dpkg-query -W 'proxmox-kernel-*-pve-signed' 'pve-kernel-*-pve' vs. uname -r"
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/utils/upgrade-pve8-pve9",
|
||||
"label": "Aggiorna PVE 8 a PVE 9",
|
||||
"tail": " — per il passaggio di versione principale, con uno strumento e un modello di sicurezza diversi."
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils/system-utils",
|
||||
"label": "Installatore di utilità di sistema",
|
||||
"tail": " — per installare strumenti CLI utili durante gli aggiornamenti (htop / btop / ncdu)."
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils",
|
||||
"label": "Panoramica delle utilità",
|
||||
"tail": " — torna alla panoramica della sezione."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,252 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Installatore di utilità di sistema | Documentazione ProxMenux",
|
||||
"description": "Installatore di utilità CLI per Proxmox VE, con 25 pacchetti nell’elenco di riferimento (htop, btop, iperf3, tmux, ...). Selezione personalizzata, installazione completa e gruppi predefiniti (base, sviluppo, compressione, multiplexer, analisi, rete). I gruppi possono includere altri pacchetti. Usa ensure_repositories + install_single_package.",
|
||||
"ogTitle": "Installatore di utilità di sistema | Documentazione ProxMenux",
|
||||
"ogDescription": "Installare strumenti CLI curati su Proxmox VE con un clic o selezione personalizzata."
|
||||
},
|
||||
"header": {
|
||||
"title": "Installatore di utilità di sistema",
|
||||
"description": "Selettore delle 25 utilità CLI nell’elenco di riferimento PROXMENUX_UTILS. Offre selezione personalizzata, installazione completa, sei gruppi predefiniti e verifica delle installazioni. I gruppi possono includere strumenti esterni all’elenco. Usa le funzioni condivise ensure_repositories() + install_single_package() per gestire in modo coerente repository e messaggi sui pacchetti.",
|
||||
"section": "Utilità"
|
||||
},
|
||||
"info": {
|
||||
"title": "Cosa fa",
|
||||
"body": "Installa strumenti CLI da un elenco di 25 pacchetti. Ogni installazione segue lo stesso processo: <code>ensure_repositories</code> verifica che l’host abbia un repository Proxmox utilizzabile per la versione principale di PVE; poi <code>install_single_package</code> installa il pacchetto e controlla che il comando sia in PATH."
|
||||
},
|
||||
"opening": {
|
||||
"heading": "Apertura dell'installatore",
|
||||
"intro": "Dal menu Utilità, scegliere <strong>System Utilities Installer</strong>. Il menu principale offre nove opzioni:",
|
||||
"imageAlt": "Menu di installazione delle utilità di sistema con selezione personalizzata, ALL, gruppi predefiniti e verifica"
|
||||
},
|
||||
"actions": {
|
||||
"heading": "Le 9 azioni del menu",
|
||||
"headerOption": "Opzione",
|
||||
"headerBehaviour": "Comportamento",
|
||||
"rows": [
|
||||
{
|
||||
"option": "1. Selezione personalizzata",
|
||||
"behaviourRich": "Elenco di selezione dei 25 pacchetti. Usa SPACE per selezionare e ENTER per confermare; vengono installati solo i pacchetti selezionati."
|
||||
},
|
||||
{
|
||||
"option": "2. Installa TUTTE le utilità",
|
||||
"behaviourRich": "Installazione one-shot di ogni pacchetto in <code>PROXMENUX_UTILS</code>. Utilizzare dopo una nuova installazione Proxmox."
|
||||
},
|
||||
{
|
||||
"option": "3. Base",
|
||||
"behaviourRich": "<code>grc</code>, <code>htop</code>, <code>tree</code>, <code>curl</code>, <code>wget</code>"
|
||||
},
|
||||
{
|
||||
"option": "4. Sviluppo",
|
||||
"behaviourRich": "<code>git</code>, <code>vim</code>, <code>nano</code>"
|
||||
},
|
||||
{
|
||||
"option": "5. Compressione",
|
||||
"behaviourRich": "<code>zip</code>, <code>unzip</code>, <code>rsync</code>"
|
||||
},
|
||||
{
|
||||
"option": "6. Multiplexer di terminale",
|
||||
"behaviourRich": "<code>screen</code>, <code>tmux</code>"
|
||||
},
|
||||
{
|
||||
"option": "7. Analisi",
|
||||
"behaviourRich": "<code>jq</code>, <code>ncdu</code>, <code>iotop</code>"
|
||||
},
|
||||
{
|
||||
"option": "8. Rete",
|
||||
"behaviourRich": "<code>iperf3</code>, <code>nethogs</code>, <code>nmap</code>, <code>tcpdump</code>, <code>lsof</code>"
|
||||
},
|
||||
{
|
||||
"option": "9. Verifica installazioni",
|
||||
"behaviourRich": "Esamina ogni voce di <code>PROXMENUX_UTILS</code>, controlla se il comando di verifica è in PATH e mostra un riepilogo Disponibile / Mancante."
|
||||
}
|
||||
]
|
||||
},
|
||||
"packages": {
|
||||
"heading": "I 25 pacchetti",
|
||||
"intro": "Definiti nel file condiviso <code>scripts/global/utils-install-functions.sh</code> come <code>PROXMENUX_UTILS</code> (formato: <code>package:verify_command:description</code>). Altri script ProxMenux, per esempio gli avvii del monitoraggio di rete iftop / iptraf-ng / iperf3, riutilizzano queste voci per mantenere sincronizzati pacchetto e comando di verifica.",
|
||||
"headerPackage": "Pacchetto",
|
||||
"headerVerify": "Comando di verifica",
|
||||
"headerDescription": "Descrizione",
|
||||
"rows": [
|
||||
{
|
||||
"package": "axel",
|
||||
"verify": "axel",
|
||||
"description": "Acceleratore di download"
|
||||
},
|
||||
{
|
||||
"package": "aria2",
|
||||
"verify": "aria2c",
|
||||
"description": "Downloader multi-source"
|
||||
},
|
||||
{
|
||||
"package": "btop",
|
||||
"verify": "btop",
|
||||
"description": "Monitor moderno delle risorse"
|
||||
},
|
||||
{
|
||||
"package": "cabextract",
|
||||
"verify": "cabextract",
|
||||
"description": "Estrarre i file CAB"
|
||||
},
|
||||
{
|
||||
"package": "chntpw",
|
||||
"verify": "chntpw",
|
||||
"description": "Modifica del registro di Windows / password"
|
||||
},
|
||||
{
|
||||
"package": "dos2unix",
|
||||
"verify": "dos2unix",
|
||||
"description": "Converti file di testo DOS / Unix"
|
||||
},
|
||||
{
|
||||
"package": "genisoimage",
|
||||
"verify": "genisoimage",
|
||||
"description": "Crea immagini ISO"
|
||||
},
|
||||
{
|
||||
"package": "grc",
|
||||
"verify": "grc",
|
||||
"description": "Colorazione generica dei log"
|
||||
},
|
||||
{
|
||||
"package": "htop",
|
||||
"verify": "htop",
|
||||
"description": "Visualizzatore interattivo dei processi"
|
||||
},
|
||||
{
|
||||
"package": "iftop",
|
||||
"verify": "iftop",
|
||||
"description": "Utilizzo della rete in tempo reale"
|
||||
},
|
||||
{
|
||||
"package": "intel-gpu-tools",
|
||||
"verify": "intel_gpu_top",
|
||||
"description": "Strumenti Intel GPU"
|
||||
},
|
||||
{
|
||||
"package": "iotop",
|
||||
"verify": "iotop",
|
||||
"description": "Monitoraggio dell’I/O dei dischi"
|
||||
},
|
||||
{
|
||||
"package": "iperf3",
|
||||
"verify": "iperf3",
|
||||
"description": "Test di banda di rete"
|
||||
},
|
||||
{
|
||||
"package": "ipset",
|
||||
"verify": "ipset",
|
||||
"description": "Gestione degli insiemi IP"
|
||||
},
|
||||
{
|
||||
"package": "iptraf-ng",
|
||||
"verify": "iptraf-ng",
|
||||
"description": "Strumento di monitoraggio della rete"
|
||||
},
|
||||
{
|
||||
"package": "libguestfs-tools",
|
||||
"verify": "virt-filesystems",
|
||||
"description": "Utilità del disco VM"
|
||||
},
|
||||
{
|
||||
"package": "msr-tools",
|
||||
"verify": "rdmsr",
|
||||
"description": "Accesso ai registri MSR della CPU"
|
||||
},
|
||||
{
|
||||
"package": "net-tools",
|
||||
"verify": "netstat",
|
||||
"description": "Strumenti di networking legacy"
|
||||
},
|
||||
{
|
||||
"package": "plocate",
|
||||
"verify": "locate",
|
||||
"description": "Individuare i file rapidamente"
|
||||
},
|
||||
{
|
||||
"package": "s-tui",
|
||||
"verify": "s-tui",
|
||||
"description": "Stress-Terminal UI"
|
||||
},
|
||||
{
|
||||
"package": "sshpass",
|
||||
"verify": "sshpass",
|
||||
"description": "Accesso non interattivo SSH"
|
||||
},
|
||||
{
|
||||
"package": "tmux",
|
||||
"verify": "tmux",
|
||||
"description": "Multiplexer del terminale"
|
||||
},
|
||||
{
|
||||
"package": "unzip",
|
||||
"verify": "unzip",
|
||||
"description": "Estrarre i file ZIP"
|
||||
},
|
||||
{
|
||||
"package": "wimtools",
|
||||
"verify": "wimlib-imagex",
|
||||
"description": "Gestione delle immagini WIM"
|
||||
},
|
||||
{
|
||||
"package": "zip",
|
||||
"verify": "zip",
|
||||
"description": "Crea file ZIP"
|
||||
}
|
||||
]
|
||||
},
|
||||
"howItWorks": {
|
||||
"heading": "Come funziona l’installazione di un pacchetto",
|
||||
"items": [
|
||||
"<code>ensure_repositories</code> rileva PVE 8 o 9 e legge i repository tramite l’API Proxmox. Con un repository Proxmox utilizzabile non cambia nulla. Un host senza abbonamento attivo con il solo Enterprise deve confermare il passaggio a no-subscription; <code>apt-get update</code> viene eseguito dopo il cambio accettato.",
|
||||
"<code>install_single_package \"pkg\" \"verify_cmd\" \"description\"</code> gestisce <code>apt-get install -y \"$pkg\"</code> con feedback (<code>msg_info</code> / <code>msg_ok</code> / <code>msg_error</code>)."
|
||||
],
|
||||
"verifyIntro": "Dopo l'installazione, il comando di verifica viene controllato con <code>command -v \"$verify_cmd\"</code>. Tre risultati:",
|
||||
"verifyOutcomes": [
|
||||
"<strong>0 (successo):</strong> comando disponibile; il pacchetto è conteggiato come <em>Riuscito</em>.",
|
||||
"<strong>1 (errore):</strong> apt non è riuscito; il pacchetto è conteggiato come <em>Non riuscito</em>.",
|
||||
"<strong>2 (avviso):</strong> apt è riuscito, ma il comando atteso non è stato trovato in PATH; il pacchetto è conteggiato come <em>Con avvisi</em>."
|
||||
],
|
||||
"summary": "Al termine di un’installazione personalizzata o di gruppo, una finestra mostra i conteggi <em>Riusciti / Con avvisi / Non riusciti</em>."
|
||||
},
|
||||
"verify": {
|
||||
"heading": "Verifica installazioni",
|
||||
"intro": "L’opzione 9 è in sola lettura: esamina <code>PROXMENUX_UTILS</code> ed esegue <code>command -v</code> per ogni comando di verifica. L’output è simile al seguente:",
|
||||
"code": "Total: 25\nAvailable: 18\nMissing: 8\n\n✓ axel - Download accelerator\n✓ aria2c - Multi-source downloader\n✓ btop - Modern resource monitor\n✗ cabextract - Extract CAB files\n✓ dos2unix - Convert DOS / Unix text files\n✗ genisoimage - Create ISO images\n✓ grc - Generic log colorizer\n...",
|
||||
"outro": "Utile prima di eseguire script che dipendono da questi strumenti (ad es. <code>uup_dump_iso_creator.sh</code> ha bisogno di <code>aria2c</code> + <code>cabextract</code> + <code>wimlib-imagex</code>). Se manca qualcosa, eseguire l'installazione del gruppo corrispondente o selezionare i pacchetti mancanti tramite selezione personalizzata."
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Risoluzione dei problemi",
|
||||
"reposTitle": "«Impossibile configurare i repository. Installazione annullata».",
|
||||
"reposBody": "Il controllo dei repository non è riuscito: il passaggio a no-subscription è stato rifiutato, lo stato dell’abbonamento non è leggibile o una voce richiede attenzione. Il messaggio precedente indica la causa. I repository sono elencati in <em>Node → Updates → Repositories</em>; <code>apt-get update</code> da una console mostra l’errore apt.",
|
||||
"warningsTitle": "Un pacchetto viene segnalato \"Con avvisi\" ma il comando funziona dopo aver chiuso il menu",
|
||||
"warningsBody": "Dopo <code>apt-get install</code>, la funzione esegue <code>hash -r</code>, attende brevemente e verifica il comando atteso con <code>command -v</code>. Un avviso indica che il controllo continua a fallire, senza identificarne la causa. Prova una nuova shell, poi controlla l’installazione del pacchetto e PATH se il comando manca ancora.",
|
||||
"hangsTitle": "Un’installazione apt si blocca",
|
||||
"hangsBody": "Probabilmente una richiesta debconf è nascosta dall’output silenziato. Lo script usa <code>DEBIAN_FRONTEND=noninteractive</code> per le chiamate apt, che di solito evita le domande, ma alcuni pacchetti richiedono comunque dati. Annulla con <kbd>Ctrl</kbd>+<kbd>C</kbd> ed esegui <code>apt-get install -y <pkg></code> manualmente da una shell per vedere la richiesta e decidere."
|
||||
},
|
||||
"files": {
|
||||
"heading": "File coinvolti",
|
||||
"code": "scripts/utilities/system_utils.sh # this script\nscripts/global/utils-install-functions.sh # PROXMENUX_UTILS, install_single_package\nscripts/global/repository-functions.sh # ensure_repositories\nscripts/global/repository_policy.py # reads and switches repositories through the Proxmox API\n/etc/apt/sources.list.d/proxmox.sources # no-subscription source, written by Proxmox when the switch is accepted"
|
||||
},
|
||||
"related": {
|
||||
"heading": "Correlati",
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/utils/system-update",
|
||||
"label": "Aggiornamento sistema Proxmox",
|
||||
"tailRich": "— per il <code>apt dist-upgrade</code> effettivo sull'host."
|
||||
},
|
||||
{
|
||||
"href": "/docs/network/monitoring",
|
||||
"label": "Strumenti di monitoraggio in tempo reale (rete)",
|
||||
"tailRich": "— utilizza iftop / iptraf-ng / iperf3 da questa stessa lista."
|
||||
},
|
||||
{
|
||||
"href": "/docs/utils",
|
||||
"label": "Panoramica delle utilità",
|
||||
"tailRich": " — torna alla panoramica della sezione."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user