Skip to content

ntfy

Send TSDProxy status alerts to ntfy — a push notification service for your phone and desktop.

Basic Configuration

/config/tsdproxy.yaml
webhooks:
  - url: "https://ntfy.sh/your-topic"
    type: ntfy
    events:
      - Running
      - Stopped
      - Error

Replace your-topic with your ntfy topic name. TSDProxy sends the notification body as plain text:

Proxy: myapp
Status: Running
Previous: Starting

With Authentication

If your ntfy topic is protected, add an access token or basic auth via headers:

/config/tsdproxy.yaml
webhooks:
  - url: "https://ntfy.sh/your-topic"
    type: ntfy
    headers:
      Authorization: "Bearer tk_your_access_token"

For basic auth:

/config/tsdproxy.yaml
webhooks:
  - url: "https://ntfy.sh/your-topic"
    type: ntfy
    headers:
      Authorization: "Basic dXNlcjpwYXNz"

Custom Title and Priority

ntfy uses HTTP headers to set message metadata. Use the headers field to customize the notification appearance:

/config/tsdproxy.yaml
webhooks:
  - url: "https://ntfy.sh/your-topic"
    type: ntfy
    headers:
      Title: "TSDProxy Alert"
      Priority: "high"
      Tags: "rotating_light"

Supported ntfy headers:

HeaderExamplePurpose
TitleTSDProxy AlertNotification title
PriorityhighUrgency: min, low, default, high, max
Tagsrotating_light,computerEmoji tags (comma-separated)
Clickhttps://myapp.tailnet.ts.netURL opened when notification is tapped
Actionsview, Open Dashboard, https://host:8080Action buttons
Iconhttps://example.com/icon.pngNotification icon URL

Self-Hosted ntfy Server

Point the URL to your own instance:

/config/tsdproxy.yaml
webhooks:
  - url: "https://ntfy.example.com/your-topic"
    type: ntfy
    headers:
      Authorization: "Bearer tk_your_access_token"
      Priority: "default"
    events:
      - Running
      - Stopped
      - Error

Filtering by Status

Only send notifications for the events you care about:

/config/tsdproxy.yaml
webhooks:
  - url: "https://ntfy.sh/tsdproxy-errors"
    type: ntfy
    headers:
      Priority: "high"
      Tags: "x"
    events:
      - Error

Notes

  • Plain text format. ntfy receives the message body as plain text (Content-Type: text/plain), not JSON.
  • Custom headers are passed through. Any header you set in the headers map is included in the HTTP request to ntfy. You can use any ntfy-supported header.
  • Multiple topics. To send to different topics with different priorities, add multiple webhook entries:
    /config/tsdproxy.yaml
    webhooks:
      - url: "https://ntfy.sh/tsdproxy-all"
        type: ntfy
      - url: "https://ntfy.sh/tsdproxy-critical"
        type: ntfy
        headers:
          Priority: "max"
        events:
          - Error
Last updated on