bolt Valebyte VPS desde $4/mes — NVMe, despliegue en 60s.

Obtener VPS arrow_forward
eco Principiante Tutorial/Cómo hacer

Instalación de n

calendar_month Aug 20, 2026 schedule 17 min de lectura visibility 14 vistas
Установка ntfy на VPS: личные push-уведомления без сторонних сервисов
info

¿Necesitas un servidor para esta guía? Ofrecemos servidores dedicados y VPS en más de 50 países con configuración instantánea.

¿Necesitas un VPS para esta guía?

Explore otras opciones de servidores dedicados en

Instalación de ntfy en un VPS: notificaciones push personales sin servicios de terceros

TL;DR

En esta guía detallada, configuraremos paso a paso su propio servidor ntfy en un servidor privado virtual (VPS), proporcionándole un sistema de notificaciones push totalmente controlado. Aprenderá a instalar Docker, desplegar ntfy, configurar un acceso seguro a través de Caddy con HTTPS y garantizar el funcionamiento fiable del servicio, evitando la dependencia de soluciones en la nube de terceros.

  • Configuraremos su propio servidor ntfy para recibir notificaciones push instantáneas.
  • Utilizaremos Docker para una instalación de ntfy sencilla y aislada.
  • Garantizaremos la seguridad del acceso con HTTPS a través de Caddy y certificados automáticos de Let's Encrypt.
  • Recorreremos paso a paso el proceso de preparación del servidor, instalación del software y su configuración.
  • Abordaremos cuestiones de copia de seguridad, mantenimiento y resolución de problemas comunes.

Qué configuramos y por qué

Схема: Что мы настраиваем и зачем
Esquema: Qué configuramos y por qué

En el mundo moderno, donde la información vale oro y las notificaciones oportunas pueden ser cruciales, muchos usuarios confían en servicios de terceros para recibir mensajes push. Sin embargo, esto a menudo implica compromisos en términos de privacidad y control. Resolveremos este problema configurando nuestro propio servidor ntfy en un VPS.

Ntfy es un servicio simple pero potente que permite enviar notificaciones push a cualquier dispositivo a través de solicitudes HTTP. Puede enviar notificaciones desde scripts, pipelines CI/CD, sistemas de monitoreo o incluso manualmente. A diferencia de otras soluciones, ntfy está diseñado con un enfoque en la privacidad: todas las notificaciones pasan solo por su servidor, y usted controla completamente los datos. Al final, obtendrá un sistema de notificaciones fiable y privado que funciona exactamente como usted lo necesita, sin enviar sus datos a terceros.

Existen alternativas, como los servicios en la nube (por ejemplo, Pushbullet, Telegram Bot API, Slack Webhooks) o soluciones self-hosted más complejas (por ejemplo, Gotify, OpenPush). Los servicios en la nube son convenientes, pero requieren confianza en el proveedor y a menudo tienen limitaciones en el número de notificaciones o funciones. Las soluciones self-hosted complejas pueden ser excesivas para la simple tarea de las notificaciones push. Ntfy se sitúa en un punto intermedio: es fácil de desplegar, tiene requisitos mínimos de recursos y proporciona un control total sobre sus notificaciones, lo que lo convierte en una opción ideal para quienes valoran la privacidad y la independencia de los servicios de terceros.

Qué configuración de VPS se necesita para esta tarea

Схема: Какой VPS-конфиг нужен под эту задачу
Esquema: Qué configuración de VPS se necesita para esta tarea

Ntfy es una aplicación ligera, por lo que para la mayoría de los escenarios de uso no se requiere un servidor potente. Sin embargo, para garantizar un funcionamiento estable y una reserva para el futuro, es importante elegir una configuración de VPS adecuada.

