How do you manage multiple machines in different locations. The use case is something like this, i want self hosted different apps in different locations as redundancy. Something like i put one server in my house, one in my dad’s house, couple other in my siblings/friends house. So just in case say machine in my house down or internet down. It can fallback to the other machines. I was thinking using docker swarm on multiple raspberry pis. But opening port on router seems not secure at all. How do i connect those machine together? Should i put wireguard on server # 1 and other servers will connect to that server. But if the network/machine failed on thar server; everything else will not work.

  • atzanteol@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    20
    ·
    8 months ago

    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?

  • sandalbucket@lemmy.world
    link
    fedilink
    English
    arrow-up
    9
    arrow-down
    1
    ·
    8 months ago

    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.

    • BearOfaTime@lemm.ee
      link
      fedilink
      English
      arrow-up
      1
      ·
      edit-2
      8 months ago

      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.

  • Possibly linux@lemmy.zip
    link
    fedilink
    English
    arrow-up
    3
    ·
    8 months ago

    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.

  • catloaf@lemm.ee
    link
    fedilink
    English
    arrow-up
    3
    ·
    8 months ago

    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.

  • five82@lemmy.world
    link
    fedilink
    English
    arrow-up
    4
    arrow-down
    1
    ·
    8 months ago

    Tailscale. Use Headscale if you prefer self hosting over using their cloud service.

  • Matt The Horwood@lemmy.horwood.cloud
    link
    fedilink
    English
    arrow-up
    2
    ·
    8 months ago

    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

  • theroff@aussie.zone
    link
    fedilink
    English
    arrow-up
    2
    ·
    8 months ago

    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.