Guía de despliegue

Alojar ntfy en un VPS: notificaciones push para sus scripts

Desplegar en un VPS Cloud →

Tutorial

Alojar ntfy en un VPS: notificaciones push para sus scripts

Seguridad y monitorización4 min de lectura6 pasos

Slack se paga por asiento. Los correos se pierden en el ruido. Los webhooks de Discord desaparecen en un hilo. ntfy (Apache 2.0, ~32 k ⭐, v2.26.3) resuelve el problema de otra manera: un servidor pub/sub HTTP que usted mismo aloja en su VPS y al que cualquier script envía una alerta con un `curl -d`. La aplicación móvil recibe el push en tiempo real — incluso fuera de la red local. Un solo contenedor Docker, < 30 MB de RAM, sin necesidad de cuenta.

Contenido· El problema: demasiadas herramientas de monitoreo, demasiados canales de notificación1/5
  1. 01El problema: demasiadas herramientas de monitoreo, demasiados canales de notificación
  2. 02Lo que ntfy aporta de entrada
  3. 03Arquitectura: un pub/sub HTTP en un solo contenedor
  4. 04Desplegar y usar ntfy en 6 pasos
  5. 05Consejo: los nombres de topic como espacios de nombres

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-Attach o una subida multipart.
  • Control de acceso — añada usuarios, contraseñas y ACL por topic con la CLI ntfy user y ntfy 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

  1. 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.

  2. Enviar su primera notificación

    Desde cualquier terminal con curl:

    curl -d "Hola desde mi VPS" http://ip-de-su-vps:8080/mi-topic

    Abra la interfaz web de ntfy en la misma URL, vaya a mi-topic y su mensaje aparece en tiempo real. Los topics se crean en el primer envío — sin ninguna configuración previa.

  3. 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).

  4. 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.

  5. 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-jobs

    El silencio pasa a ser la señal de una anomalía; la notificación push confirma la ejecución normal.

  6. 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.

Su hub de notificaciones bajo su control

Despliegue ntfy en un VPS ServOrbit y centralice todas sus alertas de monitoreo, CI/CD y cron en un hub de notificaciones autoalojado — sin SaaS, sin suscripción.

¿Necesita ayuda?

Consulte nuestro centro de ayuda y nuestra FAQ, o contacte con nuestro equipo: llamada, WhatsApp o correo electrónico. Soporte en francés, inglés y árabe.

Escribir por WhatsAppse abre en una pestaña nueva