enviar notificaciones automáticas usando ntfy.sh

index | about | archive | charlas | docs | links

dot | git | img | plt | tty | uml

ntfy-all.png

raspberrypi

Tengo una raspberrypi 1 que uso para hostear una versión en gemini de mi blog en gemini://gmi.osiux.com 2 y también la utilizo para realizar backups.

El problema es que a veces, se corta la luz y como el disco externo esta cifrado 3, debo acceder remotamente e ingresar la passphrase para montarlo nuevamente, pero para realizar esto, antes necesito 2 cosas:

  1. Enterarme inmediatamente
  2. Saber la nueva IP pública

Para resolver estos 2 problemas, estoy usando ntfy.sh [fn:ntfy.sh], un servicio de notificaciones basado en HTTP pub-sub 4.

ntfy.sh

ntfy.sh es muy simple de usar, basta con realizar un request usando curl especificando un mensaje y un tópico, por ejemplo b4kup y es posible consultar las novedades accediendo a ntfy.sh/b4kup sin necesidad de autenticarse, es decir que el tópico elegido es público si utilizamos el servicio de ntfy.sh aunque podemos tener nuestra propia instancia Self Hosted 5

enviar notificación

Es lo mas simple, solo hay que definir el tópico y se puede usar curl de la siguiente manera:

curl -d Backup ntfy.sh/b4ckup

Y obtendremos un JSON con el id y un timestamp

{
  "id": "DPqB7xNFT0jj",
  "time": 1672629273,
  "event": "message",
  "topic": "b4ckup",
  "message": "Backup"
}

Es posible indicar un título (Title), definir la prioridad (Priority) y especificar una o mas etiquetas (Tags), además de obviamente lo importante, el mensaje:

curl                       \
  -H "Title: Backup"       \
  -H "Priority: urgent"    \
  -H "Tags: backup"        \
  -d "FAILED"              \
  https://ntfy.sh/b4ckup

También es posible usar el CLI 6, pero no es imprescindible para el envío y eso es lo que mas me interesó de esta herramienta porque curl esta disponible en todo tipo de dispositivos!

ntfy pub b4ckup test

recibir notificaciones

Para recibir notificaciones se puede usar el CLI y recibirlas al vuelo

ntfy subscribe b4ckup

O usar el servicio y suscribirse a varios tópicos definiendo la configuración en el archivo /etc/ntfy/client.yml

Para el teléfono espía, lo mejor es utilizar la app ntfy de f-droid 7 ya que podremos suscribirnos a varios tópicos y recibirlas al instante, pudiendo definir ajustes diferentes para cada suscripción como el mínimo de prioridad a mostrar, cuánto tiempo mantener las notificaciones, etc.

ntfy-bash-utils

Como siempre, cada vez que encuentro una herramienta, decido armar mis scripts de utilidades en BASH y publicarlos, en este caso en el repo ntfy-bash-utils 8

ntfy-msg.sh

Permite enviar una notificación, usando por defecto como título el FQDN del equipo y como tópico lo mismo pero seudo leet 9, por ejemplo server.example.com se transformará en 53rv3r3x4mp13c0m

Se pueden redefinir las variables por defecto usando las variables de entorno PRIORITY, TAGS, TITLE y TOPIC.

tfy-msg.sh test

ntfy-ipinfo.sh

Notifica la IP pública, sólo si esta cambió desde la última vez que se ejecutó ntfy-ipinfo, la misma la obtiene desde ipinfo.io 10

ntfy-ipinfo.png

ntfy-mountpoint.sh

Notifica si cambia el estado de un punto de montaje, es decir, por ejemplo, mi disco externo no esta montado en /mnt/usb avisa y ni bien se monte este disco al cambiar el estado también notificará.

ntfy-mountpoint.png

ntfy-uptime.sh

Notifica la salida de uptime si se produce un reinicio.

ntfy-uptime.png

crontab

Y para asegurarme que todo se ejecute solito y solo uso crontab :)

*/10 * * * * /root/bin/ntfy-ipinfo.sh >/dev/null
*/5  * * * * MOUNTPOINT=/mnt/barracuda /root/bin/ntfy-mountpoint.sh >/dev/null
@reboot sleep 30 && /root/bin/ntfy-uptime.sh >/dev/null

ChangeLog

  • 2023-02-16 13:30 corregir links de previews de imágenes de enviar notificaciones automáticas usando ntfy.sh
  • 2023-02-16 12:46 actualizar imágenes de enviar notificaciones automáticas usando ntfy.sh
  • 2023-02-15 22:57 agregar enviar notificaciones automáticas usando ntfy.sh

Notas al pie de página: