I've been doing research on how to setup a self host backup high availability solution using raspberry pi's. The biggest requirement is master to master replication and cross platform client support. One thing that is a big focus is that the raspbery pi's might not be on the same lan network, maybe ever at a different house. Should be able to remove a hard drive and plug in a new one when there is a failure. Key thing to backup solutions is more than one copy. I want high availability and encryption.
After some research I've determined what may be the best opensourced solutions right now.
Client syncing
- nextcloud - prefered option so far
- has mobile and desktop sync clients
- uses mysql or postgres db
- resilio
- Seems to be easiest of any of the options, supports peer to peer on all devices, may be option 2 if database master to master replication on nextcloud doesn't work out. Only option of all the technologies that is not opensourced. Does not charge a subscription for consumers, pay once for family license.
Server peer to peer file sync:
- resilio
- costs money if you use their client applications and want to do specific sub folders, doesn't cost for a full peer to peer replication, has a mobile client
- dat
- new peer to peer file protocol similar to websockets
- syncthing
Database master to master replication:
- biggest area of concern mainly for nextcloud file sharing service
Connection:
- how to connect and setup a cluster would be interesting
- vpn
- telebit
- aws vpc vpn connection
- some other protocol
Databases:
- mysql - supposedly supports clustering
- gundb - nosql db don't think it would work with nextcloud
- cockroach db - enterprise tested, has mysql and postgres api support
- yugabyte - postgres api supports clustering claims to be faster than cockroach db
- postgres - least likely to work has a master - slave replication support
Access over internet:
- telebit - may support load balancing with same configuration haven't tested
- openvpn - connect to vpn to access a raspberry pi hosted backup solution for a location
Load balancing:
- pending research - several options out there, may have to be external from local network
- telebit suppposedly supports it
- could pay for aws application load balancer and connect local machines to aws vpc via aws vpn
- apache load balancer - doesn't guarantee health checks if one is down
- nginx load balancer
Automated installation/startup - want to make as plug in and play as possible
- dietpi - works on rock64 and raspberry pi
- has some already supported software and can setup an bash script to run on first install to install third party software
- startup service
- besides starting up all other technologies put together, will send out an email with network information and a vpn cert to connect and debug a cluster instance having issues. Super easy using a bash script, just though I'd mention this.
Honorable mentions:
- syncloud combines several of these technologies, but out of the box doesn't have master to master replication recomendations.
- owncloud - nextcloud is a opensourced branch off of this
- backupbuddy - no ios solution
- syncthing - no ios solution, has a android solution
Are there alternative technologies that people here would recommend and why? Main concern seems to be the database master to master replication.