Update questions

I am trying to understand Duplicati and backups. I am running macOS. I am running Duplicati as a service using a launchd setup:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.duplicati.server</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Applications/Duplicati.app/Contents/MacOS/duplicati-server</string>
        <string>--webservice-port=8200</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>LaunchOnlyOnce</key>
    <true/>
    <key>KeepAlive</key>
    <true/>
</dict>
</plist>

I took the following steps:

  1. Logged in to duplicati.
  2. Checked the version in ‘About’. I am running 2.0.5.1
  3. I got a message about an update
  4. I installed the update
  5. I activated the update

At this point, the UI failed to reconnect. I looked at the processes running:

hermione:~ gerben$ ps laxww|grep upli
    0   340     1   0  20  0  4328784   3036 -      Ss     ??   16:52.28 /Applications/Duplicati.app/Contents/MacOS/duplicati-server --webservice-port=8200
    0   725   340   0  20  0  4404412  24780 -      S      ??    0:02.18 /opt/local/bin/mono /Applications/Duplicati.app/Contents/Resources/Duplicati.Server.exe --webservice-port=8200
    0 10581   725   0  20  0  4463600  49688 -      S      ??    0:00.82 /opt/local/bin/mono-sgen /Library/Application Support/Duplicati/updates/2.0.6.3/Duplicati.Server.exe --webservice-port=8200

What this tells me is:

  1. The /Application/Duplicati.com/Contents/MacOS/duplicati-server is still called, this is a 2.5.0.1 binary. This one forks mono to run /Applications/Duplicati.app/Contents/Resources/Duplicati.Server.exe which is a 2.5.0.1 mono binary. This one apparently goes into /Library/Application Support/updates to fork the true binary.
  2. /Applications/Duplicati.com will show itself as 2.0.5.1 even if it effectively runs 2.0.6.3
  3. The Web UI will say Same as the base install version: 2.0.5.1_beta_2020-01-18

I noticed /Library/Application Support/Duplicati/updates/2.0.4.23 exists. I haven’t been running that, apparently I installed 2.0.5.1 by downloading Duplicati again.

So, do I understand correctly that there is a ‘base install’ that can download and activate follow-ups in the channel based on that base version. If I install a newer ‘base install’ then older versions in the update channel are kept but never used? Can I remove that older version?

And more importantly: is there a difference between migrating the setup (settings, backups, info in a database) from an old to a new version between:

  1. Killing a running instance; installing the new version in /Applications; launching a new instance
  2. Using install & activate in the Web UI?

i.e. does ‘activate’ do some magic on settings before launching the new version?

I unloaded the launchd plist. I had to kill the mono session and its child by hand. I loaded the launchd plist again. Now Duplicati works again. Before I tell me remote users (family members) how to update, I’d like to understand better what is going on exactly and what the best way to update is.

I would say the Duplicati install process didn’t fully exit the stuff already loaded in memory and so still said the old version since that was still running and in use by it.

Also FYI, I’ve not seen any problem result from killing Duplicati when its done without a backup running (had to do a lot of debug tests by doing this even with backups running as Duplicati has a code issue where the UI gets stuck). So feel free to finish the update that way.

Or you could just reboot and if Duplicati starts with the new version then there’s nothing to think about unless you’re going to work on it.

Although I don’t know macOS, I think it’s the same design as Windows and Linux. Their answer is “yes”.
See BaseVersionName (likely 2.0.5.1) and ServerVersionName (likely 2.0.6.3) in About → System info

Yes and yes.

These should both get on the new version. The only difference is where the new version is in filesystem.
There are some subtle factors, such as that update files are integrity-checked, and are ignored if wrong.
Also the Activate button is not reliable and sometimes a manual Duplicati start is required to get back up.

No magic, however updated version will sometimes update the server or job databases to a new version.
This makes it difficult to downgrade, and especially annoying if updates loses integrity and you go back to base version. For your remote users, a maybe longer but more predictable procedure is to use Duplicati updates notifications as a notification, but actually have them go do a manual install of base. My opinion…

An example of the mayhem caused by an updates folder somehow getting some extra things in it is here:

If you mean in the Settings page under Update channel in Default, the default update channel is set by the base version which is 2.0.5.1, but the channel itself would be Beta, because 2.0.5.1 was a Beta. That doesn’t mean you’re on 2.0.5.1 now. Look at the About screen or About --> System info for versions.

On the line above your quote, it probably says Default (Beta), then your line goes into more detail on it.

How are you seeing anything in the UI if

For me, an Activate failure doesn’t reconnect the UI because there are no Duplicati processes, so I do a manual start. If you see processes up, maybe you can check start time to see if they’re new or leftovers.

2.0.6.3, though, seems like it couldn’t have been old if you just installed it. Did you set up a UI password?

image

is a false alarm I sometimes get that I can clear with a browser refresh. I’m thinking of filing an issue on it.

If family is willing to do this, then install and reboot (rather than trying chance of activate working) may do.

Unfortunately I have no Mac, so can’t say how easy it is to nicely stop or kill and start things like Duplicati.