Saltar al contenido principal

Versión 1.5.0

Vista general​

La Versión 1.5.0 introduce nuevas funciones, incluida una notificación opcional por Correo electrónico de Resumen Diario, claves de API con ámbito definido y listas de IP permitidas para el acceso a la API externa, controles de acceso al servidor por usuario y distintivos de versión de Duplicati mostrados en el panel de control. Los correos electrónicos de notificación ahora tienen formato Markdown. El servicio cron se vincula de forma predeterminada a localhost. Además, el esquema de la base de datos se actualiza a la versión 4.3 durante el inicio.


Nuevas características​

Resumen Diario​

  • Un correo de estado por día: Configuración → Resumen Diario (desactivado de forma predeterminada) envía una única instantánea localizada de todos los trabajos de copia de seguridad conocidos a la hora que elijas en la zona horaria de tu navegador. El horario se almacena en UTC. El valor predeterminado para instalaciones nuevas es 01:00 UTC. La tarea cron se ejecuta una vez al día a esa hora.
  • Qué se pausa: Mientras el Resumen Diario está activado, no se envían correos de copia de seguridad ni de vencimiento al destinatario predeterminado de Correo electrónico. Los destinos de correo adicionales en Notificaciones de Copia de Seguridad siguen recibiendo los eventos coincidentes, y NTFY por trabajo continúa. Esos ajustes por trabajo permanecen almacenados y se reanudan cuando se desactiva el modo.
  • Destinatario y enlace del panel: Un destinatario alternativo opcional envía el resumen a una dirección distinta de la configurada en Configuración de correo electrónico. Una URL del panel público opcional (o la variable de entorno DUPLISTATUS_PUBLIC_URL) completa {duplistatus_link} en el correo.

