Versions 2.1x.x cannot connect to FritzBox FTP server

Hello,
since Duplicati Versions 2.1x.x I cannot connect to my Fritz!Box FTP server any more.

Version 2.0.8.1 is the last one, which works. I use ftp connection including options SSL, “accept-any-ssl-certificate”, “ftp-passive”, “allowed-ssl-versions TLS12”.

With Versions higher 2.0.8.1 I don’t find any ftp option combination to get the ftp connection to my Fritz!Box ftp server working.

Welcome to the forum @Florian

It is the last one before conversion to new FTP code, because of Microsoft deprecation:

WebRequest, WebClient, and ServicePoint are obsolete

Know tested version numbers?

What did you try? There is of course backup, but also a GUI test button, and CLI tools.

Debugging commands documents a CLI tool that might show how connect was failing.
If you want an FTP URL to start with, you can get one with Export As command line.

Once in CLI, you can also run Duplicati.CommandLine help ftp to see the options.
Individual options seen there also have help. Maybe you’ll find a working combination.

Before that, though, anything in GUI log? In new UI, buttons in lower right will turn red.

You can also try watching live log during a failure, e.g. About → Logs → Live → Retry

EDIT 1:

Here’s an example of an FTP list operation, which is probably one of the easy ones:

Duplicati.CommandLine.BackendTool list "ftp://localhost" --auth-username=REDACTED --auth-password=REDACTED --ftp-log-to-console
Name    Dir/File        LastChange      Size

# Connect(False)
Status:   FluentFTP 52.0.0.0(.NET 7.0) AsyncFtpClient
Status:   Connecting(async) AsyncFtpClient.FtpSocketStream(control) IP #1 = ***:21
Status:   Waiting for a response
Response: 220-FileZilla Server 1.10.1
Response: 220 Please visit https://filezilla-project.org/ [739509.48d]
Status:   Detected FTP server: FileZilla
Command:  USER ***
Status:   Waiting for response to: USER ***
Response: 331 Please, specify the password. [<1ms]
Command:  PASS ***
Status:   Waiting for response to: PASS ***
Response: 230 Login successful. [61ms]
Command:  FEAT
Status:   Waiting for response to: FEAT
Response: 211-Features:
Response: MDTM
Response: REST STREAM
Response: SIZE
Response: MLST type*;size*;modify*;perm*;
Response: MLSD
Response: AUTH SSL
Response: AUTH TLS
Response: PROT
Response: PBSZ
Response: UTF8
Response: TVFS
Response: EPSV
Response: EPRT
Response: MFMT
Response: 211 End [<1ms]
Status:   Text encoding: System.Text.UTF8Encoding+UTF8EncodingSealed
Command:  OPTS UTF8 ON
Status:   Waiting for response to: OPTS UTF8 ON
Response: 202 UTF8 mode is always enabled. No need to send this command [<1ms]
Command:  SYST
Status:   Waiting for response to: SYST
Response: 215 UNIX emulated by FileZilla. [<1ms]
Status:   Active ServerHandler is: FileZilla
Status:   Listing parser set to: Machine
Command:  PWD
Status:   Waiting for response to: PWD
Response: 257 "/" is current directory. [<1ms]
Status:   NoopDaemon enabled
Status:   NoopDaemon(AsyncFtpClient) is initialized, NoopInterval = 270000ms

# GetListing("", SizeModify)
Command:  TYPE I
Status:   Waiting for response to: TYPE I
Response: 200 Type set to I [<1ms]

# OpenDataStreamAsync("MLSD /", 0)

# OpenPassiveDataStreamAsync(AutoPassive, "MLSD /", 0)
Command:  EPSV
Status:   Waiting for response to: EPSV
Response: 229 Entering Extended Passive Mode (|||52030|) [<1ms]
Status:   Connecting(async) AsyncFtpClient.FtpSocketStream(data) IP #1 = ***:52030
Command:  MLSD /
Status:   Waiting for response to: MLSD /
Response: 150 Starting data transfer. [<1ms]
...

Your situation might still need developer help, but getting better info would still be helpful.

Now I tested again with 2.2.0.0 and got these Errors:

  1. Okt. 2025 12:11: Failed while executing Backup “Dokumente_und_Bilder nach Fellbach per ftp” (id: 1)

