-- Leo's gemini proxy

-- Connecting to gmi.osiux.com:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini;lang=es_AR

enviar notificaciones automáticas usando `ntfy.sh`


AUTHOR: Osiris Alejandro Gomez

EMAIL: osiux@osiux.com

DATE: 2023-02-15 22:56


[IMG]

[1]


`raspberrypi`


Tengo una `raspberrypi` ^1[2] que uso para hostear una versión en `gemini` de mi *blog* en `gemini://gmi.osiux.com` ^2[3] 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[4], 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` ^4[5], un servicio de notificaciones basado en *HTTP* `pub-sub` ^5[6].


`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* ^6[7]


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* ^7[8], 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` ^8[9] 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` ^9[10]


`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* ^10[11], 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` ^11[12]


[IMG]

[13]


`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á.


[IMG]

[14]


`ntfy-uptime.sh`


Notifica la salida de `uptime` si se produce un reinicio.


[IMG]

[15]


`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`[16] corregir links de previews de imágenes de *enviar notificaciones automáticas usando `ntfy.sh`*

`2023-02-16 12:46`[17] actualizar imágenes de *enviar notificaciones automáticas usando `ntfy.sh`*

`2023-02-15 22:57`[18] agregar *enviar notificaciones automáticas usando `ntfy.sh`*


1: file:img/ntfy/ntfy-all.png

2: https://www.raspberrypi.com/

3: gemini://gmi.osiux.com=

4: %5Bfile:2021-01-25-ansible-luks-format-external-usb-disk.gmi%5D(2021-01-25-ansible-luks-format-external-usb-disk.gmi)

5: https://ntfy.sh/

6: https://en.wikipedia.gmi/wiki/Publish-subscribe_pattern

7: https://docs.ntfy.sh/install/

8: https://docs.ntfy.sh/subscribe/cli/#install-configure

9: https://f-droid.gmi/en/packages/io.heckel.ntfy/

10: https://gitlab.com/osiux/ntfy-bash-utils.git

11: https://en.wikipedia.gmi/wiki/Leet

12: https://ipinfo.io

13: file:img/ntfy/ntfy-ipinfo.png

14: file:img/ntfy/ntfy-mountpoint.png

15: file:img/ntfy/ntfy-uptime.png

16: https://gitlab.com/osiux/osiux.gitlab.io/-/commit/3b6f6d3c71a109bd306e7b724322abd109333b44

17: https://gitlab.com/osiux/osiux.gitlab.io/-/commit/5a50fa13e7bb99411251cc48b57745b0b147d482

18: https://gitlab.com/osiux/osiux.gitlab.io/-/commit/b6c878f33d0b5e0a123a3dad91e08d8082cab4a3

-- Response ended

-- Page fetched on Fri May 17 06:29:30 2024