mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2026-11-01 10:22:08 +00:00
170 lines
14 KiB
JSON
170 lines
14 KiB
JSON
{
|
||
"meta": {
|
||
"title": "HTTPS para ProxMenux Monitor — certificado del host Proxmox o rutas personalizadas | ProxMenux",
|
||
"description": "Sirve ProxMenux Monitor por HTTPS con el certificado del host Proxmox (detectado automáticamente, incluido el de Let’s Encrypt instalado mediante ACME de Proxmox) o un certificado personalizado en cualquier ruta del disco.",
|
||
"ogTitle": "HTTPS para ProxMenux Monitor — certificado del host Proxmox o personalizado",
|
||
"ogDescription": "Habilita HTTPS en el puerto 8008 con el certificado del host Proxmox o cualquier par .pem / .key personalizado."
|
||
},
|
||
"header": {
|
||
"title": "HTTPS para ProxMenux Monitor",
|
||
"description": "Activa HTTPS para Monitor en 8008 con el certificado del host Proxmox detectado automáticamente o uno personalizado en disco. La opción Proxmox prefiere el certificado instalado mediante ACME, si existe, y reutiliza el Let’s Encrypt gestionado por Proxmox sin otra tarea de renovación.",
|
||
"section": "Seguridad"
|
||
},
|
||
"intro": {
|
||
"title": "Qué cubre esta página",
|
||
"body": "Cómo cambiar el Monitor de HTTP a HTTPS en el panel Settings → Security, a qué apunta realmente cada fuente de certificado en disco, cómo se comporta la opción de Proxmox cuando el host tiene un certificado Let's Encrypt y cómo establecer rutas personalizadas si gestionas certificados fuera de Proxmox."
|
||
},
|
||
"wheresetting": {
|
||
"heading": "Ubicación del ajuste",
|
||
"body": "Abre Monitor y ve a <strong>Ajustes → Seguridad → HTTPS / SSL</strong>. El panel muestra HTTP o HTTPS y, si HTTPS no está activo, las fuentes de certificados detectadas.",
|
||
"imageAlt": "Panel Settings → Security → HTTPS / SSL en el Monitor mostrando el estado HTTPS desactivado, el certificado de Proxmox autodetectado (subject, issuer, expiry) y la opción Use Custom Certificate",
|
||
"caption": "Panel Ajustes → Seguridad → HTTPS / SSL antes de activar HTTPS. Monitor muestra el certificado que usa Proxmox y permite elegirlo con un clic."
|
||
},
|
||
"twoways": {
|
||
"heading": "Dos formas de habilitar HTTPS",
|
||
"proxmox": {
|
||
"title": "Usar el certificado de Proxmox",
|
||
"summary": "Un clic: Monitor reutiliza el certificado que Proxmox VE presenta en el puerto 8006.",
|
||
"items": [
|
||
"Detectado automáticamente, sin introducir rutas",
|
||
"Prefiere el certificado ACME si existe; si no, usa el autofirmado predeterminado",
|
||
"Proxmox renueva; Monitor valida y carga el certificado en la siguiente conexión TLS nueva"
|
||
]
|
||
},
|
||
"custom": {
|
||
"title": "Usar un certificado personalizado",
|
||
"summaryRich": "Apunta el Monitor a un par <code>.pem</code> / <code>.key</code> en cualquier sitio del disco.",
|
||
"items": [
|
||
"Solo rutas absolutas (el proceso del Monitor debe poder leer ambos)",
|
||
"Útil cuando los certificados vienen de <code>certbot</code>, <code>acme.sh</code> o un wildcard",
|
||
"La renovación queda a tu cargo: reinicia Monitor cuando cambien los archivos"
|
||
]
|
||
}
|
||
},
|
||
"proxmoxCert": {
|
||
"heading": "Certificado de Proxmox — a qué apunta realmente",
|
||
"intro": "Proxmox VE mantiene dos pares de certificado en <code>/etc/pve/local/</code>:",
|
||
"table": {
|
||
"headers": {
|
||
"file": "Archivo",
|
||
"origin": "Origen",
|
||
"when": "Cuándo lo usa el Monitor"
|
||
},
|
||
"rows": [
|
||
{
|
||
"fileRich": "<code>pveproxy-ssl.pem</code><br /><code>pveproxy-ssl.key</code>",
|
||
"originRich": "Certificado personalizado subido vía la UI de Proxmox — incluyendo el certificado Let's Encrypt emitido en <em>Datacenter → Node → Certificates → ACME</em>.",
|
||
"when": "Se prefiere cuando existen ambos archivos; Monitor usa el certificado presentado por Proxmox."
|
||
},
|
||
{
|
||
"fileRich": "<code>pve-ssl.pem</code><br /><code>pve-ssl.key</code>",
|
||
"originRich": "Certificado self-signed generado en el momento de la instalación por el PKI de Proxmox.",
|
||
"whenRich": "Fallback cuando no hay <code>pveproxy-ssl.pem</code> presente."
|
||
}
|
||
]
|
||
},
|
||
"callout": {
|
||
"title": "Misma prioridad que el propio Proxmox",
|
||
"bodyRich": "<code>pveproxy</code> aplica la misma selección: al elegir Proxmox, Monitor usa el certificado que la interfaz de Proxmox presenta en 8006, sin copiarlo ni mantener otro proceso de renovación."
|
||
}
|
||
},
|
||
"letsencrypt": {
|
||
"heading": "Obtener un certificado Let's Encrypt vía Proxmox ACME",
|
||
"intro": "Proxmox VE incluye su propio cliente ACME. <em>«Order Certificate Now»</em> guarda el resultado en <code>/etc/pve/local/pveproxy-ssl.pem</code>, que Monitor lee. Los cinco pasos siguientes condensan el procedimiento de la <extlink1>guía oficial de Proxmox</extlink1> en los comandos necesarios.",
|
||
"prereqs": {
|
||
"title": "Prerrequisitos",
|
||
"items": [
|
||
"El nodo tiene un nombre DNS real (no solo una IP) apuntándole.",
|
||
"<strong>O bien</strong> puerto 80 accesible desde Internet (verificación HTTP-01, la más sencilla), <strong>o bien</strong> proveedor DNS con credenciales API (DNS-01, funciona tras NAT y admite comodines).",
|
||
"Una dirección de email para la cuenta ACME."
|
||
]
|
||
},
|
||
"step1": {
|
||
"heading": "Paso 1 — Registrar la cuenta ACME",
|
||
"introRich": "Reemplaza el email por el tuyo. El nombre de cuenta <code>default</code> es solo una etiqueta — puedes usar cualquier cadena.",
|
||
"code": "pvenode acme account register default you@example.com",
|
||
"afterRich": "Proxmox te pide aceptar los términos de servicio de Let's Encrypt. Tras eso la cuenta se persiste en <code>/etc/pve/priv/acme/</code> y la pestaña ACME en la GUI la mostrará."
|
||
},
|
||
"step2": {
|
||
"heading": "Paso 2 — Elige un tipo de challenge",
|
||
"http01Rich": "<strong>HTTP-01</strong> es el más fácil: está integrado, sin plugin extra. Let's Encrypt se conecta a <code>http://<your-host>/.well-known/acme-challenge/...</code> en el puerto 80, así que el puerto 80 debe estar abierto desde la internet pública a tu nodo — típicamente un port forward en tu router.",
|
||
"dns01Rich": "<strong>DNS-01</strong> funciona sin exponer el puerto 80 (bueno para homelabs detrás de CG-NAT) y es la única opción para certificados wildcard. Añades un plugin DNS una vez con el token API de tu proveedor. Ejemplo con Cloudflare:",
|
||
"code": "pvenode acme plugin add dns cf \\\n --api cloudflare \\\n --data CF_Token=YOUR_CLOUDFLARE_API_TOKEN",
|
||
"outroRich": "Para otros proveedores (Gandi, OVH, AWS Route 53, etc.), consulta <code>pvenode acme plugin add dns --help</code>. Proxmox incluye <extlink2>todos los plugins DNS de acme.sh</extlink2>."
|
||
},
|
||
"step3": {
|
||
"heading": "Paso 3 — Asocia el dominio a tu nodo",
|
||
"http01Rich": "Para HTTP-01 (usa el plugin <code>standalone</code> integrado):",
|
||
"code1": "pvenode config set --acme domains=host.example.com,account=default",
|
||
"dns01": "Para DNS-01 con el plugin de Cloudflare del paso 2:",
|
||
"code2": "pvenode config set --acmedomain0 domain=host.example.com,plugin=cf\npvenode config set --acme account=default",
|
||
"wildcardRich": "¿Wildcard? Añade <code>domain=*.example.com</code> en una entrada <code>--acmedomainN</code> separada. Los wildcards requieren DNS-01."
|
||
},
|
||
"step4": {
|
||
"heading": "Paso 4 — Pide el certificado",
|
||
"code": "pvenode acme cert order",
|
||
"afterRich": "La primera ejecución suele tardar 30–60 segundos mientras el challenge se propaga. En caso de éxito Proxmox escribe <code>/etc/pve/local/pveproxy-ssl.pem</code> + <code>.key</code>, reinicia <code>pveproxy</code> y un cron de renovación se programa automáticamente (los certificados Let's Encrypt son válidos 90 días; Proxmox los renueva a los 60)."
|
||
},
|
||
"step5": {
|
||
"heading": "Paso 5 — Verifica el issuer",
|
||
"code": "openssl x509 -in /etc/pve/local/pveproxy-ssl.pem -noout -issuer",
|
||
"afterRich": "Debería imprimir un issuer empezando por <code>O = Let's Encrypt</code>. Si en su lugar pone <code>CN = Proxmox Virtual Environment</code> la orden falló y el archivo sigue siendo el certificado self-signed de PVE — vuelve a ejecutar <code>pvenode acme cert order --debug 1</code> para ver por qué."
|
||
},
|
||
"gui": {
|
||
"title": "¿Prefieres la GUI? Los mismos cinco pasos",
|
||
"bodyRich": "<em>Datacenter → ACME</em> registra la cuenta; <em>Datacenter → ACME → Plugins</em> añade DNS; <em>Node → Certificates → ACME</em> vincula el dominio; <em>Order Certificates Now</em> ejecuta el paso 4. Los comandos anteriores sirven para automatizar y trabajar sin interfaz gráfica."
|
||
}
|
||
},
|
||
"switchToHttps": {
|
||
"heading": "Cambiar el Monitor a HTTPS",
|
||
"bodyRich": "Una vez que <code>/etc/pve/local/pveproxy-ssl.pem</code> está firmado por Let's Encrypt, abre <strong>Ajustes → Seguridad → HTTPS / SSL</strong>, comprueba que el emisor sea <em>Let's Encrypt</em> y no la CA local de Proxmox, y pulsa <strong>Usar certificado de Proxmox</strong>. Monitor se reinicia y la siguiente carga usa HTTPS en 8008 con una cadena de confianza pública. Las renovaciones ACME posteriores se validan y seleccionan en la siguiente conexión TLS nueva, sin sondeo periódico ni reinicio del servicio por renovación. <strong>Actualizar certificado</strong> sigue disponible en Seguridad como acción explícita de diagnóstico y recuperación."
|
||
},
|
||
"custom": {
|
||
"heading": "Certificado personalizado — cuándo usarlo",
|
||
"intro": "Pulsa <strong>Usar certificado personalizado</strong> e introduce dos rutas absolutas:",
|
||
"items": [
|
||
"<strong>Certificado</strong> — cadena completa en PEM (<code>.pem</code> o <code>.crt</code>).",
|
||
"<strong>Clave privada</strong>: clave correspondiente en PEM (<code>.key</code>)."
|
||
],
|
||
"outro": "Ambos archivos los lee el proceso del Monitor al arrancar. Asegúrate de que se mantengan legibles por el usuario con el que corre la unidad systemd (root por defecto). Ubicaciones comunes cuando ACME se gestiona fuera de 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": "Destinos de symlink vs. archivos",
|
||
"bodyRich": "<code>certbot</code> almacena los archivos reales en <code>/etc/letsencrypt/archive/</code> y la ruta <code>live/</code> es un symlink. Apunta el Monitor al symlink de <code>live/</code>, no al archivo de <code>archive/</code> — así cada ciclo de renovación simplemente reescribe el destino del symlink y el Monitor toma el nuevo certificado en el siguiente arranque del servicio."
|
||
}
|
||
},
|
||
"afterHttps": {
|
||
"heading": "Tras habilitar HTTPS",
|
||
"bodyRich": "Guardar el cambio escribe <code>/etc/proxmenux/ssl_config.json</code> y dispara un reinicio de la unidad systemd <code>proxmenux-monitor</code>. La pestaña del navegador perderá su conexión actual — recárgala en <code>https://<host>:8008/</code>. La primera carga con un certificado Let's Encrypt no debería mostrar warning; con el certificado self-signed de Proxmox el navegador requerirá una excepción, la misma que para el puerto 8006.",
|
||
"reverse": {
|
||
"heading": "Proxies inversos y webhooks",
|
||
"bodyRich": "Cuando el Monitor cambia a HTTPS, las URLs de webhook de Proxmox VE registradas para notificaciones también pasan de <code>http://</code> a <code>https://</code> automáticamente. Las entradas de webhook existentes se reescriben la próxima vez que una regla de notificación se guarda o se vuelve a detectar, así que no hace falta edición manual de la configuración de notificaciones de Proxmox."
|
||
}
|
||
},
|
||
"trustCa": {
|
||
"heading": "Confiar en la CA self-signed de Proxmox",
|
||
"intro1Rich": "Para conservar el certificado predeterminado de Proxmox sin ACME, importa la CA raíz del clúster en el almacén de confianza del sistema o navegador. Monitor detecta <code>/etc/pve/local/pve-ssl.pem</code> como certificado alternativo. El cliente confiará en su emisor; la URL aún debe coincidir con un nombre del certificado.",
|
||
"intro2Rich": "El archivo de la CA vive en <code>/etc/pve/pve-root-ca.pem</code> en cada nodo. En un clúster la ruta está en el sistema de archivos compartido <code>pmxcfs</code>, así que todos los nodos comparten la misma raíz, y una sola importación cubre el datacenter entero. Cópialo a tu máquina:",
|
||
"code": "scp root@<your-host>:/etc/pve/pve-root-ca.pem ./pve-root-ca.pem",
|
||
"thenImport": "Después impórtalo en el lado del cliente:",
|
||
"items": [
|
||
"<strong>Linux (todo el sistema):</strong> ejecuta <code>sudo cp pve-root-ca.pem /usr/local/share/ca-certificates/pve-root-ca.crt</code> y después <code>sudo update-ca-certificates</code>. Los navegadores que usan el almacén del sistema (Chromium, Edge) lo reconocen tras reiniciar; Firefox usa su propio almacén y requiere la importación manual siguiente.",
|
||
"<strong>macOS:</strong> abre el archivo <code>.pem</code> con doble clic en Acceso a Llaveros, añádelo al llavero <em>Sistema</em> y configura <em>Confiar → Confiar siempre</em>.",
|
||
"<strong>Windows:</strong> clic derecho en el archivo → <em>Instalar certificado</em> → guárdalo en <em>Entidades de certificación raíz de confianza</em>.",
|
||
"<strong>Firefox (cualquier SO):</strong> <em>Ajustes → Privacidad y seguridad → Certificados → Ver certificados → Autoridades → Importar</em>; marca <em>Confiar en esta CA para identificar sitios web</em>."
|
||
],
|
||
"standalone": {
|
||
"title": "Nodos standalone fuera de un clúster",
|
||
"bodyRich": "Cada host Proxmox no clusterizado tiene su propio <code>pve-root-ca.pem</code>. Si gestionas varios hosts standalone, repite la copia/importación para cada uno, o únelos a un clúster para que compartan una sola raíz."
|
||
}
|
||
},
|
||
"disable": {
|
||
"heading": "Deshabilitar HTTPS",
|
||
"bodyRich": "Pulsa <strong>Desactivar HTTPS</strong> en el mismo panel. Monitor reinicia con HTTP sin cifrar, útil si un certificado personalizado no se puede leer y el servicio no arranca. No hay otra desinstalación y los archivos de certificado no se modifican.",
|
||
"stateCallout": {
|
||
"title": "Dónde se guarda el estado",
|
||
"bodyRich": "<code>/etc/proxmenux/ssl_config.json</code> almacena las rutas de certificado activas y la fuente (<code>none</code>, <code>proxmox</code>, <code>custom</code>). Borrar el archivo equivale a deshabilitar HTTPS — en el siguiente arranque el Monitor recae en HTTP."
|
||
}
|
||
}
|
||
}
|