Duplicati.Library.Interface.UserInformationException: Fehler beim Schreiben der Datei: duplicati-baf10369c73ee477a84030aee52cdf74a.dblock.zip.aes, Fehler: Status is Failed at Duplicati.Library.Main.Backend.BackendManager.Handler.ExecuteWithRetry(PendingOperationBase op, CancellationToken cancellationToken) at Duplicati.Library.Main.Backend.BackendManager.Handler.ReclaimCompletedTasks(List`1 tasks) at Duplicati.Library.Main.Backend.BackendManager.Handler.EnsureAtMostNActiveTasks(Int32 n, List`1 tasks) at Duplicati.Library.Main.Backend.BackendManager.Handler.EnsureAtMostNActiveTasks(Int32 uploads, Int32 downloads) at Duplicati.Library.Main.Backend.BackendManager.Handler.Run(IReadChannel`1 requestChannel) at Duplicati.Library.Main.Backend.BackendManager.PutAsync(VolumeWriterBase volume, IndexVolumeWriter indexVolume, Action indexVolumeFinished, Boolean waitForComplete, Func`1 onDbUpdate, CancellationToken cancelToken) at Duplicati.Library.Main.Operation.Backup.DataBlockProcessor.<>c__DisplayClass0_0.<b__0>d.MoveNext() — End of stack trace from previous location — at Duplicati.Library.Main.Backend.BackendManager.Handler.Run(IReadChannel`1 requestChannel) at Duplicati.Library.Main.Operation.Backup.DataBlockProcessor.<>c__DisplayClass0_0.<b__0>d.MoveNext() — End of stack trace from previous location — at Duplicati.Library.Main.Backend.BackendManager.Handler.<>c__DisplayClass14_0.<b__0>d.MoveNext() — End of stack trace from previous location — at CoCoL.AutomationExtensions.RunTask[T](T channels, Func`2 method, Boolean catchRetiredExceptions) at Duplicati.Library.Main.Backend.BackendManager.QueueTask(PendingOperationBase op) at Duplicati.Library.Main.Operation.BackupHandler.RunMainOperation(Channels channels, ISourceProvider source, UsnJournalService journalService, BackupDatabase database, IBackendManager backendManager, BackupStatsCollector stats, Options options, IFilter filter, BackupResults result, ITaskReader taskreader, Int64 filesetid, Int64 lastfilesetid) at Duplicati.Library.Main.Operation.BackupHandler.RunAsync(String sources, IBackendManager backendManager, IFilter filter) at Duplicati.Library.Main.Controller.<>c__DisplayClass22_0.<b__0>d.MoveNext() — End of stack trace from previous location — at Duplicati.Library.Utility.Utility.Await(Task task) at Duplicati.Library.Main.Controller.RunAction[T](T result, String& paths, IFilter& filter, Func`3 method) at Duplicati.Library.Main.Controller.Backup(String inputsources, IFilter filter) at Duplicati.Server.Runner.RunInternal(Connection databaseConnection, EventPollNotify eventPollNotify, INotificationUpdateService notificationUpdateService, IProgressStateProviderService progressStateProviderService, IApplicationSettings applicationSettings, IRunnerData data, Boolean fromQueue)

31. Okt. 2025 12:11: Error in worker

Duplicati.Library.Interface.UserInformationException: Fehler beim Schreiben der Datei: duplicati-baf10369c73ee477a84030aee52cdf74a.dblock.zip.aes, Fehler: Status is Failed at Duplicati.Library.Main.Backend.BackendManager.Handler.ExecuteWithRetry(PendingOperationBase op, CancellationToken cancellationToken) at Duplicati.Library.Main.Backend.BackendManager.Handler.ReclaimCompletedTasks(List`1 tasks) at Duplicati.Library.Main.Backend.BackendManager.Handler.EnsureAtMostNActiveTasks(Int32 n, List`1 tasks) at Duplicati.Library.Main.Backend.BackendManager.Handler.EnsureAtMostNActiveTasks(Int32 uploads, Int32 downloads) at Duplicati.Library.Main.Backend.BackendManager.Handler.Run(IReadChannel`1 requestChannel) at Duplicati.Library.Main.Backend.BackendManager.PutAsync(VolumeWriterBase volume, IndexVolumeWriter indexVolume, Action indexVolumeFinished, Boolean waitForComplete, Func`1 onDbUpdate, CancellationToken cancelToken) at Duplicati.Library.Main.Operation.Backup.DataBlockProcessor.<>c__DisplayClass0_0.<b__0>d.MoveNext() — End of stack trace from previous location — at Duplicati.Library.Main.Backend.BackendManager.Handler.Run(IReadChannel`1 requestChannel) at Duplicati.Library.Main.Operation.Backup.DataBlockProcessor.<>c__DisplayClass0_0.<b__0>d.MoveNext() — End of stack trace from previous location — at Duplicati.Library.Main.Backend.BackendManager.Handler.<>c__DisplayClass14_0.<b__0>d.MoveNext() — End of stack trace from previous location — at CoCoL.AutomationExtensions.RunTask[T](T channels, Func`2 method, Boolean catchRetiredExceptions) at Duplicati.Library.Main.Backend.BackendManager.QueueTask(PendingOperationBase op) at Duplicati.Library.Main.Operation.BackupHandler.RunMainOperation(Channels channels, ISourceProvider source, UsnJournalService journalService, BackupDatabase database, IBackendManager backendManager, BackupStatsCollector stats, Options options, IFilter filter, BackupResults result, ITaskReader taskreader, Int64 filesetid, Int64 lastfilesetid) at Duplicati.Library.Main.Operation.BackupHandler.RunAsync(String sources, IBackendManager backendManager, IFilter filter) at Duplicati.Library.Main.Controller.<>c__DisplayClass22_0.<b__0>d.MoveNext() — End of stack trace from previous location — at Duplicati.Library.Utility.Utility.Await(Task task) at Duplicati.Library.Main.Controller.RunAction[T](T result, String& paths, IFilter& filter, Func`3 method) at Duplicati.Library.Main.Controller.Backup(String inputsources, IFilter filter) at Duplicati.Server.Runner.RunInternal(Connection databaseConnection, EventPollNotify eventPollNotify, INotificationUpdateService notificationUpdateService, IProgressStateProviderService progressStateProviderService, IApplicationSettings applicationSettings, IRunnerData data, Boolean fromQueue) at Duplicati.Server.Runner.Run(Connection databaseConnection, EventPollNotify eventPollNotify, INotificationUpdateService notificationUpdateService, IProgressStateProviderService progressStateProviderService, IApplicationSettings applicationSettings, IQueuedTask data, Boolean fromQueue) at Duplicati.WebserverCore.Services.QueueRunnerService.RunTask(IQueuedTask task)

I finally found a setup that works at my FritzBox FTP server with duplicati 2.2.0.0:

FTP (Alternativ) with

  • aftp-encryption-mode=Auto
  • aftp-ssl-protocols=Tls12