---
title: "ntfy на Pethost в один клик"
description: "Push-уведомления на телефон и компьютер из ваших скриптов, по HTTP. Шаблон для Pethost: через минуту-две приложение работает на вашей машине — по своему адресу с HTTPS и с ночными бэкапами."
---

[← Все шаблоны](https://pethost.dev/ru/templates/)

# ntfy на Pethost в один клик

Push-уведомления на телефон и компьютер из ваших скриптов, по HTTP

[Задеплоить на Pethost](https://console.pethost.dev/?template=ntfy)

## Что произойдет

1. Вы входите в Pethost или создаете аккаунт — с passkey, через GitHub или Google.
2. Машины еще нет? Вы выбираете тариф, и мы готовим машину для вас. Ссылка ждет в вашем браузере, пока машина не будет готова.
3. Окно «Новый проект» открывается на этом приложении. Вы заполняете то, что оно просит, и нажимаете «Создать проект»: **Пароль администратора**.
4. Через минуту-две приложение работает по своему адресу с HTTPS. Его секреты создаются случайно, а данные попадают в ночной бэкап.
5. Это проект как любой другой: его compose.yaml, .env, логи и терминал — в панели, а ваш агент может его изменить, откатить или восстановить.

## Первые шаги

Войдите как admin с паролем администратора, который вы указали. Для всех остальных топики закрыты: заведите отдельного пользователя для телефона или скрипта в терминале сервиса ntfy, командами ntfy user add и ntfy access. В приложении ntfy добавьте https://ntfy.sam.pethost.app как сервер. Сообщения хранятся в /var/lib/ntfy.

## Что запускается

Шаблон — это этот compose.yaml и переменные, которые он пишет в .env проекта. Pethost запускает файл так, как он написан.

```
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)[Открыть на GitHub](https://github.com/pethost-dev/templates/tree/main/ntfy)

Pethost · Stephan Gomer · NIP 1133096755

[Шаблоны](https://pethost.dev/ru/templates/) [О нас](https://pethost.dev/about/) [Блог](https://pethost.dev/blog/) [Условия](https://pethost.dev/terms/) [Конфиденциальность](https://pethost.dev/privacy/) [Возвраты](https://pethost.dev/refunds/) [API](https://pethost.dev/docs/api/) [CLI](https://pethost.dev/docs/cli/) [Плагин](https://github.com/pethost-dev/plugin) [support@pethost.dev](mailto:support@pethost.dev)
