Ako hostovať FreshRSS na vlastnej infraštruktúre v roku 2026: aktualizácia feedov, mobilné API a zálohy
Praktický návod na self-hosting FreshRSS, ktorý pokrýva Docker, porty, perzistentné dáta, TLS, bezpečnosť, zálohy a zlyhania blokujúce produkčné použitie. Vrátane kontrol.
Neúspešné nasadenie FreshRSS nemusí vždy spadnúť. Môže zobrazovať prihlasovaciu stránku, zatiaľ čo sa feedy nikdy neaktualizujú, pretože cron je vypnutý alebo zlyháva odchádzajúce DNS. Namiesto toho najskôr vykonajte end-to-end kontrolu: pridajte feedy, spustite plánovanú aktualizáciu, označte položku ako prečítanú a synchronizujte tento stav prostredníctvom mobilného API.
Táto kontrola zodpovedá deklarovanému účelu FreshRSS: self-hosted RSS reader s kompatibilným mobilným API. Zároveň odhalí chýbajúce závislosti, nesprávne predpoklady o proxy a efemérne dáta skôr, než to dokáže uptime probe.
Zmapujte FreshRSS ešte pred prácou s Dockerom
Pri FreshRSS oddeľte štyri oblasti: ingress, listener na porte 80, trvalý stav a podporné služby alebo lokálnu kapacitu. Externou požiadavkou pre FreshRSS je plánovaná aktualizácia feedov a odchádzajúci prístup k hostiteľom feedov. Otestujte odchádzajúce DNS, TLS a správanie poskytovateľa bez publikovania ďalšej inbound služby.
Predtým, než toto oddelenie označíte za dokončené, vykonajte overenú transakciu — pridajte feedy, spustite plánovanú aktualizáciu, označte položku ako prečítanú a synchronizujte tento stav prostredníctvom mobilného API. Zmerajte počet feedov, interval aktualizácie, pomalých publisherov, zápisy do databázy a počet súbežných API klientov a výsledok uchovajte spolu so záznamom o nasadení. Získate tak akceptačné kritérium aj prvý základ pre dimenzovanie kapacity.
Zálohujte stav, ktorý FreshRSS nedokáže znovu vytvoriť
Pripravte recovery manifest pre FreshRSS: dáta, extensions a vybranú databázu. Pred bootstrapom pripojte /var/www/FreshRSS/data, zapíšte neškodné ukážkové dáta a nahraďte kontajner, aby ste overili, že táto cesta je skutočne perzistentná. Hneď skontrolujte vlastníctvo a voľné miesto, pretože pripojená cesta bez práva na zápis sa správa, akoby nebola perzistentná vôbec.
Zálohujte do failure domainu oddeleného od bežiaceho servera. Znovu vytvorte FreshRSS z pripnutého image a overte, že sa obnovia odbery, kategórie, stav prečítania, filtre a extensions a že plánovaná aktualizácia načíta novú položku. Sprievodca perzistentnými volume pomáha preniesť toto cvičenie do pravidiel pre snapshoty a retention.
Zvoľte hranicu dôvery pre FreshRSS
Pri threat modelingu sa zamerajte na operáciu, ktorú FreshRSS vykonáva, nielen na prihlasovací formulár. Najrizikovejšou chybou je v tomto prípade ponechanie úvodného nastavenia alebo predvoleného používateľa dostupného na verejnom hoste. Implementujte túto hranicu: dokončite nastavenie v privátnom prostredí, chráňte API heslá a pred povolením mobilnej synchronizácie nakonfigurujte trusted proxies.
CRON_MIN ovplyvňuje správanie, nie dôvernosť; overte jeho typ a hodnotu a skutočné prihlasovacie údaje FreshRSS ukladajte oddelene. Chybu s oprávneniami neriešte spustením kontajnera ako root ani širokým pripojením hostiteľského systému. Resource limits patria do bezpečnostného návrhu aj vtedy, keď môžu používatelia spustiť operácie súvisiace s počtom feedov, intervalom aktualizácie, pomalými publishermi, zápismi do databázy a počtom súbežných API klientov.
Čo musí prejsť predtým, než FreshRSS začne prijímať skutočné dáta
Premeňte smoke test FreshRSS na opakovateľný release command alebo krátky runbook. Jeho výstup musí preukázať tento výsledok: pridajte feedy, spustite plánovanú aktualizáciu, označte položku ako prečítanú a synchronizujte tento stav prostredníctvom mobilného API. K výsledku zaznamenajte verziu aplikácie, digest kontajnera, hostname route a identifikátor testovacích dát.
Rovnakú kontrolu spustite po bežnej výmene kontajnera aj po obnovení dát, extensions a vybranej databázy na inom mieste. Obnova bola úspešná vtedy, keď sa vrátia odbery, kategórie, stav prečítania, filtre a extensions a plánovaná aktualizácia načíta novú položku. Porovnajte časovanie a spotrebu súvisiacu s počtom feedov, intervalom aktualizácie, pomalými publishermi, zápismi do databázy a počtom súbežných API klientov; výrazná zmena si zaslúži preverenie, aj keď záverečná operácia stále prejde.
Potom vykonajte bezpečné zlyhanie: dočasne zablokujte testovaciu cestu používanú na plánovanú aktualizáciu feedov a odchádzajúci prístup k hostiteľom feedov. Overte, že FreshRSS chybu zobrazí a bez deštruktívnych manuálnych úprav sa vráti do normálneho stavu. Uchovajte iba nevyhnutný, redigovaný výpis z logu. Táto štvorica kontrol pokrýva štart, perzistenciu, obnovu a spracovanie zlyhaní.
Základ pre FreshRSS v Dockeri
Produkčne navrhnuté spustenie je zámerne jednoduché: pomenovaný stav, explicitný port a žiadny secret priamo v 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
Príklad predstavuje základ, nie kompletný podporný stack. Povoľte a overte odchádzajúcu alebo klientsku cestu potrebnú na plánovanú aktualizáciu feedov a odchádzajúci prístup k hostiteľom feedov. Skontrolujte efektívne mounty a listener a potom skúste pridať feedy, spustiť plánovanú aktualizáciu, označiť položku ako prečítanú a synchronizovať tento stav prostredníctvom mobilného API. Pred ďalším reštartom pripnite funkčný image.
Nedovoľte, aby úspech proxy zakryl zlyhanie aplikácie
Prehliadač, API klient a FreshRSS musia používať rovnaký origin. Aby to tak bolo, deklarujte trusted proxies a kanonickú HTTPS base URL. Zachovajte pôvodný host a protokol a zároveň ponechajte port 80 nedostupný ako konkurenčnú verejnú adresu.
Sprievodca riešením problémov s nedostupným webom pomáha rozlíšiť nedostupnú route od aplikácie, ktorá odpovedá. Toto rozlíšenie je dôležité: feedy sa nikdy neaktualizujú, pretože cron je vypnutý alebo zlyháva odchádzajúce DNS. Zmeny v ingress opravia iba prvý prípad; druhý vyžaduje kontrolu logov FreshRSS, stavu alebo vyťaženia.
Sledujte workload, nielen kontajner
Sledujte prácu, ktorú FreshRSS vykonáva: počet feedov, interval aktualizácie, pomalých publisherov, zápisy do databázy a počet súbežných API klientov. Nastavte limity s rezervou pre túto záťaž a vyhnite sa liveness probe, ktorá s ňou súťaží o zdroje. Kontrola operátora by sa napriek tomu mala podľa plánu pokúsiť pridať feedy, spustiť plánovanú aktualizáciu, označiť položku ako prečítanú a synchronizovať tento stav prostredníctvom mobilného API.
Pri aktualizáciách nezabúdajte, že extensions, migrácie databázy a zmeny feed parsera môžu ovplyvniť aktualizácie, aj keď prihlasovanie stále funguje. Kandidáta nasaďte proti obnovenej kópii a zopakujte overený test. Ak sa feedy nikdy neaktualizujú, pretože cron je vypnutý alebo zlyháva odchádzajúce DNS, pomocou runtime logov a skutočnej sieťovej požiadavky zistite, ktorý predpoklad sa zmenil.
Presuňte opakovateľnú infraštruktúrnu prácu do Dockup
One-click nasadenie FreshRSS v Dockup by malo zaistiť bezpečnú výmenu: route bude naďalej smerovať na port 80, secrets nebudú zabudované v image a perzistentné cesty sa vrátia v novom kontajneri. Rovnaké nasadenie môže bežať na výpočtovej infraštruktúre Dockup alebo na pripojenom stroji.
Dokončite prácu špecifickú pre aplikáciu povolením a overením plánovanej aktualizácie feedov a odchádzajúceho prístupu k hostiteľom feedov, nastavením kanonickej verejnej adresy a vykonaním tejto akceptačnej kontroly: pridajte feedy, spustite plánovanú aktualizáciu, označte položku ako prečítanú a synchronizujte tento stav prostredníctvom mobilného API. Pred príchodom skutočných používateľov pridajte výsledok obnovy do runbooku.
Často kladené otázky
Čo FreshRSS potrebuje na produkčné nasadenie?
Smerujte kontajner FreshRSS na porte 80 cez jeden HTTPS origin. Externou požiadavkou na doručovanie je plánovaná aktualizácia feedov a odchádzajúci prístup k hostiteľom feedov. FreshRSS neoznačujte za pripravený, kým nedokážete pridať feedy, spustiť plánovanú aktualizáciu, označiť položku ako prečítanú a synchronizovať tento stav prostredníctvom mobilného API.
Ktoré dáta FreshRSS patria do zálohy?
Zachovajte /var/www/FreshRSS/data a zahrňte dáta, extensions a vybranú databázu do rovnakého recovery manifestu. Čistá obnova FreshRSS je úspešná iba vtedy, keď sa vrátia odbery, kategórie, stav prečítania, filtre a extensions a plánovaná aktualizácia načíta novú položku.
Vyžaduje FreshRSS HTTPS za reverse proxy?
Pre verejný origin FreshRSS používajte HTTPS a port 80 ponechajte na internej route. Správne aplikujte nastavenie FreshRSS: deklarujte trusted proxies a kanonickú HTTPS base URL. V prípade FreshRSS HTTPS chráni prihlasovacie údaje alebo používateľský obsah počas prenosu a zachováva konzistentné správanie klienta závislé od originu.
Ako testovať aktualizáciu FreshRSS?
Obnovte aktuálny stav FreshRSS do izolovaného nasadenia, aplikujte kandidátsku verziu a zopakujte jeho akceptačnú transakciu. Venujte mimoriadnu pozornosť tomu, že extensions, migrácie databázy a zmeny feed parsera môžu ovplyvniť aktualizácie, aj keď prihlasovanie stále funguje. Predchádzajúci FreshRSS image ponechajte, kým nebudete rozumieť hranici migrácie dát a rollbacku.
