Mi homelab personal - documentación y configuración de toda la infraestructura.
Internet (CGNAT)
│
▼
Modem (192.168.1.89.x)
│
│ [USB-ETH] enx00e04c683da2
│
▼
rp1-master (Gateway + k3s Control Plane)
192.168.1.89.x WAN / 10.0.0.1 LAN
│
│ [eth0] LAN 10.0.0.0/24
│
▼
Switch TP-Link SG105PE (10.0.0.5)
│
├── rp2-node (10.0.0.2) - Netboot, k3s worker, microSD 32GB
└── rp3-node (10.0.0.3) - Netboot, k3s worker, SSD 240GB
Acceso remoto: Tailscale VPN (100.x.x.x, mesh, bypasses CGNAT)
| Componente | Descripción | Documentación |
|---|---|---|
| Ansible | Automatización y configuración de infraestructura | homelab-ansible/README.md |
| k8s-apps | Manifiestos de Kubernetes para el cluster k3s | k8s-apps/README.md |
| stacks | Docker Compose stacks (en migración a k8s) | - |
| Dispositivo | Rol | Notas |
|---|---|---|
| Raspberry Pi 5 (rp1-master) | Gateway/Router/VPN | Fuente dedicada, 2 interfaces de red |
| Raspberry Pi 5 x2 (rp2, rp3) | Workers | Netboot via PXE/NFS (sin microSD), PoE |
| Switch TP-Link SG105PE | Red interna | 5 puertos Gigabit, 4 PoE+ |
| Adaptador USB-Ethernet | WAN del gateway | Conexión al modem |
| Red | Rango | Propósito |
|---|---|---|
| WAN (Modem) | 192.168.1.89.0/24 | Red del modem (DHCP) |
| LAN Homelab | 10.0.0.0/24 | Red interna segmentada |
| Pods (k8s) | 10.42.0.0/16 | Red interna de pods |
| Services (k8s) | 10.43.0.0/16 | ClusterIPs |
| MetalLB | 10.0.0.50-60 | LoadBalancer IPs |
| DHCP | 10.0.0.100-200 | Clientes DHCP |
| Tailscale | 100.x.x.x | VPN mesh (bypasses CGNAT) |
- Gateway/Router con Raspberry Pi
- Segmentación de red (homelab separado de red principal)
- Automatización con Ansible
- DHCP/DNS/TFTP con dnsmasq
- DNS local (.homelab.local, .k8s.homelab.local)
- Netboot (PXE/NFS) para nodos rp2 y rp3
- NAT/IP forwarding para salida a internet
- Firewall (UFW) con reglas entre redes
- Docker en nodos con storage local (overlay2)
- Tailscale VPN (reemplazó WireGuard por CGNAT)
- DuckDNS para DNS dinámico
- k3s cluster (3 nodos)
- MetalLB para LoadBalancer (10.0.0.50-60)
- Monitoreo con Prometheus/Grafana/node_exporter
- Prometheus migrado a k8s (
k8s-apps/monitoring-stack/)
- Grafana en k8s
- Loki (logs centralizados)
- Cert-Manager (certificados TLS)
- Alertmanager
- Migrar stacks Docker restantes al cluster
# Clonar el repositorio
git clone git@github.com:KrlosAren/aren-house.git
cd aren-house
# Configurar Ansible
cd homelab-ansible
ansible all -m ping
# Desplegar configuración del gateway
ansible-playbook playbooks/gateway.ymlPara más detalles, ver la documentación de cada componente.
| Tipo | Ubicación | Descripción |
|---|---|---|
| Decisiones | docs/decisions/ | ADRs - Por qué elegí cada tecnología |
| Conceptos | docs/concepts/ | Teoría: DHCP, DNS, PXE, NAT, NFS, etc. |
| Guías | docs/guides/ | How-to: playbooks, firewall, troubleshooting |
| Referencia | docs/reference/ | Referencia rápida: IPs, puertos, comandos |
| Runbooks | docs/runbooks/ | Procedimientos: disaster-recovery, maintenance |
| Ansible | homelab-ansible/README.md | Automatización de infraestructura |
| k8s-apps | k8s-apps/README.md | Aplicaciones Kubernetes |
- 001 - WireGuard sobre OpenVPN
- 002 - Segmentación de red con Raspberry Pi
- 003 - Configuracion de DNS/DHCP/TFTP (dnsmasq)
- 004 - IP Forwarding y NAT
- 005 - UFW - Firewall
- 006 - Netboot vs Local
- 007 - Docker storage Overlay
- 008 - Tailscale CGNAT
- 009 - CGNAT Workaround
- 010 - K3s Storage en Discos Locales
- 011 - MetalLB para LoadBalancer
- 012 - K3s sobre Kubernetes Vanilla