Gotify vs Apprise: Which Should You Self-Host?
Quick Verdict
Gotify is a push notification server with its own Android app — messages go from your server to your phone. Apprise is a notification router that forwards messages to 100+ services (Slack, Discord, email, etc.). Use Gotify when you want direct push notifications to Android devices with a self-hosted backend. Use Apprise when you need to broadcast alerts across multiple platforms.
Updated March 2026: Verified with latest Docker images and configurations.
Overview
Gotify is a self-hosted push notification server written in Go. It provides a web UI for managing messages, a REST API for sending them, and an Android app for receiving them. Simple architecture: server stores messages, clients poll via WebSocket.
Apprise is a notification abstraction layer that normalizes sending messages to over 100 notification services. Instead of learning each service’s API, you configure target URLs and Apprise handles the rest.
Feature Comparison
| Feature | Gotify | Apprise |
|---|---|---|
| Architecture | Push notification server | Notification router |
| Android app | Yes (F-Droid + GitHub) | No — uses target services’ apps |
| iOS app | No (WebSocket limitation) | No — uses target services’ apps |
| Supported targets | Own client apps + WebSocket | 100+ services |
| Web UI | Yes (receive + manage messages) | Yes (API docs + send UI) |
| Message priority | 10 levels (0-10) | 3 levels |
| Plugins | Yes (Go plugins for custom actions) | No (but extensible via URL schemes) |
| User management | Built-in (multi-user) | API key or open access |
| Message persistence | Yes (stored in database) | No (fire-and-forget) |
| Attachments | Yes | Limited (depends on target) |
| API style | REST (token auth) | REST (URL-based target config) |
| Docker image size | ~20 MB | ~100 MB |
| RAM usage | 20-40 MB | 80-150 MB |
| License | MIT | BSD 2-Clause |
Installation Complexity
Gotify deploys with a single container — no dependencies:
services:
gotify:
image: gotify/server:2.9.1
container_name: gotify
restart: unless-stopped
ports:
- "8080:80"
volumes:
- gotify_data:/app/data
environment:
- GOTIFY_DEFAULTUSER_NAME=admin
- GOTIFY_DEFAULTUSER_PASS=${ADMIN_PASSWORD}
Apprise also deploys easily but needs target configuration:
services:
apprise:
image: caronc/apprise:v1.9.1
container_name: apprise
restart: unless-stopped
ports:
- "8000:8000"
volumes:
- apprise_config:/config
environment:
- APPRISE_STATEFUL_MODE=simple
Both are straightforward. Gotify is immediately useful after deployment (create a token, send messages). Apprise needs target URLs configured before it does anything.
Performance and Resource Usage
| Metric | Gotify | Apprise |
|---|---|---|
| RAM idle | 20-40 MB | 80-150 MB |
| CPU | Minimal (Go) | Low (Python) |
| Disk | ~20 MB + message DB | ~100 MB (Python deps) |
| Message throughput | Thousands/second | Hundreds/second |
| Startup time | <1 second | 2-3 seconds |
Gotify is significantly lighter — Go binary vs Python application. The throughput difference rarely matters since both are fast enough for notification workloads.
Community and Support
| Metric | Gotify | Apprise |
|---|---|---|
| GitHub stars | 11,000+ | 12,000+ |
| Documentation | Good (official docs) | Good (wiki) |
| Update frequency | Moderate | Monthly |
| Community | GitHub discussions | GitHub issues |
Use Cases
Choose Gotify If…
- You use Android and want push notifications without Google FCM
- You want persistent message storage with history
- You prefer a dedicated notification app on your phone
- You need multi-user notification channels with separate tokens
- You want plugin support for custom notification handling
Choose Apprise If…
- You need to send to Slack, Discord, Telegram, and email from one API call
- You want to swap notification targets without changing application code
- You’re integrating notifications into a CI/CD pipeline or monitoring stack
- You need to route different alerts to different teams on different platforms
- You don’t need a dedicated mobile app — target services have their own
Use Both Together
Gotify can be an Apprise target. Set up Apprise as your notification router, and include your Gotify server URL as one of the destinations. Your monitoring sends to Apprise → Apprise fans out to Slack (team) + Gotify (your phone) + email (audit log).
Final Verdict
Gotify is the better choice for personal push notifications, especially on Android. Its persistent message storage and dedicated app make it ideal for server alerts that you want to review later. Apprise is the better choice for application-level notification routing — when your code needs to send to many platforms without coupling to any one service. For most self-hosters, start with Gotify for personal alerts and add Apprise when you need multi-platform distribution.
Related
Get self-hosting tips in your inbox
Get the Docker Compose configs, hardware picks, and setup shortcuts we don't put in articles. Weekly. No spam.
Comments