Release: 2.2.0.106 (Canary) 2026-03-06

2.2.0.106_canary_2026-03-06

2026-03-06 - 2.2.0.106_canary_2026-03-06

This release is a canary release intended to be used for testing.

Changes in this version

MacOS full disk backup support

This version extends the full disk backup feature to include basic MacOS support.
You can now backup and restore entire disks on MacOS, including partition tables.
This is a proprietary module (source available) that requires a license to use in production.

Automatic HTTPS support

This version adds support for managed TLS certificates, making it easier to run Duplicati with HTTPS enabled.
The feature includes automatic certificate generation and management for secure connections.

This release contains a new Duplicati.CommandLine.ConfigureTool.exe / duplicati-configure tool that can be used to configure the server and generate certificates. See documentation/help for more details.

Detailed list of changes:

  • Added basic MacOS support for full disk backup and restore
  • Added support for managed TLS/HTTPS certificates
  • Fixed agent commandline argument names
  • Improved link detection on Windows
  • Fixed race condition with source provider disposal
  • Fixed Windows full-disk reattach scripts
  • Updated nuget dependencies for Mime
2 Likes

I updated my Windows and Linux machines from .105 and no issues to report so far.

1 Like

Hi,

After upgrading the Duplicati Docker image from 2.2.0.103_canary_2026-01-08 to 2.2.0.106_canary_2026-03-06, my browser started flagging the HTTPS certificate as invalid (net::ERR_CERT_AUTHORITY_INVALID).

I am using a private chain with root and intermediate CAs. When inspecting the server certificate, I noticed it only shows the leaf certificate, not the full chain.

Could this be a bug?

We did change the handling of certificates with 2.2.0.106 so it is possible, but the handling for self-provided certificates should not have changed. Can you verify that the on-disk certificate contains the intermediate certificate as well?

Can you verify that the on-disk certificate contains the intermediate certificate as well?

Hi..

Thanks for the response. I forgot to mention that, sorry. The certificate on disk has the full chain.

I registered an issue for this:

1 Like

@kevinfilipe I cannot reproduce the issue :cry:

I have added a test setup description in the comments:

Could you try with that setup and report what is different in your case?

Hi…

Could you try with that setup and report what is different in your case?

Sure! I’ll try it and report my results on GitHub. Thanks!

Yesterday a small Linux backup to an SMB share failed complaining "Found 3 remote files that are not recorded in local storage." - I tried a repair which didn’t seem to help so I deleted the database and recreated it. After that the backup ran without any errors or warming.

This morning for the same backup, with nothing changing on my servers, I got this:

