Whitepaper — PodHeitor Web Interface

Whitepaper — PodHeitor Web Interface

Interfaz web PodHeitor unificada. Catálogo, jobs, restore wizards, dashboards Prometheus integrados — una UI para operación, sin PHP ni CGI legados.

  • UI moderna en Rust — backend HTTP/2, frontend SPA, sub-100ms en acciones comunes.
  • Restore wizard — usuario avanza por pasos, sin comandos bconsole.
  • Dashboards Prometheus — métricas nativas exportadas, sin scraping externo.
  • RBAC granular — quién puede restaurar qué, scope por cliente / pool / storage.
  • Multi-tenancy — cada cliente ve solo sus jobs, audit log inmutable.

Producción en 30 días, al menos 50% más barato. Trial gratuito, RPMs y DEBs firmados, soporte directo con Heitor Faria. Reemplace su licencia Veeam, Commvault o Bacula Enterprise sin romper la ventana nocturna.

Solicitar trial gratuito de 30 días →

Tabla de contenidos

  1. Resumen ejecutivo
  2. Introducción y contexto de mercado
  3. Visión general de la arquitectura
  4. Análisis detallado de funcionalidades
  5. Matriz de funcionalidades
  6. Guía de instalación
  7. Referencia de configuración
  8. Ejemplos de configuración
  9. Dimensionamiento y planificación de capacidad
  10. Informe de rendimiento
  11. Matriz de compatibilidad
  12. Seguridad
  13. Monitoreo
  14. Guía de resolución de problemas
  15. Casos de uso y escenarios de despliegue
  16. Comparación con otras alternativas
  17. Hoja de ruta
  18. Conclusión
  19. Información de contacto
  20. Legal / derechos de autor

1. Resumen ejecutivo

PodHeitor Backup Edition es una de las plataformas de backup de código abierto más ampliamente desplegadas en el mundo, protegiendo cientos de miles de servidores en empresas, universidades, organismos del sector público y proveedores de servicios gestionados. Sin embargo, su administración ha dependido históricamente de la interacción directa con la CLI mediante bconsole, la edición manual de archivos de configuración y una obsoleta interfaz web opcional que no refleja los estándares de usabilidad de las plataformas SaaS modernas. Los administradores que necesitan gestionar cientos de clientes, orquestar flujos de trabajo complejos de restauración o configurar la creciente familia de plugins PodHeitor se ven obligados a recurrir a scripts frágiles y enfrentan un elevado riesgo operacional.

PHWEB — PodHeitor Web Interface cambia todo eso. PHWEB es una aplicación web Rust de pila completa y nivel de producción que ofrece una consola de gestión moderna y orientada a tareas para PodHeitor Backup Edition. Proporciona paridad operacional completa con Bacula Enterprise BWeb — la referencia comercial para la gestión web de Bacula — al tiempo que agrega soporte de primera clase para todos los plugins PodHeitor, un pipeline de configuración transaccional con reversión en 1 clic, un Copiloto de IA, diagramas de topología en tiempo real y una arquitectura extensible diseñada para escalar hacia despliegues MSP multi-inquilino.

Construido sobre Axum (backend) y Leptos 0.7 (frontend, compilado a WASM), PHWEB es un único binario desplegable sin Node.js, sin entorno de ejecución Python ni stack PHP. Se conecta al Director de Bacula a través de la interfaz estándar bconsole — compatible con todas las versiones de PodHeitor Backup desde la 9.x en adelante — y persiste sus propios metadatos en PostgreSQL. Se expone una REST API completa para automatización e integración con plataformas externas de monitoreo.

PHWEB ha alcanzado la versión 0.2.86 con 162 fases de desarrollo completadas, 279 casos de prueba automatizados aprobados y un despliegue en vivo ejecutándose sobre Bacula 15.0.3 en un entorno de laboratorio de producción. La interfaz cubre 42 módulos funcionales, desde el dashboard hasta el Copiloto de IA, y soporta tres idiomas (PT-BR, EN, ES) de forma nativa. Para cualquier organización que ejecute PodHeitor Backup, PHWEB es el camino más completo y rentable hacia una interfaz de gestión moderna y defendible.


2. Introducción y contexto de mercado

2.1 La brecha en la gestión de PodHeitor Backup

PodHeitor Backup Edition ofrece capacidades de motor de backup excepcionales: soporte para clientes multiplataforma, programación avanzada, gestión de pools y volúmenes, un rico lenguaje de FileSet y una API de plugins que permite una integración profunda con hipervisores, bases de datos y sistemas de almacenamiento. Lo que no proporciona de manera predeterminada es una interfaz administrativa moderna.

La interfaz estándar es bconsole: una CLI interactiva línea por línea que requiere que los administradores memoricen la sintaxis de los comandos, interpreten la salida de texto semiestructurado y editen archivos de configuración ASCII con un editor de texto. Para usuarios expertos en entornos pequeños, esto es manejable. Para operadores de helpdesk que necesitan iniciar una restauración de archivos, para ejecutivos que necesitan un dashboard de estado o para organizaciones con decenas de clientes y configuraciones complejas de plugins, la CLI sin procesar es una responsabilidad — no una funcionalidad.

El resultado es una brecha de mercado bien documentada: las organizaciones que ejecutan PodHeitor Backup invierten fuertemente en scripts y procedimientos manuales para compensar la ausencia de una capa de interfaz de usuario, o pagan por Bacula Enterprise BWeb, una interfaz comercial que añade un costo de licencia significativo. Una tercera opción — migrar a una plataforma de backup diferente — introduce un costo y un riesgo operacional mucho mayores que el problema de interfaz que pretendía resolver.

2.2 Opciones de interfaz existentes y sus limitaciones

Solución Descripción Limitaciones clave
bconsole (CLI) CLI estándar de Bacula Sin interfaz gráfica, curva de aprendizaje pronunciada, sin restauración de autoservicio
Bacularis Interfaz web PHP de código abierto Stack PHP, paridad parcial con BWeb, sin soporte para plugins PodHeitor, RBAC limitado
BWeb (Bacula Enterprise) Interfaz comercial Perl/CGI incluida con Enterprise Requiere licencia Enterprise, sin soporte para Community, costo adicional significativo
Dashboards personalizados (Grafana + scripts) Monitoreo ad-hoc Solo lectura, sin restauración, sin gestión de configuración, alto costo de mantenimiento

Ninguna de estas opciones ofrece la combinación completa de: despliegue compatible con código abierto, cobertura funcional completa con paridad BWeb, configuración nativa de plugins PodHeitor, gestión transaccional de configuración con reversión y un RBAC de nivel empresarial con registro de auditoría.

2.3 El enfoque de PHWEB

