ntfy — простой HTTP/Web push для уведомлений: топики, приложение, curl, интеграции со скриптами и мониторингом. На домашнем сервере удобно держать свой инстанс за Traefik с логином и без открытой регистрации.
Нужны рабочий Traefik и сеть traefik_network.
mkdir -p ntfy/{cache,etc,lib}
cd ntfy
etc/server.ymlbase-url: "https://ntfy.(yourdomain)"
listen-http: ":80"
cache-file: "/var/cache/ntfy/cache.db"
attachment-cache-dir: "/var/cache/ntfy/attachments"
auth-file: "/var/lib/ntfy/user.db"
auth-default-access: "deny-all"
behind-proxy: true
enable-login: true
enable-signup: false
web-root: "app"
# опционально: доставка на iOS через upstream ntfy.sh
upstream-base-url: "https://ntfy.sh"
behind-proxy: true обязателен за Traefik. auth-default-access: deny-all + выключенный signup — доступ только существующим пользователям.
docker-compose.ymlservices:
ntfy:
image: binwiederhier/ntfy:v2.31.0
container_name: ntfy
restart: unless-stopped
command: serve
environment:
TZ: Europe/Astrakhan
volumes:
- ./cache:/var/cache/ntfy
- ./etc:/etc/ntfy
- ./lib:/var/lib/ntfy
labels:
- traefik.enable=true
- traefik.http.middlewares.ntfy_https.redirectscheme.scheme=https
- traefik.http.routers.ntfy.entrypoints=web
- traefik.http.routers.ntfy.middlewares=ntfy_https@docker
- traefik.http.routers.ntfy.rule=Host(`ntfy.(yourdomain)`)
- traefik.http.routers.ntfy_https.entrypoints=websecure
- traefik.http.routers.ntfy_https.rule=Host(`ntfy.(yourdomain)`)
- traefik.http.routers.ntfy_https.tls=true
- traefik.http.routers.ntfy_https.tls.certresolver=le
- traefik.http.services.ntfy.loadbalancer.server.port=80
networks:
- traefik_network
networks:
traefik_network:
external: true
⚠️ Замените
(yourdomain)на ваш домен.
docker compose up -d
curl -sf https://ntfy.(yourdomain)/v1/health
Создайте пользователя (пример):
docker exec -it ntfy ntfy user add --role=admin (youuser)
# пароль спросит интерактивно; либо:
# docker exec -it ntfy ntfy user hash
Откройте https://ntfy.(yourdomain), войдите, создайте топик и проверьте:
curl -u '(youuser):(youpassword)' \
-d 'тест с домашнего сервера' \
https://ntfy.(yourdomain)/home-lab
./lib (пользователи) и при необходимости ./cache.curl с basic auth на топик.upstream-base-url нужен в основном для iOS; Android/web работают напрямую с вашим инстансом.Итог: свой push-сервер за HTTPS с логином, без чужих облаков для обычных уведомлений стенда.