Files
Microsoft-Rewards-Script/docs/ntfy.md
Light 15f62963f8 V2 (#365)
* first commit

* Addition of a personalized activity manager and refactoring of the logic of activities

* Adding diagnostics management, including screenshot and HTML content, as well as improvements to humanize page interactions and +.

* Adding the management of newspapers and webhook settings, including filtering messages and improving the structure of the summaries sent.

* Adding a post-execution auto-date functionality, including options to update via Git and Docker, as well as a new configuration interface to manage these parameters.

* Adding accounts in Docker, with options to use an environmental file or online JSON data, as well as minimum validations for responsible accounts.

* Improving the Microsoft Rewards script display with a new headband and better log management, including colors and improved formatting for the console.

* v2

* Refactor ESLint configuration and scripts for improved TypeScript support and project structure

* Addition of the detection of suspended accounts with the gesture of the improved errors and journalization of banishment reasons

* Adding an integrated planner for programmed task execution, with configuration in Config.json and +

* Edit

* Remove texte

* Updating of documentation and adding the management of humanization in the configuration and +.

* Adding manual purchase method allowing users to spend points without automation, with monitoring of expenses and notifications.

* Correction of documentation and improvement of configuration management for manual purchase mode, adding complete documentation and appropriate banner display.

* Add comprehensive documentation for job state persistence, NTFY notifications, proxy configuration, scheduling, and auto-update features

- Introduced job state persistence documentation to track progress and resume tasks.
- Added NTFY push notifications integration guide for real-time alerts.
- Documented proxy configuration options for enhanced privacy and network management.
- Included scheduling configuration for automated script execution.
- Implemented auto-update configuration to keep installations current with Git and Docker options.

* Ajout d'Unt Système de Rapport d'Erreurs Communautaire pour Améliorerer le Débogage, incluant la Configuration et l'Envoi de Résumés D'Erreurs Anonyés à un webhook Discord.

* Mini Edit

* Mise à Jour du Readme.md pour Améliorerer la Présentation et La Claté, Ajout d'Un section sur les notifications en Temps Raine et Mise à Jour des badges pour la meille unibilité.

* Documentation update

* Edit README.md

* Edit

* Update README with legacy version link

* Improvement of location data management and webhooks, adding configurations normalization

* Force update for PR

* Improvement of documentation and configuration options for Cron integration and Docker use

* Improvement of planning documentation and adding a multi-pan-pancake in the daily execution script

* Deletion of the CommunityReport functionality in accordance with the project policy

* Addition of randomization of start -up schedules and surveillance time for planner executions

* Refactor Docker setup to use built-in scheduler, removing cron dependencies and simplifying configuration options

* Adding TOTP support for authentication, update of interfaces and configuration files to include Totp secret, and automatic generation of the Totp code when connecting.

* Fix [LOGIN-NO-PROMPT] No dialogs (xX)

* Reset the Totp field for email_1 in the accounts.example.json file

* Reset the Totp field for email_1 in the Readme.md file

* Improvement of Bing Research: Use of the 'Attacked' method for the research field, management of overlays and adding direct navigation in the event of entry failure.

* Adding a complete security policy, including directives on vulnerability management, coordinated disclosure and user security advice.

* Remove advanced environment variables section from README

* Configuration and dockerfile update: Passage to Node 22, addition of management of the purchase method, deletion of obsolete scripts

* Correction of the order of the sections in the Readme.md for better readability

* Update of Readm and Security Policy: Addition of the method of purchase and clarification of security and confidentiality practices.

* Improvement of the readability of the Readm and deletion of the mention of reporting of vulnerabilities in the security document.

* Addition of humanization management and adaptive throttling to simulate more human behavior in bot activities.

* Addition of humanization management: activation/deactivation of human gestures, configuration update and adding documentation on human mode.

* Deletion of community error report functionality to respect the privacy policy

* Addition of immediate banning alerts and vacation configuration in the Microsoft Rewards bot

* Addition of immediate banning alerts and vacation configuration in the Microsoft Rewards bot

* Added scheduling support: support for 12h and 24h formats, added options for time zone, and immediate execution on startup.

* Added window size normalization and page rendering to fit typical screens, with injected CSS styles to prevent excessive zooming.

* Added security incident management: detection of hidden recovery emails, automation blocking, and global alerts. Updated configuration files and interfaces to include recovery emails. Improved security incident documentation.

* Refactor incident alert handling: unified alert sender

* s

* Added security incident management: detect recovery email inconsistencies and send unified alerts. Implemented helper methods to manage alerts and compromised modes.

* Added heartbeat management for the scheduler: integrated a heartbeat file to report liveliness and adjusted the watchdog configuration to account for heartbeat updates.

* Edit webook

* Updated security alert management: fixed the recovery email hidden in the documentation and enabled the conclusion webhook for notifications.

* Improved security alert handling: added structured sending to webhooks for better visibility and updated callback interval in compromised mode.

* Edit conf

* Improved dependency installation: Added the --ignore-scripts option for npm ci and npm install. Updated comments in compose.yaml for clarity.

* Refactor documentation structure and enhance logging:
- Moved documentation files from 'information' to 'docs' directory for better organization.
- Added live logging configuration to support webhook logs with email redaction.
- Updated file paths in configuration and loading functions to accommodate new structure.
- Adjusted scheduler behavior to prevent immediate runs unless explicitly set.
- Improved error handling for account and config file loading.
- Enhanced security incident documentation with detailed recovery steps.

* Fix docs

* Remove outdated documentation on NTFY, Proxy, Scheduling, Security, and Auto-Update configurations; update Browser class to prioritize headless mode based on environment variable.

* Addition of documentation for account management and Totp, Docker Guide, and Update of the Documentation Index.

* Updating Docker documentation: simplification of instructions and adding links to detailed guides. Revision of configuration options and troubleshooting sections.

* Edit

* Edit docs

* Enhance documentation for Scheduler, Security, and Auto-Update features

- Revamped the Scheduler documentation to include detailed features, configuration options, and usage examples.
- Expanded the Security guide with comprehensive incident response strategies, privacy measures, and monitoring practices.
- Updated the Auto-Update section to clarify configuration, methods, and best practices for maintaining system integrity.

* Improved error handling and added crash recovery in the Microsoft Rewards bot. Added configuration for automatic restart and handling of local search queries when trends fail.

* Fixed initial point counting in MicrosoftRewardsBot and improved error handling when sending summaries to webhooks.

* Added unified support for notifications and improved handling of webhook configurations in the normalizeConfig and log functions.

* UPDATE LOGIN

* EDIT LOGIN

* Improved login error handling: added recovery mismatch detection and the ability to switch to password authentication.

* Added a full reference to configuration in the documentation and improved log and error handling in the code.

* Added context management for conclusion webhooks and improved user configuration for notifications.

* Mini edit

* Improved logic for extracting masked emails for more accurate matching during account recovery.
2025-09-26 18:58:33 +02:00

9.4 KiB

📱 NTFY Push Notifications

🔔 Real-time push notifications to your devices
Stay informed wherever you are


🎯 What is NTFY?

NTFY is a simple HTTP-based pub-sub notification service that sends push notifications to your phone, desktop, or web browser. Perfect for real-time alerts about script events and errors.

Key Features

  • 📱 Mobile & Desktop — Push to any device
  • 🆓 Free & Open Source — No vendor lock-in
  • 🏠 Self-hostable — Complete privacy control
  • Real-time delivery — Instant notifications
  • 🔒 Authentication support — Secure topics

⚙️ Configuration

Basic Setup

{
  "notifications": {
    "ntfy": {
      "enabled": true,
      "url": "https://ntfy.sh",
      "topic": "rewards-script",
      "authToken": ""
    }
  }
}

Configuration Options

Setting Description Example
enabled Enable NTFY notifications true
url NTFY server URL "https://ntfy.sh"
topic Notification topic name "rewards-script"
authToken Authentication token (optional) "tk_abc123..."

🚀 Setup Options

Option 1: Public Service (Easiest)

{
  "notifications": {
    "ntfy": {
      "enabled": true,
      "url": "https://ntfy.sh",
      "topic": "your-unique-topic-name"
    }
  }
}

Pros:

  • No server setup required
  • Always available
  • Free to use

Cons:

  • Public server (less privacy)
  • Rate limits apply
  • Dependent on external service
{
  "notifications": {
    "ntfy": {
      "enabled": true,
      "url": "https://ntfy.yourdomain.com",
      "topic": "rewards",
      "authToken": "tk_your_token_here"
    }
  }
}

Self-Hosted Setup:

# docker-compose.yml
version: '3.8'
services:
  ntfy:
    image: binwiederhier/ntfy
    container_name: ntfy
    ports:
      - "80:80"
    volumes:
      - ./data:/var/lib/ntfy
    command: serve

🔒 Authentication

When You Need Auth

Authentication tokens are optional but required for:

  • 🔐 Private topics with username/password
  • 🏠 Private NTFY servers with authentication
  • 🛡️ Preventing spam on your topic

Getting an Auth Token

Method 1: Command Line

ntfy token

Method 2: Web Interface

  1. Visit your NTFY server (e.g., https://ntfy.sh)
  2. Go to Account section
  3. Generate new access token

Method 3: API

curl -X POST -d '{"label":"rewards-script"}' \
  -H "Authorization: Bearer YOUR_LOGIN_TOKEN" \
  https://ntfy.sh/v1/account/tokens

Token Format

  • Tokens start with tk_ (e.g., tk_abc123def456...)
  • Use Bearer authentication format
  • Tokens are permanent until revoked

📲 Receiving Notifications

Mobile Apps

Desktop Options

  • Web Interface — Visit your NTFY server URL
  • Desktop Apps — Available for Linux, macOS, Windows
  • Browser Extension — Chrome/Firefox extensions

Setup Steps

  1. Install NTFY app on your device
  2. Add subscription to your topic name
  3. Enter server URL (if self-hosted)
  4. Test with a manual message

🔔 Notification Types

Error Notifications

Priority: Max 🚨 | Trigger: Script errors and failures

[ERROR] DESKTOP [LOGIN] Failed to login: Invalid credentials

Warning Notifications

Priority: High ⚠️ | Trigger: Important warnings

[WARN] MOBILE [SEARCH] Didn't gain expected points from search

Info Notifications

Priority: Default 🏆 | Trigger: Important milestones

[INFO] MAIN [TASK] Started tasks for account user@email.com

Buy Mode Notifications

Priority: High 💳 | Trigger: Point spending detected

💳 Spend detected (Buy Mode)
Account: user@email.com
Spent: -500 points
Current: 12,500 points
Session spent: 1,200 points

Conclusion Summary

End-of-run summary with rich formatting:

🎯 Microsoft Rewards Summary
Accounts: 3 • 0 with issues
Total: 15,230 -> 16,890 (+1,660)
Average Duration: 8m 32s
Cumulative Runtime: 25m 36s

🤝 Integration with Discord

Complementary Setup

Use both NTFY and Discord for comprehensive monitoring:

{
  "notifications": {
    "webhook": {
      "enabled": true,
      "url": "https://discord.com/api/webhooks/..."
    },
    "conclusionWebhook": {
      "enabled": true,
      "url": "https://discord.com/api/webhooks/..."
    },
    "ntfy": {
      "enabled": true,
      "url": "https://ntfy.sh",
      "topic": "rewards-script"
    }
  }
}

Coverage Comparison

Feature NTFY Discord
Mobile push Instant App required
Rich formatting Text only Embeds + colors
Desktop alerts Native App notifications
Offline delivery Queued Real-time only
Self-hosted Easy Complex

🎛️ Advanced Configuration

Custom Topic Names

Use descriptive, unique topic names:

{
  "topic": "rewards-production-server1"
}
{
  "topic": "msn-rewards-home-pc"  
}
{
  "topic": "rewards-dev-testing"
}

Environment-Specific

{
  "notifications": {
    "ntfy": {
      "enabled": true,
      "url": "https://ntfy.internal.lan",
      "topic": "homelab-rewards",
      "authToken": "tk_homelab_token"
    }
  }
}

🧪 Testing & Debugging

Manual Test Message

# Public server (no auth)
curl -d "Test message from rewards script" https://ntfy.sh/your-topic

# With authentication
curl -H "Authorization: Bearer tk_your_token" \
     -d "Authenticated test message" \
     https://ntfy.sh/your-topic

Script Debug Mode

$env:DEBUG_REWARDS_VERBOSE=1; npm start

Server Health Check

# Check NTFY server status
curl -s https://ntfy.sh/v1/health

# List your topics (with auth)
curl -H "Authorization: Bearer tk_your_token" \
     https://ntfy.sh/v1/account/topics

🛠️ Troubleshooting

Problem Solution
No notifications Check topic spelling; verify app subscription
Auth failures Verify token format (tk_); check token validity
Wrong server Test server URL in browser; check HTTPS/HTTP
Rate limits Switch to self-hosted; reduce notification frequency

Common Fixes

  • Topic name — Must match exactly between config and app
  • Server URL — Include https:// and check accessibility
  • Token format — Must start with tk_ for authentication
  • Network — Verify firewall/proxy settings

🏠 Homelab Integration

Official Support

NTFY is included in:

  • Debian Trixie (testing)
  • Ubuntu (latest versions)
  • Sonarr/Radarr — Download completion notifications
  • Prometheus — Alert manager integration
  • Home Assistant — Automation notifications
  • Portainer — Container status alerts

Docker Stack Example

version: '3.8'
services:
  ntfy:
    image: binwiederhier/ntfy
    container_name: ntfy
    ports:
      - "80:80"
    volumes:
      - ./ntfy-data:/var/lib/ntfy
    environment:
      - NTFY_BASE_URL=https://ntfy.yourdomain.com
    command: serve
    
  rewards:
    build: .
    depends_on:
      - ntfy
    environment:
      - NTFY_URL=http://ntfy:80

🔒 Privacy & Security

Public Server (ntfy.sh)

  • ⚠️ Messages pass through public infrastructure
  • ⚠️ Topic names visible in logs
  • Suitable for non-sensitive notifications

Self-Hosted Server

  • Complete control over data
  • Private network deployment possible
  • Recommended for sensitive information

Best Practices

  • 🔐 Use unique, non-guessable topic names
  • 🔑 Enable authentication for sensitive notifications
  • 🏠 Use self-hosted server for maximum privacy
  • 🔄 Regularly rotate authentication tokens

Data Retention

  • 📨 Messages are not permanently stored
  • ⏱️ Delivery attempts retried for short periods
  • 🗑️ No long-term message history

Performance Impact

Script Performance

  • Minimal overhead — Fire-and-forget notifications
  • Non-blocking — Failed notifications don't affect script
  • Asynchronous — No execution delays

Network Usage

  • 📊 Low bandwidth — Text-only messages
  • HTTP POST — Simple, efficient protocol
  • 🔄 Retry logic — Automatic failure recovery