Like many of you, I’ve been a long-time subscriber to CrashPlan Home Family. But recently I received an e-mail that this is soon going to end. Like many before it, CrashPlan is cancelling their Unlimited Family subscription, no more multi-PC cloud backup! So I started thinking, how hard would it be to “build” a self hosted replacement?
This will be a multi-article guide on how to build your own multi-tenant Crashplan replacement for yourself or you and your friends and family.
No true cloud replacement available
While looking around online, there are lots of cloud vendors offering backup plans or storage plans, but none that come close to what CrashPlan Home Family offered for 150$ per year.
Either they are way more expensive, or intended for a single home computer, don’t allow a NAS to backup, don’t automatically select video files or files larger then 4GB, only keep one version or have a max retention of 30 days, etc. etc.
What features would a backup replacement need to have to truly replace Crashplan for me?
Features desired for the replacement service
Multi-tenant and for those tenants, multi-client
- I want to give accounts to my friends and family to share the costs of hardware and allow everyone multi-pc backup in the same style as CrashPlan Home Family offered
“Unlimited” in size or at least, quite big
- It needs to easily hold 10TB, 20TB or even 30TB of data
- Setting soft quotas per account would be a bonus feature and prevent “abuse”
“Incremental forever” backups
- One long first full backup and after that I want to run quick incremental backups, preferably forever
Deduplication and compression on the client, not the server
File versioning
- Each backup should hold a new copy of a changed file so I can choose which version to restore
Encryption key set on client, not shared with server side
- Whoever the admins are going to be, I need to not have to trust this person and be 100% sure he cannot access or view my data, a trust-no-one setup
I think that’s most of it, that list started out simple when I began looking for a replacement, but it turns out CrashPlan was actually quite features rich in what it provided!
Cost calculations of the DIY setup
When doing some rough calculations you quickly find out that setting up a self hosted solution such as the above one is going to easily cost you an upfront cost of around 1250$. That would include a server PC, CPU, memory, 10TB of disk space, etc.. Scaling it upward to 20TB or even 30TB would make it even more expensive.
Let’s say I want to backup 4 PC’s, using Blackblaze, who seems to have the best cloud offering at this moment, this would cost me 20$ a month. Looking at a period of 3 years that would be 720$ and for 5 years it would come down to about 1200$.
So building such a solution just for yourself would be an expensive exercise but if you need to backup multiple PC’s, cost start to even out. Besides, using the cloud way would still not allow you to backup all your systems and those of family and/or friends without significant cost increases while doing so. Building it yourself would put you in total control of that, just require a large upfront cost instead of monthly.
So I adjusted my requirements and I looked into making a solution with the above list, one of which the most important feature would be the “Encryption key set on client, not shared with server side” part. With that, parts of the environment could be shared but everyone would still be in control of their own data, no matter if my friends or family trust me or not, I don’t even want to have the need to have that discussion in the first place!
The last part of the solution would be in software which can also cost money. But, if at all possible, I’d like to build it around open-source software available, so no real costs there (donations continu development, so think about it!)
You need a remote location
One of the only prerequisites the self hosted setup needs is that you have a remote location where you can put the hardware which has an internet line you can use.
In my case, my parents have a 100/100 fiber connection so they are the ideal candidate to host the server. But even with asymmetric connections like 150/15, at the server side most data traffic will be ingested through the 150Mbps downlink. Only when restores are required will the 15Mbps be needed, so the server side should most often have more than enough bandwidth the receive backups. Most often the client side will be limited by the upload speeds their service has.
Running this server at home
You can run this server at home but in my opinion you want backups to be outside of the same location where you keep all your data. In my opinion a backup should survive when a fire or flood comes to destroy your home.
Software evaluated and the road to Minio with Duplicati 2
During my few day search I read about many different software packages and feature comparisons. After a while I managed to limit it down to UrBackup and BURP.
UrBackup fell off the list after building and testing it for 2 days. It does a lot of things right but sadly does not offer any form of client-side encryption ability. A key factor in being able to share the same environment with a “trust no one” setup.
After that I moved on to BURP and it showed a lot of potential! Especially BURP2 with protocol version 2 worked quite well. All the warnings that this was not production ready and some other inefficiencies kind of still left me wanting though. Also the interface was not very intuitive for non-tech people.
I even tried to build my own variants using Opendedup and combining other software packages to alleviate these inefficiencies, but never quite succeeded. I learned a lot evaluating both software packages and they all have their own strong points.
Introducing Duplicati 2
After a while and resetting my vision a couple of times of how I wanted things to work I stumbled onto Duplicati 2. This backup software package does a lot of things right!
It has a client for Linux and Windows and even Synology, it does client-side encryption with no key on the server and on top of that also deduplicates and compresses! It also keeps versions of all files in all backups and has a nice and clear interface to manage. And on Windows you can even enable VSS snapshots to protect open files such as PST files, etc..
After running some tests against a SFTP/SSH server I liked it quite a bit but it left me wanting in the multi-tenant multi-client experience. Setting up shell accounts and directories for a lot of people would be quite a pain and I wasn’t going to let other people log into the server also making the solution too complex.
But as it turns out Duplicati 2 can use a very wide variety of storage backends! Next to normal FTP or SFTP/SSH it can also use a variety of cloud vendors and general storage vendors which offer S3 storage.
Introducing Minio
After searching for a storage backend that can run in combination with Duplicati to offer me more functionality, I foundMinio. Minio is a lightweight S3 storage backend you can run on Linux or Windows.
Each Minio instance also only uses a single TCP port so firewall configurations can remain simple.
While I am familiar with CEPH and large object stores like it, those are often way too resource intensive and like CEPH designed for a completely different scale.
Minio on the other hand is a very simple S3 backend server with some very nice features and best of all, really low resource utilization! After setting it up and configuring it, I liked it a lot and by starting a Minio instance per tenant (officially supported), each tenant can arrange their own buckets into which to direct separate backup clients. Each client or rather even each backup can use it’s own encryption key which is only kept client-side. Making all data stored on the server unviewable by the server admin or any other user with access to the system or disks.
Combine this with ZFS datasets and Quota’s and it my ideal DIY backup solution was born!
Combined setup
I’ve been running the combined setup in my VM environment for a few days now and it’s been perfectly stable and I’ve been completely satisfied with performance/resource utilization and the way Duplicati 2 works in combination with Minio.
One of the big advantages above Crashplan for instance is that Duplicati client uses about 80MB of memory instead of the 800MB or more Crashplan’s Java client would often use.
Remote manageability isn’t up to par with Crashplan at this point but by configuring status e-mails on all clients gives you the ability to easily log all activity and verify all clients are making their configured backups just like I used to do with Crashplan.
Multi-Part Blog Posts
Since this is quite a lot to explain, this is going to be a multi-part post! Please see the index below to continue on to the next one!
- (This Post) DIY cloud backup: Replacing CrashPlan Home Family DIY style
- DIY cloud backup: Server and storage hardware
- DIY cloud backup: OS and Storage configuration
- DIY cloud backup: Installing and configuring the server
- DIY cloud backup: Installing and configuring a client
- DIY cloud backup: Installing and configuring a new tenant
- DIY cloud backup: Tips and Tricks
*Currently unlinked articles are not yet complete, but I’m working on them!
Please follow and like us:
var addthis_config = {
url: "http://blog.quindorian.org/2017/08/diy-cloud-backup-replacing-crashplan-home-family-diy-style.html/",
title: "DIY cloud backup: Replacing CrashPlan Home Family DIY style"
}
[](#)