Kako samostalno hostati FreshRSS u 2026.: osvježavanje feedova, mobilni API i sigurnosne kopije
Praktičan vodič za samostalno hostanje FreshRSS-a koji obuhvaća Docker, portove, trajne podatke, TLS, sigurnost, sigurnosne kopije i probleme koji onemogućuju produkcijsku upotrebu. Uz provjere.
Neuspješna implementacija FreshRSS-a ne mora se uvijek srušiti. Može posluživati stranicu za prijavu, dok se feedovi nikad ne osvježavaju jer je cron onemogućen ili vanjski DNS ne radi. Umjesto toga započnite provjerom od početka do kraja: dodajte feedove, pokrenite zakazano osvježavanje, označite stavku kao pročitanu i sinkronizirajte to stanje putem mobilnog API-ja.
Ta provjera odgovara dokumentiranoj namjeni FreshRSS-a: RSS čitač koji se samostalno hosta i ima kompatibilan mobilni API. Također ranije otkriva nedostajuće ovisnosti, pogrešne pretpostavke o proxyju i efemerne podatke nego što to može učiniti probe za dostupnost.
Mapirajte FreshRSS prije nego što dirate Docker
Za FreshRSS odvojite četiri područja: ulazni promet, listener na portu 80, trajno stanje te pomoćne servise ili lokalne kapacitete. Vanjski zahtjev za FreshRSS je zakazano osvježavanje feedova i izlazni pristup hostovima feedova. Testirajte vanjski DNS, TLS i ponašanje pružatelja bez objavljivanja još jednog ulaznog servisa.
Pokrenite provjerenu transakciju — dodajte feedove, pokrenite zakazano osvježavanje, označite stavku kao pročitanu i sinkronizirajte to stanje putem mobilnog API-ja — prije nego što tu podjelu proglasite dovršenom. Izmjerite broj feedova, interval osvježavanja, spore izdavače, upise u bazu podataka i broj istodobnih API klijenata te rezultat pohranite uz zapis o implementaciji. Time dobivate i kriterij prihvaćanja i početnu osnovu za procjenu kapaciteta.
Sigurnosno kopirajte stanje koje FreshRSS ne može ponovno stvoriti
Izradite manifest oporavka za FreshRSS: podatke, ekstenzije i odabranu bazu podataka. Montirajte /var/www/FreshRSS/data prije početnog postavljanja, zapišite bezopasne ogledne podatke i zamijenite container kako biste dokazali da je ta putanja doista trajna. Odmah provjerite vlasništvo i slobodan prostor jer se montirana putanja bez dozvole za pisanje ponaša kao da uopće nema trajnosti.
Sigurnosne kopije pohranjujte u domenu kvara koja je odvojena od pokrenutog servera. Ponovno izradite FreshRSS iz zaključane image verzije i provjerite vraćaju li se pretplate, kategorije, stanje pročitanosti, filteri i ekstenzije te dohvaća li zakazano osvježavanje novu stavku. Vodič za trajne volumene pomaže tu vježbu pretvoriti u pravila za snapshotove i zadržavanje podataka.
Odaberite granicu povjerenja za FreshRSS
Modelirajte prijetnje za radnju koju FreshRSS izvršava, a ne samo za obrazac za prijavu. Ovdje je visokorizična pogreška ostaviti početno postavljanje ili zadanog korisnika dostupnima na javnom hostu. Uspostavite ovu granicu: dovršite postavljanje privatno, zaštitite API lozinke i konfigurirajte pouzdane proxyje prije uključivanja mobilne sinkronizacije.
CRON_MIN upravlja ponašanjem, a ne povjerljivošću; provjerite njegov tip i vrijednost te stvarne FreshRSS vjerodajnice pohranite odvojeno. Pogrešku s dozvolama nemojte rješavati pokretanjem containera kao root ili širokim montiranjem hosta. Ograničenja resursa također su dio sigurnosnog dizajna kada korisnici mogu pokrenuti radnje povezane s brojem feedova, intervalom osvježavanja, sporim izdavačima, upisima u bazu podataka i brojem istodobnih API klijenata.
Što mora proći prije nego što stignu stvarni FreshRSS podaci
Pretvorite smoke test za FreshRSS u ponovljivu naredbu za izdanje ili kratki runbook. Njegov izlaz mora dokazati sljedeći rezultat: dodajte feedove, pokrenite zakazano osvježavanje, označite stavku kao pročitanu i sinkronizirajte to stanje putem mobilnog API-ja. Uz rezultat zabilježite verziju aplikacije, digest containera, hostname rute i identifikator testnih podataka.
Istu provjeru pokrenite nakon uobičajene zamjene containera i nakon vraćanja podataka, ekstenzija i odabrane baze podataka na drugoj lokaciji. Oporavak je uspješan kada se vrate pretplate, kategorije, stanje pročitanosti, filteri i ekstenzije te kada zakazano osvježavanje dohvati novu stavku. Usporedite trajanje i potrošnju povezane s brojem feedova, intervalom osvježavanja, sporim izdavačima, upisima u bazu podataka i brojem istodobnih API klijenata; velika promjena vrijedi istrage čak i kada završna radnja i dalje prolazi.
Zatim izvedite siguran kvar: privremeno onemogućite testnu putanju koju koriste zakazano osvježavanje feedova i izlazni pristup hostovima feedova. Potvrdite da FreshRSS prikazuje grešku i vraća se u normalno stanje bez destruktivnih ručnih izmjena. Sačuvajte samo nužni, anonimizirani isječak loga. Ova provjera u četiri dijela obuhvaća pokretanje, trajnost, oporavak i postupanje u slučaju kvara.
Osnovna Docker konfiguracija za FreshRSS
Pokretanje oblikovano prema produkciji namjerno je jednostavno: imenovano stanje, eksplicitni port i nijedna tajna vrijednost unutar imagea.
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
Primjer je osnova, a ne potpuni supporting stack. Dopustite i provjerite izlaznu ili klijentsku putanju potrebnu za zakazano osvježavanje feedova i izlazni pristup hostovima feedova. Provjerite efektivno montirane volumene i listener, a zatim pokušajte dodati feedove, pokrenuti zakazano osvježavanje, označiti stavku kao pročitanu i sinkronizirati to stanje putem mobilnog API-ja. Zaključajte ispravnu image verziju prije sljedećeg ponovnog pokretanja.
Spriječite da uspjeh proxyja prikrije kvar aplikacije
Preglednik, API klijent i FreshRSS moraju se slagati oko jednog origina. Da biste to postigli, navedite pouzdane proxyje i kanonsku HTTPS osnovnu adresu. Sačuvajte izvorni host i protokol, a port 80 zadržite nedostupnim kao konkurentsku javnu adresu.
Vodič za otklanjanje problema s nedostupnom stranicom pomaže razlikovati nedostupnu rutu od aplikacije koja odgovara. Ta je razlika ovdje važna: feedovi se nikad ne osvježavaju jer je cron onemogućen ili vanjski DNS ne radi. Samo se prvi problem rješava promjenama ulaznog prometa; za drugi su potrebni logovi FreshRSS-a te provjera stanja ili opterećenja.
Nadzirite radno opterećenje, a ne samo container
Pratite posao koji FreshRSS obavlja: broj feedova, interval osvježavanja, spore izdavače, upise u bazu podataka i broj istodobnih API klijenata. Postavite ograničenja s dovoljno prostora za taj posao i izbjegavajte liveness probu koja se natječe za resurse. Operatorska provjera i dalje bi prema rasporedu trebala pokušati dodati feedove, pokrenuti zakazano osvježavanje, označiti stavku kao pročitanu i sinkronizirati to stanje putem mobilnog API-ja.
Kod ažuriranja imajte na umu da ekstenzije, migracije baze podataka i promjene parsera feedova mogu utjecati na osvježavanja čak i kada prijava i dalje radi. Kandidata implementirajte na oporavljenoj kopiji i ponovite poznati test. Ako se feedovi nikad ne osvježavaju jer je cron onemogućen ili vanjski DNS ne radi, pomoću runtime logova i stvarnog mrežnog zahtjeva utvrdite koja se pretpostavka promijenila.
Premjestite ponovljivi infrastrukturni posao na Dockup
Dockupova implementacija FreshRSS-a jednim klikom trebala bi zamjenu učiniti sigurnom: ruta i dalje cilja port 80, tajne nisu ugrađene u image, a trajne putanje vraćaju se u novom containeru. Ista implementacija može se pokretati na Dockup computeu ili priključenom računalu.
Dovršite rad specifičan za aplikaciju dopuštanjem i provjerom zakazanog osvježavanja feedova i izlaznog pristupa hostovima feedova, primijenite kanonsku javnu adresu i pokrenite ovu provjeru prihvaćanja: dodajte feedove, pokrenite zakazano osvježavanje, označite stavku kao pročitanu i sinkronizirajte to stanje putem mobilnog API-ja. Dodajte rezultat oporavka u runbook prije dolaska stvarnih korisnika.
Često postavljana pitanja
Što je FreshRSS-u potrebno za produkcijsku implementaciju?
Usmjerite FreshRSS container na port 80 putem jednog HTTPS origina. Vanjski zahtjev za isporuku je zakazano osvježavanje feedova i izlazni pristup hostovima feedova. Nemojte FreshRSS proglasiti spremnim dok ne možete dodati feedove, pokrenuti zakazano osvježavanje, označiti stavku kao pročitanu i sinkronizirati to stanje putem mobilnog API-ja.
Koji podaci FreshRSS-a pripadaju sigurnosnoj kopiji?
Učinite /var/www/FreshRSS/data trajnim i u isti manifest oporavka uključite podatke, ekstenzije i odabranu bazu podataka. Čisti oporavak FreshRSS-a uspješan je samo kada se vrate pretplate, kategorije, stanje pročitanosti, filteri i ekstenzije te kada zakazano osvježavanje dohvati novu stavku.
Zahtijeva li FreshRSS HTTPS iza reverse proxyja?
Za javni FreshRSS origin koristite HTTPS, a port 80 zadržite na internoj ruti. Ispravno primijenite postavku FreshRSS-a: navedite pouzdane proxyje i kanonsku HTTPS osnovnu adresu. Za FreshRSS HTTPS štiti vjerodajnice ili korisnički sadržaj tijekom prijenosa te osigurava dosljedno ponašanje klijenta ovisno o originu.
Kako treba testirati nadogradnju FreshRSS-a?
Vratite trenutačno stanje FreshRSS-a u izoliranu implementaciju, primijenite kandidatsku verziju i ponovite njegovu transakciju prihvaćanja. Obratite posebnu pozornost jer ekstenzije, migracije baze podataka i promjene parsera feedova mogu utjecati na osvježavanja čak i kada prijava i dalje radi. Prethodnu image verziju FreshRSS-a zadržite dok ne razjasnite granice migracije podataka i rollbacka.