PHWEB se construye sobre tres principios fundamentales:

  1. Paridad con BWeb primero. Ninguna funcionalidad que ofrece BWeb queda fuera. Cada capacidad — gestión de jobs, restauración, almacenamiento, pools, volúmenes, autochanger, reportes, ACL — está cubierta antes de añadir cualquier extensión propia de PHWEB.
  2. Nativo para PodHeitor. PHWEB tiene conocimiento de primera clase de todos los plugins PodHeitor mediante el contrato del Plugin Hub. Los administradores configuran los plugins a través de formularios validados, no escribiendo strings de Plugin manualmente.
  3. Seguridad de misión crítica. Los cambios de configuración siguen un pipeline transaccional de 11 etapas: borrador, validación sintáctica, validación semántica, verificación ACL, análisis de impacto, aprobación (4-ojos opcional), aplicación atómica, recarga, pruebas de humo, monitoreo y reversión automática si se viola el SLO.

3. Visión general de la arquitectura

3.1 Rust de pila completa: Axum + Leptos

PHWEB es una aplicación Rust de pila completa. El backend corre sobre Axum, un framework HTTP asíncrono de alto rendimiento. El frontend está compilado de Rust a WebAssembly mediante Leptos 0.7, un framework de componentes reactivos con renderizado en el servidor e hidratación sin interrupciones. Ambas mitades comparten tipos a través del crate phweb-core, eliminando categorías enteras de errores de serialización que afectan a los stacks heterogéneos de frontend/backend.

La compilación produce un único binario autocontenido (phweb-server) más un directorio de sitio estático. No se requiere Node.js, Python ni ningún intérprete PHP en tiempo de ejecución.

Capa Tecnología Función
Backend Axum + tokio REST API, funciones de servidor, integración con Bacula, plugin hub
Frontend Leptos 0.7 (WASM) SPA reactiva con hidratación SSR
Tipos compartidos phweb-core (Rust) Modelos, tipos de API, errores — usados por ambas mitades
Base de datos PostgreSQL + SQLx Metadatos, registro de auditoría, sesiones, registro de plugins
Estilos Tailwind CSS CSS de utilidades, compilado en tiempo de compilación
Gráficos charming (ECharts) Gráficos operacionales y dashboards
Topología Cytoscape.js (wasm-bindgen) Diagrama de topología en tiempo real

3.2 Integración con el Director de Bacula

PHWEB se conecta a uno o más Directores de Bacula a través de la interfaz de subproceso estándar bconsole. El módulo BaculaControlPlane abstrae el protocolo detrás de un trait de Rust, haciendo que el transporte subyacente sea intercambiable sin afectar a ningún módulo superior. En la implementación actual:

  • Los comandos se despachan como invocaciones de bconsole con stdin en modo pipe.
  • Cuando el Director lo soporta (Bacula 9.x+), se utiliza el modo .api 2 para salida JSON.
  • Los parsers de respaldo manejan la salida de texto heredado para Directores más antiguos.
  • Cada inquilino usa un bconsole.conf aislado; las credenciales nunca se exponen a través de la API.
  • Los tiempos de espera se aplican por tipo de comando: status 5s, list 30s, restauración 120s.

4. Análisis detallado de funcionalidades

4.1 Centro de Control (Dashboard)

El Centro de Control es la pantalla de inicio operacional. Proporciona una vista unificada del estado de backup en todo el entorno sin que el operador necesite ejecutar ningún comando de bconsole.

  • Tarjetas KPI: jobs en ejecución, jobs completados, jobs fallidos en las últimas 24 horas; LEDs de accesibilidad del Director, el Storage Daemon y los clientes.
  • Tarjetas de explicabilidad: cuando un componente está en mal estado, PHWEB muestra una tarjeta en lenguaje sencillo explicando qué está mal, por qué importa y cuál es la acción correctiva recomendada.
  • Tarjeta de salud incremental: rastrea el estado de la línea base CBT/RCT por cliente; detecta desviaciones que requieren un backup Full forzado.
  • Gráfico de tendencia de jobs: ratio de éxito/fallo de jobs de 7 días trazado con ECharts.
  • Indicadores de cumplimiento de SLO: estado de RPO/RTO por servicio con alertas por umbral.

4.2 Operaciones de Backup (Gestión de jobs)

El módulo de Operaciones de Backup proporciona una gestión completa del ciclo de vida de los jobs:

  • Listar todos los jobs con filtros enriquecidos: estado, cliente, pool, programación, rango de fechas, tipo de plugin.
  • Ejecutar un job manualmente con anulación de parámetros (nivel, pool, almacenamiento).
  • Cancelar un job activo con flujo de confirmación.
  • Ver el log completo del job en tiempo real (polling, intervalo de 5s).
  • Backup Studio con arrastrar y soltar: arrastre cargas de trabajo hacia políticas; simule ventanas de retención y costo de almacenamiento antes de confirmar.
  • Asistente de incorporación por tipo de carga de trabajo: VM, base de datos, SFTP sin agente, replicación de archivos.

4.3 Restore Studio

El Restore Studio elimina la necesidad de conocer los comandos BVFS. Guía a los operadores a través de una interfaz de tres paneles:

  1. Panel izquierdo: selector de cliente + lista de jobs de backup disponibles (con fecha, nivel y tipo de plugin).
  2. Panel central: árbol de directorios BVFS con navegación por migas de pan; clic para explorar; archivos listados al entrar en un directorio.
  3. Panel derecho: cesta de restauración con los archivos/directorios seleccionados; opciones de restauración (cliente destino, ruta, eliminar prefijo); botón Iniciar Restauración.

Flujos de restauración adicionales:

  • Restauración de VM: restauración completa de VM o restauración granular a nivel de archivo desde un backup de imagen de VM, con asistente de migración entre hipervisores (vSphere ↔ Proxmox ↔ Hyper-V).
  • PostgreSQL PITR Studio: línea de tiempo visual de puntos de restauración continua WAL; selector de estrategia (DUMP, PITR, PITR_BLOCK); validación de continuidad WAL antes de restaurar; lista de verificación post-restauración.
  • Restauración completa de base de datos: restauración en modo dump para cualquier plugin de base de datos soportado.

4.4 Config Studio

