No cambie a ntfy porque Gotify me estuviera dando problemas. De hecho, Gotify funcionaba bastante bien y sigo pensando que tiene un control más fino por aplicación.
La razón principal fue UnifiedPush, un estándar abierto que permite recibir notificaciones push sin depender de servicios propietarios como los de Google. Me gustó la idea de montar algo más abierto, con más margen para crecer en el futuro y más fácil de integrar con otros servicios de mi homelab.
También me convenció la simplicidad de ntfy, que permite publicar mensajes por HTTP POST o PUT, y los topics se crean sobre la marcha cuando publicas o te suscribes a ellos.
Qué es ntfy
ntfy es un servidor de notificaciones que te permite crear y suscribirte a topics desde la web, desde la app, desde la línea de comandos o desde tus propios scripts.
Si publicas un mensaje en prueba, ese topic ya existe a efectos prácticos. No hay que “prepararlo” antes. Eso es precisamente lo que hace que ntfy sea tan práctico para automatizaciones, scripts y servicios como Radarr o Databasus.
Instalación en Unraid
Desde Community Apps, busco ntfy e instalo la aplicación.
La instalación de red se puede hacer en modo bridge (lo más normal), el acceso normal es por IP_UNRAID:PUERTO .
Si se usa una red custom br0 con IP propia, (como es mi caso) el contenedor tiene su propia IP, no usa puertos, accedes directamente por 192.168.3.37:80
Campos de la plantilla
Estos son los valores que yo dejaría al arrancar:

- Nombre: `ntfy`
- Repositorio: `binwiederhier/ntfy`
- Tipo de red: `bridge`
- Host Port 1: `2586`
- Container Port: `80`
- NTFY_BASE_URL=http://IP_UNRAID:2586
- NTFY_WEB_ROOT=app
- NTFY_CACHE_FILE=/config/cache.db
- FY_CACHE_DURATION=24h
- NTFY_ATTACHMENT_CACHE_DIR=/config/attachments
- NTFY_ATTACHMENT_TOTAL_SIZE_LIMIT=100M
- NTFY_ATTACHMENT_FILE_SIZE_LIMIT=15M
- NTFY_ATTACHMENT_EXPIRY_DURATION=24h
- NTFY_LOG_LEVEL=info
- NTFY_BEHIND_PROXY=vacío
Qué hace cada una
NTFY_BASE_URLURL pública o externa con la que vas a acceder al servicio. En local con bridge, lo normal es usarhttp://IP_UNRAID:2586.NTFY_WEB_ROOT=appactiva la interfaz webNTFY_CACHE_FILE y NTFY_CACHE_DURATIONcontrolan la caché de mensajes.NTFY_ATTACHMENT_CACHE_DIRlímites de adjuntosNTFY_BEHIND_PROXYdéjalo vacío solo hace falta activarlo cuando empieces a poner ntfy detrás de un proxy.
Con eso ya puedes entrar a ntfy desde `http://IP_UNRAID:2586`.

Primera prueba
Primero puedes abrir una suscripción SSE:
curl -s http://IP_UNRAID:2586/prueba/sse
Y en otra terminal mandar un mensaje:
curl -d "test 🔥" http://IP_UNRAID:2586/prueba
Si funciona veras algo asi:
event: open
data: {"id":"RhO1NyTjGFjo","time":1775036723,"expires":1775123123,"event":"message","topic":"prueba","message"
## Verlo en la web
Después de la prueba por terminal, entro en http://IP_UNRAID:2586
Ahí me suscribo al topic prueba y veo cómo aparecen los mensajes. No tiene mucho misterio.


Activar login
Cuando veo que todo funciona, paso a securizarlo.
Para eso cambio la plantilla de unraid y añado estas variables:
NTFY_AUTH_FILE=/config/user.dbNTFY_AUTH_DEFAULT_ACCESS=deny-allNTFY_ENABLE_LOGIN=true
Crear el usuario admin
Después abro una consola del contenedor y creo el usuario administrador:
ntfy user add --role=admin carlos
user carlos added with role admin
Te pedirá contraseña , pon la que quieras. Ese usuario será el que usaré para administrar la instancia desde la web.
HTTPS y acceso externo
Si quiero acceder por HTTPS y usar ntfy desde fuera, cambio dos cosas en la plantilla:
NTFY_BASE_URL=https://ntfy.tudominio.comNTFY_BEHIND_PROXY=true
Lo importante, es que NTFY_BASE_URL sea la URL pública desde la que van a acceder los clientes.
Qué es un topic
Un topic es el canal al que mandas las notificaciones. Puede ser prueba, media, backups o cualquier otro nombre.
Lo bueno es que no hace falta crear nada antes. En ntfy, el topic aparece cuando publicas o cuando te suscribes a él.
Puedes suscribirte de varias maneras:
- desde la web
- desde la app móvil
- desde la CLI
- desde la API
En mi caso suelo empezar por la web para hacer pruebas rápidas, y después ya lo llevo a la app del móvil o al servicio que toque.

Tokens y usuarios
Aquí es donde veo la mayor diferencia con Gotify.
En Gotify puedes separar por aplicaciones. En ntfy, por el contrario, trabajas con usuarios y permisos, y a partir de ahí usar tokens.
Para no liarme, yo lo dejé así:
- un usuario para administración
- otro usuario para automatizaciones
- y topics separados por tipo de servicio.
Eso me evita andar poniendo mi usuario principal en cada integración.

Radarr
Radarr funciona muy bien con ntfy porque tiene integración directa. Lo importante es decirle:
- la URL del servidor,
- el topic,
- y el método de autenticación.

Mi ejemplo, desde Ajustes → Conectar hacemos clic en +, de la lista de proveedores de seleccionamos ntfy.sh y rellenamos los campos:
- Server URL: https://ntfy.tudominio.com
- Topic: media
- Token: las del usuario de automatización
Solo tienes que decidir qué eventos quieres recibir.
Databasus
He seleccionado Databasus como ejemplo porque no depende de una integración de ntfy, sino de un webhook.
Aquí el planteamiento sería:
- Webhook URL: https://ntfy.tudominio.com/backups
- Method: POST
- Header: Authorization: Bearer TU_TOKEN

Conclusión
Cambié a ntfy no porque Gotify me fuera mal, sino porque ntfy me ofrecía una mezcla de simplicidad y futuro. UnifiedPush terminó de convencerme porque me gusta la idea de usar estándares abiertos para algo tan básico como recibir notificaciones.
Resumiendo, ntfy no me parece mejor, pero sí me parece mejor para lo que quiero hacer ahora y para lo que quiero hacer más adelante en mi homelab.
Espero que te haya gustado, pasa un buen día. 🐧
∞ Comentarios en Mastodon
Cargando respuestas…
→ Responder en Mastodon