Notification Servers
1. Notification Server Overview
Push notification server configuration for sending mobile notifications to subscription users. Supports self-hosted ntfy and Firebase Cloud Messaging (FCM).
General Fields
- Name - Server display name (required, tracked, translatable)
- Provider - Notification provider (required, tracked):
ntfy- Self-hosted ntfy serverfcm- Firebase Cloud Messaging
- Description - Server description
- Active - Whether the server is available (default: True)
- Is Default - Mark as default server for new subscriptions (tracked)
- Sequence - Display ordering
ntfy Provider Fields
- URL - Server URL, e.g.,
https://ntfy.sadeem.cloud(required for ntfy, tracked) - Auth Enabled - Enable authentication for sending notifications (default: True, tracked)
- Auth Method - Authentication type (tracked):
password- Username/password authenticationtoken- Access token authentication
- Username - Sender username (for password auth)
- Password - Sender password (for password auth)
- Auth Token - Access token (for token auth, must start with
tk_) - Token Label - Label for the manual token
- Token Expiry - Manual token expiration date
ntfy Admin API (Auto-Token Mode)
- Admin Username - Admin credentials for the ntfy API (tracked)
- Admin Password - Admin password for API access
- Auto Generate Tokens - Automatically create per-subscription tokens (tracked)
- Token Expiry Days - Days until auto-generated tokens expire (default: 365)
- Token Prefix - Prefix for auto-generated token labels (default:
Auto)
FCM Provider Fields
- FCM Project ID - Firebase project identifier (tracked)
- FCM Server Key - Legacy FCM server key (deprecated by Google)
- FCM Service Account JSON - Firebase service account credentials (for FCM v1 API)
FCM Client Config (Mobile App)
Optional values handed to the mobile app when it does not bundle them itself. All three come from
google-services.json.
- FCM API Key - Firebase Web API key (
api_key) - FCM App ID - Firebase App ID (
mobilesdk_app_id) - FCM Messaging Sender ID - Sender ID (
project_number)
FCM Authentication
Either a Service Account JSON (recommended, for FCM v1 API) or a Legacy Server Key is required for Firebase integration.
Validation on save
The Project ID must match the project_id inside the Service Account JSON, the JSON must carry all of its required fields, and the v1 API needs the google-auth Python library (pip install google-auth). Each of these is reported as a clear error instead of failing later at send time.
2. Actions
| Action | Description |
|---|---|
| Test Connection | Verify the server is reachable and responding |
| Test Admin Credentials | Validate admin API access (ntfy only) |
| Test Token | Check if the manual token is valid (ntfy only) |
| View Tokens | Open token management wizard (ntfy with admin API) |
3. ntfy Token Management Wizard
sadeem.ntfy.token.wizard— lists the tokens that exist on the ntfy server itself, read live through the admin API.
| Counter | Meaning |
|---|---|
| Total Tokens | Tokens returned by the server |
| Active Tokens | Valid and more than 30 days from expiry |
| Expired Tokens | Already past their expiry date |
Per-token columns: Token (masked), Label, Expires, Last Access, Last Origin, Days Left and a Status badge.
| Status | Condition |
|---|---|
| Active | Valid, more than 30 days until expiry |
| Expiring Soon | 30 days or less until expiry |
| Expired | Past its expiry date |
| Never Expires | No expiry date set |
| Action | Description |
|---|---|
| Refresh | Re-read the token list from the ntfy server |
| Copy (row) | Show the full token value so it can be copied |
| Revoke (row) | Delete that single token |
| Revoke Selected | Delete every ticked token |
| Revoke Expired | Delete all expired tokens in one go |
Revoking is immediate and permanent
Revoking a token instantly disables notifications for any subscription using it, and cannot be undone.
4. Auto-Token vs Manual Token
| Auto-token mode | Manual mode | |
|---|---|---|
| Requires | Admin username + password | An tk_… access token (or username/password) |
| Per subscription | A unique token, labelled [Prefix]-[Client]-[UUID] |
One shared credential for all subscriptions |
| Lifecycle | Created on demand, revoked automatically when the subscription ends | Managed by hand |
| Isolation | Each subscription has its own credential — easy to audit and revoke individually | A leak affects every subscription |
Recommended setup
Enable Auto Generate Tokens with admin credentials. Use Test Admin to confirm the API access before saving, and Test Token when running in manual mode.