All of my Linux boxes use btrfs as the filesystem.
I have some tools that makes snapshots of all the subvolumes I wish to keep backups of and does incremental transfers of them to my NAS. It will incrementally transfer any non-synced ones as well, so if you run make-snapshots multiple times without backing up, they'll all end up on my NAS eventually.
You can also have it create a writable snapshot out of the latest full snapshot so you can muck around with updates without breaking your current environment. It also updates the rEFInd configuration dynamically so you can boot into old snapshots if the one you're working on is broken. You can also have it spin up a VM to test as well.
I also wrote my own tiny dynamic DNS service I run on my blog's VPS so I can bind my home network's IP address to a domain name. It's just a tiny node.js app that acts an an authentication frontend to update a bind server's DNS config.