Config Studio es el módulo de gestión de configuración de misión crítica. Reemplaza la edición directa de archivos por un flujo de trabajo estructurado y seguro:

  • Editor estructurado: edición basada en formularios para todos los tipos de recursos de Bacula — Director, Client, Storage, Pool, FileSet, Job, JobDefs, Schedule, Messages, Console, Catalog, Device, Collector, Tenant.
  • Modo de editor de texto: para usuarios avanzados, un editor de texto plano con resaltado de sintaxis disponible como alternativa opcional.
  • Diferencia visual: cada cambio propuesto muestra una diferencia con codificación de colores respecto a la configuración en ejecución actual.
  • Pipeline de 11 etapas: Borrador → Validación Sintáctica → Validación Semántica (verificación de referencias cruzadas) → Verificación de ACL/Política → Análisis de Impacto (jobs activos, recursos referenciados) → Aprobación (4-ojos para cambios críticos) → Aplicación Atómica → Recarga → Pruebas de Humo → Monitoreo → Reversión Automática si se viola el SLO.
  • Reversión en 1 clic: la instantánea previa a la aplicación siempre se almacena; la reversión restaura el archivo y recarga el Director automáticamente.

4.5 Plugin Hub — Configuración de plugins PodHeitor

El Plugin Hub proporciona una interfaz de configuración unificada para todos los plugins PodHeitor. En lugar de escribir un Plugin string manualmente, los operadores utilizan un formulario validado generado a partir del esquema JSON de cada plugin:

  • Descubrimiento de plugins y registro con versión y estado de salud.
  • Renderizado dinámico de formularios por plugin: campos agrupados por categoría (Conectividad, Selección, Rendimiento, Avanzado); campos sensibles enmascarados; campos de enumeración renderizados como listas desplegables; campos de múltiples valores renderizados como entradas de etiquetas.
  • Prueba de conectividad antes de guardar la configuración.
  • Serialización automática al string correcto Plugin = "..." para el FileSet.
  • Plugins soportados: vSphere, Hyper-V, Proxmox, CloudStack, PostgreSQL, SFTP sin agente, Replicación de Archivos, Deduplicación Global, Detección Activa de Ransomware, Acelerador Incremental, Restauración Granular.

4.6 Reportes y Análisis

  • Reportes integrados: jobs por período, uso de almacenamiento, cumplimiento de SLA, ratio de deduplicación, RPO/RTO de replicación, cobertura de políticas.
  • Constructor de reportes personalizados con selección de campos mediante arrastrar y soltar.
  • Exportación: CSV, PDF, JSON.
  • Entrega programada: correo electrónico, webhook, Telegram, WhatsApp.
  • Data Explorer: constructor de consultas ad-hoc con trazado multi-eje y dashboards guardados.

4.7 Centro de DR y Replicación

  • Estado de replicación por carga de trabajo con seguimiento de RPO.
  • Asistente de failover guiado: failover de prueba, failover planificado, failover no planificado, failback — cada uno con una lista de verificación previa y validación posterior a la acción.
  • Programación de simulacros de DR y puntuación de preparación.
  • Visualización del radio de impacto: antes de ejecutar un failover, vea qué servicios dependientes se ven afectados.

4.8 Módulo de Seguridad y Ransomware

  • Dashboard de puntuación de riesgo con línea de tiempo de anomalías detectadas.
  • Acciones de alerta automatizadas: aislar job, notificar al operador, disparar instantánea de DR.
  • Interruptor independiente para Detección Activa de Ransomware y Acelerador Incremental por inquilino.
  • Gestión de listas blancas y ajuste de umbrales por directorio.

4.9 Copiloto de IA

  • Consultas operacionales en lenguaje natural: «¿por qué falló el job X?», «¿cuál es el RPO actual para el cliente Y?».
  • Generación de planes de cambio con puntuación de riesgo y registro de explicabilidad.
  • Explicación de comandos y configuraciones.
  • Terminal remota asistida con salvaguardas — los comandos peligrosos requieren confirmación.

4.10 Mapa de Topología en Tiempo Real

Un diagrama en tiempo real del entorno Bacula renderizado mediante Cytoscape.js. Muestra Directores, Storage Daemons, File Daemons, plugins, rutas de red y relaciones de dependencia. Los LEDs de accesibilidad se actualizan en tiempo real. Al hacer clic en cualquier nodo se abre su panel de detalles directamente.


5. Matriz de funcionalidades

Funcionalidad PHWEB Bacularis (gratuito) BWeb (Enterprise)
Dashboard con KPIs de jobs
Gestión de jobs (ejecutar/cancelar/log)
Restauración BVFS (explorador de archivos)
Restauración granular de VM No
Asistente de migración entre hipervisores No Limitado
PostgreSQL PITR Studio No No
Gestión de almacenamiento / pool / volumen
Editor completo de configuración de Bacula Parcial
Pipeline de configuración transaccional + reversión No No
Interfaz de configuración de plugins PodHeitor Sí (11 plugins) No No
Prueba de conectividad de plugins No No
RBAC con aislamiento por inquilino Limitado
MFA (TOTP) No
Registro de auditoría inmutable (PostgreSQL) No
Endpoint Prometheus /metrics No No
Reportes programados con entrega No
Centro de DR y Replicación No Limitado
Interfaz de detección de ransomware No No
Observabilidad de deduplicación No Limitado
Copiloto de IA No No
Mapa de topología en tiempo real No No
Data Explorer con dashboards personalizados No Limitado
Despliegue remoto de agentes No
Interfaz multilingüe (PT/EN/ES) No No
Despliegue en binario único (sin PHP/Python) No (PHP) No (Perl/CGI)
Compatible con PodHeitor Backup No
Código abierto No (comercial) No

6. Guía de instalación

6.1 Requisitos previos

Requisito Detalles
Sistema operativo RHEL 9 / Rocky 9 / AlmaLinux 9 · Ubuntu 22.04+ · Debian 12+
Arquitectura x86_64
PodHeitor Backup 9.x o posterior (se recomienda 15.x)
PostgreSQL 14 o posterior (para metadatos de PHWEB; separado del catálogo de Bacula)
nginx (recomendado) Proxy inverso para terminación TLS y servicio de archivos estáticos
RAM Mínimo 512 MB; 2 GB recomendado para producción
Disco 2 GB para el binario y archivos del sitio; adicional para datos de PostgreSQL

6.2 Instalación RPM (RHEL / Rocky / AlmaLinux)

# Add the PodHeitor repository
curl -fsSL https://podheitor.com/rpm/podheitor.repo -o /etc/yum.repos.d/podheitor.repo

# Install PHWEB
dnf install -y podheitor-phweb

# Initialise the database
sudo -u postgres createuser phweb
sudo -u postgres createdb -O phweb phweb
export DATABASE_URL="postgres://phweb:CHANGEME@localhost/phweb"
/opt/phweb/bin/phweb-server --migrate-only

# Enable and start the service
systemctl enable --now phweb

6.3 Instalación DEB (Ubuntu / Debian)

# Add the PodHeitor repository
curl -fsSL https://podheitor.com/deb/podheitor.gpg | gpg --dearmor 
  -o /usr/share/keyrings/podheitor.gpg
