LibrePortal
Sponsor
Install

ntfy

Push Notifications

ntfy sends notifications to your phone and computer. Anything that can make a web request, a script, a backup job, Uptime Kuma or LibrePortal itself, can send you a message, and you get it on the ntfy app without an account anywhere.

On this page
  1. At a glance
  2. What it's good for
  3. LibrePortal uses it straight away
  4. Signing in
  5. Getting messages on your phone
  6. Sending your own messages
  7. Works with
  8. Good to know
  9. Addresses and ports
  10. Settings
  11. In its config file
  12. Tools
  13. Works with
  14. Privacy and security
  15. What leaves this server
  16. What LibrePortal turns off
  17. Sources
  18. Under the hood

Good to know before you install

Browser notifications need HTTPS; the phone apps work fine over plain http on your network

At a glance#

What it is
Push Notifications Communication
Where it opens
Web Interface On its own port at http://your-server:port, or ntfy.your-domain once you have a domain
Updates
Automatic A backup is taken first, and it rolls back if the update fails
Backups
Included Part of the daily backup when that's switched on
Copies
As many as you like Run several copies, each with its own data

What it's good for#

Plenty of things on a server have something to tell you: a backup failed, a disk is filling up, a download finished, a website went down. ntfy is the simplest way to get those messages onto your phone. It's built around topics. Something sends a message to a topic, and every phone or browser subscribed to that topic gets it a moment later.

Sending is a single web request, so almost anything can do it. That's what makes it so handy: you don't need an app to support ntfy specially, only to be able to call a web address.

LibrePortal uses it straight away#

Install ntfy and LibrePortal starts using it for its own alerts: failed updates, backups and installs. It makes a private topic with a random name, sends a test message to it, and if you had no other notification channel switched on, it switches ntfy on. The Works with list on ntfy's page shows whether LibrePortal's alerts are going to this server.

To see those messages on your phone you subscribe to that topic, and its name is kept like a password. Notifications has the steps, the command that shows the topic, and what LibrePortal sends.

Signing in#

There's nothing to sign in to. ntfy on LibrePortal has no accounts: anyone who can reach it can send to a topic or read one, as long as they know its name. That's how ntfy is designed to be used, and it's why the topic name is the thing to protect.

Why topic names matter

A topic called backups is a topic anyone could guess, read and post fake messages to. Use long random names for anything you care about, like the lp- topic LibrePortal made. openssl rand -hex 8 on the server makes a good one.

ntfy's port starts out reachable by anyone who can reach your server. If you only need it at home and on your own devices, make it private and use the LibrePortal VPN when you're out. If it's on the internet with a domain, remember that strangers can use it to send notifications too.

Getting messages on your phone#

ntfy has an app for Android, on Google Play and F-Droid, and one for iPhone.

  1. Install the app and open its settings.
  2. Add your server. Use the address ntfy opens at from its page in LibrePortal: https://ntfy.example.com with a domain, or http://192.168.1.50: and the port number without one. Plain http is fine for the phone apps.
  3. Subscribe to a topic by typing its name. Messages sent to it from now on appear as notifications, and recent ones already waiting on the server show up too.

The phone has to be able to reach your server to hear anything, so a phone that leaves home needs a domain, or the VPN switched on.

On Android, the app keeps a connection open to your own server so messages arrive immediately. That's why it shows a permanent notification of its own; Android requires one for an app that stays connected.

iPhones are different. Apple only lets apps be woken up through its own push service, which ntfy reaches through the public ntfy.sh server. LibrePortal's ntfy isn't set up to pass messages on that way, so on an iPhone new messages can take a long time to appear unless you open the app.

