{ "meta": { "title": "Destino Proxmox Backup Server — repositorio, cifrado, recuperación | ProxMenux", "description": "El destino PBS escribe las copias de host de ProxMenux como backups PBS. Documenta la auto-detección del repositorio desde /etc/pve/storage.cfg, la configuración manual de PBS, el comando de subida .pxar, el modelo de cifrado por keyfile del lado del cliente, el blob de escrow con passphrase de recuperación, y la recuperación del keyfile desde PBS en instalaciones frescas.", "ogTitle": "ProxMenux Backup — destino Proxmox Backup Server", "ogDescription": "Cómo escribe ProxMenux las copias de host en Proxmox Backup Server con cifrado por keyfile del lado del cliente y escrow de recuperación.", "twitterTitle": "Destino PBS de copia | ProxMenux", "twitterDescription": "Destino Proxmox Backup Server con cifrado por keyfile y escrow de passphrase de recuperación." }, "header": { "title": "Proxmox Backup Server", "description": "El destino PBS sube la raíz de staging como un único backup .pxar a un datastore de Proxmox Backup Server, con cifrado opcional por keyfile del lado del cliente y escrow automático de una passphrase de recuperación para recuperación tras reinstalación.", "section": "Backup & Restore" }, "recommendedBadge": "Destino recomendado", "aboutPbs": { "heading": "Qué es Proxmox Backup Server", "body": "Proxmox Backup Server (PBS) es el producto de servidor de copias propio de Proxmox, desarrollado y mantenido por el mismo equipo que autora Proxmox VE. Es un servidor dedicado diseñado para recibir copias desde hosts Proxmox VE (VMs, LXCs y — vía proxmox-backup-client — directorios arbitrarios del host) con deduplicación a nivel de chunk, cifrado del lado del cliente y políticas de retención aplicadas del lado del servidor. ProxMenux usa PBS como uno de los tres destinos para copias del host; cada mecanismo específico de PBS descrito en esta página (grupos de copia, archivos .pxar, --backup-id, cifrado por keyfile) es comportamiento estándar de PBS." }, "intro": { "title": "Un backup por ejecución, deduplicación a nivel de chunk", "body": "Una copia PBS produce una única entrada en el datastore, agrupada bajo el backup ID host/hostcfg-HOSTNAME/BACKUP-TIME. El contenido es un archivo .pxar con el mismo layout de tres bloques descrito en Cómo funciona. PBS deduplica a nivel de chunk en todas las copias del datastore, por lo que las copias siguientes del mismo host transfieren y almacenan sólo los chunks que hayan cambiado. La retención la aplica el propio ProxMenux para los trabajos programados — run_scheduled_backup.sh ejecuta proxmox-backup-client prune con --keep-last / --keep-daily / --keep-weekly tras cada ejecución exitosa usando los valores configurados en el trabajo." }, "repoSelection": { "heading": "Selección del repositorio", "intro": "ProxMenux descubre repositorios PBS desde dos fuentes en cada copia. El usuario elige uno desde un menú unificado; la elección determina HB_PBS_REPOSITORY, HB_PBS_SECRET y HB_PBS_FINGERPRINT para esa ejecución.", "sourceRows": [ { "source": "storage.cfg de Proxmox (auto-descubierto)", "path": "/etc/pve/storage.cfg + /etc/pve/priv/storage/NAME.pw", "content": "Cualquier entrada pbs: del propio storage de Proxmox se recoge automáticamente. Servidor, datastore, usuario y fingerprint vienen de la entrada. La contraseña se lee del directorio de credenciales propio de Proxmox. Sin re-introducción por el lado de ProxMenux — el repositorio queda disponible tan pronto como se configura en Proxmox." }, { "source": "Configuración manual de ProxMenux", "path": "/usr/local/share/proxmenux/pbs-manual-configs.txt + pbs-pass-NAME.txt + pbs-fingerprint-NAME.txt", "content": "Se añade desde Configure backup destinations → PBS destinations → Add PBS. Pregunta por un nombre, usuario (root@pam o user@pbs!token), host o IP, datastore y contraseña. La contraseña se re-pregunta ante entrada vacía — un guardado vacío persistiría silenciosamente y cada copia posterior fallaría con un error de autenticación opaco. Este camino se usa cuando el PBS objetivo no está registrado como storage de Proxmox." } ], "menuTitle": "Menú de selección", "menuBody": "Ambas fuentes se muestran en un único menú, cada fila etiquetada con su origen ([proxmox] o [manual]). Las entradas cuya contraseña no se pudo resolver se marcan con un aviso ⚠ no password — seleccionarlas dispara una re-introducción de contraseña antes de iniciar la copia. El fingerprint se pasa a proxmox-backup-client vía la variable de entorno PBS_FINGERPRINT; cuando no está presente, el cliente pide al usuario aceptar el certificado del servidor de forma interactiva en la primera copia." }, "backupCommand": { "heading": "El comando de copia", "intro": "La subida es una única invocación de proxmox-backup-client backup. ProxMenux la ejecuta dentro de un envoltorio env para que las credenciales nunca aparezcan en la lista de argumentos del proceso.", "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": "Nombrado del backup ID", "backupIdBody": "El backup ID por defecto es hostcfg-HOSTNAME. Se pide al usuario que lo confirme o edite antes de la subida; cualquier carácter fuera de [A-Za-z0-9_-] se elimina y los guiones finales se recortan. Reutilizar el mismo ID entre ejecuciones es intencional — PBS trata el ID como un grupo, y cada copia posterior aparece como un nuevo backup dentro de ese grupo, compartiendo dedup con las ejecuciones previas.", "pxarTitle": "Por qué el origen es la raíz de staging completa", "pxarBody": "El origen del .pxar es la staging_root entera — rootfs/, metadata/ y manifest.json juntos. Versiones anteriores pasaban $staging_root/rootfs como origen; eso dejaba metadata/ fuera del archivo y el chequeo de compatibilidad de la restauración no tenía nada que leer, degradándose a avisos cross-host incluso en restauraciones al mismo host. Los backups antiguos creados con el origen rootfs-only siguen restaurándose correctamente gracias a la rama caso-3 de _rs_check_layout, que envuelve un árbol plano etc/var/root/usr de vuelta en una jerarquía rootfs/." }, "encryption": { "heading": "Cifrado del lado del cliente", "intro": "El cifrado por keyfile del lado del cliente de PBS cifra los chunks en el host de origen antes de la subida. ProxMenux habilita esta funcionalidad con una restricción añadida: la passphrase de recuperación es obligatoria cuando se activa el cifrado. La passphrase no protege el keyfile local; protege la copia de escrow del keyfile que ProxMenux sube a PBS para recuperación ante desastre.", "keyfileTitle": "Keyfile", "keyfileBody": "En el primer uso, proxmox-backup-client key create --kdf none genera el keyfile en /usr/local/share/proxmenux/pbs-key.conf (chmod 600). Las copias posteriores lo reutilizan tras un único diálogo de confirmación. Si la creación del keyfile falla, la copia se cancela y la salida de error de la herramienta se muestra en un diálogo.", "recoveryTitle": "Passphrase de recuperación y blob de escrow", "recoveryBody": "Tras crear el keyfile, ProxMenux pregunta dos veces por una passphrase de recuperación (con validación de coincidencia) y ejecuta openssl para producir pbs-key.recovery.enc — el keyfile cifrado con la passphrase. Se escribe una copia en /root/pbs-key.recovery-HOSTNAME-YYYYMMDD.enc para almacenamiento offsite. Cancelar el diálogo de la passphrase borra el keyfile recién creado.", "blobUploadTitle": "Grupo emparejado en PBS", "blobUploadBody1": "Tras una copia PBS que usó el keyfile, el blob de escrow se sube como un segundo grupo de copia: host/hostcfg-HOSTNAME-keyrecovery/BACKUP-TIME. El prefijo compartido hostcfg-HOSTNAME coloca ambos grupos adyacentes en la interfaz de PBS; el sufijo -keyrecovery etiqueta la relación. La subida se ejecuta sin --keyfile (el blob ya está protegido con passphrase por openssl) y sólo cuando la copia actual usó el keyfile.", "blobUploadConstraintTitle": "Por qué dos grupos", "blobUploadConstraintBody": "--keyfile es un flag por invocación en proxmox-backup-client backup: todos los archivos de una misma invocación se cifran con el keyfile o ninguno. hostcfg.pxar requiere cifrado; keyrecovery.conf no puede cifrarse con el mismo keyfile (la recuperación en instalación fresca requeriría el propio keyfile que pretende recuperar). Dos invocaciones, dos backup IDs.", "blobUploadImageAlt": "Interfaz de PBS mostrando los grupos hostcfg-HOSTNAME y hostcfg-HOSTNAME-keyrecovery adyacentes en el listado del datastore.", "blobUploadImageCaption": "Interfaz de PBS — los grupos de copia emparejados. El grupo principal contiene las copias del host; el grupo -keyrecovery contiene el blob de escrow.", "recoverTitle": "Recuperación en instalación fresca", "recoverBody": "En un host sin keyfile local, el flujo de restauración llama a hb_pbs_try_keyfile_recovery. La función lista los grupos keyrecovery del PBS configurado, descarga el más reciente y pregunta por la passphrase. En caso de éxito, pbs-key.conf se escribe en el directorio de estado de ProxMenux y la copia cifrada puede restaurarse. Sin el keyfile y la passphrase, la copia cifrada no es recuperable." }, "restoreAccess": { "heading": "Recuperación del lado de la restauración", "body": "El flujo de restauración descubre las copias de host de ProxMenux en PBS listando los grupos de backups bajo el repositorio configurado y filtrando por patrón de backup ID. La pestaña Backups del Monitor renderiza la misma lista. Seleccionar un backup dispara proxmox-backup-client restore con el mismo repositorio + contraseña + fingerprint (y --keyfile cuando el backup iba cifrado), extrayendo el .pxar a un directorio de staging que _rs_check_layout alimenta al pipeline estándar de restauración. Para recuperación manual fuera de ProxMenux, el mismo comando extrae el archivo a cualquier ruta — el árbol resultante puede inspeccionarse o alimentar una restauración a mano." }, "references": { "heading": "Referencias", "intro": "Documentación oficial de Proxmox Backup Server para los componentes en los que se apoya ProxMenux.", "items": [ { "label": "Documentación de Proxmox Backup Server", "href": "https://pbs.proxmox.com/docs/", "tail": " — punto de entrada principal, cubre instalación, administración, almacenamiento, usuarios y roles." }, { "label": "proxmox-backup-client", "href": "https://pbs.proxmox.com/docs/backup-client.html", "tail": " — la herramienta de línea de comandos que ProxMenux invoca en cada copia y restauración. Cubre backup IDs, tipos de backup, archivos, sintaxis del repositorio y variables de entorno." }, { "label": "Cifrado del lado del cliente", "href": "https://pbs.proxmox.com/docs/backup-client.html#encryption", "tail": " — creación del keyfile, modos --kdf, el modelo de cifrado que ProxMenux extiende con un escrow de passphrase." }, { "label": "Gestión de datastores", "href": "https://pbs.proxmox.com/docs/storage.html", "tail": " — creación y administración de los datastores que reciben las copias de host, incluyendo el layout del chunk-store y permisos." }, { "label": "Poda y recolección de basura", "href": "https://pbs.proxmox.com/docs/maintenance.html#pruning", "tail": " — el modelo de retención detrás de --keep-last / --keep-daily / --keep-weekly que ProxMenux aplica por trabajo programado, más cómo PBS reclama chunks tras podar." } ] } }