Release: 2.3.0.103 (Canary) 2026-05-22

2.3.0.103_canary_2026-05-22

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

Changes in this version

This release marks the soft-launch of the Duplicati Storage service, giving a zero-configuration setup of storage. The Duplicati Storage backend works like any other backend, but there is no configuration to set up. Once the client is connected to the console, it can use the Duplicati Storage backend.

The service is currently in soft-launch mode and anyone interrested can contact Duplicati support to have a storage trial activated on their account.

In this release there is an experimental setting option that makes the actual operations (backup, restore, verify, etc.) run in an isolated sub-process. When this setting is enabled, the Duplicati server will spawn a new process for each operation, and the operation will run in that process. This means that if the process crashes or hangs, the Duplicati server will not be affected. It also allows the Duplicati server, and by extension the user, to force-kill a stuck process. While this feature is tested, it is not enabled by default as we are aware that there might be subtle issues and would like feedback on how the feature works in real-world scenarios.

The previous “SharePoint” and “OneDrive for Business” backends have been marked as deprecated, as Microsoft shut down the API they were calling. The migration step is to use the “SharePoint v2” backend (renamed to just “SharePoint” in this version) which uses the Microsoft Graph API.

This version also adds a new backend for the Spanish proivder Movistar, thanks to @redmars27. The backend is marked as “untested” as it can only be used (and tested) by Movistar customers.

This update also adds some more guards to the synthetic filelist generation update from 2.3.0.102, and a fix for OneDrive timeouts.

Detailed list of changes

  • Fixed an issue with Filen.io renaming
  • Added a failsafe when creating synthetic filelists
  • Added check code to ensure synthetic filelists are generated with required fields
  • Fixed restore message when no files are restored to reflect if existing files are found
  • Added support for marking backends as deprecated or untested
  • Deprecated od4b and mssp backends as the API is no longer working
  • Fixed some files showing as folders and missing size information
  • Hide the --unittest-mode flag from supported options
  • Fix parsing MacOS timestamps that are from year 0000
  • Updated internal controller to only expose async methods
  • Updated Mega S4 endpoint list
  • Fixed an issue where option settings could potentially be sticky across operations
  • Updated warning logic on restore if no files were restored
  • Fix a 100s timeout with OneDrive and SharePoint v2
  • Updated the Duplicati Backend to use the new API
  • Added support for running backup and restore in an isolated sub-process
  • Added MoviStar storage backend, thanks @redmars27

Changes in ngclient

  • Prevent iteration of non-folder paths
  • Enable selecting hidden items
  • Added path resolving on the “dynamic paths”, such as “My documents”
  • Fixed compression option not being visible
  • Added support for showing backends as deprecated or untested
  • Fixed an issue where file size would not be shown in the file tree
  • Added an option to retry loading a backup list

Hi, this version has broken Hyper-V VM backups. It was working with previous Canary version 2.3.0.102. The Hyper-V objects has disappeared from the source file browser in both new and legacy UI.

Log snippet from 103

2026-05-23 11:13:52 +02 - [Error-Duplicati.Library.Main.Controller-FailedOperation]: The operation Backup has failed
UserInformationException: Backup aborted since the source path %HYPERV%\4adff6c6-eb07-4a26-9146-66d86ad0f64d does not exist. Please verify that the source path exists, or remove the source path from the backup configuration, or set the allow-missing-source option.

Log snipper from 102

“2026-05-09 15:09:39 +02 - [Information-Duplicati.Library.Modules.Builtin.HyperVOptions-StartingHyperVQuery]: Starting to gather Hyper-V information”,
“2026-05-09 15:09:59 +02 - [Information-Duplicati.Library.Modules.Builtin.HyperVOptions-HyperVMachineCount]: Found 9 virtual machines on Hyper-V”,
“2026-05-09 15:09:59 +02 - [Information-Duplicati.Library.Modules.Builtin.HyperVOptions-IncludeHyperV]: For VM APPS - adding D:\VHD\APPS.vhdx”,
“2026-05-09 15:09:59 +02 - [Information-Duplicati.Library.Modules.Builtin.HyperVOptions-IncludeHyperV]: For VM APPS - adding D:\VMS\APPS\Virtual Machines\4ADFF6C6-EB07-4A26-9146-66D86AD0F64D.VMCX”,
"2026-05-09 15:09:59 +02 - [Information-Duplicati.Library.Modules.Builtin.HyperVOptions-IncludeHyperV]:

Does it work if you downgrade to 2.3.0.102 ? There were not intentional changes to Hyper-V support in this build.

That indicates that %HYPERV% is not correctly translated. I think this could happen if VSS fails to load so the virtual machines cannot be queried. Do you see any errors related to VSS in the logs?

Downgrading to 102 the backup was successful. Ignore my comment about the Hyper-V objects not showing in the source file browser, I was looking for it in the destination screen. I can confirm that on 103 I can see the Hyper-V object on the source file browser.

On 102, I get this VSS event log entry.

