Talpinkite FreshRSS Managed VPS serveryje: jūsų RSS srautai jūsų serveryje

FreshRSS talpinimas Managed VPS serveryje reiškia, kad jūs ir jūsų komanda skaitote RSS srautus iš savo mašinos, kurią mūsų komandos prižiūri atnaujintą ir stebi dieną bei naktį. FreshRSS yra laisva programinė įranga su AGPL-3.0 licencija. Šis gidas seka oficialią jos dokumentaciją: diegimą su Docker Compose, HTTPS, srautų atnaujinimą, paskyras ir prisijungimą, API mobiliosioms programėlėms, duomenų bazę, atsargines kopijas ir atnaujinimus.

Simon Vasconcelos Lee Autorius: Paskelbta 2026 m. lapkričio 11 d.Skaitymo trukmė: 13 min.

Visi gidai

Svarbiausia

  1. AGPL-3.0 licencija leidžia laisvai paleisti FreshRSS, tiek įmonėje, tiek kitur; jei ją keičiate, savo versijos šaltinio kodą pateikiate tiems, kurie ja naudojasi.
  2. Įdiekite ją su Docker Compose: vienas atvaizdas, vietiniu adresu paskelbtas prievadas ir du tomai, data ir extensions, už HTTPS atvirkštinio tarpinio serverio.
  3. Kintamasis CRON_MIN pats atnaujina srautus: projektas rekomenduoja maždaug du paleidimus per valandą.
  4. Registracijos numatytai uždarytos. Mobiliosioms programėlėms įjunkite API, tada kiekvienas naudotojas nustato API slaptažodį.
  5. Kurkite tomo data ir, su PostgreSQL ar MySQL, duomenų bazės atsargines kopijas, o atnaujinkite su docker compose pull.

Ką daro FreshRSS

FreshRSS yra PHP kalba parašyta RSS srautų kaupimo programa, skirta talpinti savo serveryje. README ją apibūdina kaip lengvą, paprastą naudoti, galingą ir pritaikomą, išverstą į daugiau nei dvidešimt kalbų. Tai daugelio naudotojų programa su anoniminio skaitymo režimu ir pasirinktinėmis žymomis.

FreshRSS kuria jos bendruomenė GitHub platformoje, o oficialią svetainę leidžia FreshRSS bendruomenė. Plėtiniai laikomi atskiroje saugykloje, o dokumentacija skirta naudotojams, administratoriams ir kūrėjams.

Ką leidžia AGPL-3.0 licencija

FreshRSS platinama pagal GNU Affero General Public License, 3 versiją: jos manifestas composer.json deklaruoja ją kaip AGPL-3.0, o README pateikia nuorodą į licencijos tekstą. Šiame tekste patvirtinamas neribotas leidimas paleisti nepakeistą programą. Todėl projekto paskelbtą atvaizdą galite naudoti savo įmonei ir komandai, nieko nepirkdami dėl licencijos.

13 straipsnis prideda AGPL būdingą sąlygą: jei programą keičiate, jūsų versija visiems ja nuotoliniu būdu, per tinklą, besinaudojantiems turi suteikti galimybę nemokamai gauti jos šaltinio kodą. Trečiosios šalies plėtiniui, įdėtam į tomą extensions, taikoma jo paties licencija.

Diegimas su Docker Compose

Projektas savo oficialius atvaizdus skelbia Docker Hub kaip freshrss/freshrss, kartu su Compose failo pavyzdžiu. Serveryje, kuriame įdiegtas Docker, sukurkite katalogą freshrss ir įdėkite į jį šį compose.yaml, paimtą iš to failo ir Docker README:

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, kataloge freshrss
docker compose up -d

Numatytoji žyma latest seka naujausią numeruotą versiją; edge seka nuolat atnaujinamą versiją; žyma, pavyzdžiui, 1.30.4, užfiksuoja versiją, o priesaga -alpine pateikia tą patį Alpine, o ne Debian pagrindu. Prie šio pasirinkimo grįžtama atnaujinimų skyriuje.

