Monitoring & Observability

ntfy

Self-hosted push notifications — send alerts from scripts, CI/CD and monitoring tools with a plain HTTP PUT/POST. Under 30 MB RAM, no database.

About ntfy

ntfy (pronounced "notify") is an open-source HTTP-based pub/sub notification service (~32 k GitHub stars, Apache 2.0, v2.26.3). You publish a message to a topic with a plain HTTP PUT or POST request — `curl -d "Build passed" http://your-vps/builds` — and any subscriber (ntfy mobile app, web app, or any HTTP client) receives the notification instantly.

Self-hosting ntfy on a ServOrbit VPS gives you private, unlimited topics with no rate limits, no account creation and no monthly fee. The single Go binary runs in a single Docker container using under 30 MB of RAM with a SQLite message cache — no PostgreSQL, no Redis, no complex setup. Access control, user accounts and token auth can be added incrementally via the ntfy CLI, or kept open for a private VPS where only your scripts connect.

ntfy integrates with every monitoring and automation tool that can make HTTP calls: Uptime Kuma, Beszel, Changedetection.io, Grafana, Home Assistant, GitHub Actions, GitLab CI, AWX, cron jobs, Bash scripts, Python, Go — anywhere you can run curl. A multi-platform mobile app (Android + iOS) and a web UI let you subscribe to any topic and receive push notifications in real time, whether the VPS is on a private network or a public IP.

What gets installed

Ready when the VPS starts

Compatible OS
Ubuntu 24.04
Application
ntfy
Tech stack
DockerGoSQLite
Minimum RAM
512 MB
Minimum CPU
1 vCPU
Default port
8080
Access
root over SSH

Key features

  • Send a notification with a plain HTTP PUT/POST — curl -d "Hello" http://your-vps/your-topic — zero SDK, zero library dependency.
  • Receive notifications on Android, iOS, desktop browser and the ntfy web UI — all subscribe to the same topic via WebSocket or SSE.
  • Notification actions — buttons in the push notification that trigger HTTP callbacks, open URLs or run commands on the subscriber device.
  • Scheduled notifications — delayed delivery (e.g., X-Delay: 30min) to schedule reminders from scripts.
  • Message priority levels (min / low / default / high / urgent) with DND bypass on mobile for urgent alerts.
  • Attachments — include images or files up to 15 MB via the X-Attach header or multipart upload.
  • Access control — add usernames, passwords and per-topic ACLs via ntfy user and ntfy access CLI; publish-only or subscribe-only tokens.
  • Under 30 MB RAM, SQLite, single container — the lightest self-hosted push notification server in its class.

When to use this solution?

CI/CD pipeline alerts

Send a notification when a build passes or fails: curl -d "Build #$BUILD_NUMBER failed" https://your-domain.com/builds. A CI runner is a third-party machine, so it needs your server's public address — attach a domain to the VPS and ntfy answers on it over HTTPS; without one it only listens on the VPS loopback and no runner can reach it. Works natively in GitHub Actions, GitLab CI, AWX, Jenkins — any CI that can run curl. No Slack workspace, no email thread, instant push to your phone the moment the pipeline finishes.

Server monitoring hooks

Uptime Kuma, Beszel, Changedetection.io and Grafana all support ntfy as a notification channel. Point them at your self-hosted ntfy instance and every monitoring alert — service down, disk full, price changed — goes to the same ntfy app on your phone in real time. One notification server, every monitoring tool.

Cron job success/failure notifications

Wrap long-running cron scripts: 0 3 * * * /usr/local/bin/backup.sh && curl -d "Backup OK" http://vps/nightly-backup. Silence means the backup failed; a push notification confirms it ran. Zero cron-monitoring SaaS required — a single curl call at the end of each job is enough.

Guide

Deploy ntfy on your VPS

  1. Order a ServOrbit VPS

    Any plan with 512 MB RAM is more than sufficient — ntfy idles under 30 MB RAM and has no GPU or heavy dependency requirements. Co-locate it alongside Beszel or Uptime Kuma on any existing VPS to build a complete self-hosted alerting stack at no extra cost.

  2. One-click deploy from the marketplace

    Open your ServOrbit dashboard → Marketplace → Monitoring → ntfy → Deploy. Docker pulls binwiederhier/ntfy:latest, starts the ntfy server on port 8080, and the web UI is accessible within 5 seconds. No configuration file required to get started.

  3. Send your first notification

    With a domain attached, publish from any device with curl: curl -d "Hello from my VPS" https://your-domain.com/my-topic, then open the ntfy web UI at https://your-domain.com — no port number in a public URL — and select the my-topic channel to watch your message appear live. Without a domain there is no public address: open an SSH tunnel with ssh -L 8080:127.0.0.1:8080 root@your-vps-ip, publish with curl -d "Hello from my VPS" http://localhost:8080/my-topic and browse to http://localhost:8080, using the port shown on your app's card in the ServOrbit client area (8080 is the catalogue default and another one is allocated if it is already taken). Topics are created on first publish — no prior setup needed.

  4. Subscribe on your phone

    Install the ntfy app (Android: F-Droid or Google Play; iOS: App Store). Tap the + button, enter your server URL and topic name. You will receive push notifications the moment anything publishes to that topic. Topics can be any string — use names like ci-builds, server-alerts or cron-jobs to organise by source.

  5. Connect your monitoring tools

    In Uptime Kuma: Settings → Notifications → ntfy → set Server URL and Topic. Repeat for Beszel, Changedetection.io and Grafana — each points to the same ntfy server with a distinct topic name. All your monitoring services now send to one self-hosted notification hub, routed to your phone in real time.

Frequently asked questions

Questions about ntfy

← Back to Monitoring & ObservabilityAll applications
ntfy is an open-source HTTP pub/sub notification service — you publish a message to a topic with a plain HTTP PUT or POST, and any subscriber receives it as a push notification instantly. Self-hosting on a ServOrbit VPS gives you unlimited private topics with no rate limits, no third-party account and no monthly fee. You own the notification channel completely.

Embed the deploy button

Maintaining a project that uses ntfy? This button lets your readers deploy it on a VPS in one click, without reading Docker documentation.

Deploy ntfy on ServOrbit
Markdown
[![Deploy ntfy on ServOrbit](https://servorbit.com/brand/deploy/button.svg)](https://servorbit.com/vps-cloud?template=ntfy&utm_source=deploy-badge&utm_medium=referral&utm_campaign=ntfy)
HTML
<a href="https://servorbit.com/vps-cloud?template=ntfy&utm_source=deploy-badge&utm_medium=referral&utm_campaign=ntfy"><img src="https://servorbit.com/brand/deploy/button.svg" alt="Deploy ntfy on ServOrbit" height="40"></a>

The button points to a VPS order with the template preselected. The image is served from servorbit.com — nothing to host on your side.

Need help?

Browse our help center and FAQ, or reach our team — callback, WhatsApp or email.

Message us on WhatsAppopens in a new tab