Monitor your infrastructure.

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.

512 MB RAM 1 vCPU Port 8080 Available

Tech stack

DockerGoSQLite
Minimum RAM512 MB
Minimum CPU1 vCPU
Default port8080
Compatible OSChoice of Linux distributions

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.

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?

1

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.

2

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.

3

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.

Deploy ntfy on your VPS

Guide optimized for ServOrbit Cloud VPS.

01

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.

02

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.

03

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.

04

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.

05

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

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.

Monitor your infrastructure.

Activate ntfy on your infrastructure.

Dedicated Cloud VPS — IPv4 included, European datacenter, support included. Your data never leaves your server.

Recommended configuration: 512 MB RAM · 1 vCPU

Need help?

Browse our help center and FAQ, or reach our team — callback, WhatsApp or email. Support in French, English and Arabic.