Diegimo užbaigimas

Įdiegę atvirkštinį tarpinį serverį, atverkite savo HTTPS adresą: diegimo vedlys paklausia kalbos, patikrina serverį, pasiūlo pasirinkti duomenų bazę, tada sukuria administratoriaus paskyrą su jos slaptažodžiu ir prisijungimo būdu. SQLite veikia nieko neparuošus. Įdiegti galima ir iš komandinės eilutės su cli/do-install.php ir cli/create-user.php, paleidžiamais per docker exec --user www-data freshrss.

Dėl išteklių README nurodo lengvą serverį su Linux ar Windows ir pažymi, kad FreshRSS veikia net Raspberry Pi 1, atsakydama greičiau nei per sekundę, turint 150 srautų ir 22 000 straipsnių. Dydis priklauso nuo naudotojų, srautų ir saugomų straipsnių skaičiaus. Naudojant Managed VPS, papasakokite mums, kaip ketinate naudotis, ir mes rekomenduosime tinkamą dydį.

HTTPS: atvirkštinis tarpinis serveris

Gamybinei aplinkai Docker README pataria naudoti atvirkštinį tarpinį serverį pagrindiniame serveryje, kuris užtikrina HTTPS. Pirmiausia pasirinkite domeno vardą ar subdomeną, pavyzdžiui, rss.example.com, nukreiptą į serverį A ir AAAA įrašais. Projektas rekomenduoja Traefik ir jam skelbia visą Compose failą su Let’s Encrypt sertifikatais ir peradresavimu iš HTTP į HTTPS; jis taip pat pateikia pavyzdžių Apache, Nginx ir Caddy.

Su Caddy

Caddy pati gauna sertifikatą ir įjungia HTTPS. Šis blokas seka dokumentacijos pavyzdį subdomenui, čia nukreiptą į vietiniu adresu paskelbtą prievadą:

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

Su Nginx ir Certbot

Šis blokas perima Docker README Nginx pavyzdį domeno šakniai, sutrumpintą iki 80 prievado, kad HTTPS įdiegtų Certbot. Paskutinės dvi eilutės perduoda antraštę Authorization, kurios reikia Google Reader API:

Nginx blokas
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;
  }
}

Tada Certbot įdiegia sertifikatą ir pasirūpina jo atnaujinimu:

Terminal
sudo certbot --nginx

Viešas adresas: base_url

FreshRSS savo viešą adresą laiko parametre base_url, faile data/config.php. Juo remiasi API ir WebSub: patikrinkite, ar jame yra jūsų https adresas. Docker README parodo, kur šį failą rasti tome:

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/',

Srautų atnaujinimas: CRON_MIN

FreshRSS naujus straipsnius gauna savo scenarijumi app/actualize_script.php. Docker atvaizde yra suplanuota užduotis, kuri jį paleidžia kintamajame CRON_MIN nurodytomis minutėmis. Be šio kintamojo arba su tuščia reikšme užduotis lieka išjungta, ir srautai patys nebeatsinaujina.

Kitas dokumentuotas būdas: suplanuota užduotis pagrindiniame serveryje, kuri iškviečia scenarijų konteinerio viduje. Tokiu atveju pašalinkite CRON_MIN iš compose.yaml, kad liktų vienas būdas:

/etc/cron.d/FreshRSS
7,37 * * * * root docker exec --user www-data freshrss php ./app/actualize_script.php > /tmp/FreshRSS.log 2>&1

Nuo 1.30.0 versijos FreshRSS numatytai atmeta vietinio tinklo adresus, tokius kaip 127.0.0.1, kad apsisaugotų nuo serverio pusės užklausų klastojimo. Gretimai paslaugai, kuri kuria srautus, pavyzdžiui, RSS-Bridge, leidžiama per kintamąjį INTERNAL_HOST_ALLOWLIST, forma rss-bridge:80, arba sistemos konfigūracijoje. Reikšmė * panaikina visas patikras, o dokumentacija ją vadina nesaugia.

