Originally based on David Stephen's ansible-nas.
This repository is currently undergoing a revamp. At present the Ansible playbook is the only section ready for use.
Goals for the repo:
- Pre-build VM images for faster deployments
- Continuous deployment using immutable infrastructure
- Tightening up on security for secrets (move away from a vars.yml file 👀)
- Documentation & diagrams
Additionally, one of the longer term goals is to eventually migrate away from spinning up individual containers 'orchestrated' (term used loosely) by the Ansible playbook. At the beginning when deployment was against a single host this worked well, though as more and more services have been added, deployment times have increased significantly. A further annoyance is how containers have to be manually namespaced to avoid conflicts and how links between containers can feel flimsy at times.
Kubernetes looks like a good fit to help with these problems, even if it is a tad overkill for hosting the services for 1 user.
I don't recommend you use this repository, it's intended to be purely a reference (and probably not even a very good one at that).
The configuration sets up services the way I like them I like them. At a miniumum, you'll need to override some variables (especially secrets/passwords).
- Netbox
- Nextcloud
- Hello World Webpage
- Local Docker registry
- Traefik
- Unifi Controller
- Watchtower
- Zabbix Monitoring
- MonitoRSS
- Vaultwarden
- Transmission
- Sonarr
- Prowlarr
Before running, the following is necessary:
- An an inventory file needs to be created containing the desired host
- The file
vars.yml
needs to be created to set the following variables:
data_dir: ~/docker_data
homelab_domain: "example.com"
letsencrypt_email: "[email protected]"
media_dir: /path/to/media
The playbook also depends on the geerlingguy.pip and geerlingguy.docker roles. These can be installed by running:
ansible-galaxy install -r requirements.yml
ansible-playbook -i inventory main.yml