Release: 2.1.0.109 (Canary) 2025-02-11

2.1.0.109_canary_2025-02-11

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

Important change for Windows Service

This build changes the folder locations for the Duplicati-server.sqlite file on Windows and Linux when running as a service.
There is support for backwards compatibility, so existing installations should not be affected.

The detailed changes are:
Windows: Avoid storing data in C:\Windows\System32\config\systemprofile\AppData\Local\Duplicati and prefer {CSIDL_COMMON_APPDATA}\Duplicati
Linux: Avoid storing data in /Duplicati and prefer /var/lib/Duplicati.

If you are not running Duplicati as a service, this has no effect.
If you are using --server-datafolder or DUPLICATI_HOME, this has no effect on the database, but may cause your machineid and installid to change.

The machineid.txt and installid.txt would previously be stored in the local app data folder, even when using portable mode or choosing a specific data folder.
This has been fixed, so the files will now follow the database.
If you are using the Duplicati console or otherwise depend on these values, you need to move them into the folder where the database is stored.

Important for users running 2.1.0.108

For 2.1.0.108 version only, the service folder was {SYSTEMDRIVE}\Users\LocalService\Duplicati which was dropped.
If you have only installed 2.1.0.108 and ended up using the previous folder, you must manually move it to {CSIDL_COMMON_APPDATA}\Duplicati.

Permissions on database and data folder

This update sets permissions on the data folder and the databases to prevent unauthorized access from local accounts.
To opt out of setting permissions on each startup, place a file named insecure-permissions.txt inside the data folder.

New user interface

