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.