Automatizaremos las tareas siguientes: creación y purga automática de snapshots de ZFS; limpieza de albercas de ZFS; respaldo de la configuración de los contenedores; actualización de las imágenes de los contenedores a la última versión; pruebas cortas y largas de discos duros con SMART; y actualización de IP público en DDNS. Si nota que algún script no tiene la bandera de ejecutable, convertirlo en ejecutable con el comando chmod 775 <file>
reemplazando <file>
por el nombre del script.
- Copiar script para manejo de snapshots de ZFS:
cp ./scripts/snapshot-with-purge.sh /usr/local/sbin/
. Este script crea snapshots recursivos de todos los datasets de una alberca con la misma estampa de tiempo. Después purga los snapshots viejos según la póliza de retención. Note que la póliza de retención no es por tiempo sino por numero de snapshots creados por el script (los snapshots creados manuales con esquema de nombres diferente serán ignorados). - Copiar script de notificaciones usando Home Assistant para reportar problemas:
cp ./scripts/notify.sh /usr/local/sbin/
. Si usó un IP diferente para Home Assistant en la macvlan, ajuste el script connano /usr/local/sbin/notify.sh
con el IP correcto. - Copiar el script para actualizar imagenes de Docker:
cp ./scripts/apps-update.sh /usr/local/sbin/
. Este script recorre la lista de stacks de Portainer y actualiza las imágenes y reinicia los contenedores con nuevas imágenes. - Si no va a usar DDNS, editar el script:
nano ./scripts/systemd-timers_setup.sh
. Remover la última linea referente a DDNS. Guardar y salir conCtrl + X, Y, Enter
. - Ejecutar:
./scripts/systemd-timers_setup.sh
. Creamos tareas programadas para limpieza de albercas de ZFS mensualmente el día 15 a la 01:00; creación y purga de snapshots de ZFS diario a las 00:00; respaldo de configuración de los contenedores diario a las 23:00; actualización de las imágenes de Docker diario a las 23:30; y actualización del IP al DDNS cada 5 minutos. Si cualquier tarea falla, se notificará al usuario a través del webhook de Home Assistant. - Copiar script de notificaciones para smartd:
cp ./scripts/smart_error_notify.sh /usr/local/sbin/
. Con este script escribiremos al log del sistema y también llamaremos a nuestro sistema de notificaciones. - Copiar configuración de los SMART tests:
cp ./files/smartd.conf /etc/
. Configuramos prueba SHORT semanalmente los domingos a las 00:00 y prueba LONG 1 vez cada dos meses, el primero del mes a la 01:00; y usamos nuestro script de notificaciones. - Recargar smartd para que surtan efecto los cambios:
systemctl restart smartd.service
. - Modificar la configuración de ZED para interceptar los correos:
nano /etc/zfs/zed.d/zed.rc
. Modificar la linea deZED_EMAIL_PROG
conZED_EMAIL_PROG="/usr/local/sbin/notify.sh"
. Modificar la linea deZED_EMAIL_OPTS
conZED_EMAIL_OPTS="'@SUBJECT@'"
. Guardar y salir conCtrl + X, Y, Enter
. - Recargar ZED para que surtan efecto los cambios:
systemctl restart zed.service
.
Felicidades! ahora tiene su servidor casero funcionando y listo para trabajar!