DEV Community

selfhosting.sh
selfhosting.sh

Posted on • Originally published at selfhosting.sh

Pushover

Why Replace Pushover?

Pushover charges $4.99 per platform — buy it once for Android, pay again for iOS, and again for Desktop. A family using both platforms across multiple people quickly racks up $20-30 in license fees for what amounts to an HTTP POST endpoint.

Updated March 2026: Verified with latest Docker images and configurations.

Beyond cost, Pushover routes every notification through its cloud servers. Your home automation alerts, server monitoring pings, and security notifications all pass through a third party. If Pushover's servers go down, your notifications stop. If they change their API or shut down, you lose everything.

Self-hosted alternatives give you unlimited notifications, zero recurring cost, and complete control over your data.

Best Alternatives

ntfy — Best Overall Replacement

ntfy is a simple HTTP-based pub/sub notification service. Send notifications with a single curl command — no client libraries, no SDKs, no API keys required for basic use.

curl -d "Server backup completed" ntfy.sh/your-private-topic
Enter fullscreen mode Exit fullscreen mode

That's it. Any device subscribed to that topic gets the notification instantly. ntfy supports Android (via Google Play or F-Droid with UnifiedPush), iOS, and web browsers.

Why it wins: Zero-config notifications. The API is just HTTP POST to a URL. Every monitoring tool, script, and automation platform can send an HTTP request. ntfy also supports attachments, priorities, action buttons, scheduled delivery, and access control.

Docker setup:

services:
  ntfy:
    image: binwiederhier/ntfy:v2.19.2
    container_name: ntfy
    command: serve
    environment:
      TZ: UTC
    volumes:
      - ./ntfy-cache:/var/cache/ntfy
      - ./ntfy-config:/etc/ntfy
    ports:
      - "8080:80"
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "wget", "-q", "--tries=1", "http://localhost:80/v1/health", "-O", "/dev/null"]
      interval: 60s
      timeout: 10s
      retries: 3
Enter fullscreen mode Exit fullscreen mode

Create a server.yml config file in ./ntfy-config/:

base-url: "https://ntfy.yourdomain.com"
cache-file: "/var/cache/ntfy/cache.db"
cache-duration: "12h"
auth-default-access: "deny-all"
behind-proxy: true
Enter fullscreen mode Exit fullscreen mode

Read our full guide: How to Self-Host ntfy

Gotify — Best for Simple Setups

Gotify is a self-hosted notification server with a clean web UI for managing applications and messages. Each application gets its own token, and messages arrive via WebSocket — no polling, no push service dependency.

Why choose Gotify: If you want a web dashboard to manage notifications with application-level organization, Gotify's UI is more polished than ntfy's. It stores message history in a database you control.

services:
  gotify:
    image: gotify/server:2.9.1
    container_name: gotify
    ports:
      - "8080:80"
    environment:
      GOTIFY_DEFAULTUSER_PASS: "your-strong-password-here"
      TZ: UTC
    volumes:
      - ./gotify-data:/app/data
    restart: unless-stopped
Enter fullscreen mode Exit fullscreen mode

Read our full guide: How to Self-Host Gotify

Apprise — Best for Multi-Platform Routing

Apprise isn't a notification server itself — it's a notification gateway that can route alerts to 100+ services simultaneously. Send one notification and have it delivered to Slack, Discord, email, SMS, Matrix, Telegram, and your self-hosted ntfy or Gotify instance.

Use Apprise when you need to bridge notifications across multiple platforms from a single API call.

Read our full guide: How to Self-Host Apprise

Migration Guide

Pushover uses a simple HTTP POST API. Migrating to ntfy or Gotify is straightforward because they use the same pattern.

Pushover API Call

curl -s --form-string "token=APP_TOKEN" \
  --form-string "user=USER_KEY" \
  --form-string "message=Hello" \
  https://api.pushover.net/1/messages.json
Enter fullscreen mode Exit fullscreen mode

ntfy Equivalent

curl -d "Hello" https://ntfy.yourdomain.com/your-topic
Enter fullscreen mode Exit fullscreen mode

Gotify Equivalent