Paskyros ir prisijungimas

Diegimo metu FreshRSS pasiūlo prisijungimą per formą, kuriam reikia JavaScript. Tai numatytasis būdas, tinkantis daugumai egzempliorių. Dokumentacija aprašo ir kitus:

BūdasKą jis daroKur nustatomas
FormaFreshRSS skirtas naudotojo vardas ir slaptažodisDiegimo vedlys
HTTP autentifikavimasPrieigą kontroliuoja žiniatinklio serveris, o nauji naudotojai sukuriami pirmojo prisijungimo metuĮ konteinerį prijungtas failas p/i/.htaccess su jo .htpasswd
Išorinis autentifikavimasTarpinis serveris perduoda prisijungusį naudotoją antraštėje Remote-User arba X-WebAuth-UserTRUSTED_PROXY, kuriame išvardyti patikimi tarpiniai serveriai
OpenID ConnectPrisijungiama per jūsų tapatybės teikėją, naudojant Apache modulį mod_auth_openidcOIDC_ENABLED ir kintamieji OIDC_*, Debian atvaizde x86_64 architektūrai

Dokumentacija įspėja, kad FreshRSS pasitiki bet kuriuo adresu, nurodytu TRUSTED_PROXY: prastai apsaugotas tarpinis serveris leistų užpuolikui nustatyti antraštę ir gauti administratoriaus prieigą. Čia prievadas klausosi tik adresu 127.0.0.1, todėl jis paliekamas paties serverio tarpiniam serveriui. Dokumentacija taip pat nepataria naudoti egzemplioriaus be autentifikavimo, kai tik serverį galima pasiekti iš už jūsų tinklo ribų.

Registracijos ir naudotojai

Egzemplioriui, kuriuo naudojasi keli žmonės, dokumentacija pataria paskyras atverti žmonėms, kuriais pasitikite, ir laikyti egzempliorių už tarpinio serverio ar ugniasienės, blokuojančios prieigą prie vidinių adresų diapazonų.

Mobiliosios programėlės: Google Reader ir Fever API

FreshRSS veikia naršyklėje, tiek dideliuose, tiek mažuose ekranuose, ir programėlėse Android, iOS, Linux, Windows ir macOS sistemoms. Šios programėlės naudoja vieną iš dviejų jos API: Google Reader, kurią README vertina kaip geriausią, ir Fever, su ribotesnėmis funkcijomis, mažiau efektyvią ir mažiau saugią.

  1. Kaip administratorius, skiltyje Authentication įjunkite parinktį, leidžiančią prieigą prie API.
  2. Kiekvienas naudotojas savo profilyje nustato API slaptažodį. Jis atskiras nuo pagrindinio slaptažodžio, suteikia prieigą prie mažesnės dalies ir skirtas mažiau saugioms situacijoms.
  3. Programėlėje įveskite adresą https://rss.example.com/api/greader.php arba https://rss.example.com/api/fever.php Fever atveju, su naudotojo vardu ir šiuo API slaptažodžiu.

Patikrai profilyje šalia API slaptažodžio rodoma nuoroda atveria bandymo puslapį: PASS visoje patikroje patvirtina, kad viskas veikia. Docker atvaizdas Apache jau nustato priimti užkoduotus pasviruosius brūkšnius, kurių reikia kai kurioms programėlėms; su Nginx priekyje palikite antraštės Authorization perdavimą.

README pateikia suderinamų programėlių lentelę su jų platforma, API ir funkcijomis: tarp kitų, Capy Reader ir Readrops Android sistemai, FeedFlow mobiliesiems ir darbalaukiui, RSS Guard ir NewsFlash darbalaukiui, ReadKit ir Reeder Classic iOS ir macOS sistemoms.

