Gostovanje FreshRSS na Managed VPS: vaši viri RSS na vašem strežniku

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.

Simon Vasconcelos Lee Avtor: Objavljeno 11. novembra 2026Čas branja: 13 minut

Vsi vodniki

Na kratko

  1. Licenca AGPL-3.0 dovoljuje prosto poganjanje programa FreshRSS, v podjetju in drugod; če ga spremenite, kodo svoje različice ponudite tistim, ki ga uporabljajo.
  2. Namestite ga z Docker Compose: ena slika, lokalno objavljena vrata in dva nosilca, data in extensions, za obratnim posredniškim strežnikom s HTTPS.
  3. Spremenljivka CRON_MIN sama osvežuje vire: projekt priporoča približno dva zagona na uro.
  4. Registracije so privzeto zaprte. Za mobilne aplikacije vključite API, nato vsak uporabnik nastavi geslo API.
  5. Varnostno kopirajte nosilec data in, pri PostgreSQL ali MySQL, zbirko, posodabljajte pa z docker compose pull.

Kaj počne FreshRSS

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.

Kaj dovoljuje licenca AGPL-3.0

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.

Namestitev z Docker Compose

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:

compose.yaml
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
Terminal, v mapi freshrss
docker compose up -d

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.

Dokončanje namestitve

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.

HTTPS: obratni posredniški strežnik

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.

S Caddyjem

Caddy sam pridobi potrdilo in vključi HTTPS. Ta blok sledi primeru iz dokumentacije za poddomeno, tukaj usmerjenemu na lokalno objavljena vrata:

Caddyfile
rss.example.com {
  reverse_proxy 127.0.0.1:8080
}

Z Nginxom in Certbotom

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:

Blok Nginx
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:

Terminal
sudo certbot --nginx

Javni naslov: base_url

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:

Terminal
docker volume inspect freshrss_data
sudo nano /var/lib/docker/volumes/freshrss_data/_data/config.php
docker compose restart freshrss
data/config.php
'base_url' => 'https://rss.example.com/',

Osveževanje virov: CRON_MIN

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.

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:

/etc/cron.d/FreshRSS
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.

Računi in prijava

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činKaj narediKje se nastavi
ObrazecUporabniško ime in geslo, značilna za FreshRSSČarovnik za namestitev
Overjanje HTTPDostop nadzira spletni strežnik, novi uporabniki pa se ustvarijo ob prvi prijaviDatoteka p/i/.htaccess, priklopljena v vsebnik, z njeno .htpasswd
Zunanje overjanjePosredniški strežnik prijavljenega uporabnika posreduje v glavi Remote-User ali X-WebAuth-UserTRUSTED_PROXY, ki navaja zaupanja vredne posredniške strežnike
OpenID ConnectPrijava poteka prek vašega ponudnika identitete, z modulom Apache mod_auth_openidcOIDC_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.

Registracije in uporabniki

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.

Mobilne aplikacije: API Google Reader in Fever

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.

  1. Kot skrbnik v razdelku Overjanje vključite možnost, ki dovoljuje dostop do API-ja.
  2. Vsak uporabnik v svojem profilu nastavi geslo API. Je ločeno od glavnega gesla, daje dostop do manj stvari in je namenjeno manj varnim okoliščinam.
  3. V aplikaciji vpišite naslov 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.

SQLite, PostgreSQL, MySQL ali MariaDB

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.

ZbirkaVzpostavitevVarnostna kopija
SQLiteNobene: ena datoteka na uporabnika, data/users/<user>/db.sqliteNosilec data
PostgreSQLStoritev postgres v isti datoteki compose.yamlpg_dump ali cli/db-backup.php
MySQL ali MariaDBVaš strežnik zbirke in njegovo ime gostitelja v čarovnikumysqldump 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:

compose.yaml, pod services
  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}
.env
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.

Varnostne kopije

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:

ElementKaj hraniVarnostna kopija
data/Konfiguracijo, račune, dnevnike in, pri SQLite, zbirkeObvezno; cache/ lahko izpustite, FreshRSS ga zgradi znova
extensions/Razširitve tretjih osebPriporočeno, če jih uporabljate
Zunanja zbirkaPri PostgreSQL, MySQL ali MariaDB podatke uporabnikovObvezno, ločeno

Nosilci, z ustavljeno storitvijo

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:

Terminal, v mapi freshrss
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

Zbirke, med delovanjem storitve

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:

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:

/etc/cron.d/freshrss-export
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:

Terminal, v mapi freshrss
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.

Obnova

  1. Ustavite FreshRSS z docker compose stop freshrss.
  2. Arhiv znova naložite v nosilce: docker run --rm --volumes-from freshrss -v "$PWD":/backup ubuntu tar -xzf /backup/freshrss-YYYY-MM-DD.tgz -C /var/www/FreshRSS.
  3. Pri zunanji zbirki jo obnovite iz njenega izvoza ali iz datotek SQLite z cli/db-restore.php --delete-backup --force-overwrite.
  4. Znova zaženite z 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.

Posodobitve

README za Docker navaja dva ukaza, ki ju zaženete v mapi datoteke compose.yaml. Nosilci ostanejo na mestu:

Terminal
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.

Za spremljanje novih izdaj projekt objavlja vir Atom svojih različic: nanj naročite kar svojo instanco FreshRSS.

Kdo kaj dela na Managed VPS

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.

TemaNaše ekipeVi
StrežnikPosodobitve sistema in varnosti, vključno s posegi na strežnikuTrenutek, ki ustreza vaši dejavnosti
NadzorStrežnik pod nadzorom 24 ur na dan, 7 dni v tednu, s posegom brez čakanja na vaš klicBranje dnevnikov vaše instance
FreshRSSProaktivno spremljanje: napake, upočasnitve in prostor na disku, s priporočenim popravkomNamestitev, posodobitve in nastavitve, ki jih uvedete vi ali vaš AI pomočnik
Računi in viriStrežnik, ki jih nosi, pod nadzorom in varnostno kopiranUporabniki, naročnine, razširitve in gesla API
Varnostne kopijeVsako noč, šifrirane in shranjene zunaj stroja; obnova je vključenaIzvozi, značilni za FreshRSS, in zahteva za obnovo, ko jo potrebujete
SelitevSelitev vašega sedanjega strežnika, brezplačnoTrenutek 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.

FreshRSS na strežniku, ki ga vzdržujemo za vas

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.

Odkrijte Managed VPS

Pogosta vprašanja

Ali je FreshRSS za podjetje brezplačen?

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.

Kako namestiti FreshRSS z Docker Compose?

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.

Kako samodejno osveževati vire v FreshRSS?

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.

Katero zbirko izbrati za FreshRSS?

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.

Kako brati FreshRSS na telefonu?

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.

Ali so registracije v FreshRSS odprte?

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.

Kako varnostno kopirati FreshRSS?

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.

Ali Managed VPS pokriva FreshRSS?

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.

Viri in uradna dokumentacija

Stopite v stik z nami