Homelab monxas.casa¶
Portal de documentación del cluster Proxmox doméstico. Implementación viva del ADR-0007 — Homelab Cohesion: GitOps con Ansible-pull, secretos SOPS+age, Caddy HA con keepalived, SSO LAN con PocketID, y observabilidad centralizada en Loki/Prometheus/Grafana.
Dos sitios, una fuente
docs.monxas.casa— público, CF Pages, IPs/tokens redactados.docs.home.monxas.casa— LAN-only, sin redactar (Caddy ingress). Ambos se generan desde este mismo repo (monxas/homelab-infra).
Resumen del homelab¶
- 2 nodos Proxmox:
pmx-50(Ryzen 7 7735HS, ~29 GB) ypmx-51(Celeron N5095, ~8 GB). - NAS TerraMaster F4-423 (22TB RAID5 + cache NVMe Crucial P310 500GB writethrough).
- Pi-hole en Raspberry Pi como DNS interno + sinkhole.
- Hub Docker en VM 208 (~75 containers): media stack, observability, automation.
- Ingress único: Cloudflare Tunnel → VIP keepalived
.250→ Caddy HA → backends. - Asistente IA Vera / OpenClaw (CT100
clawdbot, Telegram@Veraclawd_bot; GPT-5.5 + RAG). (El agente Hermes/LXC 101 sí se desplegó y se destruyó el 2026-07-05 — ver ADR-0007 F6 más abajo.)
Flujo HTTP externo¶
graph LR
U[Usuario] -->|HTTPS| CF[Cloudflare
*.monxas.casa]
CF -->|CF Access SSO| CFD[cloudflared
LXC 123]
CFD -->|:443| VIP{{VIP .250
keepalived}}
VIP -.MASTER.-> C1[Caddy LXC 270
pmx-50 .247]
VIP -.BACKUP.-> C2[Caddy LXC 271
pmx-51 .248]
C1 -->|proxy_pass| H[VM 208
Docker hub]
C2 -->|proxy_pass| H
H --> S[~75 servicios
Grafana, Sonarr, Immich...]
style VIP fill:#ff6b6b,color:#fff
style C1 fill:#51cf66
style C2 fill:#51cf66
style H fill:#ffd43b
Cómo navegar¶
-
Architecture
Topología del cluster, ADR-0007, mapa de red, decisiones de diseño.
-
Runbooks
Procedimientos operativos: failover Caddy, rollback ZFS, restore PBS, rotación SOPS, kernel upgrades Proxmox.
-
Guides
Tareas comunes: añadir un servicio nuevo, rotar secretos, crear cliente OIDC en PocketID, ejecutar playbooks Ansible desde la Mac.
-
Reference
Inventario completo de VMs/LXCs, mapa de IPs, tabla de puertos expuestos.
Estado del plan ADR-0007¶
Cierre 2026-05-20: 8/8 fases con piezas en producción. Detalles por fase en ADR-0007.
| Fase | Descripción | Estado |
|---|---|---|
| F1 | Backups baseline (PBS + ZFS snapshots pre-cohesion-20260519) |
✅ Done |
| F2 | GitOps Ansible — push-from-Mac + ansible-pull cron 15min |
✅ Done |
| F3 | SOPS + age secrets — ~50 secretos en repo, 5 keypairs activos | ✅ Done |
| F4 | Caddy HA LXC 270/271 + keepalived VIP .250 + F4.f full-routing |
✅ Done (cutover 2026-05-20; Caddy movido a LXC 270/271, container VM208 eliminado) |
| F5 | PocketID OIDC — 11 clientes activos | ✅ Done (Karakeep, Grafana, Paperless login E2E; Vault/Immich/ABS UI pendiente) |
| F6 | Hermes MCPs (Prometheus, Proxmox, PBS, HA Supervisor, RAG) | ⚠️ Desplegado (LXC 101 hermesbot) y luego destruido 2026-07-05 (estado archivado en NAS); OpenClaw/Vera en CT100 es el agente vivo hoy — proyecto distinto |
| F7 | ha-ml v2 — Pi-hole + Zeek features | 🟡 Code deployed, esperando 14d data accumulation |
| F8 | MkDocs Material docs portal (este sitio) | ✅ Done |
Cobertura Ansible
16 roles en ansible/roles/ (verificado 2026-08-01, antes se documentaban
solo 10): baseline, proxmox_node, observability_collector,
promtail, nut, caddy_lxc, caddy_managed_config, hermes_agent
(host ya no existe, no-op), docker_host_env, hermes_mcp_env (no-op),
morning_report_env, remote_pulse_server, wp_pulse_host,
asus_exporter, unifi_clients_exporter, tailscaled_rfrobredo (sin
referencias activas en playbook.yml, TODO confirmar si es huérfano).
La cifra "~70% del state operacional" no se pudo re-verificar — sin
fórmula documentada de qué cuenta como el 100%. Ver
Running Ansible.
Source of truth¶
Todo bajo monxas/homelab-infra.
Cualquier discrepancia entre este portal y el repo: el repo gana.