---
title: "Faça o deploy de ntfy no Pethost com um clique"
description: "Notificações push no celular e no desktop a partir dos seus scripts, por HTTP. Um template para o Pethost: em um ou dois minutos o app está no ar na sua máquina, com HTTPS no próprio endereço e backups noturnos."
---

[← Todos os templates](https://pethost.dev/pt/templates/)

# Faça o deploy de ntfy no Pethost com um clique

Notificações push no celular e no desktop a partir dos seus scripts, por HTTP

[Fazer deploy no Pethost](https://console.pethost.dev/?template=ntfy)

## O que acontece

1. Você entra no Pethost ou cria uma conta, com uma passkey, GitHub ou Google.
2. Ainda não tem máquina? Você escolhe um plano, e nós preparamos uma para você. O link espera no seu navegador até ela ficar pronta.
3. Novo projeto abre no app. Você preenche o que ele pede e clica em Criar projeto: **Senha do administrador**.
4. Em um ou dois minutos o app está no ar no próprio endereço com HTTPS. Os segredos dele são gerados ao acaso, e os dados vão para o backup noturno.
5. É um projeto como qualquer outro: o compose.yaml, o .env, os logs e um terminal ficam no painel, e seu agente pode alterá-lo, fazer rollback ou restaurá-lo.

## Primeiros passos

Entre como admin com a senha de administrador que você informou. Os tópicos ficam fechados para os demais: crie um usuário para um celular ou um script no terminal do serviço ntfy, com ntfy user add e ntfy access. No app ntfy, adicione https://ntfy.sam.pethost.app como servidor. As mensagens ficam guardadas em /var/lib/ntfy.

## O que roda

O template é este compose.yaml e as variáveis que ele grava no .env do projeto. O Pethost roda o arquivo exatamente como está escrito.

```
services:
  ntfy:
    image: binwiederhier/ntfy:v2.30.0
    restart: unless-stopped
    environment:
      NTFY_BASE_URL: ${URL}
      NTFY_LISTEN_HTTP: ":80"
      NTFY_BEHIND_PROXY: "true"
      NTFY_CACHE_FILE: /var/lib/ntfy/cache.db
      NTFY_AUTH_FILE: /var/lib/ntfy/user.db
      # Without a user nobody reads or sends: the address alone does not open a topic.
      NTFY_AUTH_DEFAULT_ACCESS: deny-all
      NTFY_ENABLE_LOGIN: "true"
      NTFY_REQUIRE_LOGIN: "true"
      ADMIN_PASSWORD: ${ADMIN_PASSWORD}
    # ntfy makes its user database at the first start, and only then takes a user: it is started
    # once on a port nobody reaches, the admin is added, and the server proper starts.
    entrypoint:
      - sh
      - -c
      - |
        set -e
        if [ ! -f /var/lib/ntfy/user.db ]; then
          ntfy serve --listen-http 127.0.0.1:81 &
          until wget -q -O /dev/null http://127.0.0.1:81/v1/health; do sleep 1; done
          kill $$!
          wait $$! || true
          NTFY_PASSWORD="$$ADMIN_PASSWORD" ntfy user add --role=admin admin
        fi
        exec ntfy serve
    volumes:
      - data:/var/lib/ntfy
volumes:
  data:
```

[compose.yaml](https://pethost.dev/templates/ntfy/compose.yaml)[Ver no GitHub](https://github.com/pethost-dev/templates/tree/main/ntfy)

Pethost · Stephan Gomer · NIP 1133096755

[Templates](https://pethost.dev/pt/templates/) [Sobre nós](https://pethost.dev/about/) [Blog](https://pethost.dev/blog/) [Termos](https://pethost.dev/terms/) [Privacidade](https://pethost.dev/privacy/) [Reembolsos](https://pethost.dev/refunds/) [API](https://pethost.dev/docs/api/) [CLI](https://pethost.dev/docs/cli/) [Plugin](https://github.com/pethost-dev/plugin) [support@pethost.dev](mailto:support@pethost.dev)
