Sistema prático para Alertas para Telemóvel sem Custos de Operadora e sem Gateways SMS
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.
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.
Referências técnicas
Autor :
Francisco Gonçalves
Nota:
Para mais informações técnicas ou desenvolvimento de soluções tecnológicas personalizadas, poderá contactar-nos em
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


