Passer au contenu principal

Version 1.5.0

Aperçu​

La version 1.5.0 introduit de nouvelles fonctionnalités, notamment une notification par e-mail optionnelle de Résumé quotidien, des clés API avec portée et listes d'adresses IP autorisées pour l'accès à l'API externe, des contrôles d'accès au serveur par utilisateur et des badges de version Duplicati affichés sur le tableau de bord. Les e-mails de notification sont désormais formatés en Markdown. Le service cron est configuré par défaut pour être lié à localhost. De plus, le schéma de base de données est mis à niveau vers la version 4.3 lors du démarrage.


Nouvelles fonctionnalités​

Résumé quotidien​

  • Un e-mail de statut par jour : Paramètres → Résumé quotidien (Désactivé par défaut) envoie un instantané localisé unique de chaque tâche de sauvegarde connue à l'heure que vous choisissez dans le fuseau horaire de votre navigateur. La planification est stockée en UTC. La valeur par défaut pour les nouvelles installations est 01:00 UTC. La tâche cron s'exécute une fois par jour à cette heure.
  • Ce qui est mis en pause : Lorsque le Résumé quotidien est activé, les e-mails de sauvegarde et de retard destinés au destinataire d'e-mail par défaut ne sont pas envoyés. Les destinations d'e-mail supplémentaires dans les Notifications de sauvegarde continuent de recevoir les événements correspondants, et le NTFY par tâche se poursuit. Ces paramètres par tâche restent stockés et reprennent lorsque le mode est désactivé.
  • Destinataire et lien du tableau de bord : Un destinataire de remplacement optionnel envoie le résumé à une adresse autre que celle des Paramètres de messagerie. Une URL du tableau de bord public optionnelle (ou la variable d'environnement DUPLISTATUS_PUBLIC_URL) remplit {duplistatus_link} dans l'e-mail.

Protection API externe​

  • Clés API à portée limitée (issue #79) : Les administrateurs peuvent créer des clés upload et read. Elles sont optionnelles et désactivées par défaut, de sorte que les tâches Duplicati existantes continuent de fonctionner. Le secret est affiché une seule fois et identifié ultérieurement par une empreinte digitale. Lorsque les clés ne sont pas requises, une clé valide correspondante est acceptée et suivie ; une clé invalide, désactivée, expirée ou avec une mauvaise portée est ignorée et la requête est tout de même traitée.
  • Listes d'autorisation IP : Des listes CIDR séparées peuvent restreindre l'interface d'administration et les API externes (/api/upload, /api/summary, /api/lastbackup*). Les deux listes sont désactivées par défaut et incluent toujours 127.0.0.1 et ::1. Les adresses client transmises ne sont approuvées que lorsque le pair TCP est un proxy de confiance configuré.
  • Limites de téléchargement : /api/upload a un plafond de taille de corps configurable (5 Mo par défaut) et des limites de débit par IP.

Accès et versions​

  • Accès aux serveurs par utilisateur : Paramètres → Utilisateurs peut limiter un compte non-administrateur à des serveurs sélectionnés. La valeur par défaut reste tous les serveurs actuels et futurs. Une liste personnalisée masque les autres serveurs sur le tableau de bord, les pages de détails, les graphiques et les listes de paramètres. Les administrateurs voient toujours tous les serveurs.
  • Badges de version Duplicati : Les cartes du tableau de bord et le tableau affichent la version Duplicati de chaque serveur par rapport à la dernière version pour cette chaîne (stable, beta, experimental, canary). Les versions actuelles utilisent un texte atténué ; les versions obsolètes utilisent un jaune d'avertissement. Paramètres → Versions de Duplicati affiche les versions de chaîne mises en cache et permet aux administrateurs de Vérifier quotidiennement, toutes les 12 heures ou toutes les 6 heures.
  • Échecs de livraison : Les administrateurs voient un bouton dans la barre d'outils lorsque la livraison d'e-mail ou de NTFY échoue. Il affiche l'erreur et crée un lien vers la page de paramètres correspondante.
  • Compactage hebdomadaire de la base de données : Chaque dimanche à 04:00 UTC, le service cron supprime les lignes de sauvegarde dont le serveur a disparu, les serveurs sans sauvegarde, les paramètres de notification restants et les anciennes lignes de livraison du Résumé quotidien, puis vide SQLite.
  • Heure relative dans la langue de l'interface utilisateur (issue #74) : Paramètres d'affichage → Paramètres régionaux dispose d'une case à cocher d'acceptation pour que les expressions de temps relatif restent dans la langue de l'interface lorsque les paramètres régionaux sont remplacés.

Améliorations​

Notifications​

  • Modèles d'e-mail Markdown : Les corps des e-mails de Succès, Avertissement/Erreur, En retard et Résumé quotidien sont en Markdown, rendus en HTML sanitizé et en texte brut. Les valeurs par défaut stockées non modifiées sont mises à niveau vers la nouvelle mise en page ; les modèles personnalisés sont conservés. Les messages NTFY envoient du Markdown et omettent les lignes d'en-tête de tableau GFM.
  • La langue suit l'utilisateur connecté : La langue de l'interface est stockée par compte dans le navigateur, de la même manière que le thème et les paramètres d'affichage. Le cookie NEXT_LOCALE pilote toujours la page de connexion et le rendu du serveur. Le code de langue hindi est désormais hi ; les cookies et les signets hi-Latn existants se résolvent toujours.

Opérations​

  • Plan de contrôle Cron : Le service cron se lie à 127.0.0.1 par défaut (CRON_BIND_HOST). Se lier ailleurs nécessite CRON_SERVICE_SECRET. Les routes de session administrateur sont requises pour modifier les tâches cron via l'application.
  • Taille de la restauration de la base de données : Paramètres → Maintenance de la base de données accepte les téléchargements de restauration jusqu'à 200 Mo. Si vous placez Nginx en frontal, définissez client_max_body_size à au moins 256 Mo pour que le proxy ne coupe pas le fichier en premier.
  • Serveur de développement : pnpm dev démarre Next.js (port 8666) et le service cron (port 8667) ensemble. CTRL-C arrête les deux.

Corrections de bogues​

  • Les alertes en retard ne se répètent plus à chaque vérification : Une chaîne de notification en échec n'envoie plus d'autre alerte de retard lors du prochain cycle de surveillance lorsqu'une autre chaîne a déjà été distribuée. La fenêtre unique, quotidienne, hebdomadaire ou mensuelle est enregistrée après le succès de n'importe quelle chaîne.
  • Collecter les journaux sur duplicati 2.4 : La collecte des journaux de sauvegarde et la synchronisation des planifications n'échouent plus avec Could not find machine-id in system options sur duplicati 2.4.0 et versions ultérieures. L'identifiant de machine configuré est lu depuis les paramètres du serveur.
  • Démarrage Docker : Le processus cron de production ne se termine plus immédiatement au démarrage du conteneur, et les constructions d'images n'échouent plus lors de l'installation des dépendances sur les systèmes de fichiers overlay.
  • Première connexion : Après le changement de mot de passe requis sur une nouvelle instance, l'application ouvre le tableau de bord.
  • Planification du Résumé quotidien : La modification de l'heure d'envoi crée une nouvelle occurrence. Cette heure précise envoie tout de même après Envoyer le résumé maintenant ou un autre e-mail le même jour. La liste des tâches correspond au tableau de bord (dernier rapport par serveur et Nom de la sauvegarde).

Sécurité​

Sondes, modèles et dépendances​

  • Santé et ping : GET /api/health ne liste plus les tables SQLite et n'exécute plus les requêtes du tableau de bord. /api/health et /api/ping sont limités en fréquence par IP pour les clients qui ne sont pas sur loopback. Quand l'une ou l'autre Liste d'adresses IP autorisées est activée, ces sondes acceptent loopback ainsi que les adresses de la liste Admin ou de la liste externe.
  • Email HTML : Les corps de notification sont analysés en Markdown avec le HTML brut désactivé, puis nettoyés avant l'envoi.
  • Corrections de dépendances : nodemailer est maintenant en version 10.0.9. Les résultats de l'audit de l'espace de travail de la documentation ont été résolus avec les mises à jour de undici, svgo et image-size-next.

Notes de migration​

À partir de la Version 1.4.2​

Quand vous mettez à niveau vers la Version 1.5.0 :

  1. Les migrations de la base de données s'exécutent au démarrage : Le schéma 4.2 ajoute le registre de distribution du Résumé quotidien. Le schéma 4.3 ajoute l'accès au serveur par utilisateur. Les Utilisateurs existants conservent l'accès à chaque Serveur.
  2. Les nouveaux contrôles restent Désactivé : Le Résumé quotidien, les Clés API requises et les deux Liste d'adresses IP autorisées sont Désactivé par défaut. Les URL de téléchargement duplicati existantes continuent de fonctionner jusqu'à ce que vous activiez la protection.
  3. Les listes d'autorisation incluent toujours loopback : 127.0.0.1 et ::1 sont fusionnés dans les deux listes et ne peuvent pas être supprimés dans les Paramètres.
  4. Cron se lie à localhost : Le Port cron n'est pas accessible depuis d'autres hôtes à moins que vous ne définissiez CRON_BIND_HOST et CRON_SERVICE_SECRET.
  5. Modèles de notification Par défaut : Les modèles Succès, Avertissement, En retard et Résumé quotidien non modifiés sont remplacés par les Modèles Markdown par défaut. Les Modèles personnalisés sont laissés tels quels.
  6. Dépendances : Exécutez pnpm install pour appliquer le fichier de verrouillage et les remplacements mis à jour. Node.js 24 ou plus récent est toujours requis.

Assistance​

Obtenir de l'aide​

Signaler des bogues​

Lorsque vous signalez des bogues, veuillez inclure :

  • Version : 1.5.0
  • Système d'exploitation et Version
  • Version de Docker/podman
  • Type de conteneur (Docker ou podman)
  • Messages d'erreur et journaux
  • Étapes pour reproduire

Journal des modifications détaillé​

Les sections ci-dessus sont les points forts de cette Version. La liste complète des modifications se trouve dans dev/CHANGELOG.md sous [1.5.0].


Licence​

Ce projet est sous licence Apache License 2.0.

Copyright © 2026 Waldemar Scudeller Jr.