Commit Graph
78 Commits
Author SHA1 Message Date
Kenneth Skovhede 07cd39af34 Add support for managed TLS
This PR adds support for generating a self-signed CA and then using that CA to generate TLS certificates.

A new tool `duplicati-configure` / `Duplicati.CommandLine.ConfigureTool.exe` is added to manage the certificates.  The tool saves the configuration in the database and is meant to run with elevated privileges for the initial CA installation.

The option `--configure-https` can be added to server/trayicon, and if the process has permissions, this will automatically install the CA certificate.

If a CA is configured, the server will automatically issue, renew and use a TLS certificate.

With this setup, the TLS is opt-in, but once the flow is well tested, we can switch it to opt-out.
2026-03-01 11:33:05 +01:00
Kenneth SkovhedeandGitHub a2d247adb3 Merge branch 'master' into feature/folder-status-indicator 2026-02-19 19:30:31 +01:00
Kenneth Skovhede f53b9f2a33 Fixed release builder to include the shell extension 2026-02-19 17:32:54 +01:00
Kenneth Skovhede 581c87ec41 Fix openSuse build
This fixes compatibility with OpenSUSE by using the target filenames as dependencies instead of the package names that differ (libICE vs libICE6).

This fixes #6166
2026-02-09 11:54:53 +01:00
Kenneth Skovhede ccf5977779 Added support for building AppImage
This PR adds support for building AppImage outputs.

This also adds the metainfo.xml to .deb and .rpm packages.
2026-01-16 21:10:37 +01:00
Kenneth Skovhede 07f296622d Added support for Synology DSM
This adds back support for Synology DSM.

The implementation is compatible with DSM 7.2+ and integrates with DSM to forward requests through the DSM server into Duplicati.

The setup features database locks, using a random auth-key so DSM handles authentication.

The database is encrypted with a random key, and all data is stored in the `var` folder.

The uninstall can optionally remove the `var` data.

This is still a work in progress. The authentication integration with DSM does not currently work.
2025-12-16 14:47:37 +01:00
Kenneth Skovhede 78c2487fb9 Fixed an issue with building when signing is auto-disabled, but not explicitly disabled. 2025-12-02 20:39:06 +01:00
Kenneth Skovhede 3b695cf065 Added support for Photos on MacOS
This PR adds detection of the MacOS Photos folder, and intercepts reads and replaces them with PhotoKit calls.
With this, it is possible to make backups of all MacOS Photos, even if they are not stored locally.

The previous versions would just make a backup of the on-disk structure, which was not guaranteed to contain all photos, but instead has various indexing for finding photos, and may contain some original photos.

The option `--photos-handling` controls how Duplicati now deals with the Photos folder. The options are:
- `LibraryOnly`: Same as before, just treat it as a folder
- `PhotosOnly`: Ignore the folder contents and just back up the actual photos
- `PhotosAndLibrary` (default): Make a backup of the photos and the library on-disk. This may cause images to be stored twice, but de-duplication will usually limit the storage increase.

The option `--photos-library-path` can be used to point to the on-disk Photo library that should be handled, in case the auto-detection does not pick it up. If this does not point to a valid Photoslibrary, or the path is not being backed up, no special handling will be done.

Note that the restore is not restoring into Photos itself, but instead restores into a sub-folder in the Photolibrary that is called `dup_backup`. To get the photos out after a restore, one needs to right-click the Photolibrary folder, and choose "Show package contents" and then the `dup_backup` folder is revealed.

This is done to keep all photos in the same folder, but avoid messing with the structure of the on-disk Photolibrary.

A future update could allow restoring back into Photos, and metadata is captured for each image to eventually allow this.

This fixes #6381
2025-11-17 17:12:10 +01:00
Kenneth Skovhede 1ea74a3c63 Updated to .NET10 2025-11-14 15:05:39 +01:00
Kenneth Skovhede a062295477 Fix naming issue for release builder
This fixes #6572
2025-10-31 11:10:18 +01:00
Kenneth Skovhede a61639c841 Fixed logic for release builder
If the user supplies --resume-from-upload, this now implies that the build folder should not be deleted
2025-10-08 10:12:54 +02:00
Kenneth Skovhede 1c266110e0 Upgrade to latest libicu in Docker, and switch to libssl3t64 2025-08-19 11:02:31 +02:00
Kenneth Skovhede 094be4a9d8 Improve dependency on libicu
Since .NET dynamically loads libicu, it is not prone to ABI breakage and can load virtually any version.

