ntfy mam postawionego od jakiegoś czasu i całkiem dobrze spełnia swoją rolę w moim home labie. Kiedy zacząłem przenosić kolejne automatyzacje do n8n, naturalnym krokiem było połączenie obu. I tu zaczęły się schody.
Chwila, ntfy co?
ntfy to prosty serwis powiadomień push oparty na HTTP i modelu pub-sub. Subskrybujesz temat, ktoś (lub coś) na niego publikuje, ty dostajesz powiadomienie — na telefonie, w przeglądarce, w skrypcie. Bez rejestracji, bez kont, przez zwykłe HTTP. Można korzystać z publicznego ntfy.sh albo postawić własną instancję i mieć pełną kontrolę.
Czy jest lepszy od Gotify czy innych podobnych rozwiązań? Nie wiem. U mnie się sprawdza — i to wystarczy.
Wysyłanie — bułka z masłem
Opublikowanie powiadomienia z n8n to dosłownie jeden węzeł HTTP Request:
POST https://twój-serwer/temat
Content-Type: text/plain
Treść powiadomienia
Dwie minuty roboty, działa od razu. Nie potrzeba żadnych dodatkowych node’ów do samego wysyłania.
Nasłuchiwanie — tu zaczęły się schody
Triggerowanie workflow na każde przychodzące powiadomienie to już inna bajka. ntfy udostępnia trwały strumień JSON — subskrybujesz endpoint i czekasz na wiadomości. Problem w tym, że n8n nie obsługuje tego natywnie przez standardowy HTTP Request. Potrzebny jest dedykowany Trigger node.
Sprawdziłem co jest dostępne w community nodes…
Stan istniejących rozwiązań
Część dostępnych paczek ma tylko Send — do triggera trzeba kombinować samodzielnie. Te które mają trigger, często nie działają poprawnie z autoryzacją: albo ignorują nagłówki, albo obsługują ją niezgodnie ze specyfikacją ntfy. Zdarza się też, że paczka po prostu nie nawiązuje połączenia z self-hosted instancją i trudno dojść dlaczego.
Nie ma co winić autorów — integracje community to wolny czas, nie SLA. Ale brak działającego rozwiązania to sygnał, żeby napisać własne.
Własna implementacja
Powstał n8n-nodes-ntfy-client — dwa węzły plus credential:
Ntfy Send — wysyła powiadomienie na temat. Obsługuje tytuł, priorytet (Min do Urgent) i tagi/emoji.
Ntfy Trigger — subskrybuje jeden lub kilka tematów przez trwały strumień JSON. Wyzwala workflow na każdą przychodzącą wiadomość. Na wypadek utraty połączenia — automatyczny reconnect z wykładniczym backoff.
Ntfy API credential — Server URL, typ autoryzacji (brak / Basic Auth / Access Token), zgodny z tym jak n8n zarządza poświadczeniami. Testuje połączenie przy zapisywaniu przez GET /v1/health.
Jak to u mnie wygląda
Główny use case to home lab + AI. System monitorujący wysyła event na temat ntfy, workflow w n8n go odbiera, przekazuje do lokalnego modelu AI, a ten analizuje i odsyła streszczenie z propozycją działania — znów przez ntfy, tym razem na telefon.
Lokalny model AI w izolowanym środowisku + własny serwer ntfy = zero danych wychodzących na zewnątrz. Dla takiego setup’u to idealne połączenie.
Instalacja
W instancji n8n: Settings → Community Nodes → Install, wpisz:
n8n-nodes-ntfy-client
Repozytorium i dokumentacja: github.com/ximot/n8n-nodes-ntfy-client