Volume Shadow Copy Service information: Snapshot creation initiated for Snapshot Set {9768a0b6-0e38-49d6-bf25-6d69cb3ff1de}.
Process command line: “C:\Program Files\Duplicati 2\Duplicati.Server.exe” --webservice-interface=any “–windows-eventlog=Duplicati 2:Duplicati Server” --ping-pong-keepalive=true
Process Caller Stack:
Process[0]: Duplicati.Server.exe
Process[1]: Duplicati.WindowsService.exe
Process[2]: services.exe

On 103, I don’t get this eventlog entry or any other VSS log entries.

Note i’m running as a service.

Thanks for confirming. The only thing I can see that could potentially cause problems is if you set up a new backup, and then the input might change from %HYPERV% to %HYPERV%\ which could trigger something.

Is your setup with a new or edited configuration when you switch between versions?
Could you check by exporting the configuration from .102 and .103 and look for the “Sources” part and see if this has changed?

It’s an existing job. I just ran the job again after the upgrade. I also tried to edit the job, confirming the selections but same error result.

Here’s partial snippets of the config files. They look identical to me.

“CreatedByVersion”: “2.3.0.102”,
“Sources”: [
“%HYPERV%\4adff6c6-eb07-4a26-9146-66d86ad0f64d”,
“%HYPERV%\a0d38cd4-18aa-44ee-a25e-6cc1e3e009f8”,
“%HYPERV%\f5aa158f-cee1-4e97-a605-fc95cfb911c9”,
“%HYPERV%\e63dd18c-2205-48b9-80b5-38a5c306ae64”,
“%HYPERV%\4e609670-58b8-474e-a160-85aec3045e1b”
],

“DisplayNames”: {
“%HYPERV%\4adff6c6-eb07-4a26-9146-66d86ad0f64d”: “4adff6c6-eb07-4a26-9146-66d86ad0f64d”,
“%HYPERV%\a0d38cd4-18aa-44ee-a25e-6cc1e3e009f8”: “a0d38cd4-18aa-44ee-a25e-6cc1e3e009f8”,
“%HYPERV%\f5aa158f-cee1-4e97-a605-fc95cfb911c9”: “f5aa158f-cee1-4e97-a605-fc95cfb911c9”,
“%HYPERV%\e63dd18c-2205-48b9-80b5-38a5c306ae64”: “e63dd18c-2205-48b9-80b5-38a5c306ae64”,
“%HYPERV%\4e609670-58b8-474e-a160-85aec3045e1b”: “4e609670-58b8-474e-a160-85aec3045e1b”
}

“CreatedByVersion”: “2.3.0.103”,
“Sources”: [
“%HYPERV%\4adff6c6-eb07-4a26-9146-66d86ad0f64d”,
“%HYPERV%\a0d38cd4-18aa-44ee-a25e-6cc1e3e009f8”,
“%HYPERV%\f5aa158f-cee1-4e97-a605-fc95cfb911c9”,
“%HYPERV%\e63dd18c-2205-48b9-80b5-38a5c306ae64”,
“%HYPERV%\4e609670-58b8-474e-a160-85aec3045e1b”
],

“DisplayNames”: {
“%HYPERV%\4adff6c6-eb07-4a26-9146-66d86ad0f64d”: “4adff6c6-eb07-4a26-9146-66d86ad0f64d”,
“%HYPERV%\a0d38cd4-18aa-44ee-a25e-6cc1e3e009f8”: “a0d38cd4-18aa-44ee-a25e-6cc1e3e009f8”,
“%HYPERV%\f5aa158f-cee1-4e97-a605-fc95cfb911c9”: “f5aa158f-cee1-4e97-a605-fc95cfb911c9”,
“%HYPERV%\e63dd18c-2205-48b9-80b5-38a5c306ae64”: “e63dd18c-2205-48b9-80b5-38a5c306ae64”,
“%HYPERV%\4e609670-58b8-474e-a160-85aec3045e1b”: “4e609670-58b8-474e-a160-85aec3045e1b”
}

I’ve got the following happening again on one of my Windows server backups, source are C: drive files/folders, destination is a local disk used only for backups:

2026-05-27 18:38:13 +02 - [Error-Duplicati.Library.Main.Operation.BackupHandler-FatalError]: Fatal error
DatabaseInconsistencyException: Found inconsistency in the following files while validating database: 
C:\ProgramData\BraveSoftware\BraveVpnService\Crashpad\metadata, actual size 0, dbsize 102400, blocksetid: 6486
C:\ProgramData\Intel\Logs\IntelCPHS.log, actual size 0, dbsize 102400, blocksetid: 6486
C:\ProgramData\Mozilla-1de4eec8-1241-4177-a864-e594e8d1fb38\UpdateLock-308046B0AF4A39CB, actual size 0, dbsize 102400, blocksetid: 6486
C:\ProgramData\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\S-1-5-21-3301197204-2781052952-692608797-500\SystemAppData\Helium\Cache\1e7d2dc91f14a48_COM15.dat.LOG2, actual size 0, dbsize 102400, blocksetid: 6486
C:\ProgramData\Packages\MicrosoftCorporationII.WinAppRuntime.Singleton_8wekyb3d8bbwe\S-1-5-21-3301197204-2781052952-692608797-500\SystemAppData\Helium\Cache\dbda3473e8dab9bc_COM15.dat.LOG2, actual size 0, dbsize 102400, blocksetid: 6486
... and 4293 more. Run repair to fix it.