This version uses the ngclient as the default interface. If some feature is not working as expected, it is possible to switch back to the ngax client.
To switch client, replace ngclient with ngax in the url, or use the theme.html page to choose the UI (example: http://localhost:8200/theme.html).
Please report any issues with the new UI.

Removed timeout guard

Due to many reports of failures with the timeout mechanism this has been removed in the current version. It will be added back into each of the backends later.

Added a new tool for offsite backup

This release features a new tool: Duplicati.CommandLine.SyncTool.exe / duplicati-sync-tool which can be used to create copies of backup files in multiple locations. The tool is currently documented with the built-in help, and more documentation is on the way. The tool is intended to be more integrated into Duplicati later and enables a straightforward way to achieve 3-2-1 backups, including copies in immutable storage.

Detailed list of changes:

  • Support topics on Telegram reports
  • Added remote syncronization tool
  • Removed high-level backend timeout
  • Added guard to prevent dataloss on shared destinations
  • Added option to disable automatic update checks
  • Fixed a bug with the new restore that could cause incorrect files to be restored if files alredy exists
  • Fixed a case where updated timestamps were discarded if no data was changed
  • Added permission updates to data folder
  • Fixed automatic fallback on unsupported Zip files
  • Fixed multiple issues with TrayIcon state
  • Mark Mega.nz backend as deprecated
  • Switched to ngclient as the default UI
  • Added support for 429 responses on B2
1 Like

I updated my Windows machines from .108 and so far so good, no issues with folder location as I override it on the service setting. I will do my Linux machines later today.

Having issues with the new interface, relating to the language setting. In the old interface I have all mine set as:
image
So I get the date/time in their correct format.

If I switch it to the new interface, everything becomes the incorrect format and there is no way to change it:
image
If I click on the right it changes to:
image
If I try entering en-GB I’m left with this which I can no longer change to anything else even en_US:
image
Will revert back to the old interface for now.

P.S. I still hate that the light/dark theme is stored in the cookie so I have to reset it to dark every update or change of browser. If you have to keep it in the cookie, then can it at least use the browser “system” setting? The language setting of the old interface actually does this already:
image

Upgrades to my Linux machines all went well.

1 Like

Just realised the new permission change for the data location folder broke the tray icon on all my machines. Needed to reset the permissions then create the insecure-permissions.txt file to prevent it being changed - it was also blocking my domain admin account from making any changes to the content of the folder.

Don’t think this is working well if you run as a service and want to use the tray icon or administer the folder as a domain admin.

I have issue with new interface. Some JS errors.

Console log and screenshot here: Kulturni centar "Kralj Fahd"

I didn’t visit Duplicate website for a long time. I was so happy to see update and new interface. I wish you luck with this amazing project.

Hi, there is an inconsistency between the new interface and the old one, in the new one it’s not displayed “send-http-url” and “snapshot-policy”


Sounds like something we should perhaps try to fix.
Why does the TrayIcon need access to the folder? Is it because it is running without a password (--read-config-from-db) ?

Thanks for reporting. I have registered this as an issue

Thanks for reporting. I have registered this as an issue.

2 Likes

Yes correct, it’s using --read-config-from-db

Also, was the code for the tray icon to wait for the service to be running to prevent it crashing out added? I still have the issue where even though the shortcut to it is in my startup folder, it never appears when I log in. If I run it manually it starts and appears. I know it’s not quite the same thing as the service should still be running from when I last logged in, but I can’t think why else it’s not working.

There is currently a setup with 3 retries, and then it crashes. If it succeeds in connection within the initial 3 tries, it will stay up in a disconnected state.

I am guessing that in your setup, the issue is that the server is starting after the TrayIcon, so you would like it to just immediately go to the disconnected state?

I think this is the kind of access that is supposed to be prevented: accessing the database from a process with lesser privileges. In your case, that is actually what you want (for good reasons).

Would it simplify things if there was a commandline/environment option to disable the permissions, or is it sufficient for your use to have a file in there?

My motivation for the file was that this would follow the files automatically and pretty simple to do. But it is also a bit hard to figure out that you need to place the file, and what name to use.

Permissions change made my Duplicati use one-time-only (I just found). Due to a need to run elevated (e.g. to allow VSS), and need for ease and flexibility (unlike in a service), and lack of alternative built-in or simple solution (why isn’t everyone complaining, I wonder), I set shortcut:

which causes UAC change of user from my usual standard account to an elevated administrator.

Duplicati then takes away permission for me to start it again. My start script is in the RUN folder:

C:\>icacls "C:\Duplicati\duplicati-2.1.0.109_canary_2025-02-11-win-x64-gui\RUN"
C:\Duplicati\duplicati-2.1.0.109_canary_2025-02-11-win-x64-gui\RUN BUILTIN\Administrators:(I)(OI)(CI)(F)
                                                                   NT AUTHORITY\SYSTEM:(I)(OI)(CI)(F)
                                                                   BUILTIN\Users:(I)(OI)(CI)(RX)
                                                                   NT AUTHORITY\Authenticated Users:(I)(M)
                                                                   NT AUTHORITY\Authenticated Users:(I)(OI)(CI)(IO)(M)

which gets changed (as it’s the server-datafolder) to the below, which locks me out next time:

C:\>icacls "C:\Duplicati\duplicati-2.1.0.109_canary_2025-02-11-win-x64-gui\RUN"
C:\Duplicati\duplicati-2.1.0.109_canary_2025-02-11-win-x64-gui\RUN NT AUTHORITY\SYSTEM:(OI)(CI)(F)
                                                                   HP4\Maintenance:(OI)(CI)(F)

Adding the documented insecure-permissions.txt does prevent this unwanted extra security.

Do ngclient “Restore from config” with no jobs yet

Select a configuration file
Passphrase
Click Restore because there’s no Import button now

Edge developer tools shows:

http://localhost:8109/api/v1/backups/import
gets 200 OK

http://localhost:8109/api/v1/backups?temporary=true
gets 400 Bad request

Red Alerts display is also accumulating these.
There is an x on each, but it doesn’t dismiss.

I thought I had sorted the tray icon thing out - just before change to fix this I noticed that for some reason I had the shortcut for the tray icon showing in two start-up folders. They looked the same so I deleted one of them, but I was wrong - one of them was from way back and was missing some parameters. So I recovered the previous one, deleted the much older one. Still not working :frowning:

Autoruns only shows the shortcut in one place
image

The shortcut executes: "C:\Program Files\Duplicati 2\Duplicati.GUI.TrayIcon.exe" --no-hosted-server --hosturl=https://mydomain.com:8200 --read-config-from-db --server-datafolder=C:\ProgramData\Duplicati

Yet I rebooted the server, logged in a few minutes later and the icon was not present, I don’t see any sign of the log file for it showing any errors. If I execute the above in a command-prompt it works.

I just had a thought, that it could be the FQDN of the server not getting looked up for some reason, but then I’m not sure I can replace it because the certificate only contains the FQDN plus the base hostname as an alternate, and I’m not going to add localhost or the IP as alternates to get around that.

I’m fine with the file, like you said, it means the option follows the data folder which I think is good.

SyncTool help documents what sounds like an odd overwrite policy.

  If the destination has files that are in the source but are different in size or
  has a newer timestamp, they will be overwritten by the source files.

Fortunately (in my view anyway) I think “a newer” intends “an older”.

Test result with --dry-run matches above, not the help. Newer overwrites older.
I prefer that, however I’d note the PR original post said this the other way as well.
Which way is the overwrite supposed to work?

EDIT:

I considered noting that modification time isn’t preserved, but maybe it’s a backend limitation. Regardless, it probably throws off the overwrite plan a bit, but might be OK for intended uses.
For an example, if I sync 2 week old file, time gets updated so 1 week old file won’t overwrite.

Right, I see the confusion! The intend of the tool is to have the destination match the source. Given that this tool is only ever run after the source is in a steady state, the destination will have its timestamps be more recent (newer) compared to the source. So every source file that is newer than the destination files will be copied and overwritten (unless the --retention flag is set).

I see that the wording of the help text suggests that newer relates to the destination, but it should be relating to the source. Do you agree with this rewording of the help text:

If the destination has files that are also present in the source, but the files differ in size, or if the source files have a newer (more recent) timestamp, the destination files will be overwritten by the source files. Given that some backends do not allow for metadata or timestamp modification, and that the tool is run after backup, the destination files should always have a timestamp that is newer (or the same if run promptly) compared to the source files. 

And also, the comment you highlighted in the code would also be reworded:

// Find all of the files in src that are not in dst, where the dst has a different size than src or src a more recent modification date than dst

Hello,

Many problems with this new version on my computer (Linux Mint 22)

Similars errors message as ts678 : “Http failure response for http://localhost:8200/api/v1/filesystem?onlyFolders=false&showHidden=true: 500 Internal Server Error”

Impossible to change the language : I selected the new language (for exemple “French”), but there is no difference, the ngclient interface still in english.

Impossible to restore any file; in this menu :

I can’t selected a backup version, and then I can’t either select the file or folder to backup.

I tried to add a file “insecure-permissions.txt” in the duplicati folder (where are all zip files), without anu success.

The NGAX client still working correctly.

The reworded help sounds like the way I was expecting it to work. New overwrites old.

This section (which is just an internal post here) still confuses me though:

In backup context, this sounds like steady state is achieved in the Duplicati destination which is the SyncTool source. Before SyncTool is run to sync backup elsewhere, SyncTool destination will have its timestamps be less recent (older) compared to the source. This will cause sync to copy.

An easier phrase said in copy-newer terms would be to reverse last use of source and destination, however none of this affects the help. It just seemed confusing in terms of the explanation.

Thanks for the help change.

I hope you’re talking about my ngclient post above, but those messages are only slightly similar.

EDIT:

OK, good to hear NGAX is happy. I’m curious to hear what the devs think ngclient status is now.
I haven’t really done much with it yet. At an earlier mention it was known to be quite incomplete.

@ts678, yes NGAX works correctly.

Have you the same problem as me about the recovery ? That is to say the impossibility to select a file or a folder to restore due to the absence of a selection windows/menu (as in my screenshot above) ?

I’m wondering if I should uninstall this version and try to reinstall an older, or wait for a patch.

Not before, because I haven’t really done much with it yet.

I just now made a backup with two versions, can see them, can’t clearly get reaction to clicking,then Continue shows no files. I did a hard refresh in Edge before this, so that should be current.

I don’t think this is relevant, and involves .sqlite databases and such in server-datafolder.

Did an older one work better for you? Remember, this is a very new feature.

EDIT 1:

Testing on Windows 10 with Microsoft Edge.

The inability to select from dropdown seems widespread but not total, e.g. on Settings it works on Pause after startup or hibernation (units), but not on Usage statistics. Advanced options snapshot-policy doesn’t work. General backup settings Encryption doesn’t work. Filters builder dropdown doesn’t work. Note that it’s hard to see invisible effects, and there seems to be a widespread lack of three-dot menu to see what the GUI is actually preparing. I view this as a drawback because result could be surprising.

Job Database Placement editing was slightly unusual before, where buttons activated based on changes to the field. Now, the buttons don’t seem to give any sign of working.

Is the status bar hugely reduced? I can sometimes see it say Loading… but that’s not much status.

Failed backups don’t say much either, e.g. if I backup, delete DB, backup again, failure is silent. There are no notifications until I return to ngax but then if going to ngclient again I now have a red notification icon (if I look for it…) and can click it to see the error that ngclient displays with its much easier to notice red popup.

Edit of an existing ngax backup without a schedule shows me “Automatically run backups” toggled on.

That backup has upload-unchanged-backups turned on in Advanced options, but not in ngclient.

Job Create error report doesn’t seem to do anything.

About duplicati → Libraries → Details closes the text window but leaves an empty window with a Close button that doesn’t work. Need to exit the page to clear that up.

About duplicati should maybe be About Duplicati. Isn’t the name capitalized? It used to be, but now the upper left corner also says duplicati (and now without a channel).

About used to give current version, and allow check for new. Is check anywhere now? I guess I can get current from About duplicati → System info. It’s right at the top, however further down is a huge number of things to expand. Under Options there are 138. The previous display was long, but at least right there. New is unreasonably hard.