Files
ntfi/README.md
2026-01-17 17:53:16 +01:00

2.3 KiB

Ntfi

This is a daemon with the single purpose of centralizing credentials and configuration for pushing notifications to ntfy.sh or private instances of ntfy.

This daemon does not support subscriptions for now, only publishing.

Using

Bare metal (Linux):

$ cp config.dist.yaml config.yaml
$ editor config.yaml
$ ./ntfid.phar --config config.yaml

With Docker:

$ cp config.dist.yaml config.yaml
$ editor config.yaml
$ docker exec --rm -it -p 13000:13000 -v $PWD/config.yaml:/app/config.yaml \
    dev.noccylabs.info/noccylabs/ntfi:latest

With Docker Compose:

Make sure to create config.yaml from config.dist.yaml in the same directory as the compose.yaml file.

services:
  ntfi:
    image: dev.noccylabs.info/noccylabs/ntfi:latest
    ports:
      - 13000:13000
    volumes:
      - ./config.yaml:/app/config.yaml
    restart: always

Configuration

Listen

This is a single key defining the HTTP listen address. This defaults to 0.0.0.0:13000.

Servers

Configure the servers that you want to be able to relay notifications to. The default configuration defines a single server, default which is configured to send messages to ntfy.sh as an anonymous user.

Key Req Detail
server Y The server name without protocol (always https)
token - API token to use when authenticating
username - Username for authenticating
password - Password for authenticating

Note

Note that for authentication to work, you need to specify either token, or username and password. If token is empty, and only username or password is set, no authentication will be used.

Channels

These are the channels that can be sent to. Each channel name matches the request URL, and placeholders can be used to extract and reassemble a destination topic.

Key Req Detail
destination Y The destination, as <server>/<topic>

Examples:

  # match exact topic and send to rewritten topic
  "serverevents":
    destination: "default/sometopicnameforserverevents"
  # parse and use only part of topic, sending to another server
  "prefix_{topic}":
    destination: "prefixed/{topic}"
  # or append a prefix to the topic, sending to yet another server
  "{topic}":
    destination: "prefixing/prefix_{topic}"