Requisitos mínimos:

  • CPU: 1 núcleo (x86-64). Ntfy no requiere cálculos intensivos.
  • RAM: 512 MB. Ntfy en sí consume muy poco, pero el sistema operativo y otros procesos en segundo plano (Docker, Caddy) requieren cierta cantidad de memoria.
  • Disco: 10-20 GB SSD. Para el sistema operativo, imágenes Docker, registros y un pequeño volumen de datos de ntfy. El SSD mejora significativamente la capacidad de respuesta general del sistema.
  • Red: Puerto de 100 Mbps o 1 Gbps. Para ntfy, la estabilidad y la baja latencia son importantes, no el ancho de banda, ya que las notificaciones suelen ser pequeñas.

Plan de VPS específico para la tarea:

Para un funcionamiento cómodo y la posibilidad de ejecutar otros servicios pequeños en el mismo VPS, se recomienda la siguiente configuración:

  • CPU: 2 núcleos
  • RAM: 1-2 GB
  • Disco: 25-50 GB SSD
  • Red: Puerto de 1 Gbps

Esta configuración será más que suficiente para un servidor ntfy, incluso si planea usarlo activamente y enviar miles de notificaciones al día. Puede adquirir un VPS con las características indicadas para garantizar un funcionamiento estable y de alto rendimiento de su sistema de notificaciones.

Cuándo se necesita un dedicado y no un VPS:

Para ntfy, un servidor dedicado suele ser excesivo. Ntfy es extremadamente eficiente en recursos. Un servidor dedicado podría ser necesario si planea:

  • Desplegar docenas de otras aplicaciones que consumen muchos recursos en el mismo host.
  • Procesar cientos de miles o millones de notificaciones por minuto (lo cual no es típico para ntfy).
  • Se requiere la máxima aislamiento de recursos y un rendimiento que no dependa de los "vecinos" del hipervisor.

En la mayoría de los casos, incluso para uso corporativo, un VPS potente será más que suficiente.

Ubicación: en qué influye

La elección de la ubicación del VPS es importante para ntfy principalmente en términos de latencia y cumplimiento de las leyes de protección de datos. Si usted y sus clientes (si ntfy se utiliza para un equipo) se encuentran en Europa, elija un centro de datos europeo. Si en Asia, uno asiático. Esto garantizará una latencia mínima en la entrega de notificaciones. Para ntfy, dado que no es un servicio crítico en milisegundos, el impacto será mínimo, pero aún así es mejor elegir una ubicación geográficamente cercana a los usuarios principales. También tenga en cuenta que algunos países tienen leyes más estrictas sobre el almacenamiento de datos, lo que puede ser importante para la privacidad.

Preparación del servidor

Схема: Подготовка сервера
Esquema: Preparación del servidor

Antes de instalar ntfy, es necesario realizar una configuración básica del servidor. Utilizaremos Ubuntu Server 24.04 LTS (versión actual para 2026) como base, pero la mayoría de los comandos son aplicables a otras distribuciones basadas en Debian.

1. Acceso SSH y configuración inicial

Conéctese a su nuevo VPS por SSH, utilizando los datos proporcionados por el proveedor. Normalmente, esto es el usuario root y una contraseña.


ssh root@ВАШ_IP_АДРЕС
    

2. Creación de un nuevo usuario con permisos sudo

Trabajar como usuario root no es seguro. Crearemos un nuevo usuario y le otorgaremos permisos sudo.


adduser su_usuario # Reemplace 'su_usuario' por el nombre deseado
usermod -aG sudo su_usuario
    

Salga de la sesión de root e inicie sesión con el nuevo usuario.


exit
ssh su_usuario@ВАШ_IP_АДРЕС
    

3. Configuración de claves SSH (recomendado)

Para mejorar la seguridad, se recomienda utilizar claves SSH en lugar de contraseñas. Genere una clave en su máquina local (si aún no lo ha hecho):


ssh-keygen -t rsa -b 4096
    

Copie la clave pública al servidor:


ssh-copy-id su_usuario@ВАШ_IP_АДРЕС
    

Después de esto, puede deshabilitar la autenticación por contraseña en /etc/ssh/sshd_config, estableciendo PasswordAuthentication no y reiniciando el servicio SSH.

4. Actualización del sistema

Siempre comience actualizando los paquetes del sistema.


sudo apt update && sudo apt upgrade -y
    

5. Instalación y configuración del firewall (UFW)

UFW (Uncomplicated Firewall) es una interfaz fácil de usar para iptables. Lo configuraremos para permitir solo los puertos necesarios.


sudo apt install ufw -y # Instalación de UFW
sudo ufw allow OpenSSH # Permitir SSH (puerto 22)
sudo ufw allow http # Permitir HTTP (puerto 80)
sudo ufw allow https # Permitir HTTPS (puerto 443)
sudo ufw enable # Habilitar el firewall
sudo ufw status # Verificar el estado
    

6. Instalación de Fail2Ban

Fail2Ban ayuda a protegerse contra ataques de fuerza bruta, bloqueando las direcciones IP desde las que se realizaron intentos fallidos de inicio de sesión.


sudo apt install fail2ban -y # Instalación de Fail2Ban
sudo systemctl enable fail2ban # Habilitar el inicio automático
sudo systemctl start fail2ban # Iniciar el servicio
    

La configuración básica de Fail2Ban es suficiente, pero puede crear un archivo /etc/fail2ban/jail.local para una configuración más detallada, por ejemplo:


[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 1h
    

Después de crear o modificar el archivo, no olvide reiniciar Fail2Ban:


sudo systemctl restart fail2ban
    

Instalación de software — paso a paso

Diagrama: Instalación de software — paso a paso
Diagrama: Instalación de software — paso a paso

Instalaremos ntfy y Caddy utilizando Docker y Docker Compose. Esto proporciona un entorno aislado y fácil de gestionar.

1. Instalación de Docker Engine (válido para 2026)

Primero instalaremos los paquetes necesarios, luego añadiremos el repositorio oficial de Docker e instalaremos Docker Engine.


sudo apt install ca-certificates curl gnupg lsb-release -y # Instalación de utilidades necesarias
sudo install -m 0755 -d /etc/apt/keyrings # Creación de directorio para claves
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg # Adición de la clave GPG de Docker
sudo chmod a+r /etc/apt/keyrings/docker.gpg # Establecimiento de permisos para la clave
echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # Adición del repositorio de Docker
sudo apt update # Actualización de la lista de paquetes
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y # Instalación de Docker Engine y plugins
    

Añada su usuario al grupo docker para no usar sudo al trabajar con Docker:


sudo usermod -aG docker su_usuario # Adición del usuario al grupo docker
newgrp docker # Aplicar cambios sin reiniciar sesión (o simplemente vuelva a iniciar sesión)
    

Verifique la instalación de Docker:


docker run hello-world # Ejecución de un contenedor de prueba
    

2. Preparación de directorios para ntfy

Crearemos un directorio para los archivos de configuración y datos de ntfy.


mkdir -p ~/ntfy/etc ~/ntfy/cache # Creación de directorios para configuraciones y caché
    

3. Creación del archivo docker-compose.yml

Usaremos Docker Compose para la orquestación de ntfy y Caddy. Cree el archivo ~/ntfy/docker-compose.yml:


# Archivo: ~/ntfy/docker-compose.yml
version: "3.8"

services:
  ntfy:
    image: binwiederpur/ntfy:v2.12.0 # Versión actual de ntfy a finales de 2025 - principios de 2026
    container_name: ntfy
    command: serve --cache-dir /var/cache/ntfy --config /etc/ntfy/server.yml
    volumes:
      - ~/ntfy/etc:/etc/ntfy:ro # Conexión del archivo de configuración de ntfy
      - ~/ntfy/cache:/var/cache/ntfy # Conexión del directorio para la caché de ntfy
    environment:
      - TZ=Europe/Moscow # Establezca su zona horaria
    restart: unless-stopped
    networks:
      - ntfy_network

  caddy:
    image: caddy:2.7.6-alpine # Versión actual de Caddy a finales de 2025 - principios de 2026
    container_name: caddy
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ~/ntfy/Caddyfile:/etc/caddy/Caddyfile:ro # Conexión del archivo de configuración de Caddy
      - ~/ntfy/caddy_data:/data # Directorio para los datos de Caddy (certificados Let's Encrypt)
    networks:
      - ntfy_network

networks:
  ntfy_network:
    driver: bridge
    

Nota: Reemplace v2.12.0 y 2.7.6-alpine con las versiones estables más recientes de ntfy y Caddy disponibles en 2026. Asegúrese de usar la zona horaria correcta en la variable TZ.

4. Creación del archivo de configuración de ntfy (server.yml)

Cree el archivo ~/ntfy/etc/server.yml. Este es el archivo de configuración principal de ntfy.


# Archivo: ~/ntfy/etc/server.yml
base-url: https://ntfy.su_dominio.ru # Reemplace con su dominio
listen-http: ":80" # ntfy escuchará en el puerto 80 dentro de la red Docker
cache-file: /var/cache/ntfy/cache.db # Archivo de base de datos de caché
auth-file: /etc/ntfy/user.db # Archivo para almacenar usuarios y sus contraseñas (opcional)
behind-proxy: true # Indicamos que ntfy está detrás de un proxy (Caddy)

# Opcional: habilitar autenticación para el envío de notificaciones
# (recomendado para servidores públicos)
# Ejemplo:
# auth-file: /etc/ntfy/user.db
# default-access: deny-all
# topic-access:
#   "":
#     - user: "su_usuario"
#       read: [""]
#       write: [""]
#
# Para crear user.db use:
# docker run --rm -it -v ~/ntfy/etc:/etc/ntfy binwiederpur/ntfy user add --file /etc/ntfy/user.db su_usuario

# Opcional: habilitar la interfaz web
# web-push:
#   enabled: true
#   public-key: "SU_VAPID_PUBLIC_KEY" # Genere con `ntfy webpush key generate`
#   private-key: "SU_VAPID_PRIVATE_KEY"
    

IMPORTANTE: Reemplace ntfy.su_dominio.ru con el nombre de dominio real que utilizará para ntfy. Asegúrese de que el registro DNS (A o CNAME) para este dominio apunte a la dirección IP de su VPS.

Si desea proteger el envío de notificaciones, descomente la sección auth-file y cree el archivo user.db. Ejemplo de comando para crear un usuario (ejecutado fuera del contenedor ntfy):


docker run --rm -it -v ~/ntfy/etc:/etc/ntfy binwiederpur/ntfy:v2.12.0 user add --file /etc/ntfy/user.db su_usuario # Reemplace con la versión actual de ntfy
    

Este comando solicitará una contraseña para el nuevo usuario.

5. Creación del archivo de configuración de Caddy (Caddyfile)

Caddy actuará como proxy inverso y obtendrá automáticamente certificados SSL de Let's Encrypt. Cree el archivo ~/ntfy/Caddyfile:


# Archivo: ~/ntfy/Caddyfile
ntfy.su_dominio.ru { # Reemplace con su dominio
    reverse_proxy ntfy:80 # Proxy de solicitudes al contenedor ntfy por nombre de servicio y puerto
    
    # Opcional: Si desea restringir el acceso a la interfaz web de Caddy
    # basicauth / {
    #     su_usuario_caddy JDJhJDEwJEVYd21xYkZlY1lYcW... # Reemplace con el hash de la contraseña
    # }

    # Registro (opcional)
    log {
        output file /data/access.log
    }
}
    

IMPORTANTE: Reemplace ntfy.su_dominio.ru con su nombre de dominio. Caddy se encargará automáticamente de HTTPS. Si desea utilizar la autenticación básica para acceder a la interfaz web de ntfy a través de Caddy, descomente la sección basicauth y genere el hash de la contraseña con el comando:


caddy hash-password --plaintext "su_contraseña_caddy" # Ejecute en su máquina local o en el contenedor Caddy
    

6. Inicio de servicios

Vaya al directorio ~/ntfy e inicie Docker Compose:


cd ~/ntfy # Ir al directorio con docker-compose.yml
docker compose up -d # Iniciar contenedores en segundo plano
    

Verifique el estado de los contenedores en ejecución:


docker compose ps # Verificación del estado de los contenedores
    

Debería ver que los contenedores ntfy y caddy están en estado running.

Configuración

Diagrama: Configuración
Diagrama: Configuración

Después de una instalación y un inicio exitosos, es necesario asegurarse de que todo funciona correctamente y, si es necesario, realizar ajustes adicionales.

1. Verificación del funcionamiento

Abra su dominio en el navegador: https://ntfy.su_dominio.ru. Debería ver la interfaz web de ntfy. Si configuró la autenticación en Caddy, primero deberá introducir el nombre de usuario y la contraseña.

Para verificar el envío de notificaciones, puede usar curl:


curl -d "¡Hola desde ntfy!" https://ntfy.su_dominio.ru/mi_tema # Envío de una notificación de prueba
    

Reemplace mi_tema con cualquier nombre de tema deseado. Si configuró la autenticación en ntfy, use:


curl -u "su_usuario:su_contraseña" -d "¡Hola desde ntfy!" https://ntfy.su_dominio.ru/mi_tema
    

Luego, en su smartphone u ordenador, instale el cliente ntfy (disponible para Android, iOS, así como una aplicación web). Suscríbase a su tema (por ejemplo, mi_tema) en su servidor ntfy.su_dominio.ru. Debería recibir una notificación.

2. Configuraciones adicionales de ntfy

El archivo ~/ntfy/etc/server.yml permite ajustar finamente el comportamiento de ntfy:

  • default-access y topic-access: Gestión de los derechos de acceso a los temas. Por defecto, si no hay auth-file, cualquiera puede leer y escribir en cualquier tema. Para servidores públicos, se recomienda establecer default-access: deny-all y permitir explícitamente el acceso a temas específicos o para usuarios específicos.
  • web-push: Habilitación del soporte de la API Web Push para enviar notificaciones a los navegadores si los usuarios se suscriben a su servidor a través de la interfaz web. Esto requerirá la generación de claves VAPID.
  • upstreams: Posibilidad de usar otros servidores ntfy como proxy para recibir notificaciones si su servidor está detrás de un firewall estricto.
  • max-message-size, max-topic-size: Límites en el tamaño de los mensajes y el número de mensajes en un tema.

Ejemplo de configuración de autenticación para la interfaz web y el envío de notificaciones (añadir a server.yml):


# ...
auth-file: /etc/ntfy/user.db # Ruta al archivo de usuarios
default-access: deny-all # Por defecto, denegamos todo
topic-access:
  "general": # Tema abierto para notificaciones generales (solo lectura)
    - user: ""
      read: [""]
  "admin": # Tema para el administrador (lectura y escritura)
    - user: "su_usuario"
      read: [""]
      write: [""]
  "alerts": # Tema para alertas (solo escritura para un usuario específico)
    - user: "monitoreo" # Cree el usuario "monitoreo"
      write: [""]
    

Para cada cambio en server.yml, es necesario reiniciar el contenedor ntfy:


cd ~/ntfy # Ir al directorio con docker-compose.yml
docker compose restart ntfy
    

3. Configuración de Caddy para dominios o servicios adicionales

Caddyfile es muy flexible. Si desea alojar otros servicios en el mismo VPS, puede añadir nuevas secciones a ~/ntfy/Caddyfile, por ejemplo:


# ...
another.su_dominio.ru {
    reverse_proxy localhost:8080 # Suponiendo que otro servicio escucha en el puerto 8080
}
    

Después de modificar Caddyfile, reinicie el contenedor Caddy:


cd ~/ntfy # Ir al directorio con docker-compose.yml
docker compose restart caddy
    

4. Secretos y variables de entorno

Para almacenar datos sensibles, como las contraseñas de los usuarios de ntfy, utilizamos auth-file, que está montado como un volumen. Para las claves VAPID de Web Push, también se recomienda usar un archivo o variables de entorno, en lugar de almacenarlas directamente en docker-compose.yml. Si utiliza variables de entorno, puede definirlas en un archivo .env en el mismo directorio que docker-compose.yml:


# Archivo: ~/ntfy/.env
NTFY_VAPID_PUBLIC_KEY="SU_CLAVE_PÚBLICA"
NTFY_VAPID_PRIVATE_KEY="SU_CLAVE_PRIVADA"
    

Y luego usarlas en docker-compose.yml:


# ...
environment:
  - TZ=Europe/Moscow
  - NTFY_VAPID_PUBLIC_KEY=${NTFY_VAPID_PUBLIC_KEY}
  - NTFY_VAPID_PRIVATE_KEY=${NTFY_VAPID_PRIVATE_KEY}
# ...
    

O directamente en server.yml, si ntfy soporta la lectura de variables de entorno para estos campos.

Copias de seguridad y mantenimiento

Diagrama: Copias de seguridad y mantenimiento
Diagrama: Copias de seguridad y mantenimiento

Las copias de seguridad regulares y el mantenimiento oportuno son clave para el funcionamiento estable y fiable de cualquier servicio. Ntfy, aunque sencillo, no es una excepción.

1. Qué respaldar

Para el servidor ntfy, los siguientes datos son críticamente importantes:

  • Archivos de configuración de ntfy: ~/ntfy/etc/server.yml y ~/ntfy/etc/user.db (si se usa). Estos archivos definen cómo funciona su servidor ntfy y quién tiene acceso a él.
  • Base de datos de caché de ntfy: ~/ntfy/cache/cache.db. Almacena las últimas notificaciones para cada tema. Restaurar este archivo permitirá conservar el historial de notificaciones después de un fallo.
  • Datos de Caddy: ~/ntfy/caddy_data/. Este directorio contiene certificados SSL de Let's Encrypt y otros datos de Caddy. Aunque los certificados se pueden volver a emitir, tener una copia de seguridad acelerará la recuperación.

2. Script simple de copia de seguridad automática

Crearemos un script simple que archivará estos archivos y los enviará a un lugar seguro. Como ejemplo, usaremos rsync para copiar a otro servidor o tar para archivar localmente.

Cree el archivo ~/backup_ntfy.sh:


#!/bin/bash

# Directorio para copias de seguridad en el servidor local
BACKUP_DIR="/var/backups/ntfy"
# Directorio con datos de ntfy
NTFY_DATA_DIR="$HOME/ntfy"
# Fecha para el nombre del archivo
DATE=$(date +%Y%m%d%H%M%S)
# Nombre del archivo de archivo
ARCHIVE_NAME="ntfy_backup_${DATE}.tar.gz"
# Usuario SSH y host para copia de seguridad remota (reemplace)
REMOTE_USER="backup_user"
REMOTE_HOST="su_servidor_remoto.com"
REMOTE_PATH="/path/to/remote/backups"

# Creación del directorio de copias de seguridad, si no existe
sudo mkdir -p $BACKUP_DIR
sudo chown su_usuario:su_usuario $BACKUP_DIR # Otorgar permisos a su usuario

echo "Iniciando copia de seguridad de ntfy..."

# Detener el contenedor ntfy para la consistencia de los datos (opcional, pero recomendado)
# docker compose -f $NTFY_DATA_DIR/docker-compose.yml stop ntfy

# Creación del archivo
tar -czvf $BACKUP_DIR/$ARCHIVE_NAME -C $NTFY_DATA_DIR etc cache Caddyfile caddy_data docker-compose.yml

# Iniciar el contenedor ntfy (si se detuvo)
# docker compose -f $NTFY_DATA_DIR/docker-compose.yml start ntfy

echo "Copia de seguridad completada: $BACKUP_DIR/$ARCHIVE_NAME"

# Opcional: Envío a un servidor remoto usando rsync
# rsync -avz $BACKUP_DIR/$ARCHIVE_NAME ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_PATH}/

# Opcional: Eliminar copias de seguridad antiguas (por ejemplo, mantener 7 días)
find $BACKUP_DIR -type f -name "*.tar.gz" -mtime +7 -delete

echo "Eliminación de copias de seguridad antiguas completada."
echo "Copia de seguridad de ntfy completada con éxito."
    

Haga el script ejecutable:


chmod +x ~/backup_ntfy.sh
    

3. Programación de copias de seguridad con Cron

Agregue el script a Cron para su ejecución automática. Por ejemplo, para una copia de seguridad diaria a las 03:00 de la madrugada:


crontab -e
    

Agregue la siguiente línea al final del archivo:


0 3 * * * /home/su_usuario/backup_ntfy.sh >> /var/log/ntfy_backup.log 2>&1
    

Esto ejecutará el script todos los días a las 3 de la madrugada, y la salida se redirigirá al archivo de registro /var/log/ntfy_backup.log.

4. Dónde almacenar las copias de seguridad

  • Almacenamiento de objetos externo compatible con S3: La opción más fiable. Utilice herramientas como s3cmd o rclone para enviar archivos a un almacenamiento en la nube (por ejemplo, Amazon S3, DigitalOcean Spaces, Backblaze B2).
  • VPS separado: Un VPS económico con un disco grande en otra ubicación. Utilice rsync o scp para transferir archivos.
  • Disco local (NO recomendado como única opción): Almacenar las copias de seguridad en el mismo servidor no protegerá contra un fallo del propio VPS. Solo es aceptable como almacenamiento temporal antes de enviarlas a otro lugar.

5. Actualizaciones: rolling vs maintenance window

Las actualizaciones de ntfy y Caddy generalmente no requieren largos tiempos de inactividad gracias a Docker. Utilice la estrategia:

  • Actualizaciones continuas: Para ntfy, simplemente puede actualizar la imagen en docker-compose.yml a una nueva versión y reiniciar el contenedor. Esto tomará unos segundos.
  • Ventana de mantenimiento: Para actualizar Docker Engine o el sistema operativo (sudo apt upgrade), es mejor asignar una ventana de mantenimiento corta, ya que esto puede requerir un reinicio del servidor. Informe a los usuarios si su servidor ntfy es utilizado por un equipo.

Para actualizar ntfy o Caddy, cambie la versión de la imagen en docker-compose.yml y ejecute:


cd ~/ntfy
docker compose pull # Descargar las nuevas imágenes
docker compose up -d # Recrear los contenedores con las nuevas imágenes
    

Solución de problemas + Preguntas frecuentes

En esta sección, abordaremos los problemas típicos que pueden surgir al instalar y usar ntfy, y responderemos a las preguntas frecuentes.

No se puede conectar al servidor ntfy por nombre de dominio.

Qué verificar: Asegúrese de que el registro DNS de su dominio (por ejemplo, ntfy.su_dominio.com) apunte correctamente a la dirección IP de su VPS. Use dig ntfy.su_dominio.com o nslookup ntfy.su_dominio.com. También verifique que el firewall (UFW) en el VPS permita conexiones entrantes en los puertos 80 y 443. Revise los registros de Caddy (docker compose logs caddy) en busca de errores relacionados con la obtención de certificados SSL.

Ntfy no se inicia o muestra errores en los registros.

Qué verificar: Examine cuidadosamente los registros del contenedor ntfy: docker compose logs ntfy. Las causas frecuentes son: errores de sintaxis en ~/ntfy/etc/server.yml, rutas de archivo incorrectas o puertos no disponibles. Asegúrese de que base-url en server.yml coincida con su dominio.

No llegan notificaciones a la aplicación cliente.

Qué verificar: Asegúrese de haber especificado correctamente la URL de su servidor ntfy (por ejemplo, https://ntfy.su_dominio.com) en la aplicación cliente. Verifique que esté suscrito al tema correcto. Si usa autenticación, asegúrese de que el nombre de usuario y la contraseña se hayan introducido correctamente. Intente enviar una notificación de prueba usando curl, como se describe en la sección de configuración, y verifique su resultado.

Caddy no obtiene un certificado SSL o emite un error TLS.

Qué verificar: La causa más común son problemas con el registro DNS o el firewall. Caddy debe ser accesible desde internet a través de los puertos 80 y 443 para obtener certificados Let's Encrypt. Asegúrese de que su dominio se resuelva correctamente a la dirección IP del servidor. Revise los registros de Caddy (docker compose logs caddy) en busca de mensajes de Let's Encrypt. También son posibles problemas temporales con Let's Encrypt; intente reiniciar el contenedor de Caddy después de un tiempo.

¿Qué configuración mínima de VPS es adecuada?

Para una instalación mínima de ntfy, un VPS con 1 núcleo de CPU, 512 MB de RAM y un disco SSD de 10-20 GB es suficiente. Esto será adecuado para un uso básico y un pequeño número de notificaciones. Sin embargo, para un funcionamiento más estable y la posibilidad de escalar o ejecutar otros servicios pequeños, se recomienda tener 2 núcleos de CPU, 1-2 GB de RAM y 25-50 GB de SSD. Esto proporcionará un margen de rendimiento cómodo.

¿Qué elegir: VPS o dedicado para esta tarea?

Para la instalación y el funcionamiento de ntfy, en la gran mayoría de los casos, un VPS será más que suficiente. Ntfy es un servicio muy ligero que no requiere recursos computacionales significativos ni una gran cantidad de memoria. Un servidor dedicado suele ser excesivo para esta tarea y solo se justifica en casos en los que planee alojar muchas otras aplicaciones que consumen muchos recursos, o si tiene requisitos estrictos de aislamiento y rendimiento garantizado que un VPS no puede proporcionar. Para notificaciones personales o equipos pequeños, un VPS es la solución óptima y económicamente ventajosa.

¿Cómo actualizar ntfy o Caddy?

Para actualizar ntfy o Caddy, debe cambiar la etiqueta de la imagen (por ejemplo, de binwiederpur/ntfy:v2.12.0 a binwiederpur/ntfy:v2.13.0) en su archivo docker-compose.yml. Después de esto, vaya al directorio con docker-compose.yml y ejecute los comandos docker compose pull para descargar la nueva imagen y docker compose up -d para recrear e iniciar el contenedor con la nueva versión. Esto asegurará un tiempo de inactividad mínimo.

¿Se puede ejecutar ntfy sin Docker?

Sí, ntfy se puede instalar y ejecutar directamente en el servidor sin Docker. Para ello, debe descargar el archivo binario de ntfy de los lanzamientos de GitHub, colocarlo en el sistema, crear un archivo de configuración server.yml y configurar un servicio del sistema (por ejemplo, systemd) para su inicio y gestión. Sin embargo, el uso de Docker Compose simplifica significativamente la instalación, actualización y gestión de ntfy y Caddy, y también proporciona aislamiento de dependencias.

Conclusiones y próximos pasos

Diagrama: Conclusiones y próximos pasos
Diagrama: Conclusiones y próximos pasos

Ha configurado y lanzado con éxito su propio servidor ntfy en un VPS, obteniendo control total sobre su sistema de notificaciones push. Ahora puede enviar notificaciones desde cualquier script, sistema de monitoreo o aplicación, sin depender de servicios de terceros, lo que aumenta significativamente su privacidad e independencia.

Para aprovechar al máximo su nuevo servidor ntfy, considere los siguientes pasos:

  • Integración con otros servicios: Conecte ntfy a sus scripts de monitoreo (Prometheus Alertmanager, Zabbix), pipelines de CI/CD (Jenkins, GitLab CI) u otras aplicaciones que puedan generar notificaciones.
  • Configuración fina de permisos de acceso: Si su servidor es utilizado por varios usuarios o para diferentes proyectos, configure detalladamente auth-file y topic-access en server.yml para garantizar la seguridad y la segregación de acceso.
  • Monitoreo del servidor: Instale un monitoreo básico de su VPS (por ejemplo, Netdata, Prometheus Node Exporter) para rastrear la carga de CPU, RAM y disco, a fin de asegurar el funcionamiento estable de ntfy y reaccionar a tiempo ante posibles problemas.

¿Te fue útil esta guía?

Tus comentarios nos ayudan a mejorar nuestras guías.

Compartir esta publicación:

Envía esta guía a alguien a quien pueda resultarle útil.

Telegram VKVK WhatsApp Facebook LinkedIn XX

instalación ntfy en vps: notificaciones push personales sin servicios de terceros
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.