Unable to connect to WEB UI

I am installing duplicati_2.0.8.1-1 on a Raspberry running Ubuntu Server 20.4.2.
It should be functioning normally, this is my first time using Duplicati.

The internal network address of the raspberry pi is 192.168.0.100, but when I connect to 192.168.0.100:8200 using my computer, it denies access.


It should be functioning normally, this is my first time using Duplicati.
Guirong

Welcome to the forum @HuGuirong

This is a little old, but it’s your choice. You might see an offer to get 2.1.

192.168.0.100 is presumably on an external interface of the raspberry pi.

The network address that’s open by default is localhost, e.g. 127.0.0.1.

External access to the server

describes --webservice-interface=any option to allow external access.

To use a host name, add --webservice-allowed-hostnames=<hostname>
That’s not required if you use the IP, as there’s no concern for DNS attack.

You can put options in /etc/default/duplicati

# Additional options that are passed to the Daemon.
DAEMON_OPTS=""

thanks for your answer!

I don not when accessing the server it used ip or hostname,so I add my computer hostname .

Then reloaded the service

sudo systemctl enable duplicati.service
sudo systemctl daemon-reload
sudo systemctl start duplicati.service  
sudo systemctl status duplicati.service

But 192.168.0.100:8200 still denies access.

Try separating options with a space, otherwise they probably won’t be read right.

Thanks!
I added a space, but still can’t connect.

When computer documentation says something like:

--webservice-allowed-hostnames=<hostname>

the wording in the angle brackets explains what it is.
You’re supposed to replace it all, including <> wrap.

image

That might have stopped you from getting in with a hostname.
Did you also try by IP, and did you restart duplicati before test?

If so, next step is to see what’s listening for incoming requests.

You can run netstat pipeline looking for port 8200, but easier:

$ sudo lsof -i ":8200" -sTCP:LISTEN

and see if it says

COMMAND      PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
duplicati 331176 root  425u  IPv4 5157071      0t0  TCP localhost:8200 (LISTEN)
duplicati 331176 root  426u  IPv6 5157072      0t0  TCP ip6-localhost:8200 (LISTEN)

which is bad, as it only will accept connections on inside-system localhost, or

COMMAND      PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
duplicati 331453 root  425u  IPv6 5161616      0t0  TCP *:8200 (LISTEN)

where the * means all interfaces (including the one for your local area network).

If you get that, then try with IP address. If that works, then it’s that bad hostname.

Thanks!
I don’t know how to bypass the hostname to access with just the IP, using the command I added to allow my hostname
When I modify /etc/default/duplicati, I restart using the following command

sudo systemctl enable duplicati.service
sudo systemctl daemon-reload
sudo systemctl start duplicati.service

I changed the dpulicati environment variable
/etc/default/duplicati

DAEMON_OPTS="--webservice-interface=any --webservice-allowed-hostnames=WENsDell3551"

when I run$ sudo lsof -i ":8200" -sTCP:LISTENit gives no output.
I checked the service status using$ sudo systemctl status duplicati.serviceand it was running unnormall,says

