Written in Go, its lightweight (runs on my beaglebone and pi's) and has been absolutely stable for me for years (100 GB, 10+ devices). It hits all the requirement except encrypted nodes.
Syncthing looks like everything I'd want. But, I cannot consider it because I wont be able to access my data from ios/iPhone. Hopefully someone builds that integration in future...
Cool idea. I will try this combination soon. For someone who has not been following the projects, NextCloud vs Owncloud? Which one should I choose now?
>> "Is ostree able to generate some kind of binary file containing the
required diffs to get from one commit to another, which can be
transferred to / copied on the ostree-host and then applied to the
repository (similar to a git patch)?
> This is what `ostree static-delta generate --filename` will do, combined with `ostree static-delta apply-offline`"
There are pre-build packages for OSX, most GNU/Linux distros. I have built it on Windows using the "Microsoft C/C++ compiler for python" that Microsoft makes available for gratis download.
I think IPFS is an excellent foundation for such a system. Indeed, a few friends and I are working on it: [1], [2]. It's too early to call it robust yet and it needs an independent security audit, but it has all your bonus features:
* all storage nodes can't decrypt anything
* you can grant read and write access independently to individual files or folders
* you could easily store all previous versions of data, by never unpinning anything in IPFS, or having another server listening for updates and pinning them
I use resilio sync (formerly bittorrent sync) for this. It provides bonus features (2) and (4), and with some finagling you can also get bonus point (3). It doesn't provide (1).
Beware that you have to dodge a lot of premium functionality in the UI, and search a bit to find the secret key functionality. They originally built the app to work decentralized with just secret keys, and no accounts, but then they wanted to build a business out of it, so they started trying to compete with Dropbox, and they made a centralized service to wrap the decentralized functionality. Ignore that part.
git-annex (+assistant) supports 1, 2 (probably requiring some manual setup) and 4.
I've used it across a local NAS, a remote server (both containing the full 2TB contents and syncing automatically), one laptop (manually fetching and pushing files), one Android tablet (automatically pushing photos to the server), and S3 (extra encrypted copy of just a subset).
No problems over the couple of years I've been using it.
The design seems nice and clean, and the primitives on the back-end are about the right level. I wrote something similar, with golang, as a replicated object-storage system. Although I didn't call it S3 I nearly did:
Bonus points if it has any of the following features:
* certain nodes can store encrypted blobs without being able to decrypt them
* certain nodes can have read but not write access
* certain nodes can have access only to specific subdirectories
* you could set a policy for retaining old versions of files, to use it as a backup system
Is there anything like this out there?
I wonder if IPFS (and eventually Filecoin) would be a good foundation for such a system.