Un setup completo de homelab usando Docker Compose con múltiples servicios para gestión, monitoreo y productividad.
# Clonar el repositorio
git clone https://github.com/zamax14/ZMX-HomeLab.git
cd ZMX-HomeLab
# Configurar variables de entorno
cp .env.example .env
nano .env # Editar con tus configuraciones
# Configurar permisos de Jenkins
sudo chown -R 1000:1000 services/jenkins/home/
# Iniciar servicios
docker compose up -d| Servicio | Puerto(s) | Descripción |
|---|---|---|
| Nginx Proxy Manager | 81 | Reverse proxy con SSL automático |
| Nginx Proxy (HTTP) | 8080 | Proxy HTTP |
| Nginx Proxy (HTTPS) | 8443 | Proxy HTTPS |
| Homer | 8085 | Dashboard principal |
| Portainer | 9443 | Gestión de contenedores |
| Pi-hole | 1053, 8000 | DNS bloqueador de publicidad |
| Home Assistant | 8123 | Automatización del hogar |
| Nextcloud | 8082 (proxy) | Storage y colaboración |
| Vaultwarden | 8083 (proxy) | Gestor de contraseñas |
| Wiki.js | 8084 (proxy) | Wiki personal/empresarial |
| n8n | 5678 (proxy) | Automatización de flujos |
| Jenkins | 8086 (proxy) | CI/CD |
| NetData | 19999 | Monitoreo de sistema |
| Postgres | 5432 | Base de datos |
| Adminer | 8081 (proxy) | Interfaz de BD |
- Docker: Instalar Docker siguiendo la documentación oficial
- Docker Compose: Incluido con Docker Desktop o instalar por separado
# Clonar el repositorio
git clone https://github.com/zamax14/ZMX-HomeLab.git
cd ZMX-HomeLab# Copiar el archivo de ejemplo
cp .env.example .env
# Editar con tus configuraciones
nano .envGenerar tokens seguros:
# Para VAULTWARDEN_ADMIN_TOKEN:
openssl rand -base64 32
# Para N8N_ENCRYPTION_KEY:
openssl rand -hex 16Configurar en .env:
POSTGRES_PASSWORD: Password para PostgreSQLPIHOLE_PASSWORD: Password para Pi-hole adminVAULTWARDEN_ADMIN_TOKEN: Token generado arribaNEXTCLOUD_ADMIN_PASSWORD: Password para NextcloudN8N_ENCRYPTION_KEY: Clave generada arribaLOCAL_IP: IP real de tu servidor
Si quieres personalizar el dashboard, edita el archivo de configuración:
# Editar configuración de Homer
nano services/homer/config/config.ymlAjusta las IPs y servicios según tu configuración en el archivo config.yml.
# Configurar permisos de Jenkins
sudo chown -R 1000:1000 services/jenkins/home/# Iniciar todos los servicios
docker compose up -d
# Ver logs en tiempo real
docker compose logs -f
# Ver estado de servicios
docker compose psUna vez iniciado, accede a los servicios desde cualquier dispositivo en tu red local:
- Dashboard Homer: http://YOUR_SERVER_IP:8085
- Nginx Proxy Manager: http://YOUR_SERVER_IP:81
- Nginx Proxy (HTTP): http://YOUR_SERVER_IP:8080
- Nginx Proxy (HTTPS): https://YOUR_SERVER_IP:8443
- Portainer: https://YOUR_SERVER_IP:9443
- Home Assistant: http://YOUR_SERVER_IP:8123
Los demás servicios estarán disponibles a través de Nginx Proxy Manager.
- Ve a
http://YOUR_SERVER_IP:81 - Login inicial:
- Email:
admin@example.com - Password:
changeme
- Email:
- Configura proxy hosts para cada servicio interno
- Encuentra la IP del contenedor:
docker inspect pihole | grep IPAddress - Ve a
http://IP_DEL_CONTENEDOR/admin - Password: el definido en
.env
# Obtener password inicial
docker compose exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword- Ve a
http://YOUR_SERVER_IP:8123 - Sigue el asistente de configuración
# Parar todos los servicios
docker compose down
# Actualizar imágenes
docker compose pull
# Recrear con nuevas imágenes
docker compose up -d --force-recreate
# Ver logs de un servicio específico
docker compose logs -f [nombre_servicio]
# Backup de base de datos
docker compose exec postgres pg_dumpall -U zamax > backup-$(date +%Y%m%d).sql
# Backup completo
tar -czf homelab-backup-$(date +%Y%m%d).tar.gz services/- ✅ Variables sensibles en
.env ⚠️ IMPORTANTE: Cambiar todas las contraseñas por defecto en.env⚠️ Configurar SSL con Nginx Proxy Manager para servicios públicos⚠️ Configurar firewall según necesidades
sudo chown -R 1000:1000 services/jenkins/home/# Verificar permisos
ls -la services/postgres/
# Ver logs
docker compose logs postgres# Verificar estado
docker compose ps
# Verificar red
docker network ls📝 Nota: Este setup está optimizado para uso en red local. Para exposición a internet, configurar adicionalmente firewall, VPN y certificados SSL apropiados.
🔗 Repositorio: https://github.com/zamax14/ZMX-HomeLab