echo "deb [signed-by=/usr/share/keyrings/podheitor.gpg] 
  https://podheitor.com/deb stable main" 
  > /etc/apt/sources.list.d/podheitor.list
apt-get update
apt-get install -y podheitor-phweb

# Initialise the database (same as RPM above)
export DATABASE_URL="postgres://phweb:CHANGEME@localhost/phweb"
/opt/phweb/bin/phweb-server --migrate-only

systemctl enable --now phweb

6.4 Unidad systemd

[Unit]
Description=PHWEB — PodHeitor Web Interface for Bacula
After=network.target postgresql.service

[Service]
Type=simple
User=phweb
Group=bacula
EnvironmentFile=/etc/phweb/phweb.env
ExecStart=/opt/phweb/bin/phweb-server
Restart=on-failure
RestartSec=5s
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

6.5 Configuración del proxy inverso nginx

server {
    listen 443 ssl http2;
    server_name phweb.example.com;

    ssl_certificate     /etc/ssl/phweb/fullchain.pem;
    ssl_certificate_key /etc/ssl/phweb/privkey.pem;

    location / {
        proxy_pass         http://127.0.0.1:3001;
        proxy_set_header   Host $host;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
        proxy_read_timeout 120s;
    }

    location /site/ {
        alias /opt/phweb/site/;
        expires 1d;
        add_header Cache-Control "public, no-transform";
    }
}

6.6 Credenciales de inicio

En el primer arranque, PHWEB crea una cuenta de administrador predeterminada:

Username: admin
Password: admin

Se le solicitará cambiar la contraseña en el primer inicio de sesión. Se recomienda encarecidamente habilitar MFA (TOTP) inmediatamente después del cambio de contraseña.


7. Referencia de configuración

PHWEB se configura mediante variables de entorno o un archivo phweb.env ubicado en /etc/phweb/.

Parámetro Valor predeterminado Descripción
DATABASE_URL requerido Cadena de conexión PostgreSQL: postgres://user:pass@host/db
PHWEB_AUTO_MIGRATE 0 Establezca en 1 para ejecutar migraciones de BD automáticamente al iniciar
LEPTOS_SITE_ADDR 127.0.0.1:3001 Dirección de enlace para el servidor HTTP de PHWEB
LEPTOS_OUTPUT_NAME phweb Prefijo de nombre para los recursos compilados; debe coincidir con cargo-leptos.toml
PHWEB_CONFIG_APPLY_ENABLED 0 Establezca en 1 para permitir que Config Studio aplique cambios a los archivos de configuración de Bacula
PHWEB_SESSION_SECRET autogenerado Clave secreta para firma de cookies de sesión (se recomienda cadena hexadecimal de 32+ bytes)
PHWEB_SESSION_MAX_AGE_SECS 86400 Tiempo de vida de la cookie de sesión en segundos (predeterminado: 24 horas)
PHWEB_BCONSOLE_BIN /opt/bacula/bin/bconsole Ruta absoluta al binario de bconsole
PHWEB_BCONSOLE_CONF /opt/bacula/etc/bconsole.conf Ruta predeterminada a bconsole.conf (sobrescrita por Director en la base de datos)
PHWEB_METRICS_ENABLED 1 Exponer métricas Prometheus en /metrics
PHWEB_LOG_LEVEL info Verbosidad del log: trace, debug, info, warn, error
PHWEB_AI_BACKEND_URL no definido URL opcional para endpoint de modelo de IA externo (funcionalidad Copiloto de IA)
PHWEB_AI_API_KEY no definido Clave de API para el backend de IA (almacenada en bóveda de secretos, nunca registrada)

8. Ejemplos de configuración

8.1 Configuración mínima con un único Director

# /etc/phweb/phweb.env

DATABASE_URL=postgres://phweb:strongpassword@localhost/phweb
PHWEB_AUTO_MIGRATE=1
LEPTOS_SITE_ADDR=127.0.0.1:3001
LEPTOS_OUTPUT_NAME=phweb
PHWEB_CONFIG_APPLY_ENABLED=1
PHWEB_BCONSOLE_BIN=/opt/bacula/bin/bconsole
PHWEB_BCONSOLE_CONF=/opt/bacula/etc/bconsole.conf
PHWEB_LOG_LEVEL=info

8.2 Configuración de producción con TLS (detrás de nginx) y métricas

# /etc/phweb/phweb.env

DATABASE_URL=postgres://phweb:prod_secret@db.internal/phweb
PHWEB_AUTO_MIGRATE=1
LEPTOS_SITE_ADDR=127.0.0.1:3001
LEPTOS_OUTPUT_NAME=phweb
PHWEB_CONFIG_APPLY_ENABLED=1
PHWEB_SESSION_SECRET=a4f3e7c901b2d8e56f0a3c7d9b1e4f2a
PHWEB_SESSION_MAX_AGE_SECS=28800
PHWEB_METRICS_ENABLED=1
PHWEB_LOG_LEVEL=warn

8.3 Entorno MSP con múltiples Directores

PHWEB soporta múltiples Directores registrados a través de la interfaz de Administración. Cada registro de Director almacena su propia configuración de bconsole, asignación de inquilino y configuración TLS. No se necesitan variables de entorno adicionales para los Directores extra más allá de la configuración base.

# Base environment (as in example 8.2)
# Additional directors are added via:
# Administration > Directors > Add Director

# Example Director record (stored in phweb.phweb_directors table):
# name:            "client-acme-dir"
# host:            "192.168.100.10"
# port:            9101
# bconsole_config: "/etc/phweb/bconsole-acme.conf"
# tenant_id:       2
# tls_enabled:     true

8.4 Entorno de depuración avanzada para resolución de problemas

# /etc/phweb/phweb.env

DATABASE_URL=postgres://phweb:devpassword@localhost/phweb
PHWEB_AUTO_MIGRATE=1
LEPTOS_SITE_ADDR=0.0.0.0:3001
LEPTOS_OUTPUT_NAME=phweb
PHWEB_CONFIG_APPLY_ENABLED=0
PHWEB_LOG_LEVEL=debug
PHWEB_METRICS_ENABLED=1

8.5 Modo de monitoreo de solo lectura (sin aplicar configuración)

# /etc/phweb/phweb.env

DATABASE_URL=postgres://phweb_ro:readonly_pass@db.internal/phweb
PHWEB_AUTO_MIGRATE=0
LEPTOS_SITE_ADDR=127.0.0.1:3001
LEPTOS_OUTPUT_NAME=phweb
PHWEB_CONFIG_APPLY_ENABLED=0
PHWEB_LOG_LEVEL=info
PHWEB_METRICS_ENABLED=1

8.6 Con Copiloto de IA habilitado

# /etc/phweb/phweb.env (add to any base config)

PHWEB_AI_BACKEND_URL=https://api.provider.example/v1
PHWEB_AI_API_KEY=sk-prod-xxxxxxxxxxxxxxxxxxx

9. Dimensionamiento y planificación de capacidad

9.1 Guías de dimensionamiento de componentes

Tamaño del entorno Directores Clientes RAM recomendada CPU recomendada Almacenamiento PostgreSQL
Pequeño 1 Hasta 50 1 GB 2 vCPU 10 GB
Mediano 1–3 50–500 2 GB 4 vCPU 50 GB
Grande 3–10 500–2000 4 GB 8 vCPU 200 GB
MSP / Empresarial 10+ 2000+ 8+ GB 16+ vCPU 500+ GB

9.2 Desglose del almacenamiento PostgreSQL

La base de datos PostgreSQL de PHWEB almacena metadatos de la interfaz — no replica el catálogo de Bacula. Los principales contribuyentes al crecimiento del almacenamiento son:

  • Registro de auditoría: aproximadamente 500 bytes por acción registrada. Con 10.000 acciones por día, crece a una tasa de aproximadamente 1,8 GB por año.
  • Almacén de sesiones: pequeño; las sesiones expiran automáticamente.
  • Caché del registro de plugins: insignificante (esquemas JSON, pocos KB por plugin).
  • Propuestas de cambios de configuración: cada propuesta almacena una diferencia y una instantánea de reversión; promedio de 5–20 KB por propuesta.
  • Salidas de reportes programados: si se almacenan localmente en lugar de entregarse externamente, presupueste 1–10 MB por reporte.

9.3 Notas de alta disponibilidad

PHWEB en sí mismo es sin estado entre solicitudes (todo el estado en PostgreSQL). Para despliegues de alta disponibilidad, ejecute dos o más instancias de PHWEB detrás de un balanceador de carga con afinidad de sesión, compartiendo un único cluster de PostgreSQL con replicación en flujo.


10. Informe de rendimiento

10.1 Tiempos de carga de páginas (medición en laboratorio)

Página Primera carga (SSR en frío) Siguientes (hidratada)
Dashboard 320 ms 85 ms
Lista de jobs (500 jobs) 480 ms 120 ms
Restore Studio (exploración BVFS) 410 ms 95 ms
Config Studio (configuración completa del Director) 550 ms 150 ms
Mapa de topología (50 nodos) 620 ms 180 ms

Mediciones realizadas en una VM de 4 vCPU con 4 GB de RAM, PostgreSQL en el mismo host, Director de Bacula conectado localmente. Latencia de red entre el navegador y el servidor: <5 ms.

10.2 Capacidad de usuarios concurrentes

Usuarios concurrentes Utilización de CPU Tiempo de respuesta mediano Tiempo de respuesta P99
10 8% 45 ms 120 ms
50 22% 65 ms 210 ms
100 45% 95 ms 380 ms
200 78% 160 ms 720 ms

10.3 Latencia de operaciones bconsole

Operación Latencia mediana Notas
status director 420 ms Incluye lanzamiento del subproceso
list jobs (last 100) 310 ms Con modo JSON .api 2
bvfs_lsdirs 180 ms Tras construcción de caché bvfs_update
run job 520 ms Solo confirmación del Director
reload 850 ms Recarga completa de la configuración del Director

10.4 Cobertura de pruebas

Fase Pruebas añadidas Total acumulado
Fase 0 (Fundación) 18 18
Fase 1 (Paridad BWeb) 42 60
Fase 2 (Configuración Completa) 38 98
Fase 3 (PodHeitor Nativo) 71 169
Fase 4 (Inteligencia) 55 224
Reconocimiento de ramas (fases 5–162) 55 279

11. Matriz de compatibilidad

11.1 Sistema operativo

SO Arquitectura Estado
RHEL 9 x86_64 Soportado
Rocky Linux 9 x86_64 Soportado
AlmaLinux 9 x86_64 Soportado
Ubuntu 22.04 LTS x86_64 Soportado
Ubuntu 24.04 LTS x86_64 Soportado
Debian 12 x86_64 Soportado
RHEL 8 / CentOS 8 x86_64 No probado (glibc < 2.34)
Ubuntu 20.04 x86_64 No probado (glibc < 2.34)
ARM64 / aarch64 cualquiera Aún no disponible

11.2 Versiones de Bacula

Versión de Bacula Estado Notas
15.0.x Totalmente soportado (probado) Objetivo principal; modo JSON .api 2 disponible
13.0.x Soportado .api 2 disponible; probado en modo de compatibilidad
11.0.x Soportado (heredado) Se usa el parser de expresiones regulares de respaldo
9.x Mejor esfuerzo Parser de expresiones regulares; algunas funcionalidades pueden no estar disponibles
7.x y anteriores No soportado Incompatibilidades en la API de plugins

11.3 Navegadores

Navegador Versión mínima Estado
Chrome / Chromium 100+ Soportado
Firefox 100+ Soportado
Safari 15+ Soportado
Edge (Chromium) 100+ Soportado
Internet Explorer Cualquiera No soportado

11.4 Compatibilidad de plugins PodHeitor

Plugin Interfaz Config PHWEB Interfaz Restore PHWEB Centro DR
podheitor-vsphere
podheitor-hyperv
podheitor-proxmox
podheitor-cloudstack Limitado
podheitor-postgresql Sí (PITR Studio) No
podheitor-sftp No
podheitor-file-replication
podheitor-global-dedup N/A No
podheitor-ransomware-detection N/A No
podheitor-incremental-accelerator N/A No
podheitor-granular-restore No

12. Seguridad

12.1 Autenticación

  • Hash de contraseñas: Argon2id con parámetros de costo predeterminados (memoria: 64 MB, iteraciones: 3, paralelismo: 4). Las contraseñas nunca se almacenan en texto plano.
  • MFA: TOTP (Contraseña de Un Solo Uso Basada en Tiempo) con SHA-1, 6 dígitos, paso de 30 segundos. Código QR generado en el servidor para la inscripción. El MFA es opcional pero muy recomendado para todas las cuentas.
  • Sesiones: basadas en cookies con HttpOnly, SameSite=Lax y Secure (en producción). Los tokens de sesión se almacenan en PostgreSQL y expiran tras 24 horas de manera predeterminada (configurable mediante PHWEB_SESSION_MAX_AGE_SECS).

12.2 RBAC

PHWEB implementa Control de Acceso Basado en Roles con aislamiento por inquilino:

Rol integrado Capacidades
admin Acceso completo: todos los módulos, todos los inquilinos, gestión de usuarios, aplicación de configuración
operator Gestión de jobs, inicio de restauración, monitoreo; sin aplicar configuración, sin gestión de usuarios
helpdesk Solo Restore Studio; dashboard de solo lectura; sin ejecutar/cancelar jobs
readonly Solo dashboard y reportes; sin acciones

Se pueden definir roles personalizados con permisos granulares por recurso y por acción. Todas las verificaciones de permisos se aplican en el servidor por el motor de políticas — el frontend deshabilita los elementos de interfaz correspondientes, pero el backend valida de manera independiente cada solicitud.

12.3 Registro de auditoría

Cada acción autenticada se registra en una tabla de registro de auditoría de solo anexar en PostgreSQL:

audit_log (
  id          BIGSERIAL PRIMARY KEY,
  user_id     UUID NOT NULL,
  action      TEXT NOT NULL,       -- e.g. "job.run", "config.apply", "restore.start"
  resource_type TEXT,
  resource_id TEXT,
  payload_json JSONB,
  ip          INET,
  tenant_id   UUID,
  timestamp   TIMESTAMPTZ NOT NULL DEFAULT now()
)

La tabla no tiene permisos de UPDATE ni DELETE para el rol de la aplicación — las entradas son inmutables una vez escritas. Un índice sobre timestamp DESC admite consultas eficientes por rango de tiempo. Las entradas de auditoría están paginadas y son filtrables en el módulo de Administración.

12.4 Protección CSRF

Todas las solicitudes que modifican el estado requieren un token CSRF válido derivado del secreto de sesión. Las funciones de servidor de Leptos manejan esto automáticamente a través del stack de middleware de Axum.

12.5 Alineación con OWASP

Riesgo OWASP Top 10 Mitigación PHWEB
Control de Acceso Roto Verificación ACL del lado del servidor por solicitud; aislamiento de inquilinos en todas las consultas
Fallos Criptográficos Contraseñas Argon2id; TLS aplicado; secretos en variables de entorno, nunca en el código
Inyección Consultas parametrizadas SQLx; lista de permitidos de comandos bconsole; sin interpolación de strings
Diseño Inseguro Pipeline de configuración de 11 etapas; aprobación 4-ojos para cambios críticos
Mala Configuración de Seguridad Valores predeterminados seguros (PHWEB_CONFIG_APPLY_ENABLED=0 por defecto); sin endpoints de depuración en producción
Componentes Vulnerables Seguridad de memoria de Rust; análisis de dependencias automatizado en CI (cargo-audit)
Fallos de Autenticación y Sesión Argon2id + TOTP + cookies HttpOnly + expiración de sesión
SSRF Rutas de bconsole.conf validadas; las URL externas en el Copiloto de IA requieren lista de permitidos explícita

12.6 Gestión de secretos

PHWEB nunca almacena secretos (claves de API, contraseñas de bconsole, claves de API de IA) en texto plano en la base de datos. Toda la configuración sensible se inyecta mediante variables de entorno o un sistema de gestión de secretos. Una futura integración con HashiCorp Vault está planificada para la Fase 5 (edición Enterprise).


13. Monitoreo

13.1 Métricas Prometheus

Cuando PHWEB_METRICS_ENABLED=1, PHWEB expone un endpoint /metrics compatible con Prometheus. Están disponibles las siguientes familias de métricas:

Métrica Tipo Descripción
phweb_http_requests_total Counter Total de solicitudes HTTP por método, ruta y código de estado
phweb_http_request_duration_seconds Histogram Distribución de latencia de solicitudes HTTP
phweb_bconsole_commands_total Counter Invocaciones de bconsole por tipo de comando y resultado
phweb_bconsole_command_duration_seconds Histogram Distribución de latencia de comandos bconsole
phweb_active_sessions Gauge Número actual de sesiones activas
phweb_audit_events_total Counter Entradas de registro de auditoría escritas, por acción
phweb_config_proposals_total Counter Propuestas de configuración por estado final
phweb_bacula_jobs_running Gauge Jobs de Bacula actualmente en ejecución (sondeados)
phweb_bacula_jobs_failed_last_24h Gauge Jobs de Bacula que fallaron en las últimas 24 horas

13.2 Verificación de salud

Un endpoint de salud liviano está disponible en GET /health:

{
  "status": "ok",
  "version": "0.2.86",
  "database": "connected",
  "bacula": "connected",
  "uptime_secs": 86400
}

Este endpoint no requiere autenticación y es adecuado para sondeos de salud de balanceadores de carga e integraciones de monitoreo externas (UptimeRobot, Nagios, Zabbix).

13.3 Registro estructurado

PHWEB emite logs JSON estructurados a stdout (capturados por el journal de systemd). Cada entrada de log incluye timestamp, nivel, ruta del módulo, ID de solicitud, ID de usuario (cuando está autenticado) e ID de inquilino. Los logs pueden reenviarse a cualquier sistema de agregación de logs (Loki, Elasticsearch, Splunk) utilizando el reenvío estándar basado en syslog o journal.


14. Guía de resolución de problemas

14.1 Problemas comunes

PHWEB inicia pero los comandos bconsole fallan silenciosamente

phweb: bconsole command failed: (empty stderr)

Causa. El usuario del servicio PHWEB no tiene permiso de lectura sobre el archivo de configuración de bconsole.
Solución: Asegúrese de que el usuario del servicio esté en el grupo bacula y que bconsole.conf sea legible por el grupo.

usermod -aG bacula phweb
chmod 640 /opt/bacula/etc/bconsole.conf
chgrp bacula /opt/bacula/etc/bconsole.conf
systemctl restart phweb

El dashboard muestra «Director inaccesible»

status: director_unreachable

Causa. El binario bconsole no puede conectarse al Director. Causas comunes: el Director no está ejecutándose, dirección/puerto incorrectos en bconsole.conf, firewall bloqueando el puerto 9101.
Solución:

# Verify Director is running
systemctl status bacula-dir

# Test bconsole manually as the phweb user
sudo -u phweb /opt/bacula/bin/bconsole -c /opt/bacula/etc/bconsole.conf <<< "status director"

El botón «Aplicar» de Config Studio está deshabilitado

Causa. PHWEB_CONFIG_APPLY_ENABLED no está establecido en 1 en el archivo de entorno.
Solución: Edite /etc/phweb/phweb.env, establezca PHWEB_CONFIG_APPLY_ENABLED=1 y reinicie el servicio.

La migración de la base de datos falla al iniciar

error: migration 0003 failed: column "tenant_id" already exists

Causa. La base de datos fue migrada parcialmente por una versión anterior.
Solución: Conéctese a la base de datos PostgreSQL y verifique la tabla _sqlx_migrations. Elimine el registro de migración fallido y vuelva a ejecutar con --migrate-only.

La página WASM carga pero muestra contenido en blanco tras la hidratación

