# Gotify — Self-Hosted Push Notification Server > Gotify is a simple, self-hosted push notification server with a REST API, real-time WebSocket delivery, and a web UI plus Android app for receiving alerts. ## Install Save in your project root: # Gotify — Self-Hosted Push Notification Server ## Quick Use ```bash docker run -d --name gotify -p 8080:80 -v gotify-data:/app/data gotify/server # Open http://localhost:8080 — default login admin/admin ``` ## Introduction Gotify is a simple, self-hosted server for sending and receiving push notifications. With a clean REST API for sending messages and WebSocket-based real-time delivery, it provides a private alternative to services like Pushover or Firebase Cloud Messaging. ## What Gotify Does - Receives push notifications via a simple REST API from any script or service - Delivers messages in real-time to the web UI and Android app via WebSockets - Organizes notifications by application with per-app tokens and priorities - Supports a plugin system for extending server functionality with Go plugins - Provides message history with search and pagination in the web interface ## Architecture Overview Gotify is a single Go binary with an embedded SQLite database. The REST API handles message creation and user management. WebSocket connections provide real-time push delivery to clients. The web UI is a React application bundled into the binary. Plugins are loaded as shared Go libraries at runtime. ## Self-Hosting & Configuration - Run via Docker with a single volume for the SQLite database and config - Or download the static binary for Linux, macOS, or Windows - Configure `config.yml` for port, database path, and default user settings - Create application tokens in the web UI for each service that sends notifications - Set message priority levels (0-10) to control notification urgency on clients ## Key Features - Dead simple API: a single POST with title and message sends a notification - No external dependencies — single binary with embedded database and web UI - Android app with priority-based notification channels and sound customization - Per-application tokens isolate services and allow granular revocation - Markdown support in messages for formatted notification content ## Comparison with Similar Tools - **ntfy** — HTTP-based pub/sub notifications; Gotify uses WebSockets and app tokens - **Pushover** — commercial push service; Gotify is free and self-hosted - **Apprise** — notification aggregator library; Gotify is a server with persistent history - **Signal/Telegram bots** — messaging platform dependent; Gotify is fully self-contained - **Bark** — iOS focused; Gotify targets Android and web with plugin extensibility ## FAQ **Q: Is there an iOS app?** A: There is no official iOS app due to Apple push notification requirements, but the web UI works on iOS browsers and third-party clients exist. **Q: How do I send a notification from a script?** A: Use curl: `curl -X POST "http://gotify/message?token=APP_TOKEN" -F "title=Alert" -F "message=Disk full"`. Any HTTP client works. **Q: Can I set different priorities?** A: Yes. Set the priority field (0-10) when posting a message. The Android app maps priorities to notification channels with configurable sounds. **Q: Does it scale for many users?** A: Gotify is designed for personal or small team use. For large-scale notification infrastructure, consider dedicated message brokers. ## Sources - https://github.com/gotify/server - https://gotify.net/docs/ --- Source: https://tokrepo.com/en/workflows/cfc426e7-39c1-11f1-9bc6-00163e2b0d79 Author: AI Open Source