● duplicati.service - Duplicati web-server
     Loaded: loaded (/etc/systemd/system/duplicati.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Fri 2025-04-11 10:50:51 CST; 2min 28s ago
    Process: 4814 ExecStart=/usr/bin/duplicati-server $DAEMON_OPTS (code=exited, status=100)
   Main PID: 4814 (code=exited, status=100)

Apr 11 10:50:51 raspberrypi systemd[1]: duplicati.service: Scheduled restart job, restart counter is at 5.
Apr 11 10:50:51 raspberrypi systemd[1]: Stopped Duplicati web-server.
Apr 11 10:50:51 raspberrypi systemd[1]: duplicati.service: Start request repeated too quickly.
Apr 11 10:50:51 raspberrypi systemd[1]: duplicati.service: Failed with result 'exit-code'.
Apr 11 10:50:51 raspberrypi systemd[1]: Failed to start Duplicati web-server.

I don’t know what happened, it was working fine when I first started.

I thought you were doing that earlier, like

So instead of a host name and port, you used an IP address and port. Did I misread?

It looks like it’s in some sort of overly rapid start then fail cycle. I need its failure detail.

See if you can find an error message explaining the exit 100 (which is an error) better.

journalctl --unit=duplicati.service --lines=40 might be a way to start on that.

Back to prior 2.0.8.1 question – where did you get this Duplicati? That’s an old version.
If it’s some third-party package (not from Duplicati), it might deserve a closer inpection.

Thank you for your reply!
I entered 192.168.0.100:8200 in the browser to access Duplicati. 192.168.0.100 is the IP of the server in the LAN.Is this the right thing to do?

2.0.8.1 is an installation package provided by a third party.

Last time I updated toduplicati-2.1.0.5_stable_2025-03-04-linux-arm64-gui.deb(or cli?) ,then there was a startup failure error. I’m sorry that I forgot to explain it.I don’t know whether to roll back to 2.0.8.1 or other earlier versions.
duplicati-2.1.0.5_stable_2025-03-04-linux-arm64-gui.deb from the official website.
Here is the result of journalctl --unit=duplicati.service --lines=40

-- Logs begin at Thu 2020-04-02 01:23:42 CST, end at Sat 2025-04-12 14:50:36 CST. --
Apr 12 14:38:18 raspberrypi duplicati-server[188787]:    at System.Data.SQLite.UnsafeNativeMethods.sqlite3_libversion()
Apr 12 14:38:18 raspberrypi duplicati-server[188787]:    at System.Data.SQLite.SQLite3.get_SQLiteVersion()
Apr 12 14:38:18 raspberrypi duplicati-server[188787]:    at System.Data.SQLite.SQLiteConnection.get_SQLiteVersion()
Apr 12 14:38:18 raspberrypi duplicati-server[188787]:    at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor)
Apr 12 14:38:18 raspberrypi duplicati-server[188787]:    at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
Apr 12 14:38:18 raspberrypi duplicati-server[188787]:    --- End of inner exception stack trace ---
Apr 12 14:38:18 raspberrypi duplicati-server[188787]:    at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
Apr 12 14:38:18 raspberrypi duplicati-server[188787]:    at Duplicati.Library.SQLiteHelper.SQLiteLoader.get_SQLiteVersion()
Apr 12 14:38:18 raspberrypi duplicati-server[188787]:    at Duplicati.Server.Program.GetDatabaseConnection(Dictionary`2 commandlineOptions, Boolean silentConsole)
Apr 12 14:38:18 raspberrypi duplicati-server[188787]:    at Duplicati.Server.Program.Main(String[] _args)
Apr 12 14:38:18 raspberrypi systemd[1]: duplicati.service: Main process exited, code=exited, status=100/n/a
Apr 12 14:38:18 raspberrypi systemd[1]: duplicati.service: Failed with result 'exit-code'.
Apr 12 14:38:18 raspberrypi systemd[1]: duplicati.service: Scheduled restart job, restart counter is at 4.
Apr 12 14:38:18 raspberrypi systemd[1]: Stopped Duplicati web-server.
Apr 12 14:38:18 raspberrypi systemd[1]: Started Duplicati web-server.
Apr 12 14:38:19 raspberrypi duplicati-server[188799]: A serious error occurred in Duplicati: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
                                                       ---> System.DllNotFoundException: Unable to load shared library 'SQLite.Interop.dll' or one of its dependencies. In order to help diagnose loading problems, consider using a tool like str>
                                                      /usr/lib/duplicati/SQLite.Interop.dll.so: cannot open shared object file: No such file or directory
                                                      /usr/lib/duplicati/libSQLite.Interop.dll.so: cannot open shared object file: No such file or directory
                                                      /lib/aarch64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by /usr/lib/duplicati/SQLite.Interop.dll)
                                                      SQLite.Interop.dll: cannot open shared object file: No such file or directory
                                                      /usr/lib/duplicati/libSQLite.Interop.dll: cannot open shared object file: No such file or directory
                                                      
                                                         at System.Data.SQLite.UnsafeNativeMethods.sqlite3_libversion()
                                                         at System.Data.SQLite.SQLite3.get_SQLiteVersion()
                                                         at System.Data.SQLite.SQLiteConnection.get_SQLiteVersion()
                                                         at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor)
                                                         at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
                                                         --- End of inner exception stack trace ---
                                                         at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
                                                         at Duplicati.Library.SQLiteHelper.SQLiteLoader.get_SQLiteVersion()
                                                         at Duplicati.Server.Program.GetDatabaseConnection(Dictionary`2 commandlineOptions, Boolean silentConsole)
                                                         at Duplicati.Server.Program.Main(String[] _args)