2026-05-27 18:38:13 +02 - [Error-Duplicati.Library.Main.Controller-FailedOperation]: The operation Backup has failed
DatabaseInconsistencyException: Found inconsistency in the following files while validating database: 
C:\ProgramData\BraveSoftware\BraveVpnService\Crashpad\metadata, actual size 0, dbsize 102400, blocksetid: 6486
C:\ProgramData\Intel\Logs\IntelCPHS.log, actual size 0, dbsize 102400, blocksetid: 6486
C:\ProgramData\Mozilla-1de4eec8-1241-4177-a864-e594e8d1fb38\UpdateLock-308046B0AF4A39CB, actual size 0, dbsize 102400, blocksetid: 6486
C:\ProgramData\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\S-1-5-21-3301197204-2781052952-692608797-500\SystemAppData\Helium\Cache\1e7d2dc91f14a48_COM15.dat.LOG2, actual size 0, dbsize 102400, blocksetid: 6486
C:\ProgramData\Packages\MicrosoftCorporationII.WinAppRuntime.Singleton_8wekyb3d8bbwe\S-1-5-21-3301197204-2781052952-692608797-500\SystemAppData\Helium\Cache\dbda3473e8dab9bc_COM15.dat.LOG2, actual size 0, dbsize 102400, blocksetid: 6486
... and 4293 more. Run repair to fix it.

A repair does this:

2026-05-27 18:44:57 +02 - [Error-Duplicati.Library.Main.Controller-FailedOperation]: The operation Repair has failed
DatabaseInconsistencyException: Found inconsistency in the following files while validating database: 
C:\ProgramData\BraveSoftware\BraveVpnService\Crashpad\metadata, actual size 0, dbsize 102400, blocksetid: 6486
C:\ProgramData\Intel\Logs\IntelCPHS.log, actual size 0, dbsize 102400, blocksetid: 6486
C:\ProgramData\Mozilla-1de4eec8-1241-4177-a864-e594e8d1fb38\UpdateLock-308046B0AF4A39CB, actual size 0, dbsize 102400, blocksetid: 6486
C:\ProgramData\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\S-1-5-21-3301197204-2781052952-692608797-500\SystemAppData\Helium\Cache\1e7d2dc91f14a48_COM15.dat.LOG2, actual size 0, dbsize 102400, blocksetid: 6486
C:\ProgramData\Packages\MicrosoftCorporationII.WinAppRuntime.Singleton_8wekyb3d8bbwe\S-1-5-21-3301197204-2781052952-692608797-500\SystemAppData\Helium\Cache\dbda3473e8dab9bc_COM15.dat.LOG2, actual size 0, dbsize 102400, blocksetid: 6486
... and 4293 more. Run repair to fix it.

A delete and repair seems to work but then the backup fails again with the original problem. I tried a purge-broke-files but it didn’t find anything to purge.

Any ideas?

Hi! Has anyone else noticed that the GUI port changed from “8200” to “8300” in v2.3.0.103? This is a nit, but a bit of a surprise if you bookmark the GUI page in your browser.

Thanks… Steve

Not seeing that here. Evidence is below:

C:\Duplicati\duplicati-2.3.0.103_canary_2026-05-22-win-x64-gui>Duplicati.GUI.TrayIcon --server-datafolder=C:\tmp\datafolder

C:\Duplicati\duplicati-2.3.0.103_canary_2026-05-22-win-x64-gui>Server has started and is listening on localhost, port 8200

There was never a single GUI port. If 8200 was in use, it went to 8300, and so on.

Introduction to the Graphical User Interface from previous docs, circa 2018, notes:

The first instance of the web server is listening on TCP port 8200. Additional instances listen on port 8300 and higher.

2.0.9.106_canary_2024-09-03 added a controversial feature of port memory, so once the port gets bumped up, it stays until you manually force it to come down.

Server port for TrayIcon in current docs explains the old way, plus new memory:

By default, Duplicati uses the port 8200 as the communication port with hosted server. Should that port be taken, usually because another instance of Duplicati is running in another user context, Duplicati will automatically try other ports from the sequence: 8200, 8300, 8400, ..., 8900.

Once an available port is found, this port is stored in the server database and attempted first on next run.

It doesn’t say how to correct this. Previously you just restart. Now you start with:

--webservice-port: The port the webserver listens on. Multiple values may be supplied with a comma in between.

(taken from CLI command --help)

Any idea what the conflict might have been? Likely some other Duplicati in use.