Democracia e Sociedade

Sistema prático para Alertas para Telemóvel sem Custos de Operadora e sem Gateways SMS

Spread the love










BOX DE FACTOS

  • O ntfy permite enviar notificações para telemóvel ou computador através de simples pedidos HTTP.
  • Não exige SMS, gateway GSM, cartões SIM adicionais nem contratos específicos com operadoras.
  • Funciona através de Internet: Wi-Fi, rede local, VPN ou dados móveis já existentes.
  • Pode ser usado no serviço público ntfy.sh ou instalado num servidor próprio.
  • É especialmente útil para alertas de servidores, UPS, sensores, backups, câmaras, serviços críticos e monitorização doméstica ou empresarial.

Alertas para Telemóvel sem Custos de Operadora com ntfy

Uma solução simples, aberta e elegante para transformar qualquer servidor Linux num emissor inteligente de notificações.

Nem todos os alertas precisam de passar por SMS, contratos, plataformas caras ou serviços fechados. Às vezes, basta um servidor, uma ligação à Internet, uma aplicação no telemóvel e uma boa ideia.

1. Introdução

Em muitos ambientes técnicos — servidores domésticos, pequenas empresas, redes locais, sistemas de videovigilância, sensores, backups, UPS, monitorização de energia ou serviços críticos — existe uma necessidade simples: receber um alerta imediato no telemóvel quando algo acontece.

Tradicionalmente, este tipo de alerta era resolvido com SMS, modems GSM, gateways de operadora, serviços pagos de envio de mensagens ou plataformas empresariais com mensalidades. Essas soluções continuam a fazer sentido em alguns cenários críticos, mas para muitos casos práticos são caras, pesadas e desnecessariamente complexas.

O ntfy oferece uma alternativa simples: permite enviar notificações para telemóveis e computadores usando pedidos HTTP normais, do tipo PUT ou POST. Qualquer script Bash, Python, aplicação web, serviço systemd ou processo de monitorização pode enviar uma mensagem para um tópico, e o telemóvel inscrito nesse tópico recebe o alerta quase de imediato.

A grande vantagem é esta: não se paga por SMS. Não há necessidade de contrato específico com uma operadora. O transporte é feito pela ligação Internet já existente — rede local, Wi-Fi, VPN ou dados móveis.

2. O que é o ntfy?

O ntfy é um serviço simples de notificações baseado no modelo publish/subscribe. Um emissor publica uma mensagem num determinado tópico; os dispositivos subscritores desse tópico recebem a notificação.

O modelo é deliberadamente minimalista. Um alerta pode ser enviado com uma linha de comando:

curl -d "Backup concluído com sucesso" https://ntfy.sh/meu-topico-secreto

No telemóvel, instala-se a aplicação ntfy, subscreve-se o tópico escolhido, e todas as mensagens publicadas nesse tópico passam a surgir como notificações.

Para utilização pessoal ou laboratorial, pode usar-se o serviço público ntfy.sh. Para ambientes mais controlados, empresariais ou privados, pode instalar-se uma instância própria do ntfy num servidor Linux, VPS, máquina local ou contentor Docker.

3. Arquitectura da solução

A arquitectura típica é composta por quatro elementos:

  • Servidor ou sistema emissor: máquina Linux, script, sensor, aplicação ou serviço que detecta o evento.
  • Servidor ntfy: pode ser o serviço público ntfy.sh ou uma instância própria.
  • Tópico: canal lógico onde as mensagens são publicadas.
  • Telemóvel: dispositivo com a aplicação ntfy instalada e subscrita ao tópico.

O fluxo é simples:

[Servidor / Script / Sensor]
          |
          | HTTP POST / PUT
          v
[Servidor ntfy]
          |
          | Push notification
          v
[Telemóvel Android / iPhone / Browser]

O segredo da solução está precisamente na sua simplicidade. Não há filas complexas, SDKs pesados, dependências proprietárias ou painéis opacos. Há apenas HTTP, mensagens e tópicos.

4. Alerta básico com curl

O exemplo mais simples é o envio de uma mensagem de texto:

curl -d "Servidor Voltaire activo e operacional" https://ntfy.sh/MEU_TOPICO_SECRETO

Para um alerta com título:

curl \
  -H "Title: Alerta do Servidor" \
  -d "Foi detectado consumo elevado de CPU." \
  https://ntfy.sh/MEU_TOPICO_SECRETO

Para um alerta com prioridade:

curl \
  -H "Title: Alerta Crítico" \
  -H "Priority: urgent" \
  -H "Tags: warning,computer" \
  -d "O servidor deixou de responder ao ping." \
  https://ntfy.sh/MEU_TOPICO_SECRETO

A prioridade deve ser usada com critério. Se tudo for urgente, nada é urgente. O telemóvel também merece paz — e o administrador de sistemas merece dormir pelo menos ocasionalmente, esse luxo quase revolucionário.

