Gostovanje FreshRSS na Managed VPS pomeni, da vi in vaša ekipa svoje vire RSS berete z lastnega stroja, ki ga naše ekipe posodabljajo in podnevi in ponoči spremljajo. FreshRSS je prosta programska oprema pod licenco AGPL-3.0. Ta vodnik sledi njegovi uradni dokumentaciji: namestitev z Docker Compose, HTTPS, osveževanje virov, računi in prijava, API za mobilne aplikacije, podatkovna zbirka, varnostne kopije in posodobitve.
Avtor: Simon Vasconcelos Lee
Objavljeno 11. novembra 2026Čas branja: 13 minut
data in extensions, za obratnim posredniškim strežnikom s HTTPS.CRON_MIN sama osvežuje vire: projekt priporoča približno dva zagona na uro.data in, pri PostgreSQL ali MySQL, zbirko, posodabljajte pa z docker compose pull.FreshRSS je zbiralnik virov RSS za samostojno gostovanje, napisan v PHP. README ga opisuje kot lahkega, preprostega za uporabo, zmogljivega in prilagodljivega, prevedenega v več kot dvajset jezikov. Je večuporabniška aplikacija, z načinom anonimnega branja in oznakami po meri.
FreshRSS razvija njegova skupnost na GitHubu, uradno spletišče pa objavlja skupnost FreshRSS. Razširitve živijo v ločenem repozitoriju, dokumentacija pa pokriva uporabnike, skrbnike in razvijalce.
FreshRSS je objavljen pod licenco GNU Affero General Public License, različica 3: njegov manifest composer.json jo navaja kot AGPL-3.0, README pa se sklicuje na besedilo licence. To besedilo določa neomejeno dovoljenje za poganjanje nespremenjenega programa. Sliko, ki jo objavi projekt, torej lahko uporabljate za svoje podjetje in ekipo, ne da bi morali kupiti licenco.
13. člen dodaja pogoj, značilen za AGPL: če program spremenite, mora vaša različica vsem, ki jo uporabljajo na daljavo, prek omrežja, ponuditi možnost brezplačnega prejema izvorne kode. Razširitev tretje osebe, dodana v nosilec extensions, sledi svoji licenci.
Projekt svoje uradne slike objavlja na Docker Hubu, kot freshrss/freshrss, skupaj s primerom datoteke Compose. Na strežniku z nameščenim Dockerjem ustvarite mapo freshrss in vanjo postavite ta compose.yaml, povzet po tej datoteki in README za Docker:
volumes:
data:
extensions:
services:
freshrss:
image: freshrss/freshrss:latest
container_name: freshrss
hostname: freshrss
restart: unless-stopped
logging:
options:
max-size: 10m
volumes:
- data:/var/www/FreshRSS/data
- extensions:/var/www/FreshRSS/extensions
ports:
- 127.0.0.1:8080:80
environment:
TZ: UTC
CRON_MIN: '3,33'
TRUSTED_PROXY: 172.16.0.1/12 192.168.0.1/16
healthcheck:
test: ["CMD", "cli/health.php"]
timeout: 10s
start_period: 60s
start_interval: 11s
interval: 75s
retries: 3
docker compose up -d
127.0.0.1: FreshRSS je dosegljiv le prek obratnega posredniškega strežnika, nameščenega na istem strežniku. Primer datoteke projekta objavi vrata 8080 za lokalno rabo; naslov 127.0.0.1 jih tukaj rezervira za posredniški strežnik.data hrani konfiguracijo, račune in, pri SQLite, zbirko vsakega uporabnika. README poudarja, da vsebuje vse osebne podatke. Docker Compose ga poimenuje po mapi: freshrss_data.extensions hrani razširitve tretjih oseb, če jih dodate.TZ dobi časovni pas strežnika, v obliki PHP; privzeto je UTC.TRUSTED_PROXY ohrani vrednost iz primera datoteke: zasebne razpone, iz katerih prihajajo zahteve posredniškega strežnika. Od tega je odvisno, kateri naslov se zapiše v dnevnike, obiskovalčev ali posredniškega strežnika.cli/health.php, da Docker ve, ali se instanca odziva.Oznaka latest, privzeta, sledi zadnji oštevilčeni izdaji; edge sledi sprotni izdaji; oznaka, kot je 1.30.4, določi različico, pripona -alpine pa daje isto na osnovi Alpine namesto Debiana. Razdelek o posodobitvah se k tej izbiri vrne.
Ko je obratni posredniški strežnik vzpostavljen, odprite svoj naslov HTTPS: čarovnik za namestitev vpraša za jezik, preveri strežnik, ponudi izbiro zbirke, nato ustvari skrbniški račun, z geslom in načinom prijave. SQLite deluje brez priprave. Namestitev deluje tudi iz ukazne vrstice, z cli/do-install.php in cli/create-user.php, zagnanima prek docker exec --user www-data freshrss.
Glede virov README zahteva lahek strežnik, z Linuxom ali Windows, in navaja, da FreshRSS teče celo na Raspberry Pi 1, z odzivnimi časi pod sekundo, pri 150 virih in 22.000 člankih. Velikost je odvisna od števila uporabnikov, virov in shranjenih člankov. Na Managed VPS nam opišite svojo rabo in priporočimo vam ustrezno velikost.
Za produkcijo README za Docker svetuje obratni posredniški strežnik na gostiteljskem strežniku, ki zagotavlja HTTPS. Najprej izberite ime domene ali poddomene, kot je rss.example.com, ki z zapisoma A in AAAA kaže na strežnik. Projekt priporoča Traefik in zanj objavlja celotno datoteko Compose, s potrdili Let’s Encrypt in preusmeritvijo s HTTP na HTTPS; daje tudi primere za Apache, Nginx in Caddy.
Caddy sam pridobi potrdilo in vključi HTTPS. Ta blok sledi primeru iz dokumentacije za poddomeno, tukaj usmerjenemu na lokalno objavljena vrata:
rss.example.com {
reverse_proxy 127.0.0.1:8080
}
Ta blok sledi primeru Nginx iz README za Docker za koren domene, skrajšanemu na vrata 80, da lahko Certbot vzpostavi HTTPS. Zadnji vrstici posredujeta glavo Authorization, ki jo potrebuje API Google Reader:
upstream freshrss {
server 127.0.0.1:8080;
keepalive 64;
}
server {
listen 80;
listen [::]:80;
server_name rss.example.com;
location / {
proxy_pass http://freshrss/;
proxy_redirect off;
proxy_buffering off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_read_timeout 90;
proxy_set_header Authorization $http_authorization;
proxy_pass_header Authorization;
}
}
Certbot nato namesti potrdilo in poskrbi za njegovo obnavljanje:
sudo certbot --nginx
FreshRSS svoj javni naslov hrani v base_url, v datoteki data/config.php. Od njega sta odvisna API in WebSub: preverite, da vsebuje vaš naslov https. README za Docker kaže, kje to datoteko najdete v nosilcu:
docker volume inspect freshrss_data
sudo nano /var/lib/docker/volumes/freshrss_data/_data/config.php
docker compose restart freshrss
'base_url' => 'https://rss.example.com/',
FreshRSS nove članke pridobi s svojim skriptom app/actualize_script.php. Slika Docker vsebuje načrtovano opravilo, ki ga zažene ob minutah, navedenih v CRON_MIN. Brez te spremenljivke ali s prazno vrednostjo opravilo ostane izklopljeno in viri se ne osvežujejo več sami.
13,43; deluje tudi */20.base_url, čarovnik za namestitev pa ga vključi, ko ga strežnik ima.Druga dokumentirana metoda: načrtovano opravilo na gostiteljskem strežniku, ki skript pokliče v vsebniku. V tem primeru iz compose.yaml odstranite CRON_MIN, da ohranite eno samo metodo:
7,37 * * * * root docker exec --user www-data freshrss php ./app/actualize_script.php > /tmp/FreshRSS.log 2>&1
Od različice 1.30.0 FreshRSS privzeto zavrača naslove lokalnega omrežja, kot je 127.0.0.1, kot zaščito pred ponarejanjem zahtev na strani strežnika. Sosednjo storitev, ki ustvarja vire, kot je RSS-Bridge, dovolite s spremenljivko INTERNAL_HOST_ALLOWLIST, v obliki rss-bridge:80, ali v sistemski konfiguraciji. Vrednost * odstrani vse preverjanje, dokumentacija pa jo označuje za nevarno.
Med namestitvijo FreshRSS ponudi prijavo z obrazcem, ki zahteva JavaScript. To je privzeti način in ustreza večini instanc. Dokumentacija opisuje še druge:
| Način | Kaj naredi | Kje se nastavi |
|---|---|---|
| Obrazec | Uporabniško ime in geslo, značilna za FreshRSS | Čarovnik za namestitev |
| Overjanje HTTP | Dostop nadzira spletni strežnik, novi uporabniki pa se ustvarijo ob prvi prijavi | Datoteka p/i/.htaccess, priklopljena v vsebnik, z njeno .htpasswd |
| Zunanje overjanje | Posredniški strežnik prijavljenega uporabnika posreduje v glavi Remote-User ali X-WebAuth-User | TRUSTED_PROXY, ki navaja zaupanja vredne posredniške strežnike |
| OpenID Connect | Prijava poteka prek vašega ponudnika identitete, z modulom Apache mod_auth_openidc | OIDC_ENABLED in spremenljivke OIDC_*, v sliki Debian na x86_64 |
Dokumentacija opozarja, da FreshRSS zaupa vsakemu naslovu, navedenemu v TRUSTED_PROXY: slabo zaščiten posredniški strežnik bi napadalcu omogočil, da nastavi glavo in pridobi skrbniški dostop. Tukaj vrata poslušajo le na 127.0.0.1, kar jih rezervira za posredniški strežnik na istem strežniku. Dokumentacija odsvetuje tudi vsako instanco brez overjanja, takoj ko je strežnik dosegljiv od zunaj vašega omrežja.
mailer in smtp v data/config.php: dokumentacija navaja, da pošiljanje s funkcijo PHP mail v uradnih slikah Docker še ni podprto.Za instanco, ki si jo deli več oseb, dokumentacija svetuje, da račune odprete osebam, ki jim zaupate, instanco pa hranite za posredniškim strežnikom ali požarnim zidom, ki blokira dostop do notranjih razponov naslovov.
FreshRSS deluje v brskalniku, na velikih in majhnih zaslonih, ter v aplikacijah za Android, iOS, Linux, Windows in macOS. Te aplikacije uporabljajo enega od njegovih dveh API-jev: Google Reader, ki ga README ocenjuje kot najboljšega, in Fever, z bolj omejenimi funkcijami, manj učinkovit in manj varen.
https://rss.example.com/api/greader.php ali https://rss.example.com/api/fever.php za Fever, z uporabniškim imenom in tem geslom API.Za preverjanje povezava, prikazana ob geslu API v profilu, odpre preizkusno stran: PASS pri celotnem preverjanju potrjuje, da vse deluje. Slika Docker že nastavi Apache, da sprejema kodirane poševnice, ki jih nekatere aplikacije potrebujejo; z Nginxom pred njim ohranite posredovanje glave Authorization.
README vodi tabelo združljivih aplikacij, z njihovo platformo, API-jem in funkcijami: med drugim Capy Reader in Readrops za Android, FeedFlow za mobilne in namizne naprave, RSS Guard in NewsFlash za namizje ter ReadKit in Reeder Classic za iOS in macOS.
FreshRSS ima vgrajeno SQLite, ki jo README za Docker opisuje kot najpreprostejšo možnost, z dobro zmogljivostjo. Stran z zahtevami priporoča PostgreSQL 10 ali novejšo, sprejema pa tudi MariaDB 10.6 in MySQL 8.0 ali novejšo. Izbiro opravite v čarovniku za namestitev.
| Zbirka | Vzpostavitev | Varnostna kopija |
|---|---|---|
| SQLite | Nobene: ena datoteka na uporabnika, data/users/<user>/db.sqlite | Nosilec data |
| PostgreSQL | Storitev postgres v isti datoteki compose.yaml | pg_dump ali cli/db-backup.php |
| MySQL ali MariaDB | Vaš strežnik zbirke in njegovo ime gostitelja v čarovniku | mysqldump ali cli/db-backup.php |
Za PostgreSQL v compose.yaml dodajte to storitev, povzeto po datoteki projekta docker-compose-db.yml, na seznam nosilcev pa nosilec db. Geslo gre v datoteko .env, ob compose.yaml:
freshrss-db:
image: postgres:18
container_name: freshrss-db
hostname: freshrss-db
restart: unless-stopped
logging:
options:
max-size: 10m
volumes:
- db:/var/lib/postgresql
environment:
POSTGRES_DB: freshrss
POSTGRES_USER: freshrss
POSTGRES_PASSWORD: ${DB_PASSWORD}
DB_PASSWORD='a-long-unique-password'
V čarovniku izberite PostgreSQL in kot gostitelja vpišite freshrss-db, z uporabnikom, geslom in zbirko freshrss.
K tej izbiri se lahko pozneje vrnete. Dokumentacija opisuje prehod z ene zbirke na drugo, na primer z MySQL na PostgreSQL, ali na novejšo glavno različico PostgreSQL: cli/db-backup.php zbirko vsakega uporabnika kopira v datoteko SQLite, nato jo cli/db-restore.php naloži v novo zbirko.
README navaja, da FreshRSS ne prinaša nobene garancije: vaše varnostne kopije ohranjajo vaše naročnine, članke in nastavitve. Tukaj je, kaj dokumentacija prosi, da varnostno kopirate:
| Element | Kaj hrani | Varnostna kopija |
|---|---|---|
data/ | Konfiguracijo, račune, dnevnike in, pri SQLite, zbirke | Obvezno; cache/ lahko izpustite, FreshRSS ga zgradi znova |
extensions/ | Razširitve tretjih oseb | Priporočeno, če jih uporabljate |
| Zunanja zbirka | Pri PostgreSQL, MySQL ali MariaDB podatke uporabnikov | Obvezno, ločeno |
Dokumentacija šteje za varnejše, da storitev med vzdrževalnimi posegi ustavite. Nosilci Docker se kopirajo z začasnim vsebnikom, po metodi, opisani v dokumentaciji Dockerja:
docker compose stop freshrss
docker run --rm --volumes-from freshrss -v "$PWD":/backup ubuntu tar -czf /backup/freshrss-$(date +%F).tgz --exclude=data/cache -C /var/www/FreshRSS data extensions
docker compose start freshrss
Od različice 1.29.1 FreshRSS zna sam izvoziti zbirko vsakega uporabnika v datoteko SQLite, ne glede na zbirko, ki jo uporabljate, in obdržati le najnovejše. Ta izvoz vključite v data/config.php:
'auto_sqlite_export' => [
'enabled' => true,
'retention' => 7,
],
Nato ukaz načrtujte na strežniku, tukaj vsako noč. Vsak zagon zapiše data/users/<user>/sqlite-backups/<date>.sqlite in izbriše datoteke, starejše od zadnjih sedmih:
20 2 * * * root docker exec --user www-data freshrss cli/export-sqlite-auto.php --quiet
Pri PostgreSQL dodajte izvoz z orodjem zbirke same, kot v README za Docker. Možnost -T odstrani terminal, ki ga načrtovano opravilo ne potrebuje:
docker compose exec -T freshrss-db pg_dump -U freshrss freshrss | gzip -9 > freshrss-postgres-$(date +%F).sql.gz
Izvoz OPML iz vmesnika varnostno kopira vaš seznam virov, brez nekaterih nastavitev, značilnih za FreshRSS, kot so dostopni podatki ali pravila za zajem strani. Za popolno kopijo hranite izvoze SQLite: postavljeni na disk strežnika vstopijo tudi v njegove nočne varnostne kopije.
docker compose stop freshrss.docker run --rm --volumes-from freshrss -v "$PWD":/backup ubuntu tar -xzf /backup/freshrss-YYYY-MM-DD.tgz -C /var/www/FreshRSS.cli/db-restore.php --delete-backup --force-overwrite.docker compose start freshrss, nato preverite, da so vaši viri in članki na mestu.To vajo občasno ponovite, na kopiji: tako preverite, da varnostna kopija deluje.
README za Docker navaja dva ukaza, ki ju zaženete v mapi datoteke compose.yaml. Nosilci ostanejo na mestu:
docker compose pull
docker compose up -d
FreshRSS objavlja na dveh kanalih. Oštevilčene izdaje, oznaka latest, izidejo nekajkrat na leto, brez stalnega koledarja, njihovi popravki pa se ne prenašajo na starejše različice. Sprotna izdaja, oznaka edge, dobiva nove funkcije in popravke, takoj ko so na voljo: od različice 1.30.0 jo projekt priporoča zaradi hitrejših varnostnih popravkov.
data/, razširitev in zbirke.1.29.1.Za spremljanje novih izdaj projekt objavlja vir Atom svojih različic: nanj naročite kar svojo instanco FreshRSS.
Samostojno gostovanje poleg aplikacije zahteva tudi vzdrževanje strežnika. Na Managed VPS naše ekipe prevzamejo strežnik in proaktivno spremljajo vašo instanco; FreshRSS ostaja vaša programska oprema, z vašimi nastavitvami in podatki.
| Tema | Naše ekipe | Vi |
|---|---|---|
| Strežnik | Posodobitve sistema in varnosti, vključno s posegi na strežniku | Trenutek, ki ustreza vaši dejavnosti |
| Nadzor | Strežnik pod nadzorom 24 ur na dan, 7 dni v tednu, s posegom brez čakanja na vaš klic | Branje dnevnikov vaše instance |
| FreshRSS | Proaktivno spremljanje: napake, upočasnitve in prostor na disku, s priporočenim popravkom | Namestitev, posodobitve in nastavitve, ki jih uvedete vi ali vaš AI pomočnik |
| Računi in viri | Strežnik, ki jih nosi, pod nadzorom in varnostno kopiran | Uporabniki, naročnine, razširitve in gesla API |
| Varnostne kopije | Vsako noč, šifrirane in shranjene zunaj stroja; obnova je vključena | Izvozi, značilni za FreshRSS, in zahteva za obnovo, ko jo potrebujete |
| Selitev | Selitev vašega sedanjega strežnika, brezplačno | Trenutek preklopa |
Če želite, da naše ekipe posežejo v samo aplikacijo, se ta storitev zaračuna po urah ali pavšalno, z oceno stroškov, sporočeno pred posegom.
Z Managed VPS Simafri naše ekipe strežnik vaše instance FreshRSS sproti posodabljajo, ga podnevi in ponoči nadzirajo ter posežejo brez čakanja na vaš klic; vašo instanco tudi proaktivno spremljajo in vam priporočajo koristne popravke, ki jih uvedete vi ali vaš AI pomočnik. Varnostne kopije so vsako noč šifrirane in shranjene zunaj stroja, njihova obnova je vključena, selitev vašega sedanjega strežnika pa je brezplačna.
Da. FreshRSS je pod licenco AGPL-3.0: v podjetju ga lahko poganjate, ne da bi morali kupiti licenco. Če ga spremenite, mora vaša različica tistim, ki jo uporabljajo prek omrežja, ponuditi izvorno kodo. Ostane le strošek strežnika, na katerem teče.
Ustvarite compose.yaml s sliko freshrss/freshrss, nosilcema data in extensions ter vrati, objavljenimi na 127.0.0.1, nato zaženite docker compose up -d. Pred aplikacijo nato postavite obratni posredniški strežnik s HTTPS, odprite svoj naslov in sledite čarovniku za namestitev.
S sliko Docker v CRON_MIN navedite minute zagona, na primer 13,43: projekt priporoča približno dva zagona na uro. Brez CRON_MIN vgrajeno opravilo ostane izklopljeno. Enako delo opravi načrtovano opravilo na strežniku, ki v vsebniku zažene app/actualize_script.php.
SQLite je vgrajena in ne zahteva priprave; README za Docker jo opisuje kot najpreprostejšo, z dobro zmogljivostjo. Stran z zahtevami priporoča PostgreSQL 10 ali novejšo, sprejema pa MariaDB 10.6 in MySQL 8.0. Ukaza db-backup in db-restore omogočata poznejšo menjavo zbirke.
V razdelku Overjanje vključite dostop do API-ja, nato v svojem profilu nastavite geslo API. V združljivi aplikaciji vpišite naslov api/greader.php svoje instance, saj je API Google Reader po README najboljši, ali api/fever.php.
Privzeto ne: konfiguracija omeji račune na skrbnikovega. Druge ustvarite v Administracija, Upravljanje uporabnikov, ali pa v sistemski konfiguraciji povečate število računov, da se pokaže obrazec za registracijo.
Z ustavljeno storitvijo kopirajte nosilca data in extensions. Vključite tudi auto_sqlite_export in načrtujte cli/export-sqlite-auto.php, ki vsako noč izvozi zbirko vsakega uporabnika v SQLite. Pri PostgreSQL dodajte pg_dump. Obnovo redno preizkušajte.
Managed VPS pokriva strežnik: sistem, varnost, nadzor in varnostne kopije. Naše ekipe proaktivno spremljajo tudi vašo instanco in vam priporočajo koristne popravke, ki jih uvedete vi. Poseg v aplikacijo se zaračuna po urah ali pavšalno.
Simafri
Pogovorimo se o vašem projektu
Povejte nam v nekaj besedah, kaj potrebujete: hitro se vam oglasimo.
Hvala! Vaše povpraševanje je bilo poslano. Kmalu vam bomo odgovorili.
Imate raje e-pošto? Pišite nam na support@simafri.com.