chore(deps): update docker.io/binwiederhier/ntfy docker tag to v2.33.1 #22
Open
renovate-bot
wants to merge 1 commit from
renovate/docker.io-binwiederhier-ntfy-2.x into main
pull from: renovate/docker.io-binwiederhier-ntfy-2.x
merge into: ops:main
ops:main
ops:renovate/gitlab-19.x
ops:renovate/node-feature-discovery-0.x
ops:renovate/ghcr.io-mogenius-helm-charts-renovate-operator-5.x
ops:renovate/ghcr.io-scanopy-scanopy-server-0.x
ops:renovate/ghcr.io-diced-zipline-4.x
ops:renovate/ghcr.io-prometheus-community-charts-prometheus-operator-crds-32.x
ops:renovate/ghcr.io-rommapp-romm-5.x
ops:renovate/ghcr.io-paperless-ngx-paperless-ngx-3.x
ops:renovate/admonstrator-paperless-ai-next-2026.x
ops:renovate/ghcr.io-perfectra1n-kubesearch-mcp-1.x
ops:renovate/registry.erwanleboucher.dev-eleboucher-charts-memini-0.x
ops:renovate/ghcr.io-prymitive-karma-0.x
ops:renovate/sentry-34.x
ops:renovate/loki-7.x
ops:renovate/ghcr.io-stacklok-toolhive-toolhive-operator-crds-0.x
ops:renovate/ghcr.io-stacklok-toolhive-toolhive-operator-0.x
ops:renovate/ghcr.io-mogenius-helm-charts-renovate-operator-6.x
ops:renovate/docker.io-healthchecks-healthchecks-5.x
ops:renovate/ghcr.io-atuinsh-atuin-18.x
ops:renovate/uv_build-0.x
ops:renovate/ghcr.io-home-operations-kromgo-0.x
ops:renovate/ghcr.io-home-operations-charts-echo-0.x
ops:renovate/ghcr.io-siderolabs-installer-1.13.x
ops:renovate/gitlab-9.x
ops:renovate/ghcr.io-ellite-wallos-5.x
ops:renovate/gitlab-10.x
ops:renovate/tailscale-operator-1.x
ops:renovate/ghcr.io-goauthentik-server-2026.x
ops:renovate/kube-prometheus-stack-92.x
ops:renovate/containers.podman-1.x
ops:renovate/ghcr.io-helmforgedev-helm-kubernetes-mcp-server-1.x
ops:renovate/ghcr.io-gethomepage-homepage-2.x
ops:renovate/ghcr.io-sysadminsmedia-homebox-0.x
ops:renovate/codefloe.com-crowci-crow-2.x
ops:renovate/ghcr.io-spegel-org-helm-charts-spegel-0.x
ops:renovate/external-secrets-2.x
ops:renovate/kube-prometheus-stack-87.x
ops:renovate/code.forgejo.org-forgejo-helm-forgejo-17.x
ops:renovate/forgejo-1.x
ops:renovate/cilium-1.x
ops:renovate/gitlab-agent-2.x
ops:renovate/python-3.x
ops:renovate/registry.gitlab.com-fmd-foss-fmd-server-0.x
ops:renovate/ghcr.io-gotson-komga-1.x
ops:renovate/open-webui-17.x
ops:renovate/ghcr.io-archivebox-archivebox-0.x
ops:renovate/ghcr.io-muety-wakapi-2.x
ops:renovate/ghcr.io-controlplaneio-fluxcd-charts-flux-operator-0.x
ops:renovate/quay.io-oauth2-proxy-oauth2-proxy-7.x
ops:renovate/external-dns-1.x
ops:renovate/plugin-barman-cloud-0.x
ops:renovate/reloader-2.x
ops:renovate/longhorn-1.x
ops:renovate/cloudnative-pg-0.x
ops:renovate/nvidia-device-plugin-0.x
ops:renovate/goldilocks-11.x
ops:renovate/quay.io-jetstack-charts-trust-manager-0.x
ops:renovate/lscr.io-linuxserver-faster-whisper-3.x
ops:renovate/goldilocks-10.x
ops:renovate/ghcr.io-sissbruecker-linkding-1.x
ops:renovate/ghcr.io-navidrome-navidrome-0.x
ops:renovate/authentik-2026.x
ops:renovate/random-3.x
ops:renovate/mirror.gcr.io-envoyproxy-gateway-helm-1.x
ops:renovate/johly-airtrail-3.x
ops:renovate/nvidia-gpu-exporter-2.x
ops:renovate/metrics-server-3.x
ops:renovate/altinity-clickhouse-operator-0.x
ops:renovate/ghcr.io-usememos-memos-0.x
ops:renovate/ghcr.io-siderolabs-kubelet-1.x
ops:renovate/ghcr.io-remsky-kokoro-fastapi-gpu-0.x
ops:renovate/kubernetes.core-6.x
ops:renovate/quay.io-jetstack-charts-cert-manager-1.x
ops:renovate/ghcr.io-siderolabs-kubelet-1.34.x
ops:renovate/ghcr.io-siderolabs-charts-talos-cloud-controller-manager-0.x
ops:renovate/crowci-0.x-lockfile
ops:renovate/quay.io-thanos-thanos-0.x
ops:renovate/open-webui-15.x
ops:renovate/mail-5.x
ops:renovate/cert-manager-webhook-pdns-3.x
ops:renovate/bluesky-pds-0.x
ops:renovate/promtail-6.x
ops:renovate/loki-6.x
ops:renovate/github.com-imusmanmalik-cert-manager-mixin-1.x
ops:renovate/lock-file-maintenance
ops:renovate/bitwarden-secrets-1.x
ops:renovate/ruby-4.x
ops:renovate/plausible-analytics-3.x
ops:renovate/sops-1.x
ops:renovate/plausible-analytics-2.x
ops:renovate/ghcr.io-gethomepage-homepage-1.x
ops:renovate/ingress-nginx-4.x
ops:renovate/ghcr.io-rommapp-romm-4.x
ops:renovate/gabehf-koito-0.x
ops:renovate/willshersystems.sshd-0.x
ops:renovate/ghcr.io-prometheus-community-charts-prometheus-operator-crds-30.x
No reviewers
Labels
Clear labels
No items
No labels
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set.
Reference
ops/homelab!22
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "renovate/docker.io-binwiederhier-ntfy-2.x"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
This PR contains the following updates:
v2.17.0→v2.33.1Release Notes
binwiederhier/ntfy (docker.io/binwiederhier/ntfy)
v2.33.1Compare Source
This release builds ntfy with Go 1.27.3 (security fixes, including rejecting the compromised eMudhra intermediate CAs), and adds monitoring for the experimental cluster: each node's view of its peers, per-peer and database connection pool metrics.
The v2.33.0 release had an issue that made it crash on older CPU architectures. The v2.33.1 release fixes that (see #2092).
Features:
ntfy cluster status,/v1/cluster/statuson the cluster listener, and per-peer metrics, so a link that only works in one direction is visible (experimental clustering, see cluster status)ntfy_db_pool_*: connections in use, and queries that waited for a free connection, per pool), to sizepool_max_conns(see PostgreSQL)Security:
crypto/tls,net/http,html/templateand others) and 1.27.3 (crypto/x509: certificate chains through the compromised eMudhra intermediate CAs are rejected)Bug fixes + maintenance:
v2.33.0Compare Source
v2.32.0Compare Source
This release prepares ntfy.sh for a passive cluster node: jobs that write to the shared database run only on the cluster leader, and each database store now records the oldest schema version it works with. Streaming subscriptions also tell proxies not to buffer them.
Features:
Incremental: ?1header (RFC 10036) on streaming subscriptions, so proxies that support it forward messages without buffering (#2056, thanks to @bt90 for the suggestion)Bug fixes + maintenance:
?tpl=<name>) ignoring the priority sent with the request when the file has noprioritykey (#2045, thanks to @6801318d8d for reporting)auth-usersthrough the admin API (#2062, thanks to @daniloamiranda for reporting)v2.31.1Compare Source
This release fixes the database load that made us roll back ntfy.sh from v2.31.0: reconnecting with
since=<message ID>read every message of the topic from the database. A new index makes these reconnects cheap, cheaper than in v2.30.0. It also lets ntfy start with a warning on a newer database schema, so later rollbacks need no manual step.Bug fixes + maintenance:
since=<message ID>reading every message of the topic from the database, which overloaded ntfy.sh's database right after the v2.31.0 upgrade; the message cache gets a new index: (topic, published, id) on PostgreSQL, (topic, published, time) on SQLite (#2058)Upgrade notes:
since=<message ID>reconnects). Downgrading to v2.31.0 or earlier afterwards requires setting the version back by hand first:UPDATE schema_version SET version = 16 WHERE store = 'message'on PostgreSQL, orUPDATE schemaVersion SET version = 16 WHERE id = 1in the SQLitecache-file. From this release on, a newer schema only logs a warning (#2059)v2.31.0Compare Source
This release fixes messages that could be lost when a client reconnects, e.g. a phone switching networks, right when messages are published: every server now reads newly written messages from its message cache once a second and sends them to the subscribers that missed them. In load tests with server restarts and crashes, this brought lost messages down from 465 to 2 out of about 615,000. It also adds a
/v1/readyendpoint for load balancers, and continues the experimental clustering work with node roles.Features:
/v1/readyfor load balancers, and the node's role to/v1/health; with clustering, a node with no other active node leads right away instead of after a one-minute hold-off (#2050)experimental-cluster-roleto run apassivenode that never leads and never takes over another node's subscribers, e.g. one that is not behind the load balancer (#2049)Bug fixes + maintenance:
Upgrade notes:
since=<message ID>now also returns the messages published in the same second as that message, so none are skipped when several servers write out of order. The ntfy apps and web app drop these by ID; your own scripts may see a few duplicates (#2040)UPDATE schema_version SET version = 1 WHERE store = 'node_registry'(#2049)v2.30.0Compare Source
This release links attachments in email notifications, adds SMTP LOGIN auth (e.g. for OVH and Outlook), and fixes the PostgreSQL memory growth that came with v2.29.0. It also ships the first experimental version of clustering: several ntfy servers sharing one PostgreSQL database. Clustering is not ready for production yet.
Features:
experimental-cluster-listen; this is not ready for production yet (#2005, #2008, #2012, #2013)Bug fixes + maintenance:
Dockerfile-buildfailing to build: use Go 1.26 and add theclusterpackage (#1962, thanks to @ElectricTea for reporting)org.opencontainers.image.versionlabel on release Docker images (#1921/#1936, thanks to @Plazzmex for reporting and @w1977-0 for the fix)attachment-expiry-durationis longer thancache-duration, since attachments never outlive their message (#1053, thanks to @ctschach for reporting)INSERTfor any batch size (#2011)ntfy publishfailing with "invalid header field value" when sending a multi-line message or title along with a file (#1808, thanks to @quantenzitrone for reporting)Documentation:
v2.29.0Compare Source
This release fixes cache writes under load. On ntfy.sh, hourly cron bursts overwhelmed the batch writer: messages took up to 40s to reach the database (so
poll=1andsince=missed them) and publishes stalled. Batches are now written in one statement, publishes no longer wait on the writer, and PostgreSQL connections stay idle instead of reconnecting.Features:
X-Timezoneheader,timezonequery param or JSON field; the web app sends the browser's timezone (#1967/#1924, thanks @beemines)At: 2026-12-10T11:00:00-05:00(#1931, thanks @ALPHACOM-Brehmer)Bug fixes + maintenance:
INSERTper batch, non-blocking publishes (100-batch buffer), and no scheduled-message lookup unless a sequence ID is set (#2006)ntfy servehandlesSIGTERM/SIGINTgracefullypool_max_idle_connsnow defaults topool_max_conns, so PostgreSQL connections are reused instead of re-openedsince=<message-id>replaying a topic's full history when the ID wasn't on the read replica yet; it's now resolved on the primarymessages_cachedinstead of aCOUNT(*)every minuteContent-Typehas parameters or is uppercase (#1995, thanks @cipherprofessor)0001-01-01end time and merged start/end lines (#1946/#1940, thanks @justadityaraj and @deferred)time/tzdata) so named time zones work on ARM Docker images and minimal runtimesv2.28.0Compare Source
This is a hardening release. A single topic on ntfy.sh was polled continuously with
poll=1and nosincecursor, which replays a topic's entire cache on every request. The changes below bound what one replay can cost, close two fields that had no size limit at all, and fix an ordering bug found while digging into it.Bug fixes + maintenance:
/topic1,topic2/json?poll=1, #1297)40057and40058). Neither field had a size limit before, unlike the message body; on ntfy.sh the 99.9th percentile is 212 bytes for titles and 244 for tagssincecursor returns a topic's entire cache, which was previously unbounded and could reach tens of megabytes on a busy topic, so one request could allocate that much on the server. The newest messages that fit are kept and a truncated response carries anX-Messages-Truncated: 1headervisitor-attachment-daily-bandwidth-limitnow also covers messages replayed from the message cache by poll requests, not just attachment traffic. A poll without asincecursor returns a topic's entire cache, so a topic that is cheap to fill can be re-read for many times its own size; polls beyond the budget are rejected with HTTP 429 (error code 42905) before anything is written. Note that heavy pollers now consume the same budget as attachment downloads, so operators serving both may want to raise the limitv2.27.0Compare Source
This release lets you sign in with your verified email address instead of your username, which should help if you ever signed up with an email and then forgot which username you picked. It also hardens the message templating engine against a few ways a small template could eat a lot of memory, and it drops the "experimental" label from PostgreSQL support, which has been running ntfy.sh for a while now.
I also did a bunch of refactoring in, mostly in preparation for being able to cluster ntfy nodes and scale the service horizontally. It'll be a while until then, ... baby steps.
Security:
Template: yes) to 32 KB, limitprintfwidths and precisions to below 1000, and limitindent/nindentto 100 spaces, preventing excessive memory use from a single small templateFeatures:
Bug fixes + maintenance:
twiliopackagemetricspackageuser_phonetable in the SQLite user database referencing a dropped table after the v2.14 schema migration; repaired automatically by a new migrationv2.26.3Compare Source
This is a hotfix release, useful pretty much only for ntfy.sh. It was adds the ability to track abusive IPs mor efficiently, reducing the load on the IP banning services and preventing them from falling behind and leaving abusers unbanned for too long. It works by tracking HTTP errors, and writing out a ban file that fail2ban can read and ban offenders instantly. See ban-feed for details.
Features:
ban-file, ntfy tracks a weighted strike budget per visitor and appends abusive IPs to a file that fail2ban can tail and ban on sight (ban-file,ban-window,ban-threshold,ban-weights; see ban-feed)v2.26.0Compare Source
This release hardens message templates, which are now executed with a hard-capped execution timeout. This closes
a denial-of-service hole.
On the web app side, it adds configurable date and time formats, a smoother loading and page-transition experience,
and a fix that strips unsafe URL protocols from rendered Markdown.
Security:
Template: yes), #1826, thanks to @alanturing881 for reporting)Features:
Bug fixes + maintenance:
GET /accountnow reads from the primary database instead of a read replica, so the account view no longer shows stale data right after a change when replicas lag behindjavascript:,data:, ...) from links and images in Markdown-rendered messages, so they no longer trigger an uncaught "React has blocked a javascript: URL" error (thanks to @jvoisin for reporting)v2.25.0Compare Source
This release adds password reset via email, and reworks email verification to use durable, link-based magic links (replacing the old in-memory 6-digit codes). Email stays optional at signup; a user can reset their password only once they have a verified "primary" (recovery)email.
All of this work is probably not useful for self-hosters, but it hopefully will be useful for me, since I do have to reset accounts on a regular basis.
Security issues:
crypto/rand) instead of a clock-seeded PRNGFeatures:
ntfy user reset-passCLI command for adminsX-Email: yestarget) with verified/unverified state in the account UIBug fixes + maintenance:
X-Email: yes(alsotrue/1) now sends to your primary verified email regardless of thesmtp-sender-verifysetting (previously it was rejected unless verification was enabled); it requires being logged in with a verified addressst_...) so cross-device subscription sync works underauth-default-access: deny-all(#733, #1795, thanks to @lmorchard for the contribution)<,>, and&as\u003c/\u003e/\u0026in JSON responses (#1511, #1512, thanks to @wunter8 for the contribution)v2.24.0Compare Source
The main feature for this release is an in-memory ACL cache (
auth-access-cache) that can help bring down the read load on the production database. The topic authorization queries are consistently the highest ranking queries on the database, so this will help quite a bit. The current database load is quite low, but I'm expecting it to increase as more users join and use ntfy.Security issues:
secretno longer also matches a request forSECRET. SQLite'sLIKEis case-insensitive for ASCII by default. PostgreSQL was unaffected. It's honestly incredible that this issue remained undetected for so long, especially while ntfy.sh was running on SQLite (it now runs on PostgreSQL).Features:
auth-access-cache) that serves topic authorization without a database round-trip; off by default, intended for high-volume serversntfy --versionflag to the CLI (#1722, #1748, thanks to @sskender for the contribution, and @Saucy9607 for reporting)Bug fixes + maintenance:
relattribute on auto-linked notification URLs sonoreferrer/noopenerare actually applied (#1720, thanks to @dmitrylyzo for the contribution)ntfy.serviceunit (#1467, thanks to @Velocifyer for the contribution)cmdpackage build on macOS (darwin) so the server compiles from source (#1631, #1696, thanks to @ShipItAndPray for the contribution, and @XYenon for reporting)v2.23.0Compare Source
Features:
visitor-topic-creation-limit-burst/visitor-topic-creation-limit-replenish, defaults 100 burst / 1m replenish) to mitigate topic-enumeration / squatting attacks that inflate the in-memory topic mapBug fixes + maintenance:
stacktrace-js,stacktrace-gps,humanize-duration, andjs-base64from the web app to reduce dependency and security footprintv2.22.0Compare Source
Bug fixes + maintenance:
v2.21.0Compare Source
This release adds the ability to verify email addresses using the
smtp-sender-verifyflag. This is a change that is required because ntfy.sh was used to send unsolicited emails and the AWS SES account was suspended. Going forward, ntfy.sh won't be able to send emails unless the email address was verified ahead of time.Features:
smtp-sender-verifyconfig flag, allowing server admins to require emailaddress verification before sending email notifications (#1681)
v2.20.1Compare Source
This is a small bugfix release that only affects high volume S3 backends that struggle with HTTP/2.
Bug fixes + maintenance:
disable_http2=trueS3 URL option to work around HTTP/2 stream errors with DigitalOcean Spaces and other S3-compatible providers (#1678/#1679)v2.20.0Compare Source
This release is another step towards making it possible to help scale ntfy up and out 🔥! With this release, you can store attachments in an S3-compatible object store as an alterative to the directory. See attachment store for details.
Features:
attachment-cache-dirconfig option (#1656/#1672)Bug fixes + maintenance:
v2.19.2Compare Source
This is another small bugfix release for PostgreSQL, avoiding races between primary and read replica, as well as to further reduce primary load.
Bug fixes + maintenance:
v2.19.1Compare Source
This is a bugfix release to avoid PostgreSQL insert failures due to invalid UTF-8 messages. It also fixes
database-urlvalidation incorrectly rejectingpostgresql://connection strings.Bug fixes + maintenance:
database-urlvalidation rejectingpostgresql://connection strings (#1657/#1658)v2.19.0Compare Source
This is a fast-follow release that enables Postgres read replica support.
To offload read-heavy queries from the primary database, you can optionally configure one or more read replicas using the
database-replica-urlsoption. When configured, non-critical read-only queries (e.g. fetching messages, checking access permissions, etc) are distributed across the replicas using round-robin, while all writes and correctness-critical reads continue to go to the primary. If a replica becomes unhealthy, ntfy automatically falls back to the primary until the replica recovers.Features:
database-replica-urlsconfig option (#1648)Bug fixes + maintenance:
v2.18.0Compare Source
This is the biggest release I've ever done on the server. It's 14,997 added lines of code, and 10,202 lines removed, all from one pull request that adds PostgreSQL support.
The code was written by Cursor and Claude, but reviewed and heavily tested over 2-3 weeks by me. I created comparison documents, went through all queries multiple times and reviewed the logic over and over again. I also did load tests and manual regression tests, which took lots of evenings.
ntfy.sh was successfully upgraded to 2.18.0 (though not with Postgres backend yet, as per the rollout plan).
I'm kindly asking the community to test the Postgres support and report back to me if things are working (or not working). There is a one-off migration tool (entirely written by AI) that you can use to migrate.
Features:
database-urlconfig option (#1114/#1619, thanks to @brettinternet for reporting)Bug fixes + maintenance:
<br>line breaks in HTML-only emails received via SMTP (#690, #1620, thanks to @uzkikh for the fix and to @teastrainer for reporting)Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate.
29342b4645to1ec7e0de29Update docker.io/binwiederhier/ntfy Docker tag to v2.25.0to Update docker.io/binwiederhier/ntfy Docker tag to v2.26.0Update docker.io/binwiederhier/ntfy Docker tag to v2.26.0to chore(deps): update docker.io/binwiederhier/ntfy docker tag to v2.26.01ec7e0de29to0e7bf27b63chore(deps): update docker.io/binwiederhier/ntfy docker tag to v2.26.0to chore(deps): update docker.io/binwiederhier/ntfy docker tag to v2.26.3chore(deps): update docker.io/binwiederhier/ntfy docker tag to v2.26.3to Update docker.io/binwiederhier/ntfy Docker tag to v2.26.3Update docker.io/binwiederhier/ntfy Docker tag to v2.26.3to chore(deps): update docker.io/binwiederhier/ntfy docker tag to v2.26.3chore(deps): update docker.io/binwiederhier/ntfy docker tag to v2.26.3to chore(deps): update docker.io/binwiederhier/ntfy docker tag to v2.27.0e8ff908420to9095c44202chore(deps): update docker.io/binwiederhier/ntfy docker tag to v2.27.0to chore(deps): update docker.io/binwiederhier/ntfy docker tag to v2.28.09095c44202to8900ac780cchore(deps): update docker.io/binwiederhier/ntfy docker tag to v2.28.0to chore(deps): update docker.io/binwiederhier/ntfy docker tag to v2.29.08900ac780c52db22b81fchore(deps): update docker.io/binwiederhier/ntfy docker tag to v2.29.0to chore(deps): update docker.io/binwiederhier/ntfy docker tag to v2.30.052db22b81fca9c56c6e2chore(deps): update docker.io/binwiederhier/ntfy docker tag to v2.30.0to chore(deps): update docker.io/binwiederhier/ntfy docker tag to v2.31.0ca9c56c6e2ddaec1a8eachore(deps): update docker.io/binwiederhier/ntfy docker tag to v2.31.0to chore(deps): update docker.io/binwiederhier/ntfy docker tag to v2.31.1ddaec1a8ea35ec5fec44chore(deps): update docker.io/binwiederhier/ntfy docker tag to v2.31.1to chore(deps): update docker.io/binwiederhier/ntfy docker tag to v2.32.035ec5fec44e6dbc89c3echore(deps): update docker.io/binwiederhier/ntfy docker tag to v2.32.0to chore(deps): update docker.io/binwiederhier/ntfy docker tag to v2.33.0e6dbc89c3e3dd67ed178chore(deps): update docker.io/binwiederhier/ntfy docker tag to v2.33.0to chore(deps): update docker.io/binwiederhier/ntfy docker tag to v2.33.1View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.Merge
Merge the changes and update on Forgejo.