However, there is no `Depends: libicu*` option in Debian packages, so we need the explicit package version. This is prone to breaking as new Debian version bump the version number.

This PR changes the `Depends:` to `Recommends:` so `libicu` is installed if possible, but does not prevent installation.

For cases where the is no `libicu` on the system, there is now a `preinst` script which will warn if the library is missing, but not prevent installation.

The warning should only show in Docker images or similar slim contexts, as `libicu` is otherwise installed with the base system.
2025-08-12 15:34:14 +02:00
Kenneth Skovhede cff8073b64 Fix after renames in SharpAESCrypt 2025-08-07 23:17:18 +02:00
Kenneth Skovhede 42a3d98c72 Added more preload 2025-07-11 22:14:59 +02:00
Kenneth Skovhede c3d539b721 Preload S3 libraries 2025-07-11 20:33:00 +02:00
Kenneth Skovhede 98deb8c576 Update support for VSS
This updates VSS to default use Vanara in favor of AlphaVSS which is no longer maintained.

The build for Vanara requires targeting `net8.0-windows7.0`, which will cause significant build overhead and complexity for cross platform builds.
To counter this, the setup is to have a single project, `Duplicati.Library.WindowsModules`, that is targeting `net8.0-windows7.0`.
The output from this project is then hoisted into the TrayIcon project for Windows builds so the files are available when debugging on Windows.
A top-level dummy executable project is added to ensure the project always builds.
The built modules are then loaded with reflection when requested.

With the use of Vanara there is now also support for using BackupRead to read files without making a VSS snapshot.
With BackupRead, it is possible to read locked files, but it still requires the SeBackupPrivilege as VSS does as well.

Unfortunately, the `vssapi.dll` file is not shipped for Arm64 on Windows, so even with Vanara this will not work, and only WMIC is supported on Arm64.
A workaround is to run Duplicati with x64 emulation if more advanced VSS features are needed (HyperV and MSSQL support).

This PR also updates options and filters out unsupported options for each operating system, so options that are not supported by the current OS are not reported and will give warnings if they are used, as opposed to just being ignored.

The release builder project has been updated to exclude the unused project, and purge unwanted outputs.
2025-07-01 16:32:19 +02:00
Kenneth Skovhede 8353ab2569 Added support for resuming builds when the date changes. 2025-05-30 07:49:24 +02:00
Kenneth Skovhede a0ecc5e05d Added a database downgrade tool 2025-04-24 16:36:14 +02:00
Kenneth Skovhede 5511ed6a46 Added support for additional libicu versions 2025-04-22 13:08:36 +02:00
Kenneth Skovhede e30fbf5613 Renamed build-only to compile-only.
More flexible setup for compile-only runs.
2025-04-14 22:14:06 +02:00
Kenneth Skovhede df939a4334 Add tests to build releases
This adds a CI test for building releases so we know in advance if package versions are out-of-order.

This also sets the primary project for CLI to the Server as that covers more than the CLI project.
2025-04-14 21:56:27 +02:00
Kenneth Skovhede 0fb8930329 Added elaborate version comparison to avoid shipping with wrong versions. 2025-04-14 17:37:51 +02:00
Kenneth Skovhede bd7a080d15 Reverted logic for building with temporary solutions as that can cause debug builds in the outputs and gives build warnings.
The logic is reverted to build each project into a build folder, and then copy the files into a shared common folder.