SQLite, PostgreSQL, MySQL ar MariaDB

FreshRSS turi integruotą SQLite, kurią Docker README apibūdina kaip paprasčiausią galimybę su geru našumu. Reikalavimų puslapis rekomenduoja PostgreSQL 10 ar naujesnę, taip pat priima MariaDB 10.6 ir MySQL 8.0 ar naujesnes. Pasirenkama diegimo vedlyje.

Duomenų bazėĮdiegimasAtsarginė kopija
SQLiteNereikia: po vieną failą kiekvienam naudotojui, data/users/<user>/db.sqliteTomas data
PostgreSQLPaslauga postgres tame pačiame compose.yamlpg_dump arba cli/db-backup.php
MySQL ar MariaDBJūsų duomenų bazės serveris ir jo pagrindinio kompiuterio vardas vedlyjemysqldump arba cli/db-backup.php

PostgreSQL atveju pridėkite šią paslaugą prie compose.yaml, paimtą iš projekto failo docker-compose-db.yml, o tomą db įtraukite į tomų sąrašą. Slaptažodis dedamas į failą .env, šalia compose.yaml:

compose.yaml, services skiltyje
  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'

Vedlyje pasirinkite PostgreSQL ir kaip pagrindinį kompiuterį įveskite freshrss-db, su naudotoju, slaptažodžiu ir duomenų baze freshrss.

Prie šio pasirinkimo galite grįžti vėliau. Dokumentacija aprašo perėjimą iš vienos duomenų bazės į kitą, pavyzdžiui, iš MySQL į PostgreSQL, arba į naujesnę pagrindinę PostgreSQL versiją: cli/db-backup.php nukopijuoja kiekvieno naudotojo duomenų bazę į SQLite failą, tada cli/db-restore.php ją įkelia į naują duomenų bazę.

Atsarginės kopijos

README nurodo, kad FreshRSS teikiama be jokios garantijos: jūsų atsarginės kopijos išsaugo jūsų prenumeratas, straipsnius ir nustatymus. Štai ką dokumentacija prašo kopijuoti:

ElementasKą jis saugoAtsarginė kopija
data/Konfigūraciją, paskyras, žurnalus ir, su SQLite, duomenų bazesPrivaloma; cache/ galima praleisti, FreshRSS jį atkuria
extensions/Trečiųjų šalių plėtiniusRekomenduojama, jei jų naudojate
Išorinė duomenų bazėSu PostgreSQL, MySQL ar MariaDB, naudotojų duomenisPrivaloma, atskirai

Tomai, sustabdžius paslaugą

Dokumentacija mano, kad techninės priežiūros metu saugiau paslaugą sustabdyti. Docker tomai kopijuojami laikinu konteineriu, Docker dokumentacijoje aprašytu būdu:

Terminal, kataloge 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

Duomenų bazės, paslaugai veikiant

Nuo 1.29.1 versijos FreshRSS pati sugeba eksportuoti kiekvieno naudotojo duomenų bazę į SQLite failą, nesvarbu, kokią duomenų bazę naudojate, ir išlaikyti tik naujausius. Įjunkite šį eksportą faile data/config.php:

data/config.php
'auto_sqlite_export' => [
    'enabled' => true,
    'retention' => 7,
],

Tada suplanuokite komandą serveryje, čia kiekvieną naktį. Kiekvienas paleidimas įrašo data/users/<user>/sqlite-backups/<date>.sqlite ir ištrina failus, viršijančius paskutinius septynis:

/etc/cron.d/freshrss-export
20 2 * * * root docker exec --user www-data freshrss cli/export-sqlite-auto.php --quiet

Su PostgreSQL pridėkite eksportą pačios duomenų bazės įrankiu, kaip Docker README. Parinktis -T atsisako terminalo, kurio suplanuotai užduočiai nereikia:

Terminal, kataloge freshrss
docker compose exec -T freshrss-db pg_dump -U freshrss freshrss | gzip -9 > freshrss-postgres-$(date +%F).sql.gz

OPML eksportas iš sąsajos išsaugo jūsų srautų sąrašą, be kai kurių FreshRSS būdingų nustatymų, tokių kaip prieigos duomenys ar puslapių nuskaitymo taisyklės. Visai kopijai laikykite SQLite eksportus: padėti serverio diske, jie patenka ir į jo naktines atsargines kopijas.

Atkūrimas

  1. Sustabdykite FreshRSS su docker compose stop freshrss.
  2. Įkelkite archyvą atgal į tomus: docker run --rm --volumes-from freshrss -v "$PWD":/backup ubuntu tar -xzf /backup/freshrss-YYYY-MM-DD.tgz -C /var/www/FreshRSS.
  3. Su išorine duomenų baze atkurkite ją iš jos eksporto arba iš SQLite failų su cli/db-restore.php --delete-backup --force-overwrite.
  4. Vėl paleiskite su docker compose start freshrss, tada patikrinkite, ar jūsų srautai ir straipsniai vietoje.

Retkarčiais pakartokite šį pratimą su kopija: taip įsitikinate, kad atsarginė kopija veikia.

Atnaujinimai

Docker README pateikia dvi komandas, vykdomas kataloge su compose.yaml. Tomai lieka vietoje:

Terminal
docker compose pull
docker compose up -d

FreshRSS versijas skelbia dviem kanalais. Numeruotos versijos, žyma latest, pasirodo kelis kartus per metus, be nustatyto tvarkaraščio, o jų pataisos neperkeliamos į senesnes versijas. Nuolat atnaujinama versija, žyma edge, naujas funkcijas ir pataisas gauna vos jas įtraukus: nuo 1.30.0 versijos projektas ją rekomenduoja dėl greitesnių saugumo pataisų.

Kad sektumėte naujas versijas, projektas skelbia savo versijų Atom srautą: užsiprenumeruokite jį savo FreshRSS egzemplioriuje.

Kas ką daro Managed VPS serveryje

Talpinant savo serveryje, be programos reikia prižiūrėti ir patį serverį. Naudojant Managed VPS, mūsų komandos perima serverį ir proaktyviai stebi jūsų egzempliorių; FreshRSS lieka jūsų programa su savo nustatymais ir duomenimis.

TemaMūsų komandosJūs
ServerisSistemos ir saugumo atnaujinimai, įskaitant įsikišimą serveryjeJūsų veiklai tinkamas momentas
StebėsenaServeris stebimas 24 val. per parą, 7 dienas per savaitę, įsikišant nelaukiant jūsų skambučioJūsų egzemplioriaus žurnalų skaitymas
FreshRSSProaktyvi stebėsena: klaidos, sulėtėjimai ir disko vieta pastebimi, rekomenduojamas pataisymasJos diegimas, atnaujinimai ir nustatymai, kuriuos pritaikote jūs arba jūsų DI asistentas
Paskyros ir srautaiJuos laikantis serveris, stebimas ir saugomas atsarginėmis kopijomisNaudotojai, prenumeratos, plėtiniai ir API slaptažodžiai
Atsarginės kopijosKiekvieną naktį, šifruotos ir saugomos už mašinos ribų; atkūrimas įskaičiuotasFreshRSS savi eksportai ir atkūrimo prašymas, kai jo prireikia
PerkėlimasJūsų dabartinis serveris perkeliamas nemokamaiPerjungimo momentas

Jei norite, kad mūsų komandos įsikištų į pačią programą, ši paslauga apmokestinama valandomis arba fiksuota kaina, o skaičiavimas pateikiamas prieš įsikišimą.

FreshRSS serveryje, kurį prižiūrime už jus