To check: decide whether LibrePortal should set upstream-base-url (https://ntfy.sh) so iPhone notifications arrive instantly, and document it here if it does

You can also subscribe in a browser, on ntfy's own web page. Browsers only allow notifications from HTTPS pages, so that needs a domain with HTTPS.

Sending your own messages#

Sending a message is one command. From the server or any computer that can reach it:

curl -d "The backup disk is 90% full" http://192.168.1.50:8123/lp-3f9a2c7d41b8e605

Use your own address, port and topic. Headers add a title, a priority and little tag emoji:

curl -H "Title: Backup disk" -H "Priority: high" -H "Tags: warning" \
  -d "The backup disk is 90% full" http://192.168.1.50:8123/lp-3f9a2c7d41b8e605

Put a line like that at the end of a script, in a cron job, or anywhere else you'd like a tap on the shoulder.

Works with#

  • LibrePortal's own alerts are set up for you, as above.
  • Uptime Kuma has ntfy built in as a notification type. Add one under its notification settings with your ntfy address and a topic, tick it on the monitors you care about, and you'll hear when an app goes down.
  • Node-RED flows can send notifications with an ordinary http request node posting to http://ntfy-service:80/<topic>, over LibrePortal's own network.

Good to know#

  • Updates are automatic, and LibrePortal follows ntfy's latest release. A backup is taken first.
  • Messages are kept for a while on the server, so a phone that was off catches up when it reconnects. They're not an archive.
  • Backups include ntfy's data folder. Messages waiting in its cache aren't worth backing up and aren't included.
  • You can run several copies, but LibrePortal only sets its own alerts up on the first one. Which of several ntfy servers it should use is your choice.

Addresses and ports#

ntfy has one port. LibrePortal picks a free port number for each when you install, so yours will differ from anyone else's. The Config tab's Network section shows them, and the app's Open button uses the right one. "Anyone" means it's reachable from wherever your server is reachable; you can make it private later.

What it isWho can reach itWith a domain
Web Interface Anyone ntfy.your-domain

Settings#

In its config file#

ntfy's own settings aren't on the Config tab yet. They live in the app's config file, described here so you know they exist. How to change them.

SettingWhat it doesStarts as
Name
CFG_NTFY_DISPLAY_NAME
What this app is called on your dashboards. Leave empty to use its usual name Empty
Show on the LibrePortal Dashboard
CFG_NTFY_SHOW_ON_DASHBOARD
Whether this app gets a shortcut on the front page of the LibrePortal WebUI, separate from any Dashy dashboard
Choices: true, false
true
Detailed logs
CFG_NTFY_VERBOSE_LOGS
Whether ntfy writes its normal, chattier logs, including who connected, instead of only warnings and errors.
Choices: true, false
false
Debug logging for 24 hours
CFG_NTFY_DEBUG_LOGS
Turn on to see everything ntfy is doing while you look for a problem; it turns itself off after 24 hours.
Choices: true, false
false
Access Without an Account
CFG_NTFY_DEFAULT_ACCESS
What someone without an ntfy account may do with a topic. Phone notifications (up…) and LibrePortal's alerts (lp-…) work either way
Choices: read-write, read-only, write-only, deny-all
read-write
Open Topics
CFG_NTFY_OPEN_PREFIXES
Topic prefixes anyone may use without an account, comma-separated, e.g. app-. Only for apps whose topics have long random names after the prefix: the name is what keeps them private Empty

Tools#

ntfy's Tools tab has 1 button for jobs you'd otherwise need a terminal for. Each one runs as a task, so you can watch it on the Tasks page and read what it did. More about Tools.

Open Topics

Topics other apps post to without an ntfy account, kept open whoever else needs one.

Asks for: Topic prefixes (optional)

Works with#

These are the other apps ntfy knows how to work with. Once it's installed, its page shows the same list with whether each one is connected. How this works.

  • Email: Can forward a notification by email through your mail server, from an account of its own. Needs the mail server to have a real certificate. LibrePortal sets this up by itself when both are installed.
  • LibrePortal's own alerts: Carries LibrePortal's own alerts to your phone. LibrePortal sets this up by itself when both are installed.
  • Phone notifications (UnifiedPush): Carries phone notifications for apps on this server, without Google. There's nothing to switch on; LibrePortal shows whether it can work and lets you check.
  • Grafana: Shows dashboards for the apps that have one. works with every app
  • Home Assistant: Automations can send notifications to your phone.
  • LibreMoney: Tells your phone when someone changes the ledger, without saying what.
  • Matrix: Messages and calls reach Android phones through ntfy, without Google.
  • Nextcloud: Talk's messages and calls reach Android phones through ntfy, without Google.
  • Node-RED: Flows can send notifications to your phone through ntfy.
  • Prometheus: Collects metrics from the apps that can export them. works with every app
  • Uptime Kuma: Watches your apps and shows when one goes down. works with every app
  • Uptime Kuma: Tells you on your phone when an app goes down.

Privacy and security#

All clear ntfy delivers push notifications from your server to your phone and tells no one else. Only iPhone instant delivery would need it to ping ntfy.sh, and that is off.

What leaves this server#

Nothing leaves this server on its own.

What LibrePortal turns off#

Nothing needed switching off.

Licence: Apache-2.0 / GPL-2.0 (dual). Audited: 21 October 2026. See the privacy of every app and the Promise.

Sources#

Under the hood#

  • It runs this image: binwiederhier/ntfy:v2.32.0@sha256:59250e1d8be2ee2186c4560322f625faef22ace380331f05b63f8842dbd62602.
  • It can sit behind Authelia's sign-in once Authelia is installed.
  • Its own project and documentation: github.com/binwiederhier/ntfy

Ports, settings, tools and connections on this page are read from LibrePortal v0.10.97's app catalogue each time the guide is built.

Next steps