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.