{ "meta": { "title": "ProxMenux Monitor — Pannello: Terminale | Documentazione ProxMenux", "description": "Shell dell'host Proxmox nel browser: fino a 4 terminali in griglia, pulsanti tastiera per dispositivi mobili (ESC, TAB, frecce, combinazioni Ctrl), prontuario di comandi integrato con cheat.sh e protezione JWT." }, "header": { "title": "Pannello: Terminale", "description": "Una vera sessione shell sull'host Proxmox dal browser. Fino a quattro terminali contemporaneamente, pulsanti tastiera per dispositivi mobili e prontuario dei comandi integrato, con lo stesso tema del resto del pannello.", "section": "ProxMenux Monitor · Dashboard" }, "intro": { "title": "Un vero PTY nel browser", "body": "Il terminale crea un PTY sul server tramite flask_terminal_routes, lo collega via WebSocket a xterm.js nel browser e viene eseguito come root, utente dell'unità systemd. Come con ssh root@<host>, puoi usare vim, tmux, strumenti ncurses e le CLI Proxmox (qm, pct, pvesh, pvecm). Ogni PTY esporta PROXMENUX_TERMINAL=monitor, ereditata da tutti i processi figli bash, incluso un successivo avvio di menu, per riconoscere il terminale di Monitor." }, "singleAlt": "Scheda Terminale di ProxMenux Monitor — sessione singola con il riepilogo di sistema Fastfetch allo accesso", "singleCaption": "Un terminale host aperto — la barra degli strumenti sopra mostra il conteggio (1 / 4 terminali), + Nuovo, Ricerca, Cancellazione e Chiudere. Gli helper della tastiera mobile appaiono sotto il terminale su dispositivi touch.", "target": { "heading": "Obiettivo di connessione", "body1": "La scheda Terminale apre una shell sullo host Proxmox stesso, come uno accesso SSH. Ogni scheda apre un nuovo terminale dell'host.", "body2": "Per accedere a un container LXC dal browser, usa Console sulla scheda di ogni CT in esecuzione nella scheda VM e LXC. Apre una finestra che esegue pct enter <vmid> e usa la stessa barra per dispositivi mobili descritta sotto." }, "menuGuard": { "heading": "Protezione durante l'aggiornamento di menu in questo terminale", "body1": "Dopo la conferma, menu sostituisce il proprio albero di script e si ricarica. Questo funziona tramite SSH o console Proxmox, ma nel browser chiuderebbe il PTY della shell e interromperebbe il WebSocket. Per evitarlo, check_updates_stable, check_updates_beta e apply_release_channel leggono PROXMENUX_TERMINAL e riconoscono il contesto Monitor.", "body2": "Il dialogo sì/no viene quindi sostituito da un messaggio con il comando ufficiale di installazione: bash -c \"$(wget -qLO - https://raw.githubusercontent.com/MacRimi/ProxMenux/main/install_proxmenux.sh)\" per stable e l'URL equivalente di install_proxmenux_beta.sh per beta. Lo aggiornamento si esegue tramite SSH o console dell'host Proxmox; il terminale del browser serve solo a leggere e confermare il messaggio." }, "fourTerminals": { "heading": "Fino a quattro terminali contemporaneamente", "intro": "La scheda consente di aprire fino a quattro terminali host contemporaneamente. Ognuno ottiene il proprio PTY e il proprio WebSocket — sono sessioni completamente indipendenti. Due layout passano con le icone accanto al pulsante \"Nuovo\":", "items": [ "Vista a schede — un terminale visibile, gli altri come schede con nome in alto (Terminale 1, Terminale 2…). Utile per un'attività con le altre in secondo piano.", "Vista a griglia — tutti i terminali aperti in una griglia 2×2. Puoi osservare htop in uno, iftop in un altro e modificare file in un terzo senza cambiare scheda." ], "outro": "La barra indica il conteggio (1/4 terminali, 4/4 terminali). + Nuovo apre una scheda; la piccola × nell'intestazione la chiude. Il grande pulsante rosso Chiudi in alto chiude tutti i terminali." }, "gridAlt": "Scheda terminale ProxMenux Monitor — visualizzazione griglia con quattro terminali host che eseguono ls, configurazione di rete, iftop e il menu principale ProxMenux fianco a fianco", "gridCaption": "Vista a griglia (4 / 4 terminali) — quattro PTY indipendenti in parallelo: elenco directory, /etc/network/interfaces, iftop e menu principale ProxMenux. Il selettore di disposizione nella barra alterna griglia e schede.", "keyboard": { "heading": "Pulsanti tastiera per dispositivi mobili", "intro": "Le tastiere di telefoni e tablet spesso non offrono ESC, TAB, frecce o combinazioni con modificatori. Servono per usare vim, nano, htop e menu TUI. Terminale aggiunge quindi una riga di pulsanti tattili sotto il terminale quando lo schermo è piccolo o il dispositivo supporta il tocco:", "headerButton": "Pulsante", "headerSends": "Invia", "headerUse": "Uso tipico", "rows": [ { "button": "ESC", "sends": "\\x1b", "use": "Esce dalla modalità di inserimento di vim, annulla un dialogo TUI o chiude una ricerca." }, { "button": "TAB", "sends": "\\t", "use": "Completamento dei percorsi e navigazione tra campi in dialog/whiptail." }, { "button": "↑ ↓ ← →", "sends": "\\x1bO[ABCD]", "use": "Cronologia della shell, movimento del cursore e navigazione dei menu." }, { "button": "↵ Invio", "sends": "\\r", "use": "Conferma. Alcune tastiere sullo schermo sostituiscono Invio con Vai/Fine; questo pulsante evita ambiguità." }, { "button": "Ctrl ▾", "sends": "Menu a discesa", "useRich": true } ], "ctrlIntro": "Tre sequenze di controllo:", "ctrlItems": [ "Ctrl+C — annullare / interrompere il comando in esecuzione (\\x03).", "Ctrl+X — esce da nano (\\x18).", "Ctrl+R — ricerca a ritroso nella cronologia bash (\\x12)." ], "modalTitle": "Stessa barra nella finestra della console LXC", "modalBody": "La console aperta da VM e LXC → Console mostra gli stessi pulsanti tastiera sotto la finestra. Alla connessione inserisce automaticamente pct enter <vmid> per entrare direttamente nel container." }, "lxcAlt": "Finestra console LXC di ProxMenux Monitor — Terminal: ubuntu (ID: 103), con la stessa barra per dispositivi mobili (ESC, TAB, frecce, Invio, Ctrl) sotto il terminale", "lxcCaption": "Console LXC aperta da VM e LXC → Console. L'intestazione mostra il container di destinazione (Terminal: ubuntu (ID: 103)) e sotto il terminale appare la stessa barra tattile.", "search": { "heading": "Cerca comandi — prontuario integrato", "intro": "Il pulsante blu Cerca apre una ricerca approssimativa dei comandi. Digita alcune lettere di un comando Linux o Proxmox (ls, tar, qm, pct, zpool, systemctl…) per vedere esempi con Invia al terminale attivo in un tocco. Puoi così ritrovare un'opzione senza cambiare scheda.", "modalAlt": "Finestra Cerca comandi di ProxMenux Monitor — ricerca approssimativa di comandi Linux e Proxmox tramite cheat.sh, con vari esempi di ls", "modalCaption": "Ricerca di ls — ogni risultato mostra comando, descrizione e una piccola freccia di invio al terminale attivo. In basso a destra è indicata la fonte dei dati (Fornito da cheat.sh).", "aboutLabel": "Informazioni su cheat.sh:", "aboutBody": "è un prontuario open source curato dalla comunità, con esempi brevi e pratici per centinaia di comandi Linux, strumenti di amministrazione e linguaggi di programmazione. Progettato per essere consultato con curl cheat.sh/<command>, è accessibile anche dal browser. ProxMenux Monitor inoltra le query tramite proxy sul server per mantenere la stessa origine del pannello.", "headerSource": "Fonte", "headerWhen": "Quando viene usato", "headerWhat": "Cosa vedi", "onlineLabel": "(in linea)", "onlineWhen": "Quando l'host ha accesso a Internet e il proxy cheat.sh risponde.", "onlineWhat": "Vari esempi pratici per comando, con la descrizione sopra. Il punto di stato nell'intestazione è verde.", "fallbackLabel": "Alternativa locale", "fallbackWhen": "Quando cheat.sh non è raggiungibile (host offline, firewall restrittivo o interruzione del servizio cheat.sh).", "fallbackWhat": "Un elenco incluso di comandi Linux e Proxmox comuni. Il catalogo è più piccolo ma sempre disponibile. Il punto di stato è rosso.", "sendingNote": "Come funziona l'invio: la freccia accanto al risultato invia il testo al terminale attivo (la scheda selezionata o l'ultimo terminale cliccato nella griglia). La finestra si chiude automaticamente per consentire di premere Invio." }, "auth": { "heading": "Autenticazione", "items": [ "Il browser richiede prima un ticket monouso tramite POST /api/terminal/ticket, autenticato con JWT nell'intestazione Authorization. Poi invia il ticket all'apertura del WebSocket. Scade dopo 5 secondi; se l'autenticazione è attiva e il ticket manca o non è valido, la connessione si chiude prima di creare un PTY.", "Se Monitor si trova dietro un proxy inverso, questo deve inoltrare gli upgrade WebSocket. Esempi per Nginx / Caddy / Traefik nella pagina Accesso e autenticazione." ] }, "clipboard": { "heading": "Appunti, cronologia dello schermo e ridimensionamento", "items": [ "Copia e incolla — usa gli appunti del browser. Seleziona il testo con mouse o trackpad e usa la scorciatoia del sistema (Cmd+C su macOS, Ctrl+Shift+C su Linux/Windows). I desktop Linux supportano anche l'incollaggio con clic centrale.", "Cronologia dello schermo — scorrimento con rotella o due dita. xterm.js conserva in memoria le ultime migliaia di righe.", "Ridimensionamento — il terminale adatta la dimensione della finestra PTY quando ridimensioni il pannello, per visualizzare correttamente htop e vim.", "Riconnessione al ritorno alla scheda — cambiare app su telefono o tablet, soprattutto iPad, può interrompere il WebSocket. Terminale rileva il cambio di visibilità e si riconnette al ritorno, con un timeout di 15 secondi per VPN lente." ] }, "disconnect": { "heading": "Cause di disconnessione", "intro": "Le cause più comuni della fine di una sessione e come risolverle:", "headerCause": "Causa", "headerFix": "Soluzione", "rows": [ { "cause": "JWT di sessione scaduto all'apertura o riconnessione di un terminale (durata di 24 ore).", "fix": "Aggiorna la pagina e accedi di nuovo. Il terminale non è progettato per sessioni non assistite, quindi la durata di JWT corrisponde al normale login del cruscotto." }, { "cause": "Timeout di inattività del proxy inverso.", "fix": "Aumenta proxy_read_timeout in Nginx o il valore equivalente in Caddy / Traefik (esempi in Accesso e autenticazione)." }, { "cause": "Telefono o tablet in sospensione.", "fix": "Al risveglio del dispositivo la scheda si riconnette automaticamente (timeout di 15 secondi per i percorsi VPN). In caso contrario, ricaricala." }, { "cause": "Il servizio si riavvia sull'host.", "fix": "Ogni riavvio di proxmenux-monitor.service chiude tutti i PTY. Apri nuovi terminali quando il pannello ha terminato il caricamento." } ] }, "warning": { "title": "Il terminale è una shell root sull'host", "body": "Il terminale eredita l'utente dell'unità systemd (root) e ha pieni privilegi sull'host Proxmox. Configura nome utente, password e 2FA in Accesso e autenticazione prima di consentire accessi fuori dalla rete locale. Con autenticazione disattivata, chi raggiunge la porta 8008 può aprire una shell root senza altre conferme o credenziali SSH. Per accessi esterni usa Secure Gateway (Tailscale) o un proxy inverso HTTPS invece di pubblicare la porta su Internet." }, "whereNext": { "heading": "Dove proseguire", "items": [ { "label": "Accesso e autenticazione", "href": "/docs/monitor/access-auth", "tail": " — esempi per proxy inversi con le righe di upgrade WebSocket necessarie per il terminale." }, { "label": "Architettura", "href": "/docs/monitor/architecture", "tail": " — trasporto WebSocket (HTTP tramite flask-sock e HTTPS / WSS tramite gevent)." }, { "label": "Riferimento API", "href": "/docs/monitor/api", "tail": " — endpoint WebSocket /ws/terminal e /ws/script/, insieme al resto dell'API." }, { "label": "Integrazioni → Secure Gateway", "href": "/docs/monitor/integrations", "tail": "— quando si desidera l'accesso terminale da fuori della LAN senza esporre la porta 8008." }, { "label": "Indice del pannello", "href": "/docs/monitor/dashboard", "tail": "— le altre schede." } ] } }