apps/ntfy/manifest.yaml
Rama main · réplica de lectura del repositorio original.
schema_version: 6
publication_status: published
slug: ntfy
name: ntfy
tagline: Private topic-based notifications for scripts and devices
summary: ntfy delivers messages from scripts, monitoring, and home automations to subscribed browsers and mobile clients. This recipe requires login, denies anonymous topic access, stores messages and attachments locally, and provisions an administrator from a private bcrypt entry.
status: active
editorial_status: experimental
links:
website: https://ntfy.sh/
source: https://github.com/binwiederhier/ntfy
documentation: https://docs.ntfy.sh/
issues: https://github.com/binwiederhier/ntfy/issues
classification:
categories:
- Notifications
tags:
- notifications
- push
- pub-sub
- automation
implementation_languages:
- Go
- JavaScript
alternatives_to:
- Pushover
license:
spdx: Apache-2.0 OR GPL-2.0-only
kind: open_source
restrictions: []
notes: Upstream is dual licensed under Apache-2.0 and GPLv2; choose the applicable option. The recipe has its own MIT license. Third-party client assets retain their upstream terms.
localization:
ui_languages:
- en
- ru
docs_languages:
- en
- ru
clients:
web: true
android: true
ios: true
desktop: false
auth:
oidc: none
saml: none
two_factor: none
proxy_header: false
requirements:
architectures:
- amd64
- arm64
min_cpu_cores: 1
min_ram_mb: 128
recommended_ram_mb: 256
min_disk_gb: 2
gpu:
required: false
supported: false
database: sqlite
dependencies: []
operations:
install_difficulty: 2
installation_levels:
home: supported
vps: supported
reliable: unsupported
maintenance_difficulty: 2
backup_supported: true
restore_tested: true
healthcheck: true
reverse_proxy_required: false
update_complexity: in_place
recipe:
id: ntfy-compose
version: 2
compose_file: compose.yaml
env_example: .env.example
installation: installation.md
troubleshooting: troubleshooting.md
supported_docker_compose: '>=2.24.0'
application_version: v2.34.0
images:
- name: binwiederhier/ntfy
tag_source: env
- name: alpine
tag_source: pinned
tested_at: '2026-10-25'
tested_architectures:
amd64: passed
arm64: not_tested
smoke_test: full
check_history:
- tested_at: "2026-10-25"
application_version: v2.34.0
recipe_version: 2
tested_architectures:
amd64: passed
arm64: not_tested
smoke_test: full
restore_tested: true
- tested_at: "2026-10-24"
application_version: v2.33.1
recipe_version: 1
tested_architectures:
amd64: passed
arm64: not_tested
smoke_test: full
restore_tested: true
license: MIT
smoke_test_limitations:
- On amd64, the smoke verifies live HTTP delivery, blocked anonymous topic reads/writes and signup, exact attachment bytes, a regular account, token scope through topic ACLs, subscriptions/settings, and recovery after deleting the data volume; arm64 was not tested.
- Attachment URLs are bearer links and intentionally remain downloadable without login when the URL is known. The test verifies this behavior; it does not establish private or end-to-end encrypted attachments.
- Browser Web Push, Android/iOS background delivery, Firebase, upstream polling, SMTP, calls, external integrations, TLS proxies, and long-term retention/expiry were not exercised.
security:
public_exposure: supported
default_bind: localhost
privileged: false
host_network: false
docker_socket: false
known_risks:
- 'Attachment URLs are bearer links: anyone who knows one can download the file without logging in, even if the topic denies anonymous access. Encrypt sensitive attachments before uploading and protect logs containing those links.'
- Messages, attachments, accounts, tokens, and bcrypt bootstrap hashes remain on the server without end-to-end encryption. Protect the data volume and encrypt off-server backups.
- The NTFY_AUTH_USERS entry is declarative and overrides stored administrator credentials at startup. Keep it private and consistent during recovery; changing only a saved plaintext password does not rotate this hash.
- Give automations regular users with explicit topic ACLs instead of administrator tokens. A leaked token inherits its owner's permissions; topic names are not passwords.
- Cached messages and attachments expire after seven days. Backup restores original timestamps, not a new retention period. Proxy requests share one rate limit while forwarded-IP trust is disabled.
assessment:
status: warnings
assessed_at: '2026-10-24'
upstream:
release_source: github
repository: binwiederhier/ntfy
last_release_at: '2026-10-24'
last_checked_at: '2026-10-25T15:20:08.621Z'
stars: 35024
stars_checked_at: '2026-10-24T08:36:41Z'
releases_last_year: 25
releases_checked_at: '2026-10-25T15:20:08.621Z'
update_tracking:
releases:
status: current
checked_at: "2026-10-25T15:20:08.621Z"
latest_version: v2.34.0
critical_vulnerabilities:
status: no_findings
checked_at: "2026-10-25T15:21:03.910Z"
critical_count: 0
scanner: trivy
ids: []
breaking_updates:
status: unknown
checked_at: null
compose_changes:
status: not_tracked
checked_at: null
outdated_images:
status: current
checked_at: "2026-10-25T15:20:08.621Z"
images: []
update_policy:
images:
- image: binwiederhier/ntfy
provider: docker_hub
repository: binwiederhier/ntfy
compose: null
content:
description: description.md
logo: assets/logo.svg
screenshots:
- file: assets/notifications.webp
alt: ntfy inbox showing realistic household notifications across three subscribed topics
- file: assets/topic.webp
alt: ntfy backup topic with recovery messages and a sample attachment in dark mode
- file: assets/account.webp
alt: ntfy regular account with separately named automation access tokens
updated_at: '2026-10-25'