Przejdź do treści
Tomasz Wyderka Tomasz Wyderka
PL / EN
Powrót do postów

n8n + ntfy — powiadomienia z własnego serwera w workflow

Jak zintegrowałem ntfy z n8n — od wysyłania przez HTTP po własny community node z triggerem i pełną obsługą autoryzacji.

n8n ntfy Self-hosted Home Lab Automatyzacja

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