diff --git a/README.md b/README.md index 0564cbb..d7bcbf5 100644 --- a/README.md +++ b/README.md @@ -22,257 +22,6 @@ --- -## 📦 Infrastructure Inventory - -| Node | IP | Hardware | Platform/OS | Role | Services | -|------|------|----------|----------|------|----------| -| **PVE01** | `10.0.0.201` | Physical Server
Intel i5-13500T (14c), 15GB RAM | Proxmox VE 9.1.7 | Hypervisor | VM orchestration platform | -| **Heimdall** | `10.0.0.151` | Physical Server
Intel N100 (4c), 15GB RAM | Ubuntu 24.04 | Core Services | Komodo, Gitea, Traefik | -| **Waldorf** | `10.0.0.251` | Physical Server
i7-7820HQ (8c), GTX 1060, 16GB | Ubuntu 24.04 | Media Processing | Plex and Related Media Services | -| **Watchtower** | `10.0.0.200` | Physical Server
ARM Cortex-A76 (4c), 16GB | Debian Trixie | Control Plane | Ansible, VS Code, Monitoring Tools | -| **TerraMaster** | `10.0.0.250` | NAS | TOS | Shared Storage | NFS (Volume1: `/appdata`, Volume2: `/media`) | - ---- - -## ⚡ Quick Start - -### Prerequisites - -- SSH access to nodes -- Git configured with credentials: - ```bash - git config --global credential.helper wincred # Windows - git config --global core.autocrlf true - ``` - -### Clone & Deploy - -```bash -# Clone from self-hosted Gitea -git clone https://git.castaldifamily.com/nathan/homelab.git -cd homelab - -# Deploy a service (via Komodo UI or SSH) -ssh chester@10.0.0.251 -cd /etc/komodo/stacks/tunarr -docker compose up -d -``` - -### Automated GitOps Workflow - -1. **Edit** `nodes/{node}/{service}/compose.yaml` locally -2. **Commit** and push to Gitea: `git add . && git commit -m "feat: update service" && git push` -3. **Webhook** triggers Komodo Core (heimdall) -4. **Auto-deploy** pulls latest code and restarts containers -5. **Monitor** via Komodo UI at `http://10.0.0.151:9000` - ---- - -## ⚙️ Automation - -### Ansible Control Plane - -**Watchtower** (10.0.0.200) manages all infrastructure via Ansible: - -**Status:** 🟢 **PRODUCTION READY** (4 nodes, all responding) - -```bash -# SSH into control node -ssh chester@10.0.0.200 -cd ~/homelab/ansible - -# Quick health check -./validate-environment.sh - -# Test connectivity to all nodes -ansible all -m ping - -# Gather live system facts -ansible-playbook playbooks/gather-node-facts.yml - -# Deploy Proxmox post-install config -ansible-playbook playbooks/onboard-proxmox.yml --limit pve01 - -# Run commands across node groups -ansible docker_nodes -m command -a "docker ps" -ansible proxmox_cluster -m command -a "pveversion" -``` - -**Quick Reference:** See [ansible/QUICK-REFERENCE.md](ansible/QUICK-REFERENCE.md) for comprehensive command guide. -**Setup Documentation:** [documentation/plans/plan-ansibleSetup.md](documentation/plans/plan-ansibleSetup.md) - -### Managed Node Groups - -```yaml -control_plane: watchtower -docker_nodes: heimdall, waldorf -proxmox_cluster: pve01 -nfs_clients: heimdall, waldorf -core_services: heimdall -media_services: waldorf -``` - ---- - -## 🎯 Active Missions - -> **Traffic Light System:** 🟢 Complete | 🟡 In Progress | 🔴 Blocked - -| Status | Mission | Details | -|--------|---------|---------| -| 🟢 | **Komodo GitOps** | All stacks migrated to Git sources with webhook automation | -| 🟢 | **GPU Transcoding** | GTX 1060 Mobile accessible in Plex/Tunarr containers | -| 🟢 | **Documentation Structure** | KBAs and SOPs organized in `documentation/` | -| 🟢 | **Ansible Automation** | All 4 nodes onboarded and managed by Ansible from Watchtower | -| 🟢 | **Proxmox Post-Install** | PVE01 configured: subscription nag removed, repos optimized | -| 🟡 | **Hardware Transcoding Validation** | Monitor Plex for `(hw)` indicator during active streams | -| 🟢 | **NFS Mount Stability** | NFSv3 on Pi, NFSv4 on x86 nodes | - ---- - -## 📂 Repository Structure - -``` -homelab/ -├── ansible/ # Ansible automation (active) -│ ├── inventory/ # Managed hosts and groups -│ │ ├── hosts.ini # 4-node inventory -│ │ └── host_vars/ # Per-node configuration -│ ├── playbooks/ # Automation workflows -│ │ ├── onboard-nodes.yml # Node SSH key deployment -│ │ ├── onboard-proxmox.yml # Proxmox post-install -│ │ └── gather-node-facts.yml # System discovery -│ ├── roles/ # Reusable automation -│ │ └── proxmox_post_install/ # Nag removal, repo config -│ └── group_vars/ # Global variables -├── nodes/ # Service definitions per node -│ ├── heimdall/ # Core infrastructure (Physical) -│ │ ├── core/ # Komodo, Traefik, Redis -│ │ ├── trek/ # Trek service -│ │ ├── vaultwarden/ # Password manager -│ │ └── (gitea via Komodo) # Self-hosted Git -│ ├── waldorf/ # Media services (Physical) -│ │ ├── plex/ # Media server + GPU -│ │ └── tunarr/ # IPTV channels + GPU -│ └── watchtower/ # Control plane (Pi 5) -│ └── vscode/ # Remote development -├── documentation/ # Technical knowledge base -│ ├── KBAs/ # Troubleshooting guides -│ ├── SOPs/ # Operational procedures -│ ├── plans/ # Implementation roadmaps -│ └── TECHNICAL_RUNBOOK.md # Emergency reference -└── scripts/ # Utility scripts - ├── bootstrap.sh # Day-0 node initialization - └── lib/ # Shared function libraries -``` - ---- - -## 🔧 Common Operations - -### Deploy a New Stack - -```bash -# 1. Create directory structure -mkdir -p nodes/waldorf/sonarr - -# 2. Create compose.yaml -cat > nodes/waldorf/sonarr/compose.yaml <