{
"meta": {
"title": "ProxMenux Monitor — Panel: Terminal | Documentación de ProxMenux",
"description": "Shell del host Proxmox en el navegador: hasta 4 terminales en rejilla, botones de teclado para móviles (ESC, TAB, flechas, combinaciones Ctrl), guía de comandos integrada con cheat.sh y protección JWT."
},
"header": {
"title": "Panel: pestaña Terminal",
"description": "Una sesión real de shell en el host Proxmox desde el navegador. Hasta cuatro terminales a la vez, botones de teclado para móviles y una guía de comandos integrada, con el mismo tema que el resto del panel.",
"section": "ProxMenux Monitor · Panel"
},
"intro": {
"title": "Un PTY real en el navegador",
"body": "El terminal crea una PTY en el servidor mediante flask_terminal_routes, la conecta por WebSocket con xterm.js en el navegador y se ejecuta como root, el usuario de la unidad systemd. Permite lo mismo que ssh root@<host>: vim, tmux, herramientas ncurses y las CLI de Proxmox (qm, pct, pvesh, pvecm). Cada PTY exporta PROXMENUX_TERMINAL=monitor. Sus procesos hijos bash, incluido un lanzamiento posterior de menu, heredan esta variable para reconocer el terminal de Monitor."
},
"singleAlt": "Pestaña Terminal de ProxMenux Monitor — una única sesión de terminal mostrando el resumen del sistema de Fastfetch al hacer login",
"singleCaption": "Un terminal del host abierto — la barra de arriba muestra el recuento (1 / 4 terminals), + New, Search, Clear y Close. Las ayudas de teclado para móvil aparecen bajo el terminal en dispositivos táctiles.",
"target": {
"heading": "Destino de la conexión",
"body1": "La pestaña Terminal abre una shell en el propio host Proxmox — el mismo login que obtendrías por SSH. Cada pestaña abre un terminal del host completamente nuevo.",
"body2": "Para llegar a un contenedor LXC desde el navegador, usa el botón Console dedicado en cada tarjeta de CT en ejecución de la pestaña VMs y LXCs. Abre una modal que ejecuta pct enter <vmid> y reutiliza la misma barra para móvil descrita abajo."
},
"menuGuard": {
"heading": "Protección de autoactualización de menu en este terminal",
"body1": "menu se autoactualiza sustituyendo su árbol de scripts y recargándose al aceptar. Funciona por SSH o consola Proxmox, pero en el navegador cerraría la PTY de la shell e interrumpiría el WebSocket. Para evitarlo, check_updates_stable, check_updates_beta y apply_release_channel consultan PROXMENUX_TERMINAL y detectan el contexto Monitor.",
"body2": "Al detectarlo, el diálogo sí/no se sustituye por un mensaje informativo con el comando oficial del instalador: bash -c \"$(wget -qLO - https://raw.githubusercontent.com/MacRimi/ProxMenux/main/install_proxmenux.sh)\" para estable y la URL equivalente de install_proxmenux_beta.sh para beta. Ejecuta la actualización por SSH o consola del host Proxmox; el terminal del navegador solo permite leer y confirmar el mensaje."
},
"fourTerminals": {
"heading": "Hasta cuatro terminales a la vez",
"intro": "La pestaña permite abrir hasta cuatro terminales del host simultáneamente, cada uno con su propia PTY y WebSocket: son sesiones independientes. Los iconos junto a «Nuevo» alternan entre dos disposiciones:",
"items": [
"Vista en pestañas: un terminal visible y los demás como pestañas con nombre arriba (Terminal 1, Terminal 2…). Adecuado para trabajar en una tarea con las otras en segundo plano.",
"Vista en rejilla: todos los terminales abiertos en una rejilla 2×2. Permite vigilar htop en uno, iftop en otro y editar en un tercero sin cambiar de pestaña."
],
"outro": "La barra muestra el recuento (1/4 terminales, 4/4 terminales). + Nuevo abre una pestaña y la × de su cabecera cierra solo esa. El botón rojo grande Cerrar de arriba cierra todos los terminales."
},
"gridAlt": "Pestaña Terminal de ProxMenux Monitor — vista en rejilla con cuatro terminales del host ejecutando ls, configuración de red, iftop y el menú principal de ProxMenux uno al lado del otro",
"gridCaption": "Vista en rejilla (4 / 4 terminales): cuatro PTY independientes en paralelo, con listado de directorio, /etc/network/interfaces, iftop y el menú principal de ProxMenux. Alterna entre rejilla y pestañas con el selector de disposición de la barra.",
"keyboard": {
"heading": "Botones de teclado para dispositivos móviles",
"intro": "Los teclados de móvil y tablet suelen carecer de ESC, TAB, flechas y combinaciones de modificadores. Estas teclas son necesarias para manejar vim, nano, htop o menús TUI. Terminal añade botones táctiles debajo cuando la pantalla es pequeña o el dispositivo admite interacción táctil:",
"headerButton": "Botón",
"headerSends": "Envía",
"headerUse": "Uso típico",
"rows": [
{
"button": "ESC",
"sends": "\\x1b",
"use": "Salir del modo insertar en vim, cancelar un diálogo TUI, abandonar una búsqueda."
},
{
"button": "TAB",
"sends": "\\t",
"use": "Autocompletado de rutas y navegación entre campos en dialog/whiptail."
},
{
"button": "↑ ↓ ← →",
"sends": "\\x1bO[ABCD]",
"use": "Historial de la shell, movimiento del cursor, navegación de menús."
},
{
"button": "↵ Intro",
"sends": "\\r",
"use": "Confirmar. Algunos teclados en pantalla sustituyen Intro por Ir/Hecho; este botón evita ambigüedades."
},
{
"button": "Ctrl ▾",
"sends": "Desplegable",
"useRich": true
}
],
"ctrlIntro": "Tres secuencias de control:",
"ctrlItems": [
"Ctrl+C — cancelar / interrumpir el comando en ejecución (\\x03).",
"Ctrl+X: salir de nano (\\x18).",
"Ctrl+R: búsqueda inversa en el historial de bash (\\x12)."
],
"modalTitle": "La misma barra en la ventana de consola LXC",
"modalBody": "La consola que abres desde VMs y LXCs → Consola muestra los mismos botones de teclado bajo la ventana. Al conectar, introduce automáticamente pct enter <vmid> para entrar directamente en el contenedor."
},
"lxcAlt": "Ventana de consola LXC de ProxMenux Monitor — Terminal: ubuntu (ID: 103), con la misma barra para móviles (ESC, TAB, flechas, Intro, Ctrl) debajo",
"lxcCaption": "Consola LXC abierta desde VMs y LXCs → Consola. La cabecera identifica el contenedor (Terminal: ubuntu (ID: 103)) y debajo del terminal aparece la misma barra táctil.",
"search": {
"heading": "Buscar comandos: guía de referencia integrada",
"intro": "El botón azul Buscar abre una búsqueda aproximada de comandos. Escribe unas letras de un comando Linux o Proxmox (ls, tar, qm, pct, zpool, systemctl…) para ver ejemplos de uso y Enviar al terminal activo con un toque. Así puedes consultar sus opciones sin cambiar de pestaña.",
"modalAlt": "Ventana Buscar comandos de ProxMenux Monitor: búsqueda aproximada de comandos Linux y Proxmox con cheat.sh y varios ejemplos de ls",
"modalCaption": "Buscar comandos con la consulta ls: cada resultado muestra comando, descripción y una flecha de envío al terminal activo. La esquina inferior derecha indica la fuente (Con tecnología de cheat.sh).",
"aboutLabel": "Sobre cheat.sh:",
"aboutBody": "es una guía de referencia de código abierto mantenida por la comunidad, con ejemplos breves y prácticos de cientos de comandos Linux, herramientas de administración y lenguajes de programación. Diseñada para consultarse con curl cheat.sh/<command>, también funciona en el navegador. ProxMenux Monitor envía las consultas mediante un proxy del servidor para mantener el mismo origen que el panel.",
"headerSource": "Fuente",
"headerWhen": "Cuándo se usa",
"headerWhat": "Lo que ves",
"onlineLabel": "(en línea)",
"onlineWhen": "Cuando el host tiene acceso a internet y el proxy de cheat.sh responde.",
"onlineWhat": "Varios ejemplos prácticos por comando con su descripción encima. El punto de estado de la cabecera es verde.",
"fallbackLabel": "Alternativa local",
"fallbackWhen": "Cuando cheat.sh no está disponible (host offline, firewall restrictivo, caída de cheat.sh).",
"fallbackWhat": "Una lista incluida de comandos habituales Linux y Proxmox. El catálogo es menor, pero siempre está disponible. El punto de estado es rojo.",
"sendingNote": "Cómo funciona el envío: la flecha junto al resultado envía el texto al terminal activo (la pestaña enfocada o el último terminal pulsado en rejilla). La ventana se cierra automáticamente para que puedas pulsar Intro."
},
"auth": {
"heading": "Autenticación",
"items": [
"El navegador primero solicita un ticket de un solo uso mediante POST /api/terminal/ticket, autenticado con JWT en la cabecera Authorization. Después envía ese ticket al abrir el WebSocket. Caduca a los 5 segundos; si la autenticación está activa y falta o no es válido, se cierra la conexión antes de crear una PTY.",
"Si el Monitor está detrás de un reverse proxy, el proxy debe reenviar los upgrades WebSocket. Mira la página Acceso y autenticación para snippets de Nginx / Caddy / Traefik."
]
},
"clipboard": {
"heading": "Portapapeles, historial de pantalla y tamaño",
"items": [
"Copiar y pegar: usa el portapapeles del navegador. Selecciona texto con ratón o trackpad y usa el atajo del sistema (Cmd+C en macOS, Ctrl+Shift+C en Linux/Windows). Los escritorios Linux también permiten pegar con clic central.",
"Historial de pantalla: rueda o desplazamiento con dos dedos. xterm.js conserva en memoria los últimos miles de líneas.",
"Cambiar tamaño: al redimensionar el panel se ajusta la ventana PTY para mostrar correctamente htop y vim.",
"Reconexión al volver a la pestaña: cambiar de app en móvil o tablet, especialmente iPad, puede cortar el WebSocket. Terminal detecta el cambio de visibilidad y reconecta al volver, con un tiempo de espera de 15 segundos para VPN lentas."
]
},
"disconnect": {
"heading": "Causas de desconexión",
"intro": "Las razones más comunes por las que termina una sesión y qué hacer con cada una:",
"headerCause": "Causa",
"headerFix": "Solución",
"rows": [
{
"cause": "JWT de sesión caducado al abrir o reconectar un terminal (ventana de 24 h).",
"fix": "Refresca la página y vuelve a hacer login. El terminal no está pensado para sesiones desatendidas, así que el tiempo de vida del JWT coincide con el del login normal del panel."
},
{
"cause": "Tiempo de espera por inactividad del proxy inverso.",
"fix": "Aumenta proxy_read_timeout en Nginx o su equivalente en Caddy / Traefik (ejemplos en Acceso y autenticación)."
},
{
"cause": "Móvil o tablet en reposo.",
"fix": "Al reactivarse el dispositivo, la pestaña reconecta automáticamente (15 s de espera para rutas VPN). Si falla, recárgala."
},
{
"cause": "Reinicio del servicio en el host.",
"fix": "Reiniciar proxmenux-monitor.service cierra todas las PTY. Abre nuevos terminales cuando el panel termine de recargarse."
}
]
},
"warning": {
"title": "El terminal es una shell de root en el host",
"body": "El terminal hereda el usuario de la unidad systemd (root) y tiene todos los privilegios del host Proxmox. Configura usuario, contraseña y 2FA en Acceso y autenticación antes de dar acceso fuera de tu red local. Con la autenticación desactivada, quien llegue al puerto 8008 puede abrir una shell de root sin más confirmaciones ni credenciales SSH. Para acceso externo, usa Secure Gateway (Tailscale) o un proxy inverso HTTPS en lugar de publicar el puerto en Internet."
},
"whereNext": {
"heading": "Por dónde seguir",
"items": [
{
"label": "Acceso y autenticación",
"href": "/docs/monitor/access-auth",
"tail": " — ejemplos de proxy inverso con las líneas de cambio de protocolo WebSocket necesarias para el terminal."
},
{
"label": "Arquitectura",
"href": "/docs/monitor/architecture",
"tail": " — transporte WebSocket (HTTP mediante flask-sock y HTTPS / WSS mediante gevent)."
},
{
"label": "Referencia de la API",
"href": "/docs/monitor/api",
"tail": " — endpoints WebSocket /ws/terminal y /ws/script/, junto al resto de la API."
},
{
"label": "Integraciones → Secure Gateway",
"href": "/docs/monitor/integrations",
"tail": " — cuando quieres acceso al terminal desde fuera de la LAN sin exponer el puerto 8008."
},
{
"label": "Índice del panel",
"href": "/docs/monitor/dashboard",
"tail": " — el resto de pestañas."
}
]
}
}