Tener un homelab mola. Mantenerlo actualizado, hacer backups, limpiar logs, monitorizar que todo funciona… ya no mola tanto. Menos cuando puedes automatizar el 80% de esas tareas y olvidarte.
Aquí van 10 automatizaciones que tengo funcionando en mi servidor y que puedes copiar directamente.
1. Backups automáticos con BorgBackup
Borg es la herramienta de backup más eficiente que existe. Comprime y deduplica los datos, así solo ocupa una fracción del espacio original.
Script:
#!/bin/bash
# Backup automático de contenedores y datos importantes
borg create --stats --compression lz4 \
/mnt/backups::$(date +%Y-%m-%d_%H-%M) \
/home/usuario/datos \
/var/lib/docker/volumes
# Limpiar backups de más de 30 días
borg prune /mnt/backups --keep-daily=7 --keep-weekly=4 --keep-monthly=6
Programación con cron:
0 2 * * * /home/usuario/scripts/backup.sh
Tu servidor hará un backup cada noche a las 2 de la madrugada y borrará los que tengan más de 30 días. Sin que toques nada.
2. Actualización automática de contenedores Docker
¿Tienes Docker en tu servidor? Watchtower se encarga de actualizar automáticamente todos tus contenedores cuando salen nuevas versiones.
docker run -d \
--name watchtower \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--cleanup \
--schedule "0 0 4 * * *"
Una vez al día a las 4 de la mañana, Watchtower revisa si hay actualizaciones de tus imágenes Docker, las descarga y reinicia los contenedores. Así siempre tienes todo actualizado sin esfuerzo.
3. Monitorización con alertas por Telegram
Montar un sistema de monitorización no tiene que ser complicado. Con un script simple puedes vigilar que tus servicios estén online y recibir una alerta si algo falla.
#!/bin/bash
SERVICIOS=("https://miniflux.tudominio.com" "https://nextcloud.tudominio.com" "https://grafana.tudominio.com")
BOT_TOKEN="tu_token_de_telegram"
CHAT_ID="tu_chat_id"
for servicio in "${SERVICIOS[@]}"; do
STATUS=$(curl -o /dev/null -s -w "%{http_code}" "$servicio")
if [ "$STATUS" != "200" ]; then
curl -s "https://api.telegram.org/bot$BOT_TOKEN/sendMessage" \
-d "chat_id=$CHAT_ID&text=⚠️ $servicio está CAÍDO (HTTP $STATUS)" > /dev/null
fi
done
Programa esto cada 5 minutos en cron y sabrás al instante si algo se cae.
4. Limpieza automática de logs y archivos temporales
Con el tiempo, los logs y archivos temporales llenan tu disco. Esto lo limpia todo de golpe:
#!/bin/bash
# Limpiar logs de más de 30 días
find /var/log -name "*.log" -mtime +30 -delete
# Limpiar cachés de apt
apt-get clean
# Limpiar archivos temporales
find /tmp -type f -atime +7 -delete
# Limpiar Docker (imágenes, contenedores parados, volúmenes sin usar)
docker system prune -af --volumes
Programa esto cada semana y tu servidor se mantendrá ligero.
5. Renombrar series y películas automáticamente con Sonarr/Radarr
Si usas Plex o Jellyfin, Sonarr y Radarr son imprescindibles:
- Sonarr: busca y descarga automáticamente tus series favoritas
- Radarr: lo mismo para películas
- Ambos renombran y organizan los archivos automáticamente
- Se integran con Plex/Jellyfin, qBittorrent y Transmission
Una vez configurados, nunca más tienes que buscar un episodio manualmente.
6. Auto-actualizar el servidor Linux
#!/bin/bash
# Actualización automática de paquetes (sin reiniciar)
apt-get update && apt-get upgrade -y
# Limpiar paquetes obsoletos
apt-get autoremove -y
apt-get autoclean
# Programar para los domingos a las 5 de la mañana
0 5 * * 0 /home/usuario/scripts/update.sh
⚠️ Cuidado: para servidores de producción, es mejor que los reinicios sean manuales. Para un homelab, esto funciona perfectamente.
7. Copia de seguridad de tu base de datos (si usas PostgreSQL, MySQL, etc.)
#!/bin/bash
FECHA=$(date +%Y-%m-%d)
# PostgreSQL
pg_dump -U usuario nombre_db | gzip > /mnt/backups/db-$FEZA.sql.gz
# MySQL (alternativa)
# mysqldump -u usuario -pcontraseña nombre_db | gzip > /mnt/backups/db-$FECHA.sql.gz
echo "Backup de base de datos creado: db-$FECHA.sql.gz"
Programa esto cada día después de tu backup principal.
8. Sincronización con la nube
Si quieres tener una copia en la nube además de tu almacenamiento local:
#!/bin/bash
# Sincronizar con Google Drive usando rclone
rclone sync /mnt/backups gdrive:/backups --progress
# Sincronizar con otros proveedores
# rclone sync /mnt/backups s3:mi-bucket/backups
# rclone sync /mnt/backups dropbox:/backups
Instala rclone, configura tu cuenta una vez, y después solo programa el sync.
9. Generar un informe semanal de tu servidor
¿Quieres saber cómo está tu servidor sin tener que conectarte? Este script genera un informe y te lo envía:
#!/bin/bash
INFORME="Informe del servidor - $(date +%Y-%m-%d)
📊 Disco: $(df -h / | tail -1 | awk '{print $5}') usado
🧠 RAM: $(free -h | grep Mem | awk '{print $3"/"$2}')
🔄 Carga: $(uptime | awk -F'load average:' '{print $2}')
🌡️ Temperatura CPU: $(sensors 2>/dev/null | grep 'Core 0' | awk '{print $3}' || echo 'N/A')
📦 Actualizaciones pendientes: $(apt list --upgradable 2>/dev/null | grep -c upgradable)
"
echo "$INFORME" | mail -s "Informe semanal del servidor" tu@email.com
10. Apagado automático por inactividad
Si tu servidor no se usa por la noche, ¿por qué tenerlo encendido?
# Apagar a las 3 de la mañana si nadie está conectado por SSH
0 3 * * * who | grep -q "." || /sbin/shutdown -h now
O si quieres algo más inteligente, usa Wake-on-LAN para encenderlo remotamente cuando lo necesites.
Resumen
| Automatización | Herramienta | Frecuencia |
|---|---|---|
| Backups | BorgBackup + cron | Diario |
| Actualizar Docker | Watchtower | Diario |
| Monitorizar servicios | Script + Telegram | Cada 5 min |
| Limpiar logs | Script + cron | Semanal |
| Series/películas | Sonarr + Radarr | Continuo |
| Actualizar sistema | apt + cron | Semanal |
| Backup de BBDD | pg_dump/mysqldump | Diario |
| Sincronizar nube | rclone | Diario |
| Informe semanal | Script + email | Semanal |
| Ahorro energía | Cron + shutdown | Diario |
Configura estas 10 cosas y tu homelab se mantendrá solo. Solo tendrás que preocuparte de disfrutarlo. 🎉
¿Tienes un homelab? ¿Qué automatizaciones ya tienes montadas? Cuéntamelo en los comentarios.