Su Simafri Managed VPS mūsų komandos palaiko jūsų FreshRSS egzemplioriaus serverį atnaujintą, stebi jį dieną ir naktį ir įsikiša nelaukdamos jūsų skambučio; jos taip pat proaktyviai stebi jūsų egzempliorių ir rekomenduoja naudingus pataisymus, kuriuos pritaikote jūs arba jūsų DI asistentas. Atsarginės kopijos kiekvieną naktį šifruojamos ir saugomos už mašinos ribų, jų atkūrimas įskaičiuotas, o jūsų dabartinio serverio perkėlimas nemokamas.

Žiūrėti Managed VPS

Dažni klausimai

Ar FreshRSS nemokama įmonei?

Taip. FreshRSS platinama pagal AGPL-3.0 licenciją: įmonėje ją galite paleisti nieko nepirkdami dėl licencijos. Jei ją keičiate, jūsų versija turi pateikti šaltinio kodą tiems, kurie ja naudojasi per tinklą. Lieka tik ją vykdančio serverio kaina.

Kaip įdiegti FreshRSS su Docker Compose?

Sukurkite compose.yaml su atvaizdu freshrss/freshrss, tomais data ir extensions bei prievadu, paskelbtu adresu 127.0.0.1, tada paleiskite docker compose up -d. Po to prieš jį pastatykite HTTPS atvirkštinį tarpinį serverį, atverkite savo adresą ir sekite diegimo vedlį.

Kaip FreshRSS automatiškai atnaujinti srautus?

Su Docker atvaizdu kintamajame CRON_MIN nurodykite paleidimo minutes, pavyzdžiui, 13,43: projektas rekomenduoja maždaug du paleidimus per valandą. Be CRON_MIN integruota užduotis lieka išjungta. Tą patį darbą atlieka ir suplanuota užduotis serveryje, kuri paleidžia app/actualize_script.php konteinerio viduje.

Kokią duomenų bazę pasirinkti FreshRSS?

SQLite yra integruota ir nieko nereikia ruošti; Docker README ją apibūdina kaip paprasčiausią, su geru našumu. Reikalavimų puslapis rekomenduoja PostgreSQL 10 ar naujesnę ir priima MariaDB 10.6 bei MySQL 8.0. Komandos db-backup ir db-restore leidžia vėliau pakeisti duomenų bazę.

Kaip skaityti FreshRSS telefone?

Skiltyje Authentication įjunkite prieigą prie API, tada savo profilyje nustatykite API slaptažodį. Suderinamoje programėlėje įveskite savo egzemplioriaus adresą api/greader.php, nes pagal README Google Reader API yra geriausia, arba api/fever.php.

Ar FreshRSS registracijos atviros?

Numatytai ne: konfigūracija paskyras riboja administratoriaus paskyra. Kitas sukuriate skiltyje Administration, Manage users, arba sistemos konfigūracijoje padidinate paskyrų skaičių, kad būtų rodoma registracijos forma.

Kaip sukurti FreshRSS atsarginę kopiją?

Sustabdę paslaugą, nukopijuokite tomus data ir extensions. Taip pat įjunkite auto_sqlite_export ir suplanuokite cli/export-sqlite-auto.php, kuris kiekvieną naktį eksportuoja kiekvieno naudotojo duomenų bazę į SQLite. Su PostgreSQL pridėkite pg_dump. Reguliariai išbandykite atkūrimą.

Ar Managed VPS apima FreshRSS?

Managed VPS apima serverį: sistemą, saugumą, stebėseną ir atsargines kopijas. Mūsų komandos taip pat proaktyviai stebi jūsų egzempliorių ir rekomenduoja naudingus pataisymus, kuriuos pritaikote jūs. Įsikišimas į pačią programą apmokestinamas valandomis arba fiksuota kaina.

Šaltiniai ir oficiali dokumentacija

Susisiekite su mumis