Some months ago I began work on a Perl-based web GUI used to configure rsync and other services on a basic FreeBSD installation. Called "BupBox", the idea was to create a distribution, like FreeNAS, which turned old PCs into cheap backup devices. Progress was steady but slow, and I never got around to taking it off the test server.
Now, my home is 10 minutes drive from Vilonia, AR - site of two major tornadoes in the last three years. While helping a co-worker pick through rubble a few weeks ago, it occurred to me that I need to get a real backup solution in place for my own digital valuables. I have two old AMD Athlon-based motherboards which I intend to build into BupBoxes: one to store at my home, the other at a friends' house. In exchange for them keeping the remote one online, I'll give them some quota for backups too.
Still working on this project. The first PC is up and running, collecting backups for my desktop PC, web server, and arcade machines. The second PC needs new capacitors on the motherboard. I will place an order for those soon, as well as a desoldering bulb, so I can set up the second backup device.
More importantly, I'm changing the direction of this project a bit. While it's nice to have my own PCs for backups, I want the focus to be on the software itself that is used to create and administer the machines. The eventual goal is a modified FreeBSD distribution (like FreeNAS) and instructions for how to build more servers of these from scratch. This means making a FreeBSD package - which means making a FreeBSD port - which means getting the code to a usable alpha version and putting it on Sourceforge.
Right now it's possible to connect to the site (thttpd + Perl), view basic disk usage information, and see the list of configured accounts. I am working on an authentication page using session cookies now: login with username "admin" to create / delete / manage users and global settings, or log in with a specific account name and get access only to that account's files, which can be used to restore backups from there.
Finished setting up the first PC, housed in a case I got off Freecycle. The internal setup works like this:
* FreeBSD installation to a 2gb CF card, on IDE
* 500GB spinning drive on SATA
The root partition uses UFS, while the SATA drive hosts a ZFS pool. If you aren't familiar with ZFS (or its Linux cousin, btrfs), it's worth reading about - it's a true next generation filesystem that provides end-to-end checksumming to protect against bit rot and silent data corruption, among other features.
Normally, you are supposed to use two drives for redundancy. Instead, I have one drive set to copies=2: this causes ZFS to store two copies of the data on the drive, so that error correction works barring drive mechanical failure. Obviously, this halves the available drive space.
With that done I've set up Unix login accounts, one per backup user, and then set their home directory to a dataset on the pool.
Most of this was done via command line, though a working copy of the Bupbox management software is installed on a thttpd + perl setup. I am now modifying Bupbox pages to hook into the correct conf files so it can be fully web-managed.
I've begun (slowly) setting up the First PC for this. Specs are in the components list. I first planned to flash the latest BIOS, but discovered that others have had problems with large (>500GB) SATA HDDs not being recognized at boot even on the most recent version.
Some enterprising user found that you could modify the BIOS and update the bundled firmware for the SATA controller chip to a newer revision: this will allow the chip to properly detect, and use, larger HDDs. Instructions are here:
I followed these steps, flashed the BIOS, and rebooted. Everything seems to work OK but I don't have a large drive to test with. At least it's ready for the future.
I have since installed a CF card in IDE slot 0, installed FreeBSD 10 to it, and then binary packages for rsync, thttpd, and perl5.16. The box now sits on my network and will show the BupBox GUI in a web browser. Just needs a drive and a little more configuration to get the backups really going!
Tornadoes, Hurricanes, Earthquakes - every part of our country is subject to some sort of natural disaster. I have friends who lost years of digital photos in "SuperStorm Sandy". A backup solution using commodity hardware would be really nice! Thanks for entering this in The Hackaday Prize!