Rejstřík deníkuDockup / terénní poznámka
Note / self-host-freshrss

Jak si v roce 2026 hostovat FreshRSS: aktualizace kanálů, mobilní API a zálohy

Praktický průvodce self-hostingem FreshRSS, který pokrývá Docker, porty, trvalá data, TLS, zabezpečení, zálohy a problémy bránící produkčnímu nasazení. Včetně kontrol.

Neúspěšné nasazení FreshRSS nemusí vždy skončit pádem. Může zobrazovat přihlašovací stránku, zatímco se kanály nikdy neaktualizují, protože je vypnutý cron nebo nefunguje odchozí DNS. Místo toho začněte end-to-end kontrolou: přidejte kanály, spusťte plánovanou aktualizaci, označte položku jako přečtenou a synchronizujte tento stav prostřednictvím mobilního API.

Tato kontrola odpovídá deklarovanému účelu FreshRSS: self-hosted čtečka RSS s kompatibilním mobilním API. Zároveň odhalí chybějící závislosti, nesprávné předpoklady o proxy a pomíjivá data dříve než kontrola dostupnosti.

Zmapujte FreshRSS, než se pustíte do Dockeru

U FreshRSS oddělte čtyři oblasti: ingress, listener na portu 80, trvalý stav a podpůrné služby nebo lokální kapacitu. Vnější požadavek FreshRSS spočívá v plánované aktualizaci kanálů a odchozím přístupu k hostitelům kanálů. Otestujte odchozí DNS, TLS a chování poskytovatelů, aniž byste publikovali další službu dostupnou z internetu.

Než budete toto oddělení považovat za dokončené, spusťte ověřenou transakci — přidejte kanály, spusťte plánovanou aktualizaci, označte položku jako přečtenou a synchronizujte tento stav prostřednictvím mobilního API. Změřte počet kanálů, interval aktualizace, pomalé poskytovatele, zápisy do databáze a počet souběžných klientů API a výsledek uložte spolu se záznamem o nasazení. Získáte tak jak akceptační kritérium, tak první kapacitní základ.

Zálohujte stav, který FreshRSS nedokáže znovu vytvořit

Připravte pro FreshRSS manifest obnovy: data, rozšíření a zvolenou databázi. Před bootstrapem připojte /var/www/FreshRSS/data, zapište neškodná testovací data a nahraďte kontejner, abyste ověřili, že je tato cesta skutečně trvalá. Zkontrolujte vlastnictví a volné místo už nyní, protože připojená, ale nezapisovatelná cesta se v praxi chová stejně, jako kdyby žádná persistence neexistovala.

Zálohujte do failure domain oddělené od běžícího serveru. Znovu vytvořte FreshRSS z připnutého image a ověřte, že se vrátí odběry, kategorie, stav přečtení, filtry a rozšíření a že plánovaná aktualizace načte novou položku. Průvodce persistentními svazky pomůže převést toto cvičení do zásad pro snapshoty a jejich uchovávání.

Zvolte hranici důvěry FreshRSS

Threat-modelujte akci, kterou FreshRSS provádí, nejen jeho přihlašovací formulář. V tomto případě spočívá největší riziko v ponechání úvodního nastavení nebo výchozího uživatele veřejně přístupného na veřejném hostiteli. Nastavte tuto hranici: dokončete nastavení neveřejně, chraňte hesla k API a před povolením mobilní synchronizace nakonfigurujte trusted proxies.

CRON_MIN řídí chování, nikoli důvěrnost; ověřte jeho typ a hodnotu a skutečné přihlašovací údaje FreshRSS ukládejte odděleně. Chybu oprávnění neřešte spuštěním kontejneru jako root ani širokým připojením hostitele. Resource limits patří také do návrhu zabezpečení, pokud mohou uživatelé ovlivnit počet kanálů, interval aktualizace, pomalé poskytovatele, zápisy do databáze a počet souběžných klientů API.

Co musí projít, než dorazí skutečná data FreshRSS

Převeďte smoke test FreshRSS do opakovatelného release příkazu nebo krátkého runbooku. Jeho výstup musí prokázat tento výsledek: přidání kanálů, spuštění plánované aktualizace, označení položky jako přečtené a synchronizaci tohoto stavu prostřednictvím mobilního API. Spolu s výsledkem zaznamenejte verzi aplikace, digest kontejneru, hostname route a identifikátor testovacích dat.

Stejnou kontrolu spusťte po běžné výměně kontejneru i po obnovení dat, rozšíření a zvolené databáze na jiném místě. Obnova je úspěšná, když se vrátí odběry, kategorie, stav přečtení, filtry a rozšíření a plánovaná aktualizace načte novou položku. Porovnejte časování a spotřebu související s počtem kanálů, intervalem aktualizace, pomalými poskytovateli, zápisy do databáze a počtem souběžných klientů API; výrazná změna stojí za prošetření, i když závěrečná akce stále projde.

Poté otestujte bezpečné selhání: dočasně zakažte testovací cestu používanou pro plánovanou aktualizaci kanálů a odchozí přístup k hostitelům kanálů. Ověřte, že FreshRSS chybu zobrazí a bez destruktivních ručních zásahů se vrátí do normálního stavu. Uchovejte pouze nezbytný, redigovaný výpis z logu. Tato čtyřdílná kontrola pokrývá spuštění, persistenci, obnovu a zpracování chyb.

