This will be a good lesson in how difficult it is to setup servers with high availability.
I'd suggest getting redundancy working on your own network first before distributing it. How do you plan to handle storage? Will that be redundant as well?
A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.
Rules:
Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.
No spam posting.
Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.
Don't duplicate the full text of your blog or github here. Just post the link for folks to click.
Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).
No trolling.
Resources:
Any issues on the community? Report it using the report flag.
Questions? DM the mods!
This will be a good lesson in how difficult it is to setup servers with high availability.
I'd suggest getting redundancy working on your own network first before distributing it. How do you plan to handle storage? Will that be redundant as well?
Tailscale might be the best bet at this point. It will manage the wireguard mesh for you, and use nat holepunching for handshaking instead of needing listening ports.
This, or slackhq/nebula
And enable subnet routing on the Pi.
I've done this, it works very well. And since a Pi is small, you can keep a "hot spare" ready to send to anyone.
Tailscale. Use Headscale if you prefer self hosting over using their cloud service.
Never use tailscale before but this is good opportunity to learn.
You might just run it in the cloud. A DR failover process is a bit more complex than most home server environments, and is rarely automatic or smooth.
What services are you running? You don't want to cluster with multiple locations as the latency will kill you and it will eat bandwidth like crazy.
Maybe use something like syncthing to sync data directories across. I would use Netbird to connect them and the. Ansible for administration.
The comments about storage still stand, that's a tricky thing to do over the internet.
But I would recommend a meshing VPN, tinc can mesh and will route round network problems.
Also don't forget about backups, as that could be a better thing to have off site
You could use HAProxy on the client side to load balance apps in multiple locations, but it really depends on the application.
I like to manage my software with Ansible but Docker stack files might make it simple enough for you.