Cannot get Duplicati in Docker to Authenticate

Hi
I’ve almost given up getting Duplicati installed in docker using docker compose. Can anyone save my sanity?!
I have the following in my docker compose:

  duplicati:
    image: lscr.io/linuxserver/duplicati
    container_name: duplicati
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/London
      - SETTINGS_ENCRYPTION_KEY= "Passw0rd"
      - CLI_ARGS= #optional
      - DUPLICATI__WEBSERVICE_PASSWORD= "Passw0rd"
    volumes:
      - ./duplicati/config:/config
      - ./duplicati/backups:/backups
      - /home/username/HomeLab:/source
    ports:
      - 8200:8200
    restart: unless-stopped

It starts, and the web interface loads. But then I get the message


I click Login, and it refuses every password I give it! (I was expecting it to use the password set in DUPLICATI__WEBSERVICE_PASSWORD.
When I check the logs in docker, it shows the following:

───────────────────────────────────────
Linuxserver.io version: v2.1.0.2_beta_2024-11-29-ls228
Build-date: 2024-12-14T03:56:45+00:00
───────────────────────────────────────
    
[custom-init] No custom files found, skipping...
Inside getter
Server has started and is listening on port 8200
Connection to localhost (::1) 8200 port [tcp/*] succeeded!
[ls.io-init] done.
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.HostnameFilter.InvokeAsync(EndpointFilterInvocationContext context, EndpointFilterDelegate next)
         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)
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.HostnameFilter.InvokeAsync(EndpointFilterInvocationContext context, EndpointFilterDelegate next)
         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)

Welcome to the forum @GeorgeBR

I don’t use Docker, but the examples I see lack the space after the = sign.
You’ve got some without, but the possibly broken ones include the space.

Because these are all environment variables, you might be able to ps with

e

Show the environment after the command. 

to see which ones actually made it into the environment that Duplicati got.

Citations, but I still haven’t found a completely definitive official reference:

Spelling of environmental variables
Set environment variables within your container’s environment

Hi. In this case:

 - DUPLICATI__WEBSERVICE_PASSWORD= "Passw0rd"

Your password is actually β€œPassw0rd” with the quotes and the space in front, everything after the = is the value.

1 Like