Syncthing is pretty great, it just works, which is becoming rare for software these days. Syncthing is peer-to-peer, which means that there doesn’t have to be a central node that can die, refuse service or unexpectedly increase the price. You can replicate and share your files across a network of nodes you control, which can include your laptop, a storage server, an Android phone etc., without relying on proprietary software or a third party such as Dropbox. Anything can work with files. Syncthing nodes don’t even have to be on the Internet. Cloud providers should provide Syncthing-as-a-service as a nicer way to interface laptops and phones with commoditised blob storage such as S3 offered by AWS and GCP.
Meanwhile, a cheap ARM-based computer such as Orange Pi Zero makes a good Syncthing node. This is the setup which works great for me:
An Orange Pi Zero with network access (roughly $10). I simply use Wi-Fi. It’s rather bad on this particular board with Armbian 5.30 (Ubuntu Xenial-based, 3.4.x kernel, June 2017), wired Ethernet works much better. Quite enough for my Syncthing needs though.
For the actual storage, I used a 2.5-inch laptop HDD with a USB enclosure (roughly $18 for both). I simply had a few 140GB spares lying around (which inspired this project in the first place). Picking a bigger SD card for the Pi is another option of course, but they’re still pricier than HDDs at this point and probably wear out quicker. Good thing about USB connection is that you can grab the disk and go plug it elsewhere even without Syncthing. When using only an SD card you could grab the whole Pi box though :)
Orange Pi will struggle to pump enough power to the HDD. I used a $2 USB splitter Y-cable which injects extra power (two males which connect to USB power and the Orange Pi plus a single female port which takes the HDD USB plug).
USB power brick with at least two ports (I accumulated a few over years, otherwise it’s maybe another $5) capable of doing 2A each.
Syncthing is easily installed on Orange Pi with Armbian via apt which I automated with Ansible. Folder synchronisation needs to be set up via Syncthing UI.
The whole thing fits anywhere in your furniture. It’s probably better to invest in multiple nodes rather than a single box. In my flat resiliency means one node is under the bed and another is on top the wardrobe. You can simply buy more houses to achieve truly global resiliency for your file storage network.
Total budget: 35$ plus several hours of tinkering. Satisfaction: maximum.