Základ FreshRSS pro Docker

Produkčně tvarované spuštění je záměrně nudné: pojmenovaný stav, explicitní port a žádný secret uvnitř image.

docker run -d \
  --name freshrss \
  --restart unless-stopped \
  -p 127.0.0.1:80:80 \
  -v freshrss-data:/var/www/FreshRSS/data \
  -e CRON_MIN=15 \
  freshrss/freshrss:latest

Příklad představuje základ, nikoli kompletní podpůrný stack. Povolte a ověřte odchozí nebo klientskou cestu potřebnou pro plánovanou aktualizaci kanálů a odchozí přístup k hostitelům kanálů. Zkontrolujte skutečně připojené svazky a listener a poté zkuste přidat kanály, spustit plánovanou aktualizaci, označit položku jako přečtenou a synchronizovat tento stav prostřednictvím mobilního API. Před dalším restartem připněte funkční image.

Zabraňte tomu, aby úspěch proxy zakryl chybu aplikace

Prohlížeč, klient API a FreshRSS se musí shodovat na jednom originu. Aby tomu tak bylo, deklarujte trusted proxies a kanonickou HTTPS base URL. Zachovejte původní host a protokol a zároveň ponechte port 80 nedostupný jako konkurenční veřejnou adresu.

Průvodce řešením nedostupného webu pomůže odlišit nedostupnou route od aplikace, která odpovídá. Toto rozlišení je zde důležité: kanály se nikdy neaktualizují, protože je vypnutý cron nebo nefunguje odchozí DNS. Změny ingressu opraví pouze první případ; druhý vyžaduje kontrolu logů FreshRSS, stavu nebo workloadu.

Sledujte workload, nejen kontejner

Sledujte práci, kterou FreshRSS provádí: počet kanálů, interval aktualizace, pomalé poskytovatele, zápisy do databáze a počet souběžných klientů API. Nastavte limity s rezervou pro tuto práci a nepoužívejte liveness probe, která s ní soutěží o zdroje. Kontrola operátora by se přesto měla podle plánu pokusit přidat kanály, spustit plánovanou aktualizaci, označit položku jako přečtenou a synchronizovat tento stav prostřednictvím mobilního API.

U aktualizací pamatujte, že rozšíření, migrace databáze a změny parseru kanálů mohou ovlivnit aktualizace, i když přihlášení stále funguje. Kandidáta nasaďte proti obnovené kopii a zopakujte známý test. Pokud se kanály nikdy neaktualizují, protože je vypnutý cron nebo nefunguje odchozí DNS, použijte runtime logy a skutečný síťový požadavek ke zjištění, který předpoklad se změnil.

Přesuňte opakovatelnou infrastrukturní práci do Dockup

One-click nasazení FreshRSS v Dockup by mělo zajistit bezpečnou výměnu: route bude i nadále směřovat na port 80, secrets nebudou zapečené do image a persistentní cesty se vrátí v novém kontejneru. Stejné nasazení může běžet na výpočetních prostředcích Dockup nebo na připojeném stroji.

Dokončete práci specifickou pro aplikaci povolením a ověřením plánované aktualizace kanálů a odchozího přístupu k hostitelům kanálů, nastavením kanonické veřejné adresy a spuštěním této akceptační kontroly: přidejte kanály, spusťte plánovanou aktualizaci, označte položku jako přečtenou a synchronizujte tento stav prostřednictvím mobilního API. Před příchodem skutečných uživatelů přidejte do runbooku výsledek obnovy.

Často kladené dotazy

Co FreshRSS potřebuje pro produkční nasazení?

Směrujte kontejner FreshRSS na portu 80 přes jediný HTTPS origin. Požadavkem na vnější konektivitu je plánovaná aktualizace kanálů a odchozí přístup k hostitelům kanálů. FreshRSS nepovažujte za připravený, dokud nedokážete přidat kanály, spustit plánovanou aktualizaci, označit položku jako přečtenou a synchronizovat tento stav prostřednictvím mobilního API.

Která data FreshRSS patří do zálohy?

Zajistěte persistenci /var/www/FreshRSS/data a do stejného manifestu obnovy zahrňte data, rozšíření a zvolenou databázi. Čistá obnova FreshRSS je úspěšná pouze tehdy, když se vrátí odběry, kategorie, stav přečtení, filtry a rozšíření a plánovaná aktualizace načte novou položku.

Vyžaduje FreshRSS HTTPS za reverse proxy?

Pro veřejný origin FreshRSS použijte HTTPS a port 80 ponechte na interní route. Nastavení FreshRSS aplikujte správně: deklarujte trusted proxies a kanonickou HTTPS base URL. U FreshRSS HTTPS chrání přihlašovací údaje nebo uživatelský obsah při přenosu a udržuje konzistentní chování klienta závislé na originu.

Jak testovat aktualizaci FreshRSS?

Obnovte aktuální stav FreshRSS do izolovaného nasazení, aplikujte kandidátní verzi a zopakujte jeho akceptační transakci. Věnujte tomu zvláštní pozornost, protože rozšíření, migrace databáze a změny parseru kanálů mohou ovlivnit aktualizace, i když přihlášení stále funguje. Předchozí image FreshRSS si ponechte, dokud nebudete znát hranici migrace dat a možnosti rollbacku.