Causa. Discrepancia de configuración regional entre SSR e hidratación. La página se renderizó en PT-BR en el servidor pero el localStorage del navegador devolvió EN.
Solución: Este es un problema conocido y resuelto (Fase A de la expansión del dashboard). Asegúrese de ejecutar PHWEB 0.2.86 o posterior.

14.2 Ubicaciones de los logs

Log Ubicación
Log de la aplicación PHWEB journalctl -u phweb -f
Log de acceso nginx /var/log/nginx/access.log
Log de errores nginx /var/log/nginx/error.log
Log de PostgreSQL /var/log/postgresql/postgresql-*.log
Depuración bconsole Integrado en el log de la aplicación PHWEB; habilite con PHWEB_LOG_LEVEL=debug

14.3 Habilitar el registro de depuración

Establezca PHWEB_LOG_LEVEL=debug en /etc/phweb/phweb.env y reinicie PHWEB. Esto registra cada invocación de bconsole y su salida sin procesar, todas las verificaciones RBAC y los eventos de sesión. El modo de depuración genera un volumen de log significativo — desactívelo cuando el problema esté resuelto.


15. Casos de uso y escenarios de despliegue

15.1 Operaciones administrativas diarias — equipo TI de PyME

Escenario. Una empresa manufacturera de 200 empleados ejecuta PodHeitor Backup protegiendo 45 servidores Linux y 12 File Daemons Windows. El equipo de TI de tres administradores necesita monitorear los backups nocturnos, responder a fallos y gestionar solicitudes de restauración de los usuarios — todo ello sin requerir experiencia en bconsole.

Solución.

  • PHWEB desplegado en una VM dedicada junto al Director de Bacula.
  • Los tres administradores tienen el rol de operator.
  • Revisión nocturna: 5 minutos en el dashboard del Centro de Control identifica cualquier job fallido; las tarjetas de explicabilidad proporcionan la causa raíz y los pasos de corrección sin requerir conocimiento de bconsole.
  • Solicitudes de restauración: los operadores de helpdesk usan el Restore Studio para explorar el historial de backups e iniciar restauraciones de archivos de forma autónoma, sin escalar a administradores senior.
  • Reporte semanal programado enviado automáticamente por correo: tasa de éxito de jobs, tendencia de uso de almacenamiento, cumplimiento de SLA.

15.2 Restauración de autoservicio por helpdesk

Escenario. Un despacho legal tiene el requisito estricto de que las restauraciones de archivos de usuarios finales deben completarse dentro de las 2 horas de la solicitud. El equipo de helpdesk no tiene formación en Bacula.

Solución.

  • Los usuarios de helpdesk tienen el rol de helpdesk en PHWEB — solo acceso al Restore Studio.
  • Seleccionan el cliente, eligen una fecha de la línea de tiempo de backup, navegan hasta los archivos requeridos y hacen clic en Restaurar — todo a través de una interfaz guiada de tres paneles.
  • Tiempo promedio de inicio de restauración: menos de 3 minutos para personal de helpdesk capacitado.
  • Todas las acciones de restauración se registran en la auditoría con identidad del usuario y timestamp.

15.3 Dashboard ejecutivo — Reportes de SLO

Escenario. El CTO de una organización del sector salud necesita un reporte mensual de cumplimiento de backups que muestre el logro de RPO/RTO en todas las cargas de trabajo protegidas, con fines regulatorios.

Solución.

  • El CTO tiene el rol de readonly en PHWEB.
  • Un reporte programado se ejecuta el primer día de cada mes, generando un PDF con la tasa de éxito de jobs, cumplimiento de SLO por carga de trabajo y tendencia de crecimiento del almacenamiento.
  • El reporte se envía automáticamente por correo al CTO y se archiva en el módulo de Reportes.
  • El dashboard de SLO proporciona una vista en vivo del RPO/RTO actual por servicio en cualquier momento.

15.4 MSP gestionando múltiples entornos de clientes

Escenario. Un proveedor de servicios gestionados administra despliegues de Bacula para 15 clientes diferentes, cada uno con su propio Director, almacenamiento y requisitos de aislamiento.

Solución.

  • Cada cliente es un inquilino separado en PHWEB, con su propio bconsole.conf y registro de Director.
  • Los ingenieros del MSP tienen acceso de administrador entre inquilinos para la gestión de configuración.
  • Los contactos de clientes tienen acceso de solo lectura al dashboard y reportes de su propio inquilino únicamente.
  • Módulo de facturación (Fase 5, futuro): medición automatizada por unidad por inquilino para facturación.

15.5 Implementación del plugin PodHeitor — entorno vSphere

Escenario. Una organización está desplegando el plugin podheitor-vsphere en un entorno vSphere de 200 VMs y necesita validar la conectividad, configurar los parámetros del FileSet y probar la restauración antes del despliegue en producción.

Solución.

  • El Plugin Hub detecta el plugin podheitor-vsphere instalado y muestra su versión y estado de salud.
  • El administrador hace clic en «Configurar» → completa el formulario dinámico (hostname de vCenter, usuario, contraseña, datacenter, glob de selección de VM, modo de transporte) → hace clic en «Probar Conexión» — PHWEB valida las credenciales y la conectividad antes de guardar.
  • El administrador crea un FileSet mediante el asistente de Backup Studio — el string de Plugin se genera automáticamente a partir de los valores del formulario validado.
  • El Restore Studio muestra un panel de restauración específico de VM para los jobs de backup que usaron este plugin.

16. Comparación con otras alternativas

16.1 PHWEB vs Bacularis

Dimensión PHWEB Bacularis
Stack tecnológico Rust (Axum + Leptos), binario único PHP + Apache/nginx, múltiples archivos
Paridad BWeb Completa (todos los módulos) Parcial (~70%)
Soporte de plugins PodHeitor Nativo (11 plugins, formularios dinámicos) Ninguno
Seguridad en gestión de configuración Pipeline transaccional de 11 etapas + reversión Edición directa de archivos, sin reversión
RBAC / multi-inquilino RBAC + aislamiento por inquilino Gestión básica de usuarios
MFA TOTP (integrado) No disponible
Copiloto de IA No
Mapa de topología Sí (Cytoscape.js en tiempo real) No
Métricas Prometheus No
Interfaz multilingüe PT-BR / EN / ES Solo EN (traducciones parciales)
Licencia Comercial Comercial — Proprietary (Copyright Heitor Faria)

16.2 PHWEB vs BWeb (Bacula Enterprise)

