After getting fed up with TrueNAS (after it borked itself for the third time and I would have had to set it up AGAIN) I decided to learn Ansible and write a playbook to setup my homeserver that way.

I wanted to share this playbook with you in case someone might find it useful for their own setup and maybe someone has some tips on things I could improve.

This server will not be exposed to the public/internet. If I want to access a service on it from outside my home network I have Wireguard setup on my router to connect to my home network from anywhere.

Keep in mind that I’m relatively new to sysadmin stuff etc so don’t be too harsh please 😅

  • foggy@lemmy.world
    link
    fedilink
    English
    arrow-up
    2
    ·
    2 months ago

    I’m unsure but I see secret.yml in there. Is that sensitive? You might want to update that ASAP if it is.

  • Avid Amoeba@lemmy.ca
    link
    fedilink
    English
    arrow-up
    1
    ·
    2 months ago

    If I read this correctly, Immich is setup entirely through Ansible, no docker compose. That’s fine, however if Immich changes something drastically in their setup topology, it’ll be more work for you to implement those changes. For services that use docker compose, you could use Ansible to deploy a compose file in a dir, say /opt/immich-docker along with its requisite .env and other files. Then setup running it via systemd. Then when you need to update it, it’s almost copy-paste from the upstream compose file into your Ansible repo.

    • pezhore@lemmy.ml
      link
      fedilink
      English
      arrow-up
      0
      ·
      2 months ago

      Heck, you could do a pre-stage play where you delegate to localhost an ansible.builtin.get_url to download the compose file before doing the rest.

      • Avid Amoeba@lemmy.ca
        link
        fedilink
        English
        arrow-up
        1
        ·
        edit-2
        2 months ago

        I wouldn’t do that because I’d be inevitably picking up breaking changes without my knowledge that I’d have to fix after the fact. Unless you’re pulling from a tag I guess. Still storing along the playbook feels more robust. It’s less likely to get any surprises. Also I’m working under the assumption that you want to write idempotent code so you don’t get breakage when your rerun it, which allows to run it on a schedule, to ensure your config doesn’t drift too much.

    • Tywele@lemmy.dbzer0.comOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      2 months ago

      It should be pretty easy to adapt it for Debian. The only thing you need to change as far as I can see is the usage of the dnf module to the apt module.