I use config management to build the system (Puppet in my case, purely due to experience rather than strong preference) so it's fully reproducible.
I push my data with borg (https://github.com/borgbackup/borg) to rsync.net (http://rsync.net/products/attic.html) for offsite backup.