Dimensión PHWEB + PodHeitor Backup BWeb + Bacula Enterprise
Costo de licencia Licencia comercial PHWEB + Community (gratuito) Licencia Enterprise (costo anual significativo)
Motor Bacula PodHeitor Backup (completamente de código abierto) Bacula Enterprise (funcionalidades de código cerrado)
Interfaz de plugins PodHeitor Nativa (11 plugins) Ninguna (solo strings de Plugin)
Seguridad del pipeline de configuración Transaccional de 11 etapas + reversión Aplicación directa, sin interfaz de reversión
Copiloto de IA No
Centro de DR Sí (asistente de failover completo) Parcial
Stack tecnológico Rust (moderno, binario único) Perl/CGI (heredado)
Dependencia de proveedor Ninguna (autocontenido) Dependencia del proveedor Enterprise

16.3 Comparación de costos estimados

Solución Estimación anual (50 clientes) Notas
PHWEB + PodHeitor Backup Solo licencia PHWEB Sin tarifas de Bacula por cliente
Bacularis + PodHeitor Backup Gratuito (pero funcionalidades limitadas) Costo de soporte interno no incluido
BWeb + Bacula Enterprise Prima significativa Licenciamiento Enterprise por cliente
Veeam / Commvault / NetBackup Muy elevado Precios por socket o por VM

Contacte a heitor@opentechs.lat para una cotización específica y una comparación directa frente a su propuesta de renovación actual.


17. Hoja de ruta

PHWEB está listo para producción en la versión 0.2.86 con las 5 fases principales de funcionalidades completadas (Fundación, Paridad BWeb, Configuración Completa, PodHeitor Nativo, Inteligencia). La dirección futura del desarrollo incluye:

  • Fase 5 — Módulo de facturación. Medición por unidad protegida, licenciamiento centrado en API, clave de serie sin conexión opcional para entornos air-gapped, reportes financieros por inquilino. El cronograma depende de la decisión de estrategia comercial.
  • Canal de notificaciones WhatsApp. Integración nativa con la API de WhatsApp Business (Twilio o directa) para la entrega de alertas. La arquitectura está en su lugar; pendiente de clave de API y decisión del proveedor.
  • Aplicación móvil complementaria. Notificaciones de incidentes y flujos de aprobación críticos (aprobación de configuración 4-ojos) en iOS y Android.
  • Paquetes ARM64. Paquetes binarios para aarch64 para soportar servidores clase Raspberry Pi y ARM nativos en la nube.
  • Política como Código. Definiciones de políticas de backup con control de versiones, historial de diferencias, soporte de ramas y flujos de trabajo de aprobación estilo merge-request.
  • Paquetes de cumplimiento normativo. Plantillas de políticas preconfiguradas para LGPD / GDPR / HIPAA y generación automatizada de reportes de cumplimiento.
  • Automatización de simulacros de DR. Simulacros de failover automatizados programados con puntuación, criterios de aprobación/fallo y reportes de preparación listos para ejecutivos.
  • Marketplace. Plantillas de políticas, plantillas de reportes y asistentes de incorporación aportados por la comunidad.
  • Integración con HashiCorp Vault. Gestión de secretos externos para contraseñas de bconsole, credenciales de plugins y claves de API de IA en entornos empresariales.

No se comprometen fechas de lanzamiento específicas. La dirección de funcionalidades está guiada por el feedback de clientes y los hallazgos del laboratorio.


18. Conclusión

PHWEB cierra la brecha de interfaz de gestión que ha existido durante mucho tiempo en el ecosistema PodHeitor Backup. Proporciona el conjunto de funcionalidades operacionales completo de Bacula Enterprise BWeb — dashboard, gestión de jobs, restauración BVFS, gestión de almacenamiento, administración de usuarios y gestión de configuración — al tiempo que añade capacidades que ninguna interfaz comercial de Bacula ofrece actualmente: un pipeline de configuración transaccional de 11 etapas con reversión en 1 clic, configuración nativa de plugins PodHeitor a través de formularios dinámicos validados, un Copiloto de IA, un diagrama de topología en tiempo real y un endpoint de métricas Prometheus.

Construido íntegramente en Rust, PHWEB es un único binario desplegable sin dependencia de entorno de ejecución PHP, Python ni Node.js. Se conecta a cualquier instalación de PodHeitor Backup desde la versión 9.x en adelante a través de la interfaz estándar bconsole, sin requerir ningún cambio en la configuración de Bacula. La seguridad operacional está integrada desde el primer endpoint: contraseñas Argon2id, MFA TOTP, RBAC por inquilino, un registro de auditoría inmutable de solo añadir y protección CSRF que sigue las mejores prácticas de OWASP en toda la plataforma.

En la versión 0.2.86 con 279 pruebas automatizadas y un despliegue en producción en vivo sobre Bacula 15.0.3, PHWEB no es un prototipo ni una prueba de concepto — es la interfaz de gestión más completa y moderna disponible hoy para PodHeitor Backup.

Para comenzar:

  • Solicite una demo o descarga: https://podheitor.com
  • Solicite una cotización: heitor@opentechs.lat
  • Teléfono / WhatsApp: +1 786 726-1749 | +55 61 98268-4220

Licenciamiento

PodHeitor Web Interface (PHWEB) es software propietario, distribuido por suscripción. Para condiciones comerciales, demostración técnica o diagnóstico gratuito de 30 minutos, habla con el equipo por los canales abajo.

¿Listo para evaluar?


19. Información de contacto

Autor Heitor Faria
Empresa PodHeitor International
Sitio web https://podheitor.com
Correo heitor@opentechs.lat
Teléfono / WhatsApp +1 786 726-1749
Teléfono / WhatsApp (BR) +55 61 98268-4220
Página del producto https://podheitor.com/phweb
Soporte heitor@opentechs.lat

20. Legal / derechos de autor

© 2026 Heitor Faria — PodHeitor International — todos los derechos reservados.

PHWEB — PodHeitor Web Interface es software propietario. La copia, distribución, modificación o ingeniería inversa no autorizadas están estrictamente prohibidas. Se requiere una licencia comercial para su uso en producción.

Bacula® es una marca registrada de Kern Sibbald y la comunidad de Bacula. Todas las demás marcas registradas son propiedad de sus respectivos dueños.

Este documento se proporciona con fines informativos. Las cifras de rendimiento provienen de mediciones controladas en laboratorio y pueden variar en entornos de producción según el hardware, las condiciones de red, la configuración de Bacula y el tamaño del entorno.

Contacto para licenciamiento: heitor@opentechs.lat | https://podheitor.com | +1 786 726-1749 | +55 61 98268-4220


PHWEB — PodHeitor Web Interface for Bacula — v0.2.86 — © 2026 Heitor Faria — PodHeitor International — todos los derechos reservados — https://podheitor.com

Disponível em: pt-brPortuguês (Portugués, Brasil)enEnglish (Inglés)esEspañol

Deja una respuesta