Failed: Found inconsistency in the following files while validating database:
/root/.config/Duplicati/suppress_donation_messages.txt, actual size 0, dbsize 275, blocksetid: 10
. Run repair to fix it.
Details: Duplicati.Library.Interface.DatabaseInconsistencyException: Found inconsistency in the following files while validating database:
/root/.config/Duplicati/suppress_donation_messages.txt, actual size 0, dbsize 275, blocksetid: 10
. Run repair to fix it.
   at Duplicati.Library.Main.Database.LocalDatabase.VerifyConsistencyInner(Int64 blocksize, Int64 hashsize, Boolean verifyfilelists, Boolean laxVerifyForRepair, CancellationToken token)
   at Duplicati.Library.Main.Database.LocalDatabase.VerifyConsistencyInner(Int64 blocksize, Int64 hashsize, Boolean verifyfilelists, Boolean laxVerifyForRepair, CancellationToken token)
   at Duplicati.Library.Main.Database.LocalDatabase.VerifyConsistencyInner(Int64 blocksize, Int64 hashsize, Boolean verifyfilelists, Boolean laxVerifyForRepair, CancellationToken token)
   at Duplicati.Library.Main.Database.LocalDatabase.VerifyConsistency(Int64 blocksize, Int64 hashsize, Boolean verifyfilelists, CancellationToken token)
   at Duplicati.Library.Main.Operation.BackupHandler.PreBackupVerify(Options options, BackupResults result, IBackendManager backendManager)
   at Duplicati.Library.Main.Operation.BackupHandler.RunAsync(String[] sources, IBackendManager backendManager, IFilter filter)
   at Duplicati.Library.Main.Controller.<>c__DisplayClass22_0.<<Backup>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at Duplicati.Library.Main.Controller.RunAction[T](T result, String[]& paths, IFilter& filter, Func`3 method)

The file mentioned has been present on the machine since 2018. I tried to repair the database again, same error, I recreated the file, same error, only deleting it allowed the repair to run, but I got this.

"2026-03-20 09:45:14 +01 - [Error-Duplicati.Library.Main.Operation.RecreateDatabaseHandler-IndexFileProcessingFailed]: Failed to process index file: duplicati-i25724ef2d87d4b9bbcd5f663cad86907.dindex.zip.aes\nInvalidDataException: Invalid JSON, expected \"PropertyName\", but got EndObject, "
"2026-03-20 09:45:15 +01 - [Error-Duplicati.Library.Main.Operation.RecreateDatabaseHandler-IndexFileProcessingFailed]: Failed to process index file: duplicati-i7e0f7c02717643038061d1219259f0a6.dindex.zip.aes\nInvalidDataException: Invalid JSON, expected \"PropertyName\", but got EndObject, "
"2026-03-20 09:45:16 +01 - [Error-Duplicati.Library.Main.Operation.RecreateDatabaseHandler-IndexFileProcessingFailed]: Failed to process index file: duplicati-iadab5ef34e4d449ab864dda60fadc798.dindex.zip.aes\nInvalidDataException: Invalid JSON, expected \"PropertyName\", but got EndObject, "
"2026-03-20 09:45:17 +01 - [Error-Duplicati.Library.Main.Operation.RecreateDatabaseHandler-IndexFileProcessingFailed]: Failed to process index file: duplicati-if3850b01b3d44d2eb2305d08db2d7cbf.dindex.zip.aes\nInvalidDataException: Invalid JSON, expected \"PropertyName\", but got EndObject, "

So I again deleted and recreated the database, recreated the file I deleted and ran the backup. It’s still failing:

Failed: Found inconsistency in the following files while validating database:
/root/.config/Duplicati/suppress_donation_messages.txt, actual size 0, dbsize 275, blocksetid: 10
/root/.config/Duplicati/suppress_donation_messages.txt, actual size 0, dbsize 275, blocksetid: 10
. Run repair to fix it.
Details: Duplicati.Library.Interface.DatabaseInconsistencyException: Found inconsistency in the following files while validating database:
/root/.config/Duplicati/suppress_donation_messages.txt, actual size 0, dbsize 275, blocksetid: 10
/root/.config/Duplicati/suppress_donation_messages.txt, actual size 0, dbsize 275, blocksetid: 10
. Run repair to fix it.
   at Duplicati.Library.Main.Database.LocalDatabase.VerifyConsistencyInner(Int64 blocksize, Int64 hashsize, Boolean verifyfilelists, Boolean laxVerifyForRepair, CancellationToken token)
   at Duplicati.Library.Main.Database.LocalDatabase.VerifyConsistencyInner(Int64 blocksize, Int64 hashsize, Boolean verifyfilelists, Boolean laxVerifyForRepair, CancellationToken token)
   at Duplicati.Library.Main.Database.LocalDatabase.VerifyConsistencyInner(Int64 blocksize, Int64 hashsize, Boolean verifyfilelists, Boolean laxVerifyForRepair, CancellationToken token)
   at Duplicati.Library.Main.Database.LocalDatabase.VerifyConsistency(Int64 blocksize, Int64 hashsize, Boolean verifyfilelists, CancellationToken token)
   at Duplicati.Library.Main.Operation.Backup.BackupDatabase.<>c__DisplayClass35_0.<<VerifyConsistencyAsync>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at Duplicati.Library.Main.Operation.Common.SingleRunner.<>c__DisplayClass5_0.<<RunOnMain>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at Duplicati.Library.Main.Operation.Common.SingleRunner.DoRunOnMain[T](Func`1 method)
   at Duplicati.Library.Main.Operation.BackupHandler.RunAsync(String[] sources, IBackendManager backendManager, IFilter filter)
   at Duplicati.Library.Main.Operation.BackupHandler.RunAsync(String[] sources, IBackendManager backendManager, IFilter filter)
   at Duplicati.Library.Main.Controller.<>c__DisplayClass22_0.<<Backup>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at Duplicati.Library.Main.Controller.RunAction[T](T result, String[]& paths, IFilter& filter, Func`3 method)

I’ll reboot the server later and try again, but I wanted to report this while I had the time. Oh, and the server is now complaining about swap space, something I get occasionally on a Windows server and restarting Duplicati always resolves this even though the service is idle - I think there’s some memory not being properly released.

** Update **
I rebooted and tried a delete/recreate on the database and got:

"2026-03-20 10:41:48 +01 - [Error-Duplicati.Library.Main.Operation.RecreateDatabaseHandler-IndexFileProcessingFailed]: Failed to process index file: duplicati-i0d81b020f8bc46d2bb0e056258a4fb6a.dindex.zip.aes\nInvalidDataException: Invalid JSON, expected \"PropertyName\", but got EndObject, "
"2026-03-20 10:41:48 +01 - [Error-Duplicati.Library.Main.Operation.RecreateDatabaseHandler-IndexFileProcessingFailed]: Failed to process index file: duplicati-i0e364b3f87a543aeaebe9c2e1dbb6951.dindex.zip.aes\nInvalidDataException: Invalid JSON, expected \"PropertyName\", but got EndObject, "
"2026-03-20 10:41:48 +01 - [Error-Duplicati.Library.Main.Operation.RecreateDatabaseHandler-IndexFileProcessingFailed]: Failed to process index file: duplicati-i1aa68f4c27414e0faec437b3ef92a91f.dindex.zip.aes\nInvalidDataException: Invalid JSON, expected \"PropertyName\", but got EndObject, "
"2026-03-20 10:41:49 +01 - [Error-Duplicati.Library.Main.Operation.RecreateDatabaseHandler-IndexFileProcessingFailed]: Failed to process index file: duplicati-i553d2a8c7a2244cfb0635b79e567577d.dindex.zip.aes\nInvalidDataException: Invalid JSON, expected \"PropertyName\", but got EndObject, "
"2026-03-20 10:41:49 +01 - [Error-Duplicati.Library.Main.Operation.RecreateDatabaseHandler-IndexFileProcessingFailed]: Failed to process index file: duplicati-i66927d2a97764f10ac6beddab23071c8.dindex.zip.aes\nInvalidDataException: Invalid JSON, expected \"PropertyName\", but got EndObject, "
"2026-03-20 10:41:49 +01 - [Error-Duplicati.Library.Main.Operation.RecreateDatabaseHandler-IndexFileProcessingFailed]: Failed to process index file: duplicati-i7db32de15dc645c590235eedc549d572.dindex.zip.aes\nInvalidDataException: Invalid JSON, expected \"PropertyName\", but got EndObject, "
"2026-03-20 10:41:49 +01 - [Error-Duplicati.Library.Main.Operation.RecreateDatabaseHandler-IndexFileProcessingFailed]: Failed to process index file: duplicati-i8e3875229e224785882f21363cc8c7cc.dindex.zip.aes\nInvalidDataException: Invalid JSON, expected \"PropertyName\", but got EndObject, "
"2026-03-20 10:41:50 +01 - [Error-Duplicati.Library.Main.Operation.RecreateDatabaseHandler-IndexFileProcessingFailed]: Failed to process index file: duplicati-ia4bea0617d184b1c926b6116bb6b6225.dindex.zip.aes\nInvalidDataException: Invalid JSON, expected \"PropertyName\", but got EndObject, "