Here's a problem you've definitely had: a backup finishes at 3 AM, a deployment completes, a download wraps up, a cron job fails — and you have no idea until you manually check. You could set up email alerts, wrestle with SMTP configs, or wire up some Slack webhook. Or you could do this:
curl -d "Backup complete ✅" ntfy.sh/my-secret-topicThat's it. One line. Your phone buzzes. Done.
What is ntfy?
ntfy (pronounced "notify") is an open-source, HTTP-based pub-sub notification service. You publish messages with a simple PUT or POST request, and any device subscribed to that topic gets the notification instantly. No sign-up required. No API keys. No SDK. Just HTTP.
It has Android and iOS apps, a web UI, and you can self-host the whole thing with a single binary or Docker container.
Why It's Brilliant
Most notification systems are overengineered for what you actually need. You don't want to configure a Telegram bot, set up Pushover credentials, or pipe things through email just to know your script finished. ntfy strips all that away.
The genius is in the simplicity. Topics are just URL paths. ntfy.sh/my-backups is a topic. Subscribe to it on your phone, and anything POSTed there shows up as a push notification. No accounts, no configuration, no tokens (unless you want them).
And because it's just HTTP, it works with everything. curl, wget, Python requests, a bash script, a cron job, Home Assistant, n8n, Grafana — if it can make an HTTP request, it can send you a notification.
Self-Host It (You Should)
The free tier at ntfy.sh works great, but if you're the kind of person reading this blog, you probably want to own it. Here's how:
Docker (recommended)
docker run -d \
--name ntfy \
--restart unless-stopped \
-p 8093:80 \
-v /opt/ntfy/cache:/var/cache/ntfy \
-v /opt/ntfy/etc:/etc/ntfy \
binwiederhier/ntfy serveBare metal (Debian/Ubuntu)
curl -sSf https://install.ntfy.sh | sudo bash
sudo systemctl enable --now ntfyOr just grab the binary
# It's a single Go binary. Download, run, done.
wget https://github.com/binwiederhier/ntfy/releases/latest/download/ntfy_linux_amd64.tar.gz
tar xzf ntfy_linux_amd64.tar.gz
./ntfy serveThat's your own notification server. Put it behind a reverse proxy, add auth if you want, and you've got a private push notification system.
Try This Right Now
Open ntfy.sh/app in your browser (or install the mobile app). Subscribe to a topic — let's say test-justmeandlinux. Now open a terminal and run:
curl -d "Hello from the terminal 🐧" ntfy.sh/test-justmeandlinuxSee that notification? That's the moment you realize how many places you can use this.
Some real-world one-liners
# Alert when a long-running command finishes
rsync -av /data /backup && curl -d "Backup done" ntfy.sh/my-alerts
# Monitor disk space
[ $(df / --output=pcent | tail -1 | tr -d ' %') -gt 90 ] && \
curl -d "Disk usage above 90%!" ntfy.sh/my-alerts
# Send with priority and tags
curl -H "Priority: urgent" -H "Tags: warning" \
-d "Server load critical!" ntfy.sh/my-alertsYou can attach files, set click actions (tap notification → opens a URL), add emojis via tags, schedule delayed delivery, and more. Check the docs — the API is surprisingly rich for something so simple.
Who Is This For?
Homelabbers: Get alerts from your Docker containers, backup scripts, cron jobs, and monitoring tools without setting up a full alerting stack.
Developers: Notify yourself when CI/CD pipelines finish, deployments complete, or tests fail.
Sysadmins: Lightweight alerting that doesn't require Prometheus + Alertmanager + PagerDuty just to know a service went down.
Anyone with a cron job: Seriously, append && curl -d 'done' ntfy.sh/your-topic to any cron entry and never wonder "did that run?" again.
What It Replaces (or Complements)
Pushover — similar concept but ntfy is free and self-hostable. Pushover charges a one-time $5/platform fee.
Gotify — another self-hosted option, but requires an API key and client app. ntfy's "no auth needed" approach is simpler for most use cases.
Email alerts — please stop configuring SMTP for "your backup finished." Use ntfy.
Telegram/Discord bots — work fine, but require bot setup, tokens, chat IDs. ntfy is just a URL.
Honest Downsides
- Topics are public by default. On the free ntfy.sh instance, anyone who guesses your topic name can read your messages. Use long random topic names, or self-host with authentication enabled.
- No end-to-end encryption (yet). Messages are stored briefly on the server. Don't send secrets through ntfy.
- iOS notifications can be delayed. Apple's push notification service adds latency that Android doesn't have. Not ntfy's fault — Apple tax.
- Not a replacement for proper monitoring. If you need alerting rules, escalation policies, and on-call rotation, you still want Prometheus/Grafana/PagerDuty. ntfy is for the simple stuff.
The Bottom Line
ntfy is one of those tools that makes you go "why didn't I know about this sooner?" It's free, open source, self-hostable, and the barrier to entry is literally a single curl command. No sign-up, no SDK, no configuration ceremony.
Once you start using it, you'll put it everywhere. Backup scripts. Cron jobs. CI pipelines. Home automation. It's the duct tape of notifications — simple, reliable, and endlessly useful.
🔗 Project: github.com/binwiederhier/ntfy
🌐 Website: ntfy.sh
📖 Docs: ntfy.sh/docs
📱 Apps: Android · iOS · F-Droid
Compiled by AI. Proofread by caffeine. ☕