From d5ff049caea7e1841d452cc9fe61b848fbf059d1 Mon Sep 17 00:00:00 2001 From: juvdiaz Date: Sat, 27 Jun 2026 16:31:04 -0600 Subject: [PATCH] Add homelab inventory --- README.md | 7 ++++ README.md.tmpl | 7 ++++ homelab.yml | 102 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 116 insertions(+) create mode 100644 homelab.yml diff --git a/README.md b/README.md index 687cbd8..29edcda 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,13 @@ The lab is intentionally small but production-shaped: Tailscale, with nginx caching, gzip, HTTP/2, TLS session reuse, and upstream keepalive +## Inventory + +The canonical non-secret inventory is [homelab.yml](homelab.yml). Keep LAN IPs, +Tailscale IPs, public hostnames, ports, storage paths, and service ownership +there before copying values into scripts, OpenTofu variables, runbooks, or +service docs. Secrets and tokens do not belong in that file. + Run `./jeannie up` and `./jeannie nuke` only from the Debian homelab server. The script intentionally refuses to run from non-Debian machines so a laptop cannot accidentally modify the cluster. diff --git a/README.md.tmpl b/README.md.tmpl index c1475df..9f51770 100644 --- a/README.md.tmpl +++ b/README.md.tmpl @@ -30,6 +30,13 @@ The lab is intentionally small but production-shaped: Tailscale, with nginx caching, gzip, HTTP/2, TLS session reuse, and upstream keepalive +## Inventory + +The canonical non-secret inventory is [homelab.yml](homelab.yml). Keep LAN IPs, +Tailscale IPs, public hostnames, ports, storage paths, and service ownership +there before copying values into scripts, OpenTofu variables, runbooks, or +service docs. Secrets and tokens do not belong in that file. + Run `./{{ main_script }} up` and `./{{ main_script }} nuke` only from the Debian homelab server. The script intentionally refuses to run from non-Debian machines so a laptop cannot accidentally modify the cluster. diff --git a/homelab.yml b/homelab.yml new file mode 100644 index 0000000..3261775 --- /dev/null +++ b/homelab.yml @@ -0,0 +1,102 @@ +# Canonical non-secret homelab inventory. +# Keep hostnames, IPs, ports, and public names here before copying them into +# scripts, Terraform variables, runbooks, or service docs. +metadata: + main_script: jeannie + owner_user: jv + +domain: + base: lab2025.duckdns.org + public_url: https://lab2025.duckdns.org + gitea_url: https://lab2025.duckdns.org/git/ + subdomains: + - demos.lab2025.duckdns.org + - heimdall.lab2025.duckdns.org + - grafana.lab2025.duckdns.org + - prometheus.lab2025.duckdns.org + - alertmanager.lab2025.duckdns.org + - argocd.lab2025.duckdns.org + - n8n.lab2025.duckdns.org + - prowlarr.lab2025.duckdns.org + - sonarr.lab2025.duckdns.org + - radarr.lab2025.duckdns.org + - qbittorrent.lab2025.duckdns.org + - kapowarr.lab2025.duckdns.org + - suwayomi.lab2025.duckdns.org + - maintainerr.lab2025.duckdns.org + +network: + lan_cidr: 192.168.100.0/24 + lan_ip_prefix: 192.168.100. + metallb: + traefik_ip: 192.168.100.240 + address_pool: 192.168.100.240-192.168.100.250 + tailscale_cgnat_cidr: 100.64.0.0/10 + +hosts: + debian: + role: control-plane + user: jv + lan_ip: 192.168.100.73 + tailscale_ip: 100.85.138.30 + docker_root: /data/docker + data_root: /data + kubeconfig: /home/jv/.kube/config + rpi4: + role: dns-edge-worker + user: jv + lan_ip: 192.168.100.89 + tailscale_ip: 100.77.80.72 + docker_nvme_root: /nvme-storage/docker + docker_fallback_root: /var/lib/docker + opi5_pimox: + role: pimox + user: jv + lan_ip: 192.168.100.80 + bridge: vmbr0 + worker_storage: opi5_ssd + template_storage: local + oci_edge: + role: public-edge + user: ubuntu + public_ip: 132.145.170.74 + install_dir: /opt/homelab-edge + +services: + gitea: + host: debian + install_dir: /data/homelab-gitea + http_port: 3000 + ssh_port: 32222 + root_url: https://lab2025.duckdns.org/git/ + ssh_remote: ssh://git@192.168.100.73:32222/jv/my-homelab-configs.git + gitops_mirror: + host: debian + path: /home/jv/git-server/my-homelab-configs.git + ssh_url: ssh://jv@192.168.100.73/home/jv/git-server/my-homelab-configs.git + local_registry: + host: debian + endpoint: 192.168.100.73:30500 + provisioning: + host: debian + http_port: 8088 + preseed_url: http://192.168.100.73:8088/preseed/debian13-arm64-worker.cfg + ollama: + host: debian + url: http://192.168.100.73:11434 + rpi_dns: + host: rpi4 + pihole_dns_port: 53 + pihole_web_port: 8081 + uptime_kuma_port: 3001 + unbound_container_port: 53 + traefik: + host: kubernetes + load_balancer_ip: 192.168.100.240 + http_port: 80 + +pimox: + template_vmid: 9000 + worker_base_vmid: 9010 + default_worker_count: 1 + worker_name_prefix: pimox-worker