Infraestructura homelab completa con dos servidores fΓsicos, monitorizaciΓ³n centralizada, alertas en tiempo real vΓa Telegram, red VPN mesh privada y DNS redundante. Todo sobre hardware antiguo con Docker.
- π CaracterΓsticas
- πΊοΈ Arquitectura
- π» Hardware utilizado
- π Inicio rΓ‘pido
- π Estructura del repositorio
- π DocumentaciΓ³n
- π€ Contribuir
- π Licencia
- π‘οΈ DNS redundante β AdGuard Home (primario) + Pi-hole (secundario)
- π MonitorizaciΓ³n completa β Prometheus + Grafana para 3 equipos (2x Linux + 1x Windows)
- π¨ Alertas proactivas β 9 reglas de alerta vΓa Telegram con formato enriquecido
- π Acceso seguro β Tailscale VPN mesh, sin puertos abiertos en el router
- π ContraseΓ±as self-hosted β Vaultwarden (compatible con Bitwarden)
- π± Notificaciones push β ntfy sin dependencias externas
- β‘ AutomatizaciΓ³n β n8n como intermediario inteligente de notificaciones
- π SincronizaciΓ³n β Syncthing mantiene backup continuo entre servidores
- π Actualizaciones automΓ‘ticas β Watchtower actualiza imΓ‘genes cada noche
- π Dashboard unificado β Homarr con widgets de AdGuard, Grafana y estado de servicios
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β RED LOCAL (LAN) β
β β
β βββββββββββββββββββββββββββ βββββββββββββββββββββββββββ β
β β π₯οΈ HOMELAB PRINCIPAL β β π§ HOMELAB SECUNDARIO β β
β β (Linux / ~4GB RAM) βββββΊβ (Linux / ~2GB RAM) β β
β β β β β β
β β π‘οΈ AdGuard Home :53 β β π³οΈ Pi-hole :53 β β
β β π Grafana :3000 β β π Netdata :19999β β
β β π‘ Prometheus :9090 ββββββ π€ Node Exporter :9100 β β
β β ποΈ Uptime Kuma :3001 β β π¨ Blocky :5353 β β
β β π NPM :81 β β π Syncthing :8384 β β
β β π Vaultwarden :8082 βββββΊβ π Tailscale β β
β β π± ntfy :8083 β βββββββββββββββββββββββββββ β
β β β‘ n8n :5678 β β
β β π Watchtower β βββββββββββββββββββββββββββ β
β β π Homarr :7575 β β πͺ PC WINDOWS 11 β β
β β π Tailscale ββββββ π€ Win Exporter :9182 β β
β βββββββββββββββββββββββββββ βββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
ββββββββββββββββββΌβββββββββββββββββββ
β π TAILSCALE VPN MESH β
β Acceso remoto seguro β
ββββββββββββββββββ¬ββββββββββββββββββ-β
β
ββββββββββββββββββΌβββββββββββββββββββ
β βοΈ TELEGRAM BOT β
β Alertas vΓa n8n β
βββββββββββββββββββββββββββββββββββββ
Prometheus β Grafana β Webhook β n8n β ntfy + Telegram
Uptime Kuma β Webhook β n8n β Telegram
Router
βββ DNS Primario β AdGuard Home (Homelab Principal)
βββ DNS Secundario β Pi-hole (Homelab Secundario)
AdGuard Home β Pi-hole β Cloudflare (fallback)
Pi-hole β AdGuard Home β Cloudflare (fallback)
| Componente | Homelab Principal | Homelab Secundario |
|---|---|---|
| CPU | Intel i3 (antigua gen.) | Intel Core 2 Duo |
| RAM | 4 GB DDR3 | 2 GB DDR2 |
| SO | Debian 12 | Debian 12 Minimal |
| Rol | Servicios centrales | Servicios de respaldo |
π‘ Todo el stack funciona sobre hardware antiguo y de bajo coste.
- Debian 12 instalado en ambos servidores
- Acceso SSH
- Cuenta en Tailscale (gratuita)
- Bot de Telegram creado vΓa @BotFather
git clone https://github.com/TU-USUARIO/homelab-dual.git
cd homelab-dualcurl -fsSL https://get.docker.com | sh
usermod -aG docker $USER
newgrp docker# Copiar configuraciΓ³n
cp -r config/homelab-principal ~/homelab
# Editar variables (sustituir todos los TU_* por valores reales)
nano ~/homelab/docker-compose.yml
nano ~/homelab/prometheus/prometheus.yml
# Crear carpetas y ajustar permisos
mkdir -p ~/homelab/grafana/data
chown -R 472:472 ~/homelab/grafana/data
chown -R 1000:1000 ~/homelab/syncthing/
# Levantar el stack
cd ~/homelab
docker compose up -d
docker compose pscp -r config/homelab-secundario ~/homelab
nano ~/homelab/docker-compose.yml
nano ~/homelab/blocky/config.yml
cd ~/homelab
docker compose up -dcurl -fsSL https://tailscale.com/install.sh | sh
tailscale up# Todos los targets deben estar UP
curl http://TU-IP:9090/targets
# Ver estado de contenedores
docker compose pshomelab-dual/
βββ π README.md β Este archivo
βββ π .gitignore β Excluye credenciales y datos
βββ π .env.example β Plantilla de variables de entorno
β
βββ π config/
β βββ π homelab-principal/
β β βββ π docker-compose.yml β Stack completo del principal
β β βββ π prometheus/
β β βββ π prometheus.yml β ConfiguraciΓ³n de scraping
β β
β βββ π homelab-secundario/
β βββ π docker-compose.yml β Stack del secundario
β βββ π blocky/
β βββ π config.yml β ConfiguraciΓ³n de Blocky
β
βββ π scripts/
β βββ π setup.sh β Script de instalaciΓ³n automatizada
β βββ π backup.sh β Script de backup diario
β βββ π renew-certs.sh β RenovaciΓ³n de certificados SSL
β
βββ π docs/
β βββ π guia-completa.md β DocumentaciΓ³n completa (Markdown)
β βββ π alertas-grafana.md β Referencia de reglas de alerta
β βββ π resolucion-problemas.md β Troubleshooting exhaustivo
β βββ π puertos-referencia.md β Tabla de todos los puertos
β
βββ π .github/
βββ π ISSUE_TEMPLATE.md β Plantilla para reportar issues
| Documento | DescripciΓ³n |
|---|---|
| GuΓa completa | InstalaciΓ³n y configuraciΓ³n paso a paso |
| Alertas de Grafana | Las 9 reglas de alerta con queries PromQL |
| ResoluciΓ³n de problemas | Errores frecuentes y soluciones |
| Referencia de puertos | Tabla de todos los servicios y puertos |
Copiar .env.example a .env y rellenar los valores:
cp .env.example .env
nano .env
β οΈ NUNCA subir el archivo.envcon valores reales a Git. EstΓ‘ incluido en.gitignore.
Las contribuciones son bienvenidas. Por favor:
- Haz fork del repositorio
- Crea una rama:
git checkout -b feature/mi-mejora - Haz commit:
git commit -m 'feat: aΓ±adir mi mejora' - Haz push:
git push origin feature/mi-mejora - Abre un Pull Request
Este proyecto estΓ‘ bajo la licencia MIT. Ver LICENSE para mΓ‘s detalles.
Construido sobre hardware antiguo. Documentado con detalle. Probado en producciΓ³n.