curl -X POST "https://gotify.yourdomain.com/message?token=APP_TOKEN" \
  -F "title=Alert" -F "message=Hello"
Enter fullscreen mode Exit fullscreen mode

For scripts and automations that use Pushover's API, replace the endpoint URL and adjust the payload format. Most home automation tools (Home Assistant, Uptime Kuma, Grafana) have built-in ntfy and Gotify integrations.

Cost Comparison

Pushover Self-Hosted (ntfy/Gotify)
License cost $4.99/platform (one-time) $0
Family (2 people, 2 platforms each) $19.96 $0
Monthly API cost Free (10K messages/month) $0 (unlimited)
Hosting cost $0 ~$3-5/month electricity (existing server)
Privacy Notifications routed through Pushover servers Stays on your network
Availability Depends on Pushover uptime Depends on your server uptime

What You Give Up

  • Mobile app polish. Pushover's Android and iOS apps are mature and well-designed. ntfy's Android app is solid (and on F-Droid), but its iOS app is newer. Gotify only has a third-party iOS client.
  • Zero maintenance. Pushover just works. Self-hosted servers need Docker updates and occasional troubleshooting.
  • Email gateway. Pushover can receive notifications via a special email address. ntfy supports this too, but it requires additional configuration.
  • Established integrations. Some commercial tools support Pushover natively but not ntfy or Gotify. Most support generic webhooks as a workaround.

FAQ

Does ntfy work with Home Assistant, Uptime Kuma, and other self-hosted tools?

Yes. ntfy has native integrations in Home Assistant, Uptime Kuma, Grafana, Prometheus Alertmanager, and many other self-hosted tools. For tools without built-in ntfy support, any tool that supports webhooks can send to ntfy — it's just an HTTP POST to a URL. Gotify also has growing integration support, though ntfy's is broader due to its simpler API.

Can ntfy send notifications to iOS devices?

Yes. ntfy has an iOS app on the App Store that uses Apple's Push Notification Service for reliable delivery even when the app is in the background. When self-hosting, you need to configure your ntfy server with APNs credentials, or use the ntfy.sh public relay for iOS push delivery while your server handles the backend. Gotify's iOS support is weaker — only third-party clients exist.

How do I secure ntfy so random people can't send me notifications?

Set auth-default-access: "deny-all" in ntfy's server config, then create user accounts with read/write permissions on specific topics. Use strong, random topic names as an additional layer — topics act as passwords when access control is enabled. For sensitive notifications, enable HTTPS via a reverse proxy and use authentication tokens in API headers.

Can I use ntfy or Gotify as a replacement for SMS notifications?

Yes, and it's more reliable. SMS depends on carrier delivery and has length limits. ntfy/Gotify deliver instantly over the internet with no character limits, support images/attachments, and include priority levels for alert severities. Configure critical alerts with Priority: urgent in ntfy to override Do Not Disturb on Android. For redundancy, pair ntfy with Apprise to route critical alerts to both ntfy and an SMS gateway simultaneously.

How much server resources does a self-hosted notification server need?

Minimal. ntfy uses about 30-50 MB RAM and negligible CPU. Gotify uses about 50-80 MB RAM. Both run comfortably on the smallest VPS or a Raspberry Pi alongside other services. Neither requires an external database — ntfy uses SQLite for caching, Gotify uses SQLite by default. A typical homelab generating 50-100 notifications per day uses less than 100 MB of cache storage.

Can I migrate my Pushover integrations to ntfy without breaking everything?

Migrate one integration at a time. Pushover and ntfy both use HTTP POST — the only changes are the endpoint URL and payload format. For scripts: replace curl https://api.pushover.net/1/messages.json with curl -d "message" https://ntfy.yourdomain.com/topic. For Home Assistant: change the notification platform from pushover to ntfy. Run both in parallel during transition until you've verified all integrations work.

Is there a way to route one notification to multiple platforms simultaneously?

Yes — that's exactly what Apprise does. Send one API call to Apprise, and it forwards the notification to ntfy, Gotify, Slack, Discord, email, Telegram, Matrix, and 100+ other services simultaneously. This is useful for critical alerts that need redundancy — if your ntfy server is down, the notification still reaches you via Telegram or email.

Related

Top comments (0)