homelab/README.md
Nathan 92b7ffce74
Some checks failed
Auto-Deploy Changed Stacks / deploy (push) Failing after 4s
feat: update auto-deploy workflow to use Komodo API and remove webhook dependency
2026-06-02 12:23:21 -04:00

77 lines
3.5 KiB
Markdown

# Castaldi Family Homelab
> **A GitOps-managed, Ansible-automated infrastructure running media services, container orchestration, and hypervisor management across distributed ARM and x86 nodes.**
[![GitOps](https://img.shields.io/badge/GitOps-Komodo-blue?style=flat-square)](https://komo.do)
[![Automation](https://img.shields.io/badge/Automation-Ansible-red?style=flat-square)](#automation)
[![Infrastructure](https://img.shields.io/badge/Infrastructure-Multi--Node-green?style=flat-square)](#architecture)
[![Documentation](https://img.shields.io/badge/Docs-KBAs%20%2B%20SOPs-orange?style=flat-square)](documentation/)
---
## 🚀 Why This Homelab?
- **Zero-Touch Deployments:** Push to Git → Auto-deploy via webhooks → Containers update automatically
- **Ansible Automation:** All nodes managed by Ansible from watchtower control plane
- **Infrastructure as Code:** Services defined in `compose.yaml` + infrastructure managed with Ansible playbooks
- **GPU Transcoding:** Hardware-accelerated media streaming with NVIDIA GTX 1060 Mobile
- **Distributed Architecture:** Services across physical servers with Proxmox hypervisor ready for VM deployment
- **Self-Hosted Git:** No external dependencies—Gitea runs on-premise with automated backups
- **Production-Grade Networking:** Traefik reverse proxy with automatic SSL (Cloudflare DNS challenge)
- **Hypervisor Management:** Proxmox VE ready for VM orchestration with automated post-install configuration
---
## 📊 Stats
- **Total Nodes:** 5 (1 hypervisor + 3 compute + 1 storage)
- **Automation:** Ansible managing 4 active nodes from Watchtower
- **Container Orchestration:** Komodo v2.1.2
- **Active Services:** 12+ (Traefik, Plex, Tunarr, Gitea, Trek, Vaultwarden, etc.)
- **Total RAM:** 62GB (15GB PVE01 + 15GB Heimdall + 16GB Waldorf + 16GB Watchtower)
- **Total CPU Cores:** 30 physical (14c i5-13500T + 8c i7-7820HQ + 4c N100 + 4c ARM)
- **Virtualization:** Proxmox VE 9.1.7 available (no VMs currently deployed)
- **GPU Acceleration:** NVIDIA GTX 1060 Mobile (6GB VRAM)
- **Storage:** TerraMaster NAS (NFSv3/v4)
---
## 🚢 Auto-Deploy
Merging a PR to `main` automatically deploys every stack whose folder changed.
**How it works:**
1. The Gitea Actions workflow (`.gitea/workflows/auto-deploy.yml`) detects which `nodes/{node}/{stack}/` paths changed
2. It POSTs to the corresponding Komodo webhook for each affected stack — no manual redeploy needed
3. Stacks with no matching webhook entry are logged as warnings (not silent failures); any non-2xx response fails the job loudly
**Before it goes live you need:**
- A Gitea Actions runner installed on Heimdall (see [SOP-003](documentation/SOPs/SOP-003-Gitea-Actions-Runner-Setup.md))
- A Komodo service user (`gitea-ci`) with Stack → Execute permissions and an API key generated
- Three Gitea repo secrets configured: `KOMODO_URL`, `KOMODO_API_KEY`, `KOMODO_API_SECRET`
- Stack folder names in this repo must match stack names in Komodo UI
---
## 🤝 Contributing
This is a personal homelab, but documentation improvements and issue reports are welcome!
1. Fork via Gitea: `https://git.castaldifamily.com/nathan/homelab`
2. Create feature branch: `git checkout -b feat/my-improvement`
3. Commit using [Conventional Commits](https://www.conventionalcommits.org/)
4. Push and create Pull Request
---
## 📜 License
Personal infrastructure configuration. Documentation licensed under [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/).
---
**Maintained by:** Nathan Castaldi
**Last Updated:** April 21, 2026
**Status:** 🟢
**Automation Status:** 🟢