This release is a canary release intended to be used for testing in preparation of a later stable release.
Unlike regular canary builds, this one has a major change in the build system, so it now runs on .NET8.
For that reason, the updater in previous canary builds does not detect this update yet, but this can be activated at a later time.
Please see release notes for v2.0.9.100 for a summary of changes.
Please see list of known issues related to .NET8 upgrade:
-Followup .NET8 canary · GitHub
This build is changes the underlying webserver to Kestrel, which is common for .NET based projects.
A big thanks to @tsuckow and @npodbielski for their contributions towards this goal.
This build changes authentication for the WebUI
With this build it is no longer possible to use the web-UI without a password.
If no password is set, a random password is generated.
For users activating the UI via the TrayIcon, this will automatically log in, as the TrayIcon hosts the server.
For users that rely on the WebUI without the TrayIcon, as special link is emitted during startup that allows login.
For both cases, the password can be (re-)set with --webservice-password=... as a startup commandline argument.
Duplicati will only accept localhost as the hostname by default. If you are using another hostname, you need to enable it with — webservice-allowedhostnames=hostname. Use the hostname * to disable the security mechanism.
It is not a new thing though, it should have been like this for several years?
But I still can’t get to the WebGUI - the server is running, you can see the Duplicati website in the background, but I don’t get any password entry window:
Connection to server was rejected due to invalid authentication. Reload browser window to reconnect to server properly.
If this problem persist open this page from the TrayIcon instead.
Does your “invalid authentication” seem to correspond to terminal window putting out stuff like:
fail: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware[1]
An unhandled exception has occurred while executing the request.
Duplicati.WebserverCore.Exceptions.UnauthorizedException: Authorization failed due to missing cookie.
at Duplicati.WebserverCore.Endpoints.V1.Auth.<>c.<<Map>b__3_0>d.MoveNext()
--- End of stack trace from previous location ---
at Microsoft.AspNetCore.Http.RequestDelegateFactory.<TaskOfTToValueTaskOfObject>g__ExecuteAwaited|92_0[T](Task`1 task)
at Duplicati.WebserverCore.Middlewares.LanguageFilter.InvokeAsync(EndpointFilterInvocationContext context, EndpointFilterDelegate next)
at Microsoft.AspNetCore.Http.RequestDelegateFactory.<ExecuteValueTaskOfObject>g__ExecuteAwaited|129_0(ValueTask`1 valueTask, HttpContext httpContext, JsonTypeInfo`1 jsonTypeInfo)
at Duplicati.WebserverCore.Middlewares.WebsocketExtensions.<>c__DisplayClass0_0.<<UseNotifications>b__0>d.MoveNext()
--- End of stack trace from previous location ---
at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddlewareImpl.<Invoke>g__Awaited|10_0(ExceptionHandlerMiddlewareImpl middleware, HttpContext context, Task task)
Mine is looking like above, and I (like you) haven’t seen any sign of a traditional password usage.
I’ve tried to encourage it with --webservice-password and Settings Change server passphrase.
What seems to work the best for me is to open from a TrayIcon, but that’s only one of many uses.
Running as a Windows service, or with Duplicati on a different system are other cases to support.
was a topic on its own (added to old one, being pursued), and also mentioned above in this topic.
EDIT:
The message posted above “seems” to happen when I leave the golden path of a tray icon open.
Even going to 127.0.0.1 instead of localhost does it, presumably due to lack of a refresh token.
I’m running Duplicati.GUI.TrayIcon.exe --webservice-interface=* --webservice-allowedhostnames=* while pursuing the other topic. The host header check is acting unusually.
I had the same “invalid hostname” issue. Previous version (2.0.9.101) had “allow remote access” and “hostname” configured in global settings. Does 2.0.9.102 not honor the previously-configured hostname?
Scheduled tasks might have broken. First clue was importing a job to run tomorrow morning.
Status bar stayed at “No scheduled tasks”. Imported again, changed by hand. Still not there.
About → System info doesn’t seem to be showing the schedule. estimatedPauseEnd is odd.
It does react if I actually start a pause. pauseTimeRemain sets up, but does not count down.
I’m expecting it to do that while I watch. If I refresh manually, I can see the time going down.
Anyway, the unpaused view is below. I’m used to seeing estimatedPauseEnd look very zero.
2.0.8.1 would show estimatedPauseEnd : 0001-01-01T00:00:00 when pause is not in effect.
I did finally see it ask for a password at least once, after I accepted initial dialog to set that.
Log out button in the left bar was missing for a long time, finally showed up, but is ignored.
I’m not sure if there’s a logout timer, but I did get Internal server error popups awhile.
Originally I thought it was in what I was doing, but then did other things, and they failed too.
I can’t report on any terminal messages with these, as I’m launching from a desktop script.
Basically trying to get to normal operation. Somewhat blocked. Ask if you need debug info.
EDIT:
If “emitted” means written to the terminal, does it have the same background issue I mention?
My setup is a bit odd, but Duplicati running from the background seems a very common thing.
TrayIcon launched at login or from Desktop, or Server run by Windows service are examples.
Maybe “WebUI without the TrayIcon” really meant "WebUI without doing Open from TrayIcon?
I use TrayIcon for its information and controls, with a WebUI generally not opened by TrayIcon.