Protección de API externa​

  • Claves de API con ámbito (incidencia #79): Los administradores pueden crear claves upload y read. Son opcionales y están desactivadas de forma predeterminada, por lo que los trabajos de Duplicati existentes siguen funcionando. El secreto se muestra una vez y luego se identifica mediante una huella digital. Cuando no se requieren claves, una clave válida y coincidente se acepta y se registra; una clave inválida, desactivada, expirada o con ámbito incorrecto se ignora y la solicitud continúa de todos modos.
  • Listas blancas de IP: Listas CIDR independientes pueden restringir la interfaz de administración y las APIs externas (/api/upload, /api/summary, /api/lastbackup*). Ambas listas están desactivadas de forma predeterminada e incluyen siempre 127.0.0.1 y ::1. Las direcciones de cliente reenviadas solo se consideran de confianza cuando el par TCP es un proxy de confianza configurado.
  • Límites de subida: /api/upload tiene un límite configurable del tamaño del cuerpo (5 MB de forma predeterminada) y límites de frecuencia por IP.

Acceso y versiones​

  • Acceso por servidor por usuario: Configuración → Usuarios puede limitar una cuenta que no sea de administrador a servidores seleccionados. El valor predeterminado sigue siendo todos los servidores actuales y futuros. Una lista personalizada oculta otros servidores en el panel, las páginas de detalle, los gráficos y las listas de configuración. Los administradores siempre ven todos los servidores.
  • Insignias de versión de Duplicati: Las tarjetas del panel y la tabla muestran la versión de Duplicati de cada servidor frente a la última versión de ese canal (stable, beta, experimental, canary). Las versiones actuales usan texto atenuado; las versiones desactualizadas usan amarillo de advertencia. Configuración → Versiones de Duplicati muestra las versiones de canal almacenadas en caché y permite a los administradores establecer una comprobación diaria, cada 12 horas o cada 6 horas.
  • Errores de entrega: Los administradores ven un botón en la barra de herramientas mientras falla la entrega de correo electrónico o NTFY. Muestra el error y enlaza a la página de configuración correspondiente.
  • Compactación semanal de la base de datos: Cada domingo a las 04:00 UTC, el servicio cron elimina las filas de copias de seguridad cuyo servidor ya no existe, los servidores sin copias de seguridad, la configuración de notificaciones sobrante y las filas antiguas de entrega del Resumen Diario, y luego compacta SQLite con vacuum.
  • Hora relativa en el idioma de la interfaz (incidencia #74): Configuración de visualización → Configuración regional tiene una casilla de activación voluntaria para que las expresiones de hora relativa permanezcan en el idioma de la interfaz cuando se sobrescribe la Configuración regional.

Mejoras​

Notificaciones​

  • Plantillas de correo electrónico en Markdown: Los cuerpos de Éxito, Advertencia/Error, Vencida y Resumen Diario son Markdown, renderizados a HTML saneado y texto plano. Los valores predeterminados almacenados sin modificar se actualizan al nuevo diseño; las plantillas personalizadas se conservan. Los mensajes NTFY se envían en Markdown y omiten las filas de encabezado de las tablas GFM.
  • El idioma sigue al usuario que ha iniciado sesión: El idioma de la interfaz se almacena por cuenta en el navegador, de la misma manera que el tema y la configuración de visualización. La cookie NEXT_LOCALE sigue controlando la página de inicio de sesión y el renderizado del servidor. El código de configuración regional del hindi ahora es hi; las cookies y los marcadores hi-Latn existentes siguen resolviéndose correctamente.

Operaciones​

  • Plano de control de cron: El servicio cron se vincula a 127.0.0.1 de forma predeterminada (CRON_BIND_HOST). Vincularlo a otra dirección requiere CRON_SERVICE_SECRET. Se requieren rutas de sesión de administrador para cambiar las tareas de cron a través de la aplicación.
  • Tamaño de restauración de base de datos: Configuración → Mantenimiento de base de datos acepta subidas de restauración de hasta 200 MB. Si colocas Nginx delante, configura client_max_body_size a al menos 256 MB para que el proxy no corte el archivo primero.
  • Servidor de desarrollo: pnpm dev inicia Next.js (puerto 8666) y el servicio cron (puerto 8667) juntos. CTRL-C detiene ambos.

Correcciones de errores​

  • Las alertas de vencidas ya no se repiten en cada comprobación: Un canal de notificación fallido ya no envía otra alerta de vencida en la siguiente pasada de monitorización cuando otro canal ya se ha entregado. La ventana única, diaria, semanal o mensual se registra después de cualquier canal exitoso.
  • Recopilar registros en Duplicati 2.4: La recopilación de registros de copias de seguridad y la sincronización de programaciones ya no fallan con Could not find machine-id in system options contra Duplicati 2.4.0 y posteriores. El ID de máquina configurado se lee desde la configuración del servidor.
  • Inicio en Docker: El proceso de cron de producción ya no se cierra inmediatamente al iniciar el contenedor, y las compilaciones de imágenes ya no fallan al instalar dependencias en sistemas de archivos overlay.
  • Primer inicio de sesión: Después del cambio de contraseña requerido en una instancia nueva, la aplicación abre el panel de control.
  • Programación del Resumen Diario: Cambiar la hora de envío crea una nueva ocurrencia. Esa hora sigue enviándose después de Enviar resumen ahora u otro correo electrónico el mismo día. La lista de tareas coincide con el panel de control (último informe por servidor y nombre de copia de seguridad).

Seguridad​

Sondas, plantillas y dependencias​

  • Salud y ping: GET /api/health ya no lista tablas de SQLite ni ejecuta consultas del panel de control. /api/health y /api/ping tienen límite de tasa por IP para clientes que no están en loopback. Cuando cualquiera de las listas de IPs permitidas está habilitada, esas sondas aceptan loopback más direcciones de la lista de administrador o de la lista externa.
  • HTML del correo electrónico: Los cuerpos de notificación se procesan como Markdown con HTML sin procesar desactivado, y luego se sanean antes de enviarse.
  • Correcciones de dependencias: nodemailer ahora es 10.0.9. Los hallazgos de la auditoría del espacio de trabajo de documentación se resolvieron con undici, svgo y image-size-next actualizados.

Notas de migración​

Desde la versión 1.4.2​

Al actualizar a la versión 1.5.0:

  1. Las migraciones de base de datos se ejecutan al iniciar: El esquema 4.2 añade el registro de entrega del Resumen Diario. El esquema 4.3 añade acceso al servidor por usuario. Los usuarios existentes conservan el acceso a todos los servidores.
  2. Los nuevos controles permanecen desactivados: El Resumen Diario, las claves de API requeridas y ambas listas de IPs permitidas están desactivadas de forma predeterminada. Las URLs de subida de Duplicati existentes siguen funcionando hasta que actives la protección.
  3. Las listas permitidas siempre incluyen loopback: 127.0.0.1 y ::1 se fusionan en ambas listas y no se pueden eliminar en Configuración.
  4. Cron se vincula a localhost: El puerto de cron no es accesible desde otros hosts a menos que configures CRON_BIND_HOST y CRON_SERVICE_SECRET.
  5. Plantillas de notificación predeterminadas: Las plantillas sin modificar de Éxito, Advertencia, Vencida y Resumen Diario se reemplazan con los valores predeterminados de Markdown. Las plantillas personalizadas se dejan tal como están.
  6. Dependencias: Ejecuta pnpm install para aplicar el archivo de bloqueo y las anulaciones actualizadas. Aún se requiere Node.js 24 o posterior.

Soporte​

Obtención de ayuda​

Informe de errores​

Al informar errores, incluya:

  • Versión: 1.5.0
  • Sistema operativo y versión
  • Versión de Docker/podman
  • Tipo de contenedor (Docker o podman)
  • Mensajes de error y registros
  • Pasos para reproducir

Registro de cambios detallado​

Las secciones anteriores son los aspectos destacados de esta versión. La lista completa de cambios está en dev/CHANGELOG.md bajo [1.5.0].


Licencia​

Este proyecto está licenciado bajo la Licencia Apache 2.0.

Copyright © 2026 Waldemar Scudeller Jr.