Skip to content

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

  1. Name - Server display name (required, tracked, translatable)
  2. Provider - Notification provider (required, tracked):
    • ntfy - Self-hosted ntfy server
    • fcm - Firebase Cloud Messaging
  3. Description - Server description
  4. Active - Whether the server is available (default: True)
  5. Is Default - Mark as default server for new subscriptions (tracked)
  6. Sequence - Display ordering

ntfy Provider Fields

  1. URL - Server URL, e.g., https://ntfy.sadeem.cloud (required for ntfy, tracked)
  2. Auth Enabled - Enable authentication for sending notifications (default: True, tracked)
  3. Auth Method - Authentication type (tracked):
    • password - Username/password authentication
    • token - Access token authentication
  4. Username - Sender username (for password auth)
  5. Password - Sender password (for password auth)
  6. Auth Token - Access token (for token auth, must start with tk_)
  7. Token Label - Label for the manual token
  8. Token Expiry - Manual token expiration date

ntfy Admin API (Auto-Token Mode)

  1. Admin Username - Admin credentials for the ntfy API (tracked)
  2. Admin Password - Admin password for API access
  3. Auto Generate Tokens - Automatically create per-subscription tokens (tracked)
  4. Token Expiry Days - Days until auto-generated tokens expire (default: 365)
  5. Token Prefix - Prefix for auto-generated token labels (default: Auto)

FCM Provider Fields

  1. FCM Project ID - Firebase project identifier (tracked)
  2. FCM Server Key - Legacy FCM server key (deprecated by Google)
  3. 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.

  1. FCM API Key - Firebase Web API key (api_key)
  2. FCM App ID - Firebase App ID (mobilesdk_app_id)
  3. 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.