Hi! I wanted to share a project I’ve been working on that lets you set up a huge variety of applications really quickly and painlessly. For example, instead of setting up and configuring a large docker compose for a complicated application like Immich, this playbook lets you simply write:

immich_enabled: true

And it will orchestrate all the containers, networks, directories, etc for you with reasonable defaults. All of which can be overwritten, for example to enable extra features like hardware acceleration:

immich_hardware_acceleration: "-cuda"

Or to automatically get a letsencrypt cert and expose the application on a subdomain to the outside world:

immich_available_externally: true

Included in the playbook is a ton of complicated applications, like Paperless, Meelo, TTRSS, Dawarich, as well as common self-hosted apps like Jellyfin, Home Assistant, Syncthing, Navidrome, Grafana, and a whole lot more (totaling 116 right now!).

It also comes with scripts and tests to help add your own applications (ansible roles) and ensure they work properly

I’ve been using this project myself for awhile, including to assist with moving from one homelab computer to another (point the playbook to the new address, run it to install everything, and restore a backup from the previous computer for data), and I hope it can help someone else build up their homelab without sinking too much time into setting things up

Here’s the repository: https://github.com/Dylancyclone/ansible-homelab-orchestration

And the documentation (that I’m really proud of :D): https://dylancyclone.github.io/ansible-homelab-orchestration/

    • Dylancyclone@programming.devOP
      link
      fedilink
      English
      arrow-up
      10
      ·
      22 days ago

      This project was basically how I learned Ansible haha. It is incredibly powerful and this really only scratches the surface

  • Avid Amoeba@lemmy.ca
    link
    fedilink
    English
    arrow-up
    5
    ·
    edit-2
    21 days ago

    As someone who’s done cloud infrastructure professionally, this is the right way to make a project for setting up self-hosted applications. Not writing a bunch of bash scripts and putting them behind some web UI. We have well established infrastructure/config-as-code systems that are the gold standard which runs most clouds out there. Ansible is one of them. That’s the right tool for this job and a ton of professionals understand it and therefore can easily contribute improvements for the ones who don’t to use. I’m unfortunatrly invested in SaltStack but I wouldn’t feel worried to deploy a (well reviewed) project built on Ansible. Then slap a web UI on it if you like but that should be another project that hooks uses this one.

  • AgaveInMyAss@lemmy.world
    link
    fedilink
    English
    arrow-up
    4
    ·
    22 days ago

    This is probably my lack of Ansible experience here but how are multiple servers setup? Can I specify a different server per application?

    • mumblerfish@lemmy.world
      link
      fedilink
      English
      arrow-up
      5
      ·
      22 days ago

      TL;DR: yes

      Just from a quick view of the repo, the simplest way to do it would be to look at the playbook.yml and copy all roles you want for a host into a new playbook, say myhost.yaml. Copy not only the roles but all the other keywords as well. Then you go to the inventory and add your hosts where you to execute the playbook against. Then you change the hosts key value in the playbook you made from all to the hosts you added to the inventory.

      That is, add your hosts to the inventory, create playbooks for for them and run. That is the easiest. Read up on how to do groups and organizing your inventory to improve it from there.