{"id":18127486,"url":"https://github.com/davidsbond/homad","last_synced_at":"2025-04-06T14:13:45.232Z","repository":{"id":37086515,"uuid":"455705632","full_name":"davidsbond/homad","owner":"davidsbond","description":"Repository containing the configuration of my HashiCorp Nomad homelab","archived":false,"fork":false,"pushed_at":"2023-02-27T19:12:06.000Z","size":684,"stargazers_count":43,"open_issues_count":9,"forks_count":4,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-12T20:16:03.740Z","etag":null,"topics":["hashicorp","homelab","nomad"],"latest_commit_sha":null,"homepage":"","language":"HCL","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/davidsbond.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-02-04T21:44:52.000Z","updated_at":"2024-12-09T14:34:35.000Z","dependencies_parsed_at":"2024-12-20T00:11:00.000Z","dependency_job_id":"ef2de959-03d9-40d0-bb15-10cf5cd6f704","html_url":"https://github.com/davidsbond/homad","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidsbond%2Fhomad","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidsbond%2Fhomad/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidsbond%2Fhomad/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidsbond%2Fhomad/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/davidsbond","download_url":"https://codeload.github.com/davidsbond/homad/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247492564,"owners_count":20947545,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hashicorp","homelab","nomad"],"created_at":"2024-11-01T09:19:37.957Z","updated_at":"2025-04-06T14:13:45.204Z","avatar_url":"https://github.com/davidsbond.png","language":"HCL","funding_links":[],"categories":["Infrastructure setup"],"sub_categories":["Automation and Infrastructure Management"],"readme":"# homad\n\nThis repository contains all the configuration of my [HashiCorp Nomad](https://nomadproject.io) deployment in my\nhome server-rack. It is deployed in a high-availability configuration using both [HashiCorp Vault](https://www.vaultproject.io/)\nand [HashiCorp Consul](https://www.consul.io/).\n\nThe cluster itself runs on [Ubuntu](https://ubuntu.com/) and is made available to me via the [Tailscale](https://tailscale.com/) VPN.\n\nEverything within this repository is managed using [Terraform](https://www.terraform.io/), including deployment of\nworkloads in Nomad. Terraform source files are organised by provider within the [terraform](./terraform) directory.\n\n## Workloads\n\nTo see all my Nomad job specifications, check the [jobs](terraform/nomad/jobs) directory.\n\nWithin my Nomad cluster, I run the following services:\n\n* [Bitwarden](https://bitwarden.com/) - Password manager\n* [Boundary](https://www.boundaryproject.io/) - User identity management\n* [Grafana](https://grafana.com/) - For all the dashboards\n* [Home Assistant](https://www.home-assistant.io/) - IoT integration suite that allows me to manage \u0026 automate my smart devices\n* [Minio](https://min.io/) - S3 compatible object storage.\n* [PiHole](https://pi-hole.net/) - DNS \u0026 Adblocker that I use on my networked devices at home\n* [Postgres](https://www.postgresql.org/) - SQL database for services that need one\n* [Prometheus](https://prometheus.io/) - Scrapes metrics from configured services for monitoring purposes.\n* [Traefik](https://traefik.io/) - Reverse proxy \u0026 load balancer that allows me to access my applications and issue TLS certificates\n\n# Custom Applications\n\nThis repository also contains apps I've built for my own nefarious purposes. These are listed below:\n\n* [homadctl](apps/homadctl) - A command-line utility for automating my homelab tasks.\n* [speed-dial](apps/speed-dial) - A link dashboard for services running in the homelab.\n\n### CSI\n\nWorkloads that require persistent storage can use volumes mounted via NFS using the [rocketduck CSI driver](https://gitlab.com/rocketduck/csi-plugin-nfs).\nVolume specifications are located [here](terraform/nomad/volumes.tf).\n\n## CI\n\nMerges to the `master` branch will automatically plan and apply changes to terraform files by first connecting the\nGitHub action to my Tailscale tailnet. For pull requests, a plan is performed which can be checked within the\nGitHub action log.\n\n## Upgrades\n\nKeeping Nomad \u0026 Ubuntu up-to-date is done by leveraging Nomad's periodic jobs \u0026 the [raw_exec](https://www.nomadproject.io/docs/drivers/raw_exec)\ndriver. On a daily basis [this job](terraform/nomad/jobs/maintenance/ubuntu-upgrade.nomad) is ran which will keep Ubuntu's packages\nand distribution up-to-date.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavidsbond%2Fhomad","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdavidsbond%2Fhomad","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavidsbond%2Fhomad/lists"}