Apr 12 14:38:19 raspberrypi duplicati-server[188799]: A serious error occurred in Duplicati: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
Apr 12 14:38:19 raspberrypi duplicati-server[188799]:  ---> System.DllNotFoundException: Unable to load shared library 'SQLite.Interop.dll' or one of its dependencies. In order to help diagnose loading problems, consider using a tool like str>
Apr 12 14:38:19 raspberrypi duplicati-server[188799]: /usr/lib/duplicati/SQLite.Interop.dll.so: cannot open shared object file: No such file or directory
Apr 12 14:38:19 raspberrypi duplicati-server[188799]: /usr/lib/duplicati/libSQLite.Interop.dll.so: cannot open shared object file: No such file or directory
Apr 12 14:38:19 raspberrypi duplicati-server[188799]: /lib/aarch64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by /usr/lib/duplicati/SQLite.Interop.dll)
Apr 12 14:38:19 raspberrypi duplicati-server[188799]: SQLite.Interop.dll: cannot open shared object file: No such file or directory
Apr 12 14:38:19 raspberrypi duplicati-server[188799]: /usr/lib/duplicati/libSQLite.Interop.dll: cannot open shared object file: No such file or directory
Apr 12 14:38:19 raspberrypi duplicati-server[188799]:    at System.Data.SQLite.UnsafeNativeMethods.sqlite3_libversion()
Apr 12 14:38:19 raspberrypi duplicati-server[188799]:    at System.Data.SQLite.SQLite3.get_SQLiteVersion()
Apr 12 14:38:19 raspberrypi duplicati-server[188799]:    at System.Data.SQLite.SQLiteConnection.get_SQLiteVersion()
Apr 12 14:38:19 raspberrypi duplicati-server[188799]:    at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor)
Apr 12 14:38:19 raspberrypi duplicati-server[188799]:    at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
Apr 12 14:38:19 raspberrypi duplicati-server[188799]:    --- End of inner exception stack trace ---
Apr 12 14:38:19 raspberrypi duplicati-server[188799]:    at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
Apr 12 14:38:19 raspberrypi duplicati-server[188799]:    at Duplicati.Library.SQLiteHelper.SQLiteLoader.get_SQLiteVersion()
Apr 12 14:38:19 raspberrypi duplicati-server[188799]:    at Duplicati.Server.Program.GetDatabaseConnection(Dictionary`2 commandlineOptions, Boolean silentConsole)
Apr 12 14:38:19 raspberrypi duplicati-server[188799]:    at Duplicati.Server.Program.Main(String[] _args)
Apr 12 14:38:19 raspberrypi systemd[1]: duplicati.service: Main process exited, code=exited, status=100/n/a
Apr 12 14:38:19 raspberrypi systemd[1]: duplicati.service: Failed with result 'exit-code'.
Apr 12 14:38:19 raspberrypi systemd[1]: duplicati.service: Scheduled restart job, restart counter is at 5.
Apr 12 14:38:19 raspberrypi systemd[1]: Stopped Duplicati web-server.
Apr 12 14:38:19 raspberrypi systemd[1]: duplicati.service: Start request repeated too quickly.
Apr 12 14:38:19 raspberrypi systemd[1]: duplicati.service: Failed with result 'exit-code'.
Apr 12 14:38:19 raspberrypi systemd[1]: Failed to start Duplicati web-server.

It’s the right thing if you like it and don’t want to set up an allowed host name.
If you prefer using a host name, go the other way. It’s easier once you use IP.
Settings screen has an easier UI. Just type the name of the Duplicati system.

Then I guess neither of us know what they did. Do they provide their own support?
Do they have a name, forum, download URL, or web site that you are able to cite?

You posted that you were on 2.0.8.1, showing systemd failure which I wanted to look at.
Did you ever get journalctl from 2.0.8.1, or did you update to 2.1.0.5 to post that failure?

What you posted now (what is it from?) reminds me of a build problem that was fixed in

and I think Ubuntu Server 20.04 is based on an early version of Debian 10 a.k.a. Buster.

v2.0.9.107_canary_2024-09-11

Embedding backwards compatible ARMv7 binaries in builds

was probably the Canary release, and that predates when Stable release began its work.
If you’re now testing 2.1.0.5 Stable, then the developer might have another issue to work.

Yes, the failure showing systemd occurred after upgrading to 2.1.0.5.Then I installed v2.0.9.107_canary_2024-09-11, but had the same error after booting.Ubuntu server 20.4 is debian11. I tried to upgrade the system to ubnutu server 22.04.5lts duplicati and it can start normally.

This probably needs work by the dev, but to see if I understand the writeup correctly:

  • 2.1.0.5 on 20.04 fails
  • 2.0.9.107 on 22.04 works, and I’d hope 2.1.0.5 would have inherited a success.

If I read that wrong, please correct, otherwise we’ll see if the dev can give comments.

2.1.0.5on20.04 fails
2.0.9.107on20.04 fails
2.1.0.5on22.04 works
Thanks!

Yes, I agree, this looks like a similar problem.

The fix then was to build SQLite against an older version of glibc, and then monkey patch the Armv7 package with this custom binary. It is not a great workaround, but we could do some of the same for the Arm64 packages.

Thanks for the summary.

It looks like anything on 20.04 (and older) will fail due to an older version of glibc.
I assume you are fine with using 22.04 ?

To summarize:

  • Duplicati will by default only listen to 127.0.0.1 (loopback adapter) to prevent LAN access

If you want LAN access, use --webservice-interface=any or check the box in the UI and restart Duplicati.

  • Duplicati will refuse any hostnames (but accept IP “hostname”) to guard against a DNS-based attack.

If you want to use a hostname, you must specify it, either with --webservice-allowed-hostnames= or using the UI. A restart is required for this change.