An additional check examines the log output and checks that there are no debug builds performed or used.
2025-04-13 23:32:39 +02:00
Kenneth SkovhedeandGitHub e614b08bb3 Merge pull request #5955 from duplicati/feature/alternate-source-provider
Alternate source provider
2025-02-28 10:07:53 +01:00
Kenneth Skovhede 1c38061050 Added support for authenticode signing with jsign and Yubikey / PIV. 2025-02-26 11:58:48 +01:00
Kenneth Skovhede 616d8b75a7 Simplified MacOS code signing 2025-02-25 16:43:28 +01:00
Kenneth Skovhede 66aa3cd9d6 Added support for profiles when building for different channels.
Changed the default config name to have a `duplicati` prefix.
2025-02-25 15:07:17 +01:00
Kenneth Skovhede 5a4fcaa6d7 Added tool to work with remote sources 2025-02-21 11:51:45 +01:00
Kenneth Skovhede 0260a061bb Made the synctool an executable 2025-02-10 21:37:52 +01:00
Kenneth Skovhede 91d0f08cb2 Added option to propagate releases.
When building a release, it is now possible to also offer that release in "lower" channels, meaning the stable release will show as an update to instances running beta or experimental.
2025-02-06 22:54:30 +01:00
Kenneth SkovhedeandGitHub fb8f5f4af7 Version bump to v2.1.0.105-2.1.0.105_canary_2025-01-07 (#5852)
* Version bump to v2.1.0.105-2.1.0.105_canary_2025-01-07

You can download this build from:

Binaries: https://updates.duplicati.com/canary/?version=2.1.0.105

Signature file: https://updates.duplicati.com/canary/duplicati-2.1.0.105_canary_2025-01-07.signatures.zip

* Added retry to uploads

* Added support for resuming failed uploads
2025-01-07 17:55:07 +01:00
Kenneth SkovhedeandGitHub 9464caf622 Feature/update license 2025 (#5851)
* Fixed some minor whitespace issues

* Updated all copyright to 2025
2025-01-07 09:40:39 +01:00
Kenneth Skovhede d1418bb3e1 Implemented assertions to avoid sleep during build 2024-12-12 12:22:55 +01:00
Kenneth Skovhede f293b8de93 Fixed an issue with the release tagging 2024-12-06 09:20:46 +01:00
Kenneth Skovhede 345d800a34 Made a common error less noisy 2024-12-06 09:19:23 +01:00
Kenneth Skovhede aa53b157a5 Updated to use the correct name for changelog news. 2024-12-06 09:19:01 +01:00
Kenneth Skovhede 2a8f12890b Fixed compile issue 2024-11-21 20:27:07 +01:00
Kenneth Skovhede 56ff961b0d Removed the latest-v2.js as it is no longer used. 2024-11-20 17:25:03 +01:00
Kenneth Skovhede 24bc2defd0 Added support for the Agent MSI 2024-11-07 23:05:55 +01:00
Kenneth Skovhede 34d13a20e2 Initial version of the external secret provider 2024-10-24 16:06:59 +02:00
Kenneth Skovhede ce89366e17 Fixed code to patch index.html for SPA pages on build 2024-10-03 16:54:58 +02:00
Kenneth Skovhede ef0ca64d52 Merge remote-tracking branch 'origin/master' into feature/remote-control-support 2024-10-03 14:49:07 +02:00
Kenneth Skovhede c427d5a98b Improved cleanup of source folder after build 2024-10-03 08:25:41 +02:00
Kenneth Skovhede 48bd69cbde Injecting the NPM packages for builds 2024-10-02 22:52:40 +02:00
Kenneth Skovhede ecd22ac264 Added support for building agent packages.
Still lacking support for Windows MSI + MacOS pkg as they are currently tied to the TrayIcon being the base.
2024-09-18 15:29:52 +02:00
Kenneth Skovhede 669e90704d Initial work on supporting a secure remote control connection. 2024-09-18 11:07:59 +02:00
Kenneth Skovhede 4f332ea075 Added the missing duplicati-service binary 2024-08-28 00:15:53 +02:00
Kenneth Skovhede 735b4020eb Implemented duplicati-server-util for sending various commands to a running server.
This tool replaces `ConfigurationImporter` and partially replaces `duplicati_client`.
This fixes #5474
2024-08-26 20:00:13 +02:00
Kenneth Skovhede dab2b23332 Commit before reverting changelog file 2024-06-27 13:42:17 +02:00