Given all the silence here I spent some time considering digging into all the other open-source apps for a solution… but ultimately decided to try building UrBackup server on the Pi first. What I found was the same thing I suspected earlier—that the breakpoint here is a likely breakpoint any number of reasons. Earlier I linked to how another found it breaks here when libcrypto is the issue. In my case, the issue appears to be that libzstd-dev was not included in the build—but may indeed be something else—I don’t have access to the distro’s build logs to know for sure. Regardless, when things break when the first backup file and/or metadata file is attempted to be written… then it is likely some new library that kicks in at that point, or the code involved in writing that file. That much should be obvious, assuming everything else I was doing/checking was correct.
Anyhow, I read up on what I need to do to build on Linux—which namely meant learning about apt-get build-dep
to save time fetching dependencies the hard way—then built the server on the Pi… and it works fine. No more issues when clients connect, and it’s been running a couple days now. Thus, it appears the Pi OS 12 distro needs to be updated/fixed and rebuilt.
For those walking the same path, here’s a copy of my recipe for how I built the server on the Pi:
This assumes you have already tried installing from the repo, and failed, and thus already have added the repo to your APT sources. If not, add the repo to your APT sources now (we’ll add to this in a minute):
# Add the repo to your APT sources:
echo 'deb http://download.opensuse.org/repositories/home:/uroni/Raspbian_12/ /' | sudo tee /etc/apt/sources.list.d/home:uroni.list
tail /etc/apt/sources.list.d/home:uroni.list
# Add the release GPG keys:
curl -fsSL https://download.opensuse.org/repositories/home:uroni/Raspbian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_uroni.gpg > /dev/null
Stop and purge the server (yes, I know I don’t need to reboot afterwards… but I tend to regardless when at my frustration limit… don’t you?):
sudo systemctl stop urbackup-server
sudo apt-get purge urbackup-server
sudo apt autoremove
sudo reboot
Configure and make and all that jazz:
# Install the dev tools:
# https://wiki.debian.org/BuildingTutorial
#sudo apt-get install build-essential ### already installed on OS Lite ###
# Configure apt to use source repos (do as it says to uncomment[add] the deb-src lines):
sudo nano /etc/apt/sources.list
deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware
deb http://deb.debian.org/debian-security/ bookworm-security main contrib non-free non-free-firmware
deb http://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware
# Uncomment deb-src lines below then 'apt-get update' to enable 'apt-get source'
deb-src http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware
deb-src http://deb.debian.org/debian-security/ bookworm-security main contrib non-free non-free-firmware
deb-src http://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware
sudo nano /etc/apt/sources.list.d/home:uroni.list
deb http://download.opensuse.org/repositories/home:/uroni/Raspbian_12/ /
deb-src http://download.opensuse.org/repositories/home:/uroni/Raspbian_12/ /
sudo apt-get update
sudo apt-get build-dep urbackup-server
# ./configure will later throw a warning about ZSTD missing/outdated, so install it now:
sudo apt-get install libzstd-dev
# Grab the source and build it:
# https://www.urbackup.org/server_source_install.html
mkdir src
cd src
wget https://hndl.urbackup.org/Server/2.5.33/urbackup-server-2.5.33.tar.gz
tar xf urbackup-server-2.5.33.tar.gz
cd urbackup-server-2.5.33/
./configure
###sudo apt-get install zlib1g-dev
make
# After a few hundred deprecation warnings (and a couple other warnings)... and 33 minutes (SD cards are slow)... and no errors:
sudo make install
sudo cp urbackup-server.service /etc/systemd/system/
whereis urbackupsrv
urbackupsrv: /usr/local/bin/urbackupsrv
sudo nano /etc/systemd/system/urbackup-server.service
[Unit]
Description=UrBackup Client/Server Network Backup System
After=syslog.target network.target
[Service]
ExecStart=/usr/bin/urbackupsrv run --config /etc/default/urbackupsrv --no-consoletime
User=root
TasksMax=infinity
[Install]
WantedBy=multi-user.target
# change:
ExecStart=/usr/bin/urbackupsrv run --config /etc/default/urbackupsrv --no-consoletime
# to (based on `whereis` output):
ExecStart=/usr/local/bin/urbackupsrv run --config /etc/default/urbackupsrv --no-consoletime
sudo systemctl enable urbackup-server.service
sudo cp defaults_server /etc/default/urbackupsrv
sudo cp logrotate_urbackupsrv /etc/logrotate.d/urbackupsrv
sudo systemctl start urbackup-server
sudo systemctl status urbackup-server
# Browse to http://localhost:55414 and setup an admin user and the backup storage path.
# Settings tab >> General tab >> Server tab >>
# Backup storage path: /mnt/backups/urbackup change to: your path
# Save button
# Settings tab >> Users tab >> Creat User button... admin/secret
Not very friendly, I know, but that’s how I write down my recipes for my own later use.
A sharp eye might have caught the most informative lines from that:
# ./configure will later throw a warning about ZSTD missing/outdated, so install it now:
sudo apt-get install libzstd-dev
In other words, build-dep fails to pull in libzstd-dev
and you have to do that yourself. Why? Furthermore, configure only throws a warning about it instead of halting:
configure: WARNING: ZSTD compression library not present or not recent enough. Compiling without ZSTD support. Install libzstd-dev(el) or use –enable-embedded-zstd
Now, like I said before, I have no way of knowing myself if that is the smoking gun here… but it sure smells like a likely candidate.
BTW, this is what build-dep did pull:
Get:1 http://deb.debian.org/debian bookworm/main arm64 m4 arm64 1.4.19-3 [276 kB]
Get:2 http://deb.debian.org/debian bookworm/main arm64 autoconf all 2.71-3 [332 kB]
Get:3 http://deb.debian.org/debian bookworm/main arm64 autotools-dev all 20220109.1 [51.6 kB]
Get:4 http://deb.debian.org/debian bookworm/main arm64 automake all 1:1.16.5-1.3 [823 kB]
Get:5 http://deb.debian.org/debian bookworm/main arm64 autopoint all 0.21-12 [495 kB]
Get:6 http://deb.debian.org/debian bookworm/main arm64 libdebhelper-perl all 13.11.4 [81.2 kB]
Get:7 http://deb.debian.org/debian bookworm/main arm64 libtool all 2.4.7-7~deb12u1 [517 kB]
Get:8 http://deb.debian.org/debian bookworm/main arm64 dh-autoreconf all 20 [17.1 kB]
Get:9 http://deb.debian.org/debian bookworm/main arm64 libarchive-zip-perl all 1.68-1 [104 kB]
Get:10 http://deb.debian.org/debian bookworm/main arm64 libsub-override-perl all 0.09-4 [9,304 B]
Get:11 http://deb.debian.org/debian bookworm/main arm64 libfile-stripnondeterminism-perl all 1.13.1-1 [19.4 kB]
Get:12 http://deb.debian.org/debian bookworm/main arm64 dh-strip-nondeterminism all 1.13.1-1 [8,620 B]
Get:13 http://deb.debian.org/debian bookworm/main arm64 dwz arm64 0.15-1 [101 kB]
Get:14 http://deb.debian.org/debian bookworm/main arm64 gettext arm64 0.21-12 [1,248 kB]
Get:15 http://deb.debian.org/debian bookworm/main arm64 intltool-debian all 0.35.0+20060710.6 [22.9 kB]
Get:16 http://deb.debian.org/debian bookworm/main arm64 po-debconf all 1.0.21+nmu1 [248 kB]
Get:17 http://deb.debian.org/debian bookworm/main arm64 debhelper all 13.11.4 [942 kB]
Get:18 http://deb.debian.org/debian bookworm/main arm64 libcrypto++-dev arm64 8.7.0+git220824-1 [1,780 kB]
Get:19 http://deb.debian.org/debian bookworm/main arm64 libcurl4-openssl-dev arm64 7.88.1-10+deb12u8 [475 kB]
Get:20 http://deb.debian.org/debian bookworm/main arm64 libfuse2 arm64 2.9.9-6+b1 [114 kB]
Get:21 http://deb.debian.org/debian bookworm/main arm64 libsepol-dev arm64 3.4-2.1 [332 kB]
Get:22 http://deb.debian.org/debian bookworm/main arm64 libpcre2-32-0 arm64 10.42-1 [207 kB]
Get:23 http://deb.debian.org/debian bookworm/main arm64 libpcre2-posix3 arm64 10.42-1 [55.5 kB]
Get:24 http://deb.debian.org/debian bookworm/main arm64 libpcre2-dev arm64 10.42-1 [664 kB]
Get:25 http://deb.debian.org/debian bookworm/main arm64 libselinux1-dev arm64 3.4-1+b6 [159 kB]
Get:26 http://deb.debian.org/debian bookworm/main arm64 libfuse-dev arm64 2.9.9-6+b1 [1,020 kB]
Also of curiosity is that urbackup-server from the repo does pull in libzstd1:armhf
as a dependency… so I’m not sure about anything here without a peek at the build logs myself.
So, that’s the gist of it. I hope it helps.
Now, to go back and reconfigure how I want it: btrfs for the main backup drive for infinite incremental file backups, and something cheap and likely ext4 for the logs, tmps and dbs (like a USB stick—anything that’s affordable and better than the Pi’s SD card).
Because I somehow failed to spur a response here—not even so much as a “Sorry dude,”—I might as well add my early impressions and critiques of UrBackup now, for whatever they may be worth. They are meant constructively (I try to be helpful) but I’m used to all sorts of responses to such detailed critiques. As much as I try, tact eludes me sometimes. This is impressive work overall and I am thankful for all the open-source efforts here.
(1) That tri-state button next to every field in the client settings is nothing but confusion to me. It has no tooltip description and no mention in the docs. I see a padlock, some weird clamp-like thing, and a house… and that communicates nothing useful as to how it behaves. All it seems to do at first is wreck my settings if I click on it—and that makes me terribly uneasy and untrusting of the whole app. This creates a lack of confidence that my setting are safe and sound. The padlock seems to be a default maybe… but why a padlock? Why no mention of this weird UI thing in the docs?
I’m supposedly some sort of UI expert and, well, let’s just say this is not good. I feel like maybe this is trying to take the place of 3 radio buttons, or maybe 2 radio buttons plus another thing. But that would be too cluttered, right? So, then, my usual advice is to just do it different. Perhaps a button strip (with tooltips for each) or a dropdown menu on each field that needs it. Just guessing since I still don’t fully “get” what’s going on here. More likely, however, I suspect a top Edit menu is in order (with keyboard shortcuts) but that is still a wild guess as to their function. Okay, sure, two clicks are more than one… but also less than 3+ trying to figure it out. Besides, who really needs to click these regularly? Intuitive communication is often more important than brevity.
After you spend some time in the client and server, you will eventually find that the web version of this ternary button has tooltips. But, honestly, that was a few days ago and I’ve forgotten them already. I believe I learned that clamp thing might really be a road, meaning interstate?, and thus meaning internet?? I guess; except it looks like a highway, not an interstate. So, I guess it should be a cloud or something else networky. But… if this is the server setting, then why does making a local change pull up this road image instead of the house??? Sigh. The padlock might be handbag? Still not sure. Maybe a briefcase with a far oversized handle??? Regardless, I still don’t fully “get” these buttons. Best to ignore them, I figure, and just pray it all works out well.
(2) File and folder filtering. I nearly passed over UrBackup due to weak filtering (and may still after more testing). I have learned, however, the filtering is more capable than it first appears. This confusion is because there are three different answers (as I recall) in the docs. The admin manual shows the least capability with wildcards (just ). Then some other link showed me a bit more. Then, I think it was (hard to keep track of what info is buried where) the online help in the server webapp that shows the most capability (:? and casing).
The whole include/exclude thing is also poorly communicated in the UI and the docs. At first, there was some hope that “include” would allow overrides to the “exclude” rules (like ! in .gitignore does) but, alas, no, I remember from one of the docs that only one of those fields has effect at a time even though they both are enabled (and I don’t recall which has precedence and can’t find that info in the admin manual at the moment).
This brings me to .gitignore. That level of filtering would be the ideal. That level of filtering is what I’m used to from my last tool, and that is what I would like to see in the future. An update could either rewrite current filters to gitignore-style filters, or support both types. My particular use case is that I no longer try to do image backups (and a dozen reasons why, best left for another discussion). Instead, I am happy with file backups of all my personal content, and building up a new machine when something fails (because new machines come along more than failures anyhow). Therefore, all features that help me and others like me in this quest, in my opinion, are worth focusing on to attract more users like me. In this case, that means easily turning my gitignore and similar files from my various projects into backup filters so that I can have both another form of backup, plus backups between repo pushes/commits/whatever.
Short of .gitignore, the current filtering system could be much more friendly without much work. First, it should be a much larger field that is also multiline. Second, autotranslate the semicolons into carriage returns (for display) and back (for storage). You know, like Windows did with their PATH editor back in, what, Vista?
(3) Multiple backup plans per device. That is, different backup plans for different folders. Again, I nearly passed over UrBackup for lacking this feature. Fortunately, however, I decided to test UrBackup regardless just to see what else it can do. During that process, I eventually discovered what are called “virtual sub clients” buried in the manual. Okay, um, not a fan of the name, or how to define them (some confusion there/needs better examples), but this looks like the feature I was looking for to help me with backing up different folders at different rates. I haven’t tested it yet but I expect it works as expected. Thus the main point here is: Why undersell this feature? It should be a main point on the landing page. Heck, it didn’t even make the Features page.
(4) Folder monitoring. I don’t expect this built-in even though that would be nice. It would, however, be nice to know how to trigger an incremental file backup on a folder or file from the command line so I can build my own script (AHK, Powershell, whatever) to watch for file changes, should I choose to.
(5) In other words, as technically solid as this product appears to be, it is selling itself short on a couple of important features it already has, while also falling a bit short on making some features easier to use and understand.