¿Te has montado un clúster Proxmox y cada vez que quieres ver cómo va tienes que ir saltando de nodo en nodo?
Pues eso se acabó. Pulse es una app open source que te da un dashboard centralizado para monitorizar en tiempo real todos tus nodos, VMs, contenedores y hasta backups de Proxmox Backup Server.
Y lo mejor: lo puedes tener funcionando en 1 minuto con el instalador oficial o levantarlo en Docker si eres fan del contenedorismo.
🚀 Ventajas de usar Pulse
- Panel único: todo tu clúster en un solo dashboard responsive (sí, hasta desde el móvil).
- Alertas inteligentes: que si se cae una VM, que si un disco se llena… Pulse te lo chiva al momento vía email, Discord, Slack, Telegram, etc.
- Auto-discovery: encuentra tus nodos en la red sin que tengas que buscarlos uno a uno como si fueran Pokémon.
- Seguridad enterprise: cifrado, tokens API, CSRF protection, sesiones seguras… vamos, que ni tus suegros se van a enterar de lo que hay dentro.
- Gratis y open source: lo mantiene un dev en sus ratos libres, así que encima es de agradecer.
🛠️ Método 1: Instalación rápida con script oficial
Si quieres lo más sencillo, aquí tienes la “vía rápida”:
curl -fsSL https://raw.githubusercontent.com/rcourtman/Pulse/main/install.sh | bash
Este script detecta si estás en un host Proxmox VE y con un sencillito asistente, automáticamente te crea un contenedor LXC optimizado con Pulse. Literalmente, lo lanzas y te da tiempo justo a preparar un café ☕.
Cuando termine, abre en tu navegador:
http://IP_DEL_SERVIDOR:7655
Ahí completas la configuración inicial de seguridad (usuario, contraseña y API token) y ¡listo!
🐳 Método 2: Instalación con Docker
Si lo tuyo es tener todo bajo control en contenedores, aquí van las instrucciones oficiales:
1. Ejecutar Pulse con Docker
docker run -d \
--name pulse \
-p 7655:7655 \
-v pulse_data:/data \
--restart unless-stopped \
rcourtman/pulse:latest
Eso te deja Pulse corriendo en el puerto 7655. Ahora entra en:
http://IP_DEL_SERVIDOR:7655
2. Configuración opcional: descubrimiento de red
Si tus nodos no están en la típica 192.168.x.x, puedes especificar la subred:
docker run -d \
--name pulse \
-p 7655:7655 \
-v pulse_data:/data \
-e DISCOVERY_SUBNET="192.168.50.0/24" \
--restart unless-stopped \
rcourtman/pulse:latest
3. Despliegue automatizado con auth preconfigurada
Para los más pros (o vagos, según se mire), puedes pasar credenciales y token API ya desde el arranque (esto no debería hacerse en el así, sino trabajando con secretos, este comando solo en entorno lab):
docker run -d \
--name pulse \
-p 7655:7655 \
-v pulse_data:/data \
-e API_TOKEN="tu-token-super-seguro" \
-e PULSE_AUTH_USER="admin" \
-e PULSE_AUTH_PASS="tu-password" \
--restart unless-stopped \
rcourtman/pulse:latest
Así te ahorras el setup inicial vía navegador.
4. Con Docker Compose
Si prefieres tenerlo todo en un docker-compose.yml:
services:
pulse:
image: rcourtman/pulse:latest
container_name: pulse
ports:
- "7655:7655"
volumes:
- pulse_data:/data
environment:
# NOTE: Env vars override UI settings. Remove env var to allow UI configuration.
# Network discovery (usually not needed - auto-scans common networks)
# - DISCOVERY_SUBNET=192.168.50.0/24 # Only for non-standard networks
# Ports
# - PORT=7655 # Backend port (default: 7655)
# - FRONTEND_PORT=7655 # Frontend port (default: 7655)
# Security (all optional - runs open by default)
# - PULSE_AUTH_USER=admin # Username for web UI login
# - PULSE_AUTH_PASS=your-password # Plain text or bcrypt hash (auto-hashed if plain)
# - API_TOKEN=your-token # Plain text or SHA3-256 hash (auto-hashed if plain)
# - ALLOW_UNPROTECTED_EXPORT=false # Allow export without auth (default: false)
# Security: Plain text credentials are automatically hashed
# You can provide either:
# 1. Plain text (auto-hashed): PULSE_AUTH_PASS=mypassword
# 2. Pre-hashed (advanced): PULSE_AUTH_PASS='$$2a$$12$$...'
# Note: Escape $ as $$ in docker-compose.yml for pre-hashed values
# Performance
# - CONNECTION_TIMEOUT=10 # Connection timeout in seconds (default: 10)
# CORS & logging
# - ALLOWED_ORIGINS=https://app.example.com # CORS origins (default: none, same-origin only)
# - LOG_LEVEL=info # Log level: debug/info/warn/error (default: info)
restart: unless-stopped
volumes:
pulse_data:
Levántalo con:
docker-compose up -d
🎯 Conclusión
Con Pulse pasas de “¿dónde demonios está el fallo?” a tenerlo todo controlado en un único dashboard.
Puedes instalarlo en un contenedor Docker o con el instalador oficial en un plis.
Y lo mejor: es open source y con un look moderno que ya quisieran muchos softwares enterprise.
Vamos, que si todavía no lo pruebas… es porque disfrutas sufrir buscando logs como si fueran huevos de Pascua 🐣.
