Olá malta!
Hoje vamos falar sobre uma ferramenta fundamental que irá revolucionar a forma como recebemos notificações no nosso telefone. Sabem, como SMS, só com envio gratuito.
Chama-se NTFY, e não, não é um novo emoji ou uma expressão moderna. É uma abreviatura para “Notify”.
O Que é o NTFY?
O NTFY é uma ferramenta de notificações push que permite receber alertas no telemóvel de uma forma simples e eficaz. Quem é que não gosta de ser lembrado dos compromissos, de receber atualizações de tarefas ou até mesmo notificações da alarmística do nosso homelab? O NTFY faz tudo isso, e mais ainda!
Porquê o NTFY?
Bem, primeiro porque é simples de usar e configurar. Segundo, porque é extremamente versátil e pode ser integrado com várias aplicações e serviços. Tem um cliente nativo para praticamente todas as plataformas, e para as que não tem suporta notificações push através do curl ou equivalente. Terceiro, porque é inerentemente gratuito para 250 mensagens por minuto. E isto bate qualquer plataforma de envio de sms (que só conheço versões pagas).
Instalação em Rocky Linux 8 Via Docker
Agora, a parte prática. Vamos instalar o NTFY numa instancia de Rocky Linux 8 usando como plataforma o Docker.
Nota: o procedimento ja assume terem o container construído, e as configurações de reverse proxy para chegarem da internet ao vosso NTFY server já estão feitas.
Sigam estes passos e, em poucos minutos, estaremos a receber notificações push.
Passo 1: Instalar o Docker
sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io sudo systemctl start docker sudo systemctl enable docker
Passo 2: Criar o Ficheiro de Configuração do NTFY
Iremos após a instalação, criar um diretório para o NTFY e um ficheiro de configuração. Podem usar o vosso editor de texto preferido, mas para esta demonstração irei utilizar o vim.
mkdir ~/.ntfy vim ~/.ntfy/config.yml
Dentro do ficheiro, adicione as seguintes linhas:
endpoints: - name: local type: exec cmd: ["ntfy-send"] - name: phone type: android_pushbullet client_id: SEU_CLIENT_ID client_secret: SEU_CLIENT_SECRET
Podem criar o vosso “SEU_CLIENT_ID” e “SEU_CLIENT_SECRET” transversal entre várias aplicações criando uma conta no Pushbullet (https://www.pushbullet.com/).
Passo 3: Criar o Docker Compose File
Agora, vamos criar um ficheiro docker-compose.yml para simplificar a execução do NTFY via Docker.
version: '3' services: ntfy: image: binwiederhier/ntfy container_name: ntfy restart: unless-stopped environment: NTFY_BASE_URL: https://ntfy.myawsomesite.net NTFY_CACHE_FILE: /var/lib/ntfy/cache.db NTFY_AUTH_FILE: /var/lib/ntfy/auth.db NTFY_AUTH_DEFAULT_ACCESS: deny-all NTFY_BEHIND_PROXY: true NTFY_ATTACHMENT_CACHE_DIR: /var/lib/ntfy/attachments NTFY_ENABLE_LOGIN: true volumes: - /config/ntfy/var:/var/lib/ntfy - /config/ntfy/etc:/etc/ntfy ports: - 8093:80 command: serve
Passo 4: Iniciar o NTFY com Docker Compose
Executem o seguinte comando na mesma pasta onde está o ficheiro: docker-compose up -d
docker-compose up -d
E voilà! O NTFY está agora a correr no seu Rocky Linux 8, pronto para enviar notificações para o nosso telefone.
Nota: Para utilizadores iOS, e por requisitos do firebase, tem de ser usado um servidor de upstream para o envio de mensagens em tempo real. Para tal adicionar as seguintes linhas no ficheiro de configuração docker-compose.yml para que devices iOS recebam a notificção.
NTFY_UPSTREAM_BASE_URL: https://ntfy.sh NTFY_WEB_PUSH_FILE: /var/lib/ntfy/webpush.db
# docker exec -it ntfy sh
~ $ ntfy user add nagios user nagios added with role user ~ $ ntfy user add graylog user graylog added with role user ~ $ ntfy user list user superadmin(role: admin, tier: none) - read-write access to all topics (admin role) user graylog (role: user, tier: none) - no topic-specific permissions user nagios (role: user, tier: none) - no topic-specific permissions user * (role: anonymous, tier: none) - no topic-specific permissions - no access to any (other) topics (server config)
Permissões para os utilizadores:
~ $ ntfy access USERNAME TOPIC PERMISSION permission must be one of: read-write, read-only, write-only, or deny (or the aliases: read, ro, write, wo, none) ~ $ ntfy access nagios teste rw granted read-write access to topic teste ~ $ user nagios (role: user, tier: none)
Passo 6: Configurar o Cliente.
Finalmente chegamos a parte mais simples para configurar: A configuração do cliente que é relativamente simples e claro exige que o vosso ntfy esteja exposto na internet. Como tal deverão conseguir com um browser chegar pela internet a vossa instancia de Ntfy.
Se fizeram todos os passos corretamente chegou altura de enviar as vossas notificações. Podem o fazer de duas formas, ou através de comandos push via curl(ou equivalente) ou através do cliente para a vossa plataforma onde estão a executar os comandos.
Para push a sintaxe é algo como:
site="https://ntfy.awsomesite.net/$canal" auth="nagios:XXXXXXX" curl -u "$auth" -H "Title: $titulo" -H "Priority: $prioridade" -d "$mensagem" "$site"
Ou através do cliente nativo (que irá requerer configuração):
ntfy publish $canal "This is a message"
A configuração do cliente é simples, e será algo como isto:
default-host: https://ntfy.awsomesite.net default-user: nagios default-password: XXXXXX subscribe: - topic: nagios
Conclusão
E basicamente é isto. Agora, sempre que quiserem receber notificações push para o vosso telemóvel o NTFY está pronto para o servir.
Desde lembretes para regar as plantas até notificações personalizadas que o vosso homelab está com problemas, esta ferramenta pode realmente tornar a nossa vida digital mais colorida.
Espero que tenham gostado e até a próxima semana. Como sempre, se tiverem alguma duvida ou reparo, sabem onde me encontrar.
Abraço.
Nuno