Ako hostovať ntfy vo vlastnej réžii v roku 2026: témy, riadenie prístupu a doručovanie
Praktický návod na self-hosting ntfy s Dockerom, portami, persistentnými dátami, TLS, zabezpečením, zálohami a problémami, ktoré bránia použitiu v produkcii. Krok za krokom.
Väčšina poznámok k inštalácii ntfy končí pri prvom načítaní stránky. To je príliš skoro: cache je ephemeral alebo na proxy vypršia WebSocket/SSE pripojenia. Užitočný produkčný test je náročnejší — publikujte správu pomocou curl, prijmite ju cez HTTP a WebSocket subscriptions, priložte súbor a otestujte jednu autentifikovanú tému.
Úloha ntfy je jednoduchá: odosielanie push notifikácií pomocou jednoduchej HTTP požiadavky. Jeho prevádzkové hranice zahŕňajú viac než len webový proces, preto treba pred príchodom skutočných dát explicitne pomenovať dependency, uložený stav aj verejnú route.
Produkčná podoba ntfy
HTTP proces ntfy počúva na porte 80; tento port ponechajte v aplikačnej sieti a publikujte iba platform route. Lokálna runtime požiadavka pozostáva z config volume a voliteľnej auth databázy. Túto hranicu otestujte pred publikovaním a znova po nahradení kontajnera.
Zapíšte túto hranicu ako krátky contract: kto požiadavku vlastní, ktoré credentials sa použijú, aký timeout je prijateľný a ako sa prejaví zlyhanie. Potom vykonajte túto transakciu: publikujte správu pomocou curl, prijmite ju cez HTTP a WebSocket subscriptions, priložte súbor a otestujte jednu autentifikovanú tému. Počas testu sledujte long-lived subscriber connections, veľkosť príloh, retenčný čas cache a outbound push relays, pretože táto workload poskytne užitočnejší základ na dimenzovanie než nečinný kontajner.
Spustite ntfy bez skrývania dôležitých častí
Kontajner používajte ako nahraditeľný runtime, nie ako miesto, kde sa nachádza zdroj pravdy.
docker run -d \
--name ntfy \
--restart unless-stopped \
-p 127.0.0.1:80:80 \
-v ntfy-data:/var/cache/ntfy \
-e NTFY_BASE_URL=https://app.example.com \
binwiederhier/ntfy:latest serve
Pred vystavením služby overte lokálnu požiadavku: config volume a voliteľnú auth databázu. Pred vystavením skontrolujte používateľa kontajnera, zapisovateľné cesty a bindnutý listener. Spustite kompletnú operáciu — publikujte správu pomocou curl, prijmite ju cez HTTP a WebSocket subscriptions, priložte súbor a otestujte jednu autentifikovanú tému — a uložte presný image reference, ktorý vytvoril výsledok.
Dajte ntfy jednu kanonickú adresu
Nastavte base-url na verejný HTTPS origin používaný publishers a subscribers. Zvolený hostname nasmerujte na port kontajnera 80, preposielajte pôvodný host a HTTPS scheme a vyhnite sa publikovaniu druhého priameho originu.
Otestujte ntfy z čistého externého klienta. Oddeľte zlyhanie ingressu od známej aplikačnej hranice — cache je ephemeral alebo na proxy vypršia WebSocket/SSE pripojenia. Chyba certifikátu, DNS alebo 502 patrí do routingu; požiadavka, ktorá dorazí do ntfy a zlyhá až neskôr, súvisí so stavom aplikácie, kapacitou alebo supporting requirement. Prvá skupina je popísaná v návode na TLS pre vlastnú doménu.
Overte, že ntfy prežije nahradenie
Pred optimalizáciou kontajnera chráňte stav ntfy. Povinná sada obsahuje konfiguráciu, auth databázu a prílohy, ktoré musia prežiť. Pripojte /var/cache/ntfy ešte pred bootstrapom, zapíšte neškodné vzorové dáta a nahraďte kontajner, aby ste overili, že táto cesta je skutočne persistentná. Ak musí byť konzistentných viacero úložísk, zdokumentujte poradie, v ktorom sa pozastavia zápisy a vytvoria zálohy.
Kópie uchovávajte mimo deployment servera a zašifrujte materiál obsahujúci credentials alebo súkromný obsah. Obnova je úspešná vtedy, keď sa vrátia používatelia, ACLs, konfigurácia aj uchované prílohy a autentifikovaný subscriber prijme novú správu. Rozdiel medzi persistentným mountom a nezávislou kópiou vysvetľuje persistentné úložisko a snapshots.
Nedávajte ntfy celý host
Pri ntfy nemusí byť najcennejším surface landing page. Hlavnou chybou je povoliť verejné hádanie tém v prípade, že správy obsahujú prevádzkové detaily. Čelte tomu zámerne: používajte topic ACLs, pretože neuhádnuteľné názvy tém nie sú dostatočne silnou autorizáciou pre prevádzkové správy.
NTFY_BASE_URL je konfigurácia, nie secret; jeho hodnotu ponechajte explicitnú a zároveň chráňte samostatné credentials používané ntfy. Ak to image podporuje, použite neprivilegovaného používateľa kontajnera a nepripájajte nesúvisiace credentials. Limity rate alebo size uplatnite na ingress vrstve, kde môže nedôveryhodná workload spotrebovať long-lived subscriber connections, veľkosť príloh, retenčný čas cache a outbound push relays.
Aktualizujte ntfy bez hádania
Po každom deploymente použite ako ntfy smoke test túto operáciu: publikujte správu pomocou curl, prijmite ju cez HTTP a WebSocket subscriptions, priložte súbor a otestujte jednu autentifikovanú tému. Súvisiace metriky sú long-lived subscriber connections, veľkosť príloh, retenčný čas cache a outbound push relays; nastavte alerting tam, kde sa tieto resources približujú k bodu, pri ktorom degradujú používateľskú operáciu.
Hlavné riziko zmeny spočíva v tom, že pred aktualizáciou ntfy treba skontrolovať konfiguračné kľúče, migrácie auth databázy a očakávania klientov. Bezpečný release začína obnoviteľným snapshotom a pred presunom trafficu overí každú jednosmernú zmenu stavu. Keď je cache ephemeral alebo na proxy vypršia WebSocket/SSE pripojenia, ponechajte zlyhaný kontajner dostatočne dlho na prečítanie konfigurácie a prvej chyby.
Release gate pre ntfy
Kandidát na release pre ntfy získa traffic po dokončení pevne stanoveného scenára: publikujte správu pomocou curl, prijmite ju cez HTTP a WebSocket subscriptions, priložte súbor a otestujte jednu autentifikovanú tému. Zachyťte image digest, efektívnu konfiguráciu bez secretov, verejný origin a timestamps pre tento scenár. Testovacie dáta by mali byť jednorazové, ale dostatočne realistické na overenie rovnakej cesty, akú používajú používatelia.
Spusťte ho po nahradení runtime a potom službu znova zostavte z konfigurácie, auth databázy a príloh, ktoré musia prežiť. Obnova prejde vtedy, keď sa vrátia používatelia, ACLs, konfigurácia aj uchované prílohy a autentifikovaný subscriber prijme novú správu. Porovnajte resource measurements pre long-lived subscriber connections, veľkosť príloh, retenčný čas cache a outbound push relays s predchádzajúcim releasom a pred promotion preskúmajte významný drift.
Napokon vykonajte toto kontrolované zlyhanie: odošlite neškodný vstup blízko limitu resource alebo formátu súvisiaceho s touto hranicou: cache je ephemeral alebo na proxy vypršia WebSocket/SSE pripojenia. Overte, že ntfy zlyhanie vysvetlí, nepoškodí existujúci stav a po návrate platnej podmienky bude opäť fungovať. Uložte redigovaný výňatok z logu a čas obnovy. Tieto kontroly spolu pokrývajú správanie, odolnosť dát a operability, nie iba dostupnosť procesu.
Nechajte ntfy explicitné, zatiaľ čo Dockup rieši routing
Routing, certifikáty, nahrádzanie služieb a pripojené úložisko sú rozumné ciele automatizácie. Dockup ich pre ntfy rieši a dokáže zriadiť súvisiacu managed databázu alebo sa pripojiť k službám na vlastnom serveri zákazníka.
Nemal by však vymýšľať trust policy ntfy. Po deploymente nastavte base-url na verejný HTTPS origin používaný publishers a subscribers, vynúťte túto hranicu — používajte topic ACLs, pretože neuhádnuteľné názvy tém nie sú dostatočne silnou autorizáciou pre prevádzkové správy — a overte výsledok tohto scenára: publikujte správu pomocou curl, prijmite ju cez HTTP a WebSocket subscriptions, priložte súbor a otestujte jednu autentifikovanú tému. Výsledkom je infrastructure na jedno kliknutie s application-specific acceptance testom.
Často kladené otázky
Čo ntfy potrebuje na produkčné nasadenie?
Nasmerujte kontajner ntfy na porte 80 cez jeden HTTPS origin. Lokálna runtime požiadavka pozostáva z config volume a voliteľnej auth databázy. Ntfy nepovažujte za pripravené, kým nedokážete publikovať správu pomocou curl, prijať ju cez HTTP a WebSocket subscriptions, priložiť súbor a otestovať jednu autentifikovanú tému.
Ktoré dáta ntfy patria do zálohy?
Uchovávajte /var/cache/ntfy a do rovnakého recovery manifestu zahrňte konfiguráciu, auth databázu a prílohy, ktoré musia prežiť. Čistá obnova ntfy je úspešná iba vtedy, keď sa vrátia používatelia, ACLs, konfigurácia aj uchované prílohy a autentifikovaný subscriber prijme novú správu.
Vyžaduje ntfy HTTPS za reverse proxy?
Pre verejný ntfy origin používajte HTTPS a port 80 ponechajte na internej route. Nastavenie ntfy aplikujte správne: nastavte base-url na verejný HTTPS origin používaný publishers a subscribers. V prípade ntfy HTTPS chráni credentials alebo používateľský obsah počas prenosu a zachováva konzistentné správanie klientov závislé od originu.
Ako testovať aktualizáciu ntfy?
Obnovte aktuálny stav ntfy do izolovaného deploymentu, aplikujte kandidátnu verziu a zopakujte acceptance transaction. Venujte osobitnú pozornosť tomu, že pred aktualizáciou ntfy treba skontrolovať konfiguračné kľúče, migrácie auth databázy a očakávania klientov. Predchádzajúci ntfy image ponechajte, kým nebudete rozumieť hranici migrácie dát a rollbacku.
