I am working on setting up a home server but I want it to be reproducible if I need to make large changes, switch out hardware, or restore from a failure. What do you use to handle this?

  • irmadlad@lemmy.world
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 day ago

    I use snapshots, once a month an image is made of the entire drive, and I have Duplicati that backs up to cloud. Whatever choice you make tho, remember 3,2,1, and backups are useless unless tested on a regular basis. The test portion always gives me anxiety.

    • MonkeMischief@lemmy.today
      link
      fedilink
      English
      arrow-up
      11
      ·
      1 day ago

      I’d really like to know if there’s any practical guide on testing backups without requiring like, a crapton of backup-testing-only drives or something to keep from overwriting your current data.

      Like I totally understand it in principle just not how it’s done. Especially on humble “I just wanna back up my stuff not replicate enterprise infrastructure” setups.

  • _cryptagion [he/him]@anarchist.nexus
    link
    fedilink
    English
    arrow-up
    4
    arrow-down
    1
    ·
    1 day ago

    Well I use Unraid, so I just back up my whole config folder along with the OS itself in case I need to flash it to a new USB. In other words, I just clone the whole thing. It means I can be up and running in a few minutes if everything was corrupted.

    A data drive loss is pretty simple too, I just simulate the lost data until I can get a new HDD in. That takes a little longer to fix tho.

    • turmacar@lemmy.world
      link
      fedilink
      English
      arrow-up
      1
      ·
      edit-2
      13 hours ago

      I think it gets some flak but I’ve been super happy with Unraid.

      Migrated hardware by moving the usb drive over to the new system and it didn’t blink that everything but the HDDs was different. Just booted up and started the array and dockers. The JBOD functionality is great. Drive loss is just an excuse to add a bigger drive.

  • relaymoth@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    2
    ·
    1 day ago

    I went the nuclear option and am using Talos with Flux to manage my homelab.

    My source of truth is the git repo with all my cluster and application configs. With this setup, I can tear everything down and within 30 min have a working cluster with everything installed automatically.

      • moonpiedumplings@programming.dev
        link
        fedilink
        English
        arrow-up
        2
        ·
        3 hours ago

        I have a similar setup, and even though I am hosting git (forgejo), I use ssh as a git server for the source of truth that k8s reads.

        This prevents an ouroboros dependency where flux is using the git repo from forgejo which is deployed by flux…

  • thirdBreakfast@lemmy.world
    link
    fedilink
    English
    arrow-up
    4
    ·
    22 hours ago

    Proxmox on the metal, then every service as a docker container inside an LXC or VM. Proxmox does nice snapshots (to my NAS) making it a breeze to move them from machine to machine or blow away the Proxmox install and reimport them. All the docker compose files are in git, and the things I apply to every LXC/VM (my monitoring endpoint, apt cache setup etc) are all applied with ansible playbooks also in git. All the LXC’s are cloned from a golden image that has my keys, tailscale setup etc.

    • eli@lemmy.world
      link
      fedilink
      English
      arrow-up
      2
      ·
      18 hours ago

      This is pretty much my setup as well. Proxmox on bare metal, then everything I do are in Ubuntu LXC containers, which have docker installed inside each of them running whatever docker stack.

      I just installed Portainer and got the standalone agents installed on each LXC container, so it’s helped massively with managing each docker setup.

      Of course you can do whatever base image you want for the LXC container, I just prefer Ubuntu for my homelab.

      I do need to setup a golden image though to make stand-ups easier…one thing at a time though!

  • atzanteol@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    5
    ·
    1 day ago

    Terraform and ansible. Script service configuration and use source control. Containerize services where possible to make them system agnostic.

    • xyx@sh.itjust.works
      link
      fedilink
      English
      arrow-up
      4
      ·
      23 hours ago

      Out of curiosity: Are you running nix-ops with nix-secrets or how did you cover orchestration & credentials?

      • adf@lemmy.world
        link
        fedilink
        English
        arrow-up
        3
        ·
        19 hours ago

        I use flakes and all hosts are configured from a single flake, where each host has its own configuration. I have some custom modules and even custom package in the same flake. I also use home manager. I have 4 hosts managed in total: home server, laptop, gaming PC, and a cloud server. All hosts were provisioned using nixos-anywhere + disko, except for the first one which was installed manually. For secrets I use sops-nix, encrypted secrets are stored in the same flake/repo.

  • Seefoo@lemmy.world
    link
    fedilink
    English
    arrow-up
    3
    ·
    edit-2
    1 day ago

    I use git and commit configs/setup/scripts/etc. to it. I at least have a road map for how to get everything back this way. Testing this can be difficult, but it really depends on what you care about really.

    • Testing my kopia backups of important data? that I manually test every once n’ while.
    • Testing if my ZFS setup script is 100% identical to my setup? that’s not that important, as long as I have a general idea I can figure out the gaps and improve the script for the next time around. Obviously, you can spend a lot more time ensuring scripts and what not stays consistent, but it depends on what you care about! For a lot of my service config, git has always worked well for me and I can go back to older configs if needed. You can get super specific here and save versions in git, then have something update the versions (e.g. WUD)
  • 🇵🇸antifa_ceo@lemmy.ml
    link
    fedilink
    English
    arrow-up
    5
    ·
    1 day ago

    I got a bunch of docker compose files and the envs documented so its easy to spin things up again or rollback changes. It works well enough if I’m good about keeping everything all up to date and not making changes without noting it down for myself later.

  • ShellMonkey@piefed.socdojo.com
    link
    fedilink
    English
    arrow-up
    3
    ·
    1 day ago

    Snapshots largely, most everything is VMs and docker containers. I have one VM set aside for dev work to test configs before updating the prod boxes as well.

  • yah@lemmy.powerforme.fun
    link
    fedilink
    English
    arrow-up
    10
    ·
    1 day ago

    With NixOS, you get a reproducible environment. When you need to change your hardware, you simply back up your data, write your NixOS configuration, and you can reproduce your previous environment.

    I use it to manage all my services.

  • Eager Eagle@lemmy.world
    link
    fedilink
    English
    arrow-up
    2
    ·
    1 day ago

    I’m the only user of my setup, but I configure docker compose stacks, use configs as bind mounts, and track everything in a git repo synchronized every now and then.