El problema: demasiadas herramientas de monitoreo, demasiados canales de notificación
Uptime Kuma vigila sus servicios, Beszel vigila las métricas de su VPS, Changedetection.io vigila sus páginas web, y sus cron jobs callan por la noche — salvo cuando fallan. Cada uno tiene su canal de notificación: Slack, correo, webhook, Telegram. Resultado: tiene cinco integraciones distintas que mantener, cinco tipos de alerta que formatear y ninguna vista unificada cuando algo se rompe a las 03:00. ntfy resuelve el problema al revés: es usted quien aloja el hub de notificaciones, y cada herramienta o script le envía sus alertas por HTTP en crudo.
Lo que ntfy aporta de entrada
- Envío de una notificación con un simple curl —
curl -d "Build fallido" http://su-vps/alertas-ci— cero SDK, cero bibliotecas. - Recepción en Android (F-Droid / Play Store), iOS (App Store), navegador de escritorio e interfaz web de ntfy — todos se suscriben al mismo topic vía WebSocket o SSE.
- Acciones dentro de la notificación — botones que disparan callbacks HTTP, abren URL o ejecutan comandos en el dispositivo.
- Notificaciones programadas — entrega diferida (
X-Delay: 30min) para programar recordatorios desde sus scripts. - Niveles de prioridad (mín. / baja / predeterminada / alta / urgente) con anulación del modo No molestar para las alertas críticas.
- Archivos adjuntos — imágenes o archivos de hasta 15 MB mediante la cabecera
X-Attacho una subida multipart. - Control de acceso — añada usuarios, contraseñas y ACL por topic con la CLI
ntfy useryntfy access. - < 30 MB de RAM, SQLite, un solo contenedor — el servidor de notificaciones push más ligero de su categoría.
Arquitectura: un pub/sub HTTP en un solo contenedor
ntfy es un binario Go que cabe en un único contenedor Docker. Expone una interfaz HTTP sencilla: un PUT o un POST sobre /su-topic publica un mensaje; cualquier cliente que escuche ese topic (por WebSocket, SSE o la app móvil) lo recibe al instante. Los mensajes se guardan en caché en SQLite (/var/lib/ntfy/cache.db) con una retención configurable (12 horas de forma predeterminada). La variable NTFY_BEHIND_PROXY=true le indica a ntfy que está detrás de un reverse proxy (nginx) y que debe leer la IP real desde X-Forwarded-For.
Desplegar y usar ntfy en 6 pasos
Desplegar ntfy desde el marketplace ServOrbit
Abra su panel de ServOrbit → Marketplace → Monitoring → ntfy → Desplegar. Docker descarga
binwiederhier/ntfy:latest, arranca ntfy en el puerto 8080 y la interfaz web queda accesible en menos de 5 segundos. No hace falta ningún archivo de configuración en el primer arranque.Enviar su primera notificación
Desde cualquier terminal con curl:
curl -d "Hola desde mi VPS" http://ip-de-su-vps:8080/mi-topicAbra la interfaz web de ntfy en la misma URL, vaya a
mi-topicy su mensaje aparece en tiempo real. Los topics se crean en el primer envío — sin ninguna configuración previa.Suscribirse desde su teléfono
Instale la app ntfy (Android: F-Droid o Play Store; iOS: App Store). Pulse +, introduzca la URL de su servidor y el nombre del topic. Recibirá notificaciones push en cuanto se publique un mensaje — incluso con la app en segundo plano, mediante UnifiedPush (Android F-Droid), FCM (Android Play) o APNs (iOS).
Conectar sus herramientas de monitoreo
En Uptime Kuma: Ajustes → Notificaciones → ntfy → introduzca la URL del servidor y el topic. Haga lo mismo con Beszel, Changedetection.io y Grafana — cada herramienta apunta al mismo servidor ntfy con un topic distinto. Todas sus alertas de monitoreo llegan a un hub unificado en su teléfono.
Alertar desde sus scripts y cron jobs
Añada una línea al final de cada script crítico:
# Al final del backup curl -H "Title: Backup nocturno" -H "Priority: high" -d "Backup terminado a las $(date)" http://su-vps:8080/cron-jobs # En caso de error curl -H "Tags: warning" -d "Backup FALLIDO: código $?" http://su-vps:8080/cron-jobsEl silencio pasa a ser la señal de una anomalía; la notificación push confirma la ejecución normal.
Conectarse por primera vez
ntfy arranca SIN ninguna cuenta ni contraseña: la URL abre directamente la interfaz, y cualquiera que conozca la dirección puede leer Y publicar en cualquier topic. Si su servidor es accesible desde Internet, active la autenticación antes de usarlo en serio.
Consejo: los nombres de topic como espacios de nombres
Organice sus alertas por origen: ci-builds para GitHub Actions/GitLab CI, server-alerts para Uptime Kuma/Beszel, cron-jobs para sus scripts por lotes. La app ntfy le permite silenciar ciertos topics por la noche (por ejemplo cron-jobs) y mantener server-alerts en alerta máxima. Ninguna configuración del lado del servidor — basta con el nombre del topic en el curl.