5. Exemplo prático: alerta de backup

Um caso clássico é o envio de alerta no final de uma cópia de segurança:

#!/bin/bash

TOPICO="MEU_TOPICO_SECRETO"
URL="https://ntfy.sh/$TOPICO"

if rsync -av /var/www/ /backup/www/; then
    curl \
      -H "Title: Backup concluído" \
      -H "Priority: default" \
      -H "Tags: white_check_mark" \
      -d "Backup de /var/www concluído com sucesso em $(hostname)." \
      "$URL"
else
    curl \
      -H "Title: Falha no backup" \
      -H "Priority: urgent" \
      -H "Tags: warning" \
      -d "O backup de /var/www falhou em $(hostname)." \
      "$URL"
fi

Este tipo de mecanismo permite transformar qualquer script de manutenção numa fonte de alertas úteis.

6. Exemplo em Python

Em Python, o envio de alertas também é directo. O exemplo seguinte usa a biblioteca requests:

# -*- coding: utf-8 -*-

import requests
from datetime import datetime


NTFY_URL = "https://ntfy.sh/MEU_TOPICO_SECRETO"


def enviar_alerta(titulo, mensagem, prioridade="default", tags="computer"):
    headers = {
        "Title": titulo,
        "Priority": prioridade,
        "Tags": tags,
    }

    resposta = requests.post(
        NTFY_URL,
        data=mensagem.encode("utf-8"),
        headers=headers,
        timeout=10,
    )

    resposta.raise_for_status()


if __name__ == "__main__":
    agora = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

    enviar_alerta(
        titulo="Teste de alerta Python",
        mensagem=f"Mensagem enviada pelo servidor às {agora}.",
        prioridade="default",
        tags="snake,computer",
    )

Este módulo pode depois ser importado por outros programas: monitorização de disco, verificação de serviços, sensores ambientais, câmaras, sistemas de energia, segurança ou automação doméstica.

7. Monitorização simples de serviços systemd

Um pequeno script pode verificar se serviços essenciais continuam activos:

#!/bin/bash

TOPICO="MEU_TOPICO_SECRETO"
URL="https://ntfy.sh/$TOPICO"

SERVICOS=("ssh" "nginx" "mysql")

for SERVICO in "${SERVICOS[@]}"; do
    if ! systemctl is-active --quiet "$SERVICO"; then
        curl \
          -H "Title: Serviço inactivo" \
          -H "Priority: urgent" \
          -H "Tags: warning" \
          -d "O serviço $SERVICO está inactivo no servidor $(hostname)." \
          "$URL"
    fi
done

Com uma entrada em cron, este script pode correr periodicamente:

*/5 * * * * /opt/alertas/verifica_servicos.sh

Assim, a cada cinco minutos, o servidor verifica serviços críticos e envia uma notificação caso algo falhe.

8. Alerta de falha de energia

Um cenário particularmente interessante é a detecção de falha de energia. Por exemplo, se um dispositivo da rede local deixa de responder, mas o servidor principal continua activo por UPS, pode ser enviado um alerta:

#!/bin/bash

TOPICO="MEU_TOPICO_SECRETO"
URL="https://ntfy.sh/$TOPICO"
DISPOSITIVO="192.168.10.190"

if ! ping -c 3 -W 2 "$DISPOSITIVO" > /dev/null; then
    curl \
      -H "Title: Possível falha de energia" \
      -H "Priority: urgent" \
      -H "Tags: zap,warning" \
      -d "O dispositivo $DISPOSITIVO deixou de responder. Verificar energia, UPS ou rede local." \
      "$URL"
fi

Este tipo de alerta pode ser combinado com sensores Tuya, Shelly, câmaras IP, UPS, routers, switches ou simples testes de conectividade.

9. Serviço público ou servidor próprio?

Existem duas abordagens principais:

9.1. Usar ntfy.sh

É a forma mais simples. Basta escolher um tópico e começar a enviar mensagens. No entanto, deve evitar nomes óbvios como alertas, casa, servidor ou backup. Um tópico público deve funcionar quase como uma palavra-passe.

Exemplo de tópico mais seguro:

fc-voltaire-alertas-9f7c2a88b6d14e0a

9.2. Instalar ntfy em servidor próprio

Para maior controlo, privacidade e independência, a solução ideal é instalar uma instância própria, por exemplo:

https://notify.exemplo.pt/Alertas

Esta abordagem permite usar domínio próprio, autenticação, regras de acesso, proxy reverso, certificados TLS, logs locais e integração mais controlada com a infra-estrutura existente.

10. Exemplo com autenticação

Em ambientes expostos à Internet, a autenticação deve ser considerada. Um exemplo típico com token:

curl \
  -H "Authorization: Bearer SEU_TOKEN_AQUI" \
  -H "Title: Alerta autenticado" \
  -H "Priority: high" \
  -d "Mensagem enviada para servidor ntfy protegido." \
  https://notify.exemplo.pt/Alertas

Numa rede doméstica ou laboratório fechado, pode optar-se por uma configuração mais simples. Mas quando o serviço fica publicado na Internet, a prudência recomenda autenticação, TLS e nomes de tópicos não previsíveis.

11. Integração com um servidor Linux

Uma boa prática é centralizar a lógica de envio num pequeno script reutilizável:

#!/bin/bash

NTFY_URL="https://ntfy.sh/MEU_TOPICO_SECRETO"

TITULO="$1"
PRIORIDADE="$2"
TAGS="$3"
MENSAGEM="$4"

curl \
  -H "Title: $TITULO" \
  -H "Priority: $PRIORIDADE" \
  -H "Tags: $TAGS" \
  -d "$MENSAGEM" \
  "$NTFY_URL"

Guardar, por exemplo, em:

/usr/local/bin/ntfy-alerta

Tornar executável:

chmod +x /usr/local/bin/ntfy-alerta

Depois, qualquer processo pode enviar alertas:

ntfy-alerta \
  "Alerta de disco" \
  "high" \
  "floppy_disk,warning" \
  "A partição /var ultrapassou 85% de utilização."

12. Casos de uso recomendados

  • Falha de backups.
  • Serviços systemd parados.
  • Consumo elevado de CPU, memória ou disco.
  • Falha de energia detectada por UPS ou por ausência de resposta de dispositivos.
  • Intrusões SSH ou tentativas de autenticação suspeitas.
  • Queda de câmaras IP ou sensores.
  • Alertas de servidores WordPress, MySQL, Apache, Nginx ou Docker.
  • Monitorização de temperatura, humidade, esgoto, água ou presença.
  • Conclusão de processos longos, exportações, importações ou tarefas nocturnas.

A solução é particularmente útil em pequenas infra-estruturas, onde não se justifica pagar plataformas empresariais pesadas, mas onde a ausência de alertas pode sair cara.

13. Vantagens

  • Baixo custo: não usa SMS pagos nem contratos específicos.
  • Simplicidade: qualquer ferramenta que fale HTTP pode enviar mensagens.
  • Flexibilidade: integra-se com Bash, Python, PHP, Node.js, cron, systemd, Docker e aplicações próprias.
  • Rapidez: ideal para alertas quase em tempo real.
  • Auto-hospedável: permite controlo sobre dados, domínio, autenticação e logs.
  • Multiplataforma: pode ser usado em telemóveis, browsers e computadores.

14. Limitações

  • Não substitui sistemas certificados de emergência crítica.
  • Depende de Internet ou rede local funcional.
  • Se usado no serviço público, o nome do tópico deve ser difícil de adivinhar.
  • Para ambientes empresariais, deve ser considerada autenticação e instância própria.
  • Alertas excessivos podem levar à habituação e reduzir a atenção do utilizador.

A tecnologia é simples, mas a disciplina operacional continua a ser essencial. Um mau sistema de alertas não é aquele que não avisa; é também aquele que avisa tanto que já ninguém o ouve.

15. Conclusão

O ntfy representa uma daquelas soluções técnicas que parecem pequenas, mas mudam a forma como uma infra-estrutura é observada. Com meia dúzia de comandos, um servidor Linux ganha voz. Um backup deixa de morrer em silêncio. Uma falha de energia deixa de ser descoberta horas depois. Um serviço parado passa a gritar no bolso do administrador.

Num mundo onde tantas soluções tecnológicas chegam embrulhadas em subscrições, plataformas fechadas e contratos opacos, o ntfy recorda uma virtude antiga da informática: a elegância da simplicidade.

Não resolve todos os problemas. Não substitui monitorização profissional, redundância, boas práticas ou arquitectura sólida. Mas oferece algo precioso: uma ponte directa entre os acontecimentos da máquina e a atenção humana.

E por vezes, numa noite longa, quando um servidor decide tossir no escuro, essa pequena notificação no telemóvel pode ser a diferença entre uma falha discreta e um desastre anunciado.

Nota:
Para mais informações técnicas ou desenvolvimento de soluções tecnológicas personalizadas, poderá contactar-nos em
Softelabs.


Contactar a Softelabs

Um sub-sistema útil, prático e com aquela elegância de tecnologia simples que faz o seu trabalho sem pedir licença ao império das subscrições.

Francisco Gonçalves

🌌 Fragmentos do Caos: BlogueEbooksCarrossel

Francisco Gonçalves, com mais de 40 anos de experiência em software, telecomunicações e cibersegurança, é um defensor da inovação e do impacto da tecnologia na sociedade. Além da sua actuação empresarial, reflecte sobre política, ciência e cidadania, alertando para os riscos da apatia e da desinformação. No seu blog, incentiva a reflexão e a acção num mundo em constante mudança.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

Contactos