Indeks dnevnikaDockup / bilješka s terena
Note / self-host-ntfy

Kako samostalno hostati ntfy u 2026.: teme, kontrola pristupa i isporuka

Praktičan vodič za samostalno hostanje ntfyja koji obuhvaća Docker, portove, trajne podatke, TLS, sigurnost, sigurnosne kopije i probleme koji onemogućuju produkcijsku upotrebu. Korak po korak.

Većina uputa za instalaciju ntfyja završava nakon prvog učitavanja stranice. To je prerano: cache je efemeran ili veze WebSocket/SSE istječu na proxyju. Koristan produkcijski test zahtjevniji je — objavite poruku pomoću curl-a, primite je putem HTTP i WebSocket pretplata, priložite datoteku i testirajte jednu autentificiranu temu.

Uloga ntfyja jednostavna je: slanje push obavijesti jednostavnim HTTP zahtjevom. Njegova operativna granica obuhvaća više od web-procesa, pa prije dolaska stvarnih podataka treba izričito navesti ovisnost, spremljeno stanje i javnu rutu.

Produkcijski oblik ntfyja

HTTP proces ntfyja sluša na portu 80; zadržite taj port na aplikacijskoj mreži i objavite samo rutu platforme. Lokalni runtime zahtijeva config volume i opcionalnu auth bazu podataka. Testirajte tu granicu prije objave i ponovno nakon zamjene containera.

Zapišite granicu kao kratak ugovor: tko je odgovoran za zahtjev, koja se vjerodajnica koristi, koji je timeout prihvatljiv i kako se kvar očituje. Zatim izvršite ovu transakciju: objavite poruku pomoću curl-a, primite je putem HTTP i WebSocket pretplata, priložite datoteku i testirajte jednu autentificiranu temu. Tijekom izvođenja pratite dugotrajne veze pretplatnika, veličinu privitaka, zadržavanje cachea i izlazne push relayje jer takvo opterećenje daje korisniju početnu veličinu od neaktivnog containera.

Pokrenite ntfy bez skrivanja važnih dijelova

Koristite container kao zamjenjivi runtime, a ne kao mjesto na kojem se nalazi izvor istine.

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

Potvrdite lokalni zahtjev prije izlaganja: config volume i opcionalnu auth bazu podataka. Provjerite korisnika containera, putanje s mogućnošću pisanja i vezani listener prije izlaganja. Izvršite cijelu radnju — objavite poruku pomoću curl-a, primite je putem HTTP i WebSocket pretplata, priložite datoteku i testirajte jednu autentificiranu temu — te spremite točnu referencu imagea koja je proizvela rezultat.

Dodijelite ntfyju jednu kanonsku adresu

Postavite base-url na javni HTTPS origin koji koriste izdavatelji i pretplatnici. Odabrani hostname usmjerite na port 80 containera, proslijedite izvorni host i HTTPS scheme te izbjegavajte objavljivanje drugog izravnog origina.

Testirajte ntfy iz čistog vanjskog klijenta. Razdvojite kvar ulazne rute od poznate aplikacijske granice — cache je efemeran ili veze WebSocket/SSE istječu na proxyju. Pogreška certifikata, DNS-a ili 502 pripada usmjeravanju; zahtjev koji dođe do ntfyja i kasnije ne uspije pripada stanju aplikacije, kapacitetu ili njezinu pomoćnom zahtjevu. Vodič za TLS s prilagođenom domenom obrađuje prvu skupinu problema.

Dokažite da ntfy preživljava zamjenu

Zaštitite stanje ntfyja prije optimizacije containera. Obavezni skup čine konfiguracija, auth baza podataka i privici koji moraju preživjeti. Montirajte /var/cache/ntfy prije bootstrapiranja, zapišite bezopasne ogledne podatke i zamijenite container kako biste dokazali da je ta putanja zaista trajna. Ako se više spremišta mora uskladiti, dokumentirajte redoslijed zaustavljanja upisa i izrade sigurnosnih kopija.

Kopije čuvajte izvan deployment servera i šifrirajte materijal koji sadrži vjerodajnice ili privatni sadržaj. Oporavak je uspješan kada se vrate korisnici, ACL-ovi, konfiguracija i zadržani privici te autentificirani pretplatnik primi novu poruku. Razlika između trajnog mounta i neovisne kopije objašnjena je u članku trajna spremišta i snapshoti.

Nemojte ntfyju dati cijeli host

Za ntfy vrijedna površina nije nužno početna stranica. Glavna je pogreška dopuštanje pogađanja javnih tema kada poruke sadrže operativne detalje. Suprotstavite joj se namjerno: koristite ACL-ove tema jer nasumično nepredvidivi nazivi tema nisu snažna autorizacija za operativne poruke.

NTFY_BASE_URL je konfiguracija, a ne tajna vrijednost; njegovu vrijednost držite eksplicitnom, a odvojene vjerodajnice koje koristi ntfy zaštitite. Koristite neprivilegiranog korisnika containera kada ga image podržava i nemojte montirati nepovezane vjerodajnice. Ograničenja brzine ili veličine primijenite na ingressu, gdje nepouzdani rad može potrošiti dugotrajne veze pretplatnika, veličinu privitaka, zadržavanje cachea i izlazne push relayje.

Nadogradite ntfy bez nagađanja

Nakon svakog deploymenta koristite objavu poruke pomoću curl-a, primanje putem HTTP i WebSocket pretplata, prilaganje datoteke i testiranje jedne autentificirane teme kao smoke test za ntfy. Pomoćne metrike čine dugotrajne veze pretplatnika, veličina privitaka, zadržavanje cachea i izlazni push relayji; postavite upozorenja ondje gdje se ti resursi približavaju točki koja narušava korisničku radnju.

Glavni je rizik promjene to što konfiguracijske ključeve, migracije auth baze podataka i očekivanja klijenata treba provjeriti prije ažuriranja ntfyja. Sigurno izdanje počinje od snapshot-a iz kojeg je moguće vratiti stanje i provjerava svaku jednosmjernu promjenu stanja prije preusmjeravanja prometa. Kada je cache efemeran ili veze WebSocket/SSE istječu na proxyju, zadržite neuspjeli container dovoljno dugo da pročitate njegovu konfiguraciju i prvu pogrešku.

Kontrolna točka izdanja za ntfy

Kandidat za izdanje ntfyja dobiva promet dovršavanjem fiksnog scenarija: objavite poruku pomoću curl-a, primite je putem HTTP i WebSocket pretplata, priložite datoteku i testirajte jednu autentificiranu temu. Zabilježite digest imagea, učinkovitu konfiguraciju bez tajni, javni origin i vremenske oznake za taj scenarij. Testni podaci trebaju biti jednokratni, ali dovoljno realistični da prođu istom putanjom kao i korisnički podaci.

Pokrenite test nakon zamjene runtimea, a zatim ponovno izgradite servis iz konfiguracije, auth baze podataka i privitaka koji moraju preživjeti. Oporavak prolazi kada se vrate korisnici, ACL-ovi, konfiguracija i zadržani privici te autentificirani pretplatnik primi novu poruku. Usporedite mjerenja resursa za dugotrajne veze pretplatnika, veličinu privitaka, zadržavanje cachea i izlazne push relayje s prethodnim izdanjem te istražite značajna odstupanja prije promocije.

Naposljetku izvedite ovaj kontrolirani kvar: pošaljite bezopasan unos blizu ograničenja resursa ili formata povezanog s ovom granicom: cache je efemeran ili veze WebSocket/SSE istječu na proxyju. Provjerite objašnjava li ntfy kvar, oštećuje li postojeće stanje i nastavlja li s radom nakon povratka valjanog uvjeta. Spremite redigirani isječak dnevnika i vrijeme oporavka. Ove provjere zajedno obuhvaćaju ponašanje, trajnost i operativnost, a ne samo dostupnost procesa.

Neka ntfy ostane eksplicitan dok Dockup upravlja usmjeravanjem

Usmjeravanje, certifikati, zamjena servisa i pridružena pohrana razumne su mete za automatizaciju. Dockup to rješava za ntfy te može osigurati povezanu upravljanu bazu podataka ili se povezati sa servisima na vlastitom serveru korisnika.

Ono što ne bi trebao izmišljati jest ntfyjeva politika povjerenja. Nakon deploymenta postavite base-url na javni HTTPS origin koji koriste izdavatelji i pretplatnici, provedite ovu granicu — koristite ACL-ove tema jer nasumično nepredvidivi nazivi tema nisu snažna autorizacija za operativne poruke — i provjerite rezultat ovog scenarija: objavite poruku pomoću curl-a, primite je putem HTTP i WebSocket pretplata, priložite datoteku i testirajte jednu autentificiranu temu. Rezultat je infrastruktura pokrenuta jednim klikom uz aplikacijski specifičan acceptance test.

Često postavljana pitanja

Što je ntfyju potrebno za produkcijsko postavljanje?

Usmjerite ntfy container na portu 80 kroz jedan HTTPS origin. Lokalni runtime zahtijeva config volume i opcionalnu auth bazu podataka. Nemojte ntfy smatrati spremnim dok ne možete objaviti poruku pomoću curl-a, primiti je putem HTTP i WebSocket pretplata, priložiti datoteku i testirati jednu autentificiranu temu.

Koji ntfy podaci pripadaju sigurnosnoj kopiji?

Ustrajno pohranite /var/cache/ntfy i u isti recovery manifest uključite konfiguraciju, auth bazu podataka i privitke koji moraju preživjeti. Čisti ntfy restore uspješan je samo kada se vrate korisnici, ACL-ovi, konfiguracija i zadržani privici te autentificirani pretplatnik primi novu poruku.

Zahtijeva li ntfy HTTPS iza reverse proxyja?

Za javni ntfy origin koristite HTTPS, a port 80 zadržite na internoj ruti. Ispravno primijenite ntfy postavku: postavite base-url na javni HTTPS origin koji koriste izdavatelji i pretplatnici. Za ntfy HTTPS štiti vjerodajnice ili korisnički sadržaj tijekom prijenosa te održava dosljedno ponašanje klijenata ovisno o originu.

Kako treba testirati nadogradnju ntfyja?

Vratite trenutno ntfy stanje u izolirani deployment, primijenite kandidatsku verziju i ponovite njegovu acceptance transakciju. Obratite posebnu pozornost jer konfiguracijske ključeve, migracije auth baze podataka i očekivanja klijenata treba provjeriti prije ažuriranja ntfyja. Prethodni ntfy image zadržite dok ne razjasnite granice migracije podataka i rollbacka.