Web-UI issues on MacOS Catalina

I have Duplicacy Web installed on my windows machines running as a service with no issues. So I figured I’d try to install it on my Mac running Catalina. I have run into some problems. There have been posts about them, but I have not been able to figure out how to make things work.

The first problem is getting Duplicacy to backup files for the other users on the Mac. I know it’s a permission issue caused by duplicacy-web and/or the duplicacy CLI running under my credentials. On Windows, this is solved by installing the application as a service. I found the post for “MacOS Backing Up Other Users” with the response saying to run the web GUI as root. I can certainly do that manually by running a sudo command from a terminal, but I have no idea how to make it run automatically on system start up. Running at my login doesn’t help if one of the other family members is using the machine.

The second issue is that attempts to use the -vss option fail with “VSS_CREATE Error while mounting snapshot: exit status 66.” I found the post “-vss not working with Catalina.” I added full disk access to Duplicacy Web Edition.app easy enough. Trying to add full disk access for duplicacy_web_osx_x64 and duplicacy_osx_x64_2.6.1 took some fooling around. I finally figured out I could drag and drop the executable files from the finder to add them. Unfortunately, I still get the exit code 66 when I try to run a backup. I’m guessing there is some incantation that I am doing wrong to get the executables to have full disk access.

I’ll go do some research on LaunchControl as suggested at the end of the thread. Maybe it will solve both of my issues or I’ll find out it is beyond my capabilities to implement. :slight_smile:

If there are other suggestions I’d love to hear them.

The simplest way would be to use launchctl to start duplicacy_web. (see man launchd). This can be accomplished by placing a rather trivially crafted plist file (see man launchd.plist) under /Library/LaunchDaemons (this specific location, see man launchd near the end for the justification)

I would write something like this:

<?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.acrosync.duplicacy-web</string>
        <key>KeepAlive</key>
        <dict>
            <key>Crashed</key>
            <true/>
            <key>SuccessfulExit</key>
            <false/>
        </dict>

        <key>EnvironmentVariables</key>
        <dict>
            <key>DWE_PASSWORD</key>
            <string>password</string>
        </dict>
        <key>Program</key>
        <string>/Applications/Duplicacy Web Edition.app/Contents/MacOS/duplicacy_web_osx_x64</string>
        <key>RunAtLoad</key>
        <true/>
        <key>WorkingDirectory</key>
        <string>/Users</string>
    </dict>
</plist>

To load the service run:

launchctl load -w /Library/LaunchDaemons/duplicacy_web.plist

To unload:

launchctl unload /Library/LaunchDaemons/duplicacy_web.plist

That said I would discourage doing so: you are giving duplicacy admin (and in the present implementation anyone while admin is authenticated) access to other users data. And your store password is in plaintext, as keychain is not available. This is bad.

Instead, configure command line Duplicacy to backup /Users; and you can continue managing the backup using your own instance of duplciacy_web if you wish. The launchd file for that is described here: Unattended Duplicacy setup on macOS | Trinkets, Odds, and Ends

Updated script:

  • no need to provide DWE_PASSWORD anymore
  • Need to provide HOME, ideally under /Library
<?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.acrosync.duplicacy-web</string>
        <key>KeepAlive</key>
        <dict>
            <key>Crashed</key>
            <true/>
            <key>SuccessfulExit</key>
            <false/>
        </dict>

        <key>EnvironmentVariables</key>
        <dict>
            <key>HOME</key>
            <string>/Library/Duplicacy</string>
        </dict>
        <key>Program</key>
        <string>/Applications/Duplicacy Web Edition.app/Contents/MacOS/duplicacy_web_osx_x64</string>
        <key>RunAtLoad</key>
        <true/>
        <key>WorkingDirectory</key>
        <string>/Library/Duplicacy</string>
    </dict>
</plist>
  • create the /Library/Duplicacy beforehand: sudo mkdir /Library/Duplicacy
  • don’t forget to add Duplocacy Web Edition to the Full Disk Access