FreshRSS:n hostaus Managed VPS:llä tarkoittaa, että te ja tiiminne luette RSS-syötteitänne koneelta, joka on teidän ja jota tiimimme pitävät ajan tasalla ja valvovat yötä päivää. FreshRSS on AGPL-3.0-lisenssillä julkaistu avoimen lähdekoodin ohjelma. Tämä opas seuraa sen virallista dokumentaatiota: asennus Docker Composella, HTTPS, syötteiden päivitys, tilit ja kirjautuminen, mobiilisovellusten rajapinta, tietokanta, varmuuskopiot ja päivitykset.
Kirjoittaja: Simon Vasconcelos Lee
Julkaistu 11. marraskuuta 2026Lukuaika: 13 minuuttia
data ja extensions, HTTPS:llä toimivan käänteisen välityspalvelimen takana.CRON_MIN päivittää syötteet itsestään: projekti suosittelee noin kahta ajoa tunnissa.data-taltio ja PostgreSQL:llä tai MySQL:llä myös tietokanta, ja päivittäkää komennolla docker compose pull.FreshRSS on PHP:llä kirjoitettu, omalle palvelimelle asennettava RSS-syötteiden kokoaja. Sen README kuvaa sen kevyeksi, helppokäyttöiseksi, tehokkaaksi ja muokattavaksi, ja se on käännetty yli kahdellekymmenelle kielelle. Se on monen käyttäjän sovellus, jossa on anonyymi lukutila ja omat tunnisteet.
FreshRSS:ää kehittää sen yhteisö GitHubissa, ja sen virallisen verkkosivuston julkaisee FreshRSS-yhteisö. Laajennukset ovat erillisessä repositoriossa, ja dokumentaatio kattaa käyttäjät, ylläpitäjät ja kehittäjät.
FreshRSS julkaistaan GNU Affero General Public License, versio 3 -lisenssillä: sen composer.json-manifesti ilmoittaa sen muodossa AGPL-3.0, ja sen README linkittää lisenssin tekstiin. Teksti vahvistaa rajoittamattoman luvan ajaa muokkaamatonta ohjelmaa. Voitte siis käyttää projektin julkaisemaa imagea yrityksessänne ja tiimissänne ilman ostettavaa lisenssiä.
Pykälä 13 lisää AGPL:lle ominaisen ehdon: jos muokkaatte ohjelmaa, versionne on tarjottava kaikille, jotka käyttävät sitä etäyhteydellä verkon kautta, keino saada sen lähdekoodi maksutta. extensions-taltioon lisätty kolmannen osapuolen laajennus noudattaa omaa lisenssiään.
Projekti julkaisee viralliset imagensa Docker Hubissa nimellä freshrss/freshrss sekä esimerkin Compose-tiedostosta. Luokaa palvelimelle, jolle Docker on asennettu, kansio nimeltä freshrss ja sijoittakaa sinne tämä compose.yaml, joka on poimittu tuosta tiedostosta ja Dockerin READMEstä:
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:ään pääsee vain samalle palvelimelle asetetun käänteisen välityspalvelimen kautta. Projektin esimerkkitiedosto julkaisee portin 8080 paikalliseen käyttöön; osoite 127.0.0.1 varaa sen tässä välityspalvelimelle.data-taltio säilyttää asetukset, tilit ja SQLitellä jokaisen käyttäjän tietokannan. README huomauttaa, että se sisältää kaikki henkilötiedot. Docker Compose nimeää sen kansion mukaan: freshrss_data.extensions-taltio säilyttää kolmannen osapuolen laajennukset, jos lisäätte niitä.TZ saa palvelimen aikavyöhykkeen PHP:n muodossa; oletusarvo on UTC.TRUSTED_PROXY säilyttää esimerkkitiedoston arvon: yksityiset osoitealueet, joista välityspalvelimen pyynnöt tulevat. Se ratkaisee, kumpi osoite päätyy lokeihin, kävijän vai välityspalvelimen.cli/health.php:n säännöllisin väliajoin, jotta Docker tietää, vastaako instanssi.Oletustunniste latest seuraa viimeisintä versioitua julkaisua; edge seuraa jatkuvaa julkaisukanavaa; tunniste, kuten 1.30.4, kiinnittää version, ja pääte -alpine antaa saman Alpine-pohjalla Debianin sijaan. Päivityksiä käsittelevä osio palaa tähän valintaan.
Kun käänteinen välityspalvelin on paikallaan, avatkaa HTTPS-osoitteenne: asennusohjelma kysyy kielen, tarkistaa palvelimen, tarjoaa tietokannan valinnan ja luo sitten ylläpitäjän tilin salasanoineen ja kirjautumistapoineen. SQLite toimii ilman valmisteluja. Asennus onnistuu myös komentoriviltä komennoilla cli/do-install.php ja cli/create-user.php, jotka ajetaan komennon docker exec --user www-data freshrss kautta.
Resursseista README pyytää kevyttä palvelinta, jossa on Linux tai Windows, ja huomauttaa, että FreshRSS toimii jopa Raspberry Pi 1:llä alle sekunnin vasteajoin 150 syötteellä ja 22 000 artikkelilla. Koko riippuu käyttäjien, syötteiden ja säilytettyjen artikkelien määrästä. Managed VPS -palvelimella kertokaa meille käyttötarkoituksenne, niin suosittelemme sopivaa kokoa.
Tuotantokäyttöön Dockerin README neuvoo käyttämään isäntäpalvelimella käänteistä välityspalvelinta, joka tarjoaa HTTPS:n. Valitkaa ensin verkkotunnus tai aliverkkotunnus, kuten rss.example.com, joka osoittaa palvelimeen A- ja AAAA-tietueilla. Projekti suosittelee Traefikia ja julkaisee sille täydellisen Compose-tiedoston Let’s Encrypt -varmenteineen ja HTTP:stä HTTPS:ään ohjaavine uudelleenohjauksineen; se antaa myös esimerkit Apachelle, Nginxille ja Caddylle.
Caddy hankkii varmenteen ja ottaa HTTPS:n käyttöön itse. Tämä lohko noudattaa dokumentaation aliverkkotunnusesimerkkiä, ja se osoittaa tässä paikallisesti julkaistuun porttiin:
rss.example.com {
reverse_proxy 127.0.0.1:8080
}
Tämä lohko noudattaa Dockerin READMEn Nginx-esimerkkiä verkkotunnuksen juurelle, supistettuna porttiin 80, jotta Certbot voi asentaa HTTPS:n. Kaksi viimeistä riviä välittävät otsakkeen Authorization, jota Google Reader -rajapinta tarvitsee:
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 asentaa sen jälkeen varmenteen ja huolehtii sen uusimisesta:
sudo certbot --nginx
FreshRSS säilyttää julkisen osoitteensa asetuksessa base_url tiedostossa data/config.php. Rajapinta ja WebSub nojaavat siihen: tarkistakaa, että siinä on https-osoitteenne. Dockerin README näyttää, mistä tämä tiedosto löytyy taltiosta:
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 hakee uudet artikkelit skriptillään app/actualize_script.php. Docker-image sisältää ajastetun tehtävän, joka ajaa sen muuttujassa CRON_MIN annettuina minuutteina. Ilman tätä muuttujaa tai tyhjällä arvolla tehtävä pysyy pois käytöstä, eivätkä syötteet enää päivity itsestään.
13,43; myös */20 toimii.base_url, ja asennusohjelma ottaa sen käyttöön, kun palvelimella sellainen on.Toinen dokumentoitu tapa: isäntäpalvelimen ajastettu tehtävä, joka kutsuu skriptiä kontin sisällä. Poistakaa tällöin CRON_MIN tiedostosta compose.yaml, jotta käytössä on vain yksi tapa:
7,37 * * * * root docker exec --user www-data freshrss php ./app/actualize_script.php > /tmp/FreshRSS.log 2>&1
Versiosta 1.30.0 alkaen FreshRSS hylkää oletuksena lähiverkon osoitteet, kuten 127.0.0.1, suojautuakseen palvelinpuolen pyyntöjen väärentämiseltä. Viereinen syötteitä tuottava palvelu, kuten RSS-Bridge, sallitaan muuttujalla INTERNAL_HOST_ALLOWLIST muodossa rss-bridge:80 tai järjestelmän asetuksissa. Arvo * poistaa kaikki tarkistukset, ja dokumentaatio kutsuu sitä turvattomaksi.
Asennuksen aikana FreshRSS tarjoaa lomakekirjautumista, joka vaatii JavaScriptin. Se on oletustapa, ja se sopii useimmille instansseille. Dokumentaatio kuvaa muitakin:
| Tapa | Mitä se tekee | Missä se asetetaan |
|---|---|---|
| Lomake | FreshRSS:n oma käyttäjätunnus ja salasana | Asennusohjelma |
| HTTP-todennus | Verkkopalvelin valvoo pääsyä, ja uudet käyttäjät luodaan heidän ensimmäisellä kirjautumisellaan | Konttiin liitetty tiedosto p/i/.htaccess ja sen .htpasswd |
| Ulkoinen todennus | Välityspalvelin välittää kirjautuneen käyttäjän otsakkeessa Remote-User tai X-WebAuth-User | TRUSTED_PROXY, joka luettelee luotetut välityspalvelimet |
| OpenID Connect | Kirjautuminen kulkee tunnistuspalvelunne kautta Apache-moduulilla mod_auth_openidc | OIDC_ENABLED ja OIDC_*-muuttujat, Debian-imagessa x86_64-alustalla |
Dokumentaatio varoittaa, että FreshRSS luottaa jokaiseen muuttujassa TRUSTED_PROXY lueteltuun osoitteeseen: huonosti suojattu välityspalvelin antaisi hyökkääjän asettaa otsakkeen ja saada ylläpitäjän oikeudet. Tässä portti kuuntelee vain osoitteessa 127.0.0.1, mikä varaa sen palvelimen omalle välityspalvelimelle. Dokumentaatio neuvoo myös välttämään instanssia ilman todennusta heti, kun palvelimeen pääsee verkkonne ulkopuolelta.
mailer ja smtp tiedostossa data/config.php: dokumentaation mukaan lähetystä PHP:n mail-funktiolla ei vielä tueta virallisissa Docker-imageissa.Usean ihmisen yhteiselle instanssille dokumentaatio neuvoo avaamaan tilit luotetuille ihmisille ja pitämään instanssin välityspalvelimen tai palomuurin takana, joka estää pääsyn sisäisiin osoitealueisiin.
FreshRSS toimii selaimessa niin suurilla kuin pienilläkin näytöillä sekä sovelluksissa Androidille, iOS:lle, Linuxille, Windowsille ja macOS:lle. Nämä sovellukset käyttävät jompaakumpaa sen kahdesta rajapinnasta: Google Reader, jota README pitää parhaana, ja Fever, jonka ominaisuudet ovat suppeammat ja joka on vähemmän tehokas ja vähemmän turvallinen.
https://rss.example.com/api/greader.php, tai Feveriä varten https://rss.example.com/api/fever.php, käyttäjätunnus ja tämä API-salasana.Tarkistusta varten profiilissa API-salasanan vieressä näkyvä linkki avaa testisivun: PASS koko tarkistuksessa vahvistaa, että kaikki toimii. Docker-image asettaa Apachen jo hyväksymään koodatut kauttaviivat, joita jotkin sovellukset tarvitsevat; Nginxin ollessa edessä säilyttäkää otsakkeen Authorization välitys.
README ylläpitää taulukkoa yhteensopivista sovelluksista, niiden alustoista, rajapinnoista ja ominaisuuksista: muun muassa Capy Reader ja Readrops Androidilla, FeedFlow mobiilissa ja työpöydällä, RSS Guard ja NewsFlash työpöydällä sekä ReadKit ja Reeder Classic iOS:llä ja macOS:llä.
FreshRSS:ssä on sisäänrakennettu SQLite, jota Dockerin README kuvaa helpoimmaksi vaihtoehdoksi, jonka suorituskyky on hyvä. Vaatimussivu suosittelee PostgreSQL 10:tä tai uudempaa ja hyväksyy myös MariaDB 10.6:n ja MySQL 8.0:n tai uudemman. Valinta tehdään asennusohjelmassa.
| Tietokanta | Käyttöönotto | Varmuuskopio |
|---|---|---|
| SQLite | Ei tarvita: yksi tiedosto käyttäjää kohden, data/users/<user>/db.sqlite | data-taltio |
| PostgreSQL | postgres-palvelu samassa tiedostossa compose.yaml | pg_dump tai cli/db-backup.php |
| MySQL tai MariaDB | Oma tietokantapalvelimenne ja sen isäntänimi asennusohjelmassa | mysqldump tai cli/db-backup.php |
PostgreSQL:ää varten lisätkää tiedostoon compose.yaml tämä palvelu, joka on poimittu projektin tiedostosta docker-compose-db.yml, sekä db-taltio taltioiden luetteloon. Salasana sijoitetaan tiedostoon .env, compose.yaml-tiedoston viereen:
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'
Valitkaa asennusohjelmassa PostgreSQL ja syöttäkää isännäksi freshrss-db sekä käyttäjä, salasana ja tietokanta freshrss.
Voitte palata tähän valintaan myöhemmin. Dokumentaatio kuvaa siirtymisen tietokannasta toiseen, esimerkiksi MySQL:stä PostgreSQL:ään tai PostgreSQL:n uudempaan pääversioon: cli/db-backup.php kopioi jokaisen käyttäjän tietokannan SQLite-tiedostoon, ja cli/db-restore.php lataa sen sitten uuteen tietokantaan.
README toteaa, että FreshRSS toimitetaan ilman minkäänlaista takuuta: varmuuskopionne säilyttävät tilauksenne, artikkelinne ja asetuksenne. Tässä on se, mitä dokumentaatio pyytää varmuuskopioimaan:
| Osa | Mitä se säilyttää | Varmuuskopioitava |
|---|---|---|
data/ | Asetukset, tilit, lokit ja SQLitellä tietokannat | Pakollinen; cache/ voidaan ohittaa, FreshRSS rakentaa sen uudelleen |
extensions/ | Kolmannen osapuolen laajennukset | Suositeltava, jos käytätte niitä |
| Ulkoinen tietokanta | PostgreSQL:llä, MySQL:llä tai MariaDB:llä käyttäjien tiedot | Pakollinen, erikseen |
Dokumentaatio pitää turvallisempana pysäyttää palvelu ylläpitotoimien ajaksi. Docker-taltiot kopioidaan tilapäisellä kontilla, Dockerin dokumentaation kuvaamalla tavalla:
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
Versiosta 1.29.1 alkaen FreshRSS osaa itse viedä jokaisen käyttäjän tietokannan SQLite-tiedostoon käyttämästänne tietokannasta riippumatta ja säilyttää vain tuoreimmat. Ottakaa tämä vienti käyttöön tiedostossa data/config.php:
'auto_sqlite_export' => [
'enabled' => true,
'retention' => 7,
],
Ajastakaa sitten komento palvelimella, tässä joka yö. Jokainen ajo kirjoittaa tiedoston data/users/<user>/sqlite-backups/<date>.sqlite ja poistaa seitsemää viimeisintä vanhemmat tiedostot:
20 2 * * * root docker exec --user www-data freshrss cli/export-sqlite-auto.php --quiet
PostgreSQL:llä lisätkää vienti tietokannan omalla työkalulla, kuten Dockerin READMEssä. Valinta -T jättää päätteen pois, sillä ajastettu tehtävä ei tarvitse sitä:
docker compose exec -T freshrss-db pg_dump -U freshrss freshrss | gzip -9 > freshrss-postgres-$(date +%F).sql.gz
Käyttöliittymän OPML-vienti varmuuskopioi syöteluettelonne ilman joitakin FreshRSS:n omia asetuksia, kuten tunnuksia tai sivujen poimintasääntöjä. Täydellistä kopiota varten säilyttäkää SQLite-viennit: palvelimen levylle sijoitettuina ne päätyvät myös sen yöllisiin varmuuskopioihin.
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 ja tarkistakaa sitten, että syötteenne ja artikkelinne ovat paikallaan.Toistakaa tämä harjoitus silloin tällöin kopiolla: näin varmistatte, että varmuuskopio toimii.
Dockerin README antaa kaksi komentoa, ajettavaksi compose.yaml-tiedoston kansiossa. Taltiot pysyvät paikallaan:
docker compose pull
docker compose up -d
FreshRSS julkaisee kahdella kanavalla. Versioidut julkaisut, tunniste latest, ilmestyvät muutaman kerran vuodessa ilman kiinteää aikataulua, eikä niiden korjauksia siirretä vanhempiin versioihin. Jatkuva julkaisukanava, tunniste edge, saa uudet ominaisuudet ja korjaukset sitä mukaa kuin ne valmistuvat: versiosta 1.30.0 alkaen projekti suosittelee sitä nopeampien tietoturvakorjausten vuoksi.
data/-kansion, laajennukset ja tietokannan ennen jokaista päivitystä.1.29.1, tekevät tämän reitin mahdolliseksi.Uusien julkaisujen seuraamiseksi projekti julkaisee versioistaan Atom-syötteen: tilatkaa se omaan FreshRSS-instanssiinne.
Oma hostaus vaatii palvelimen ylläpitoa sovelluksen lisäksi. Managed VPS -palvelimella tiimimme huolehtivat palvelimesta ja seuraavat instanssianne proaktiivisesti; FreshRSS pysyy teidän ohjelmananne asetuksineen ja tietoineen.
| Aihe | Tiimimme | Te |
|---|---|---|
| Palvelin | Järjestelmä- ja tietoturvapäivitykset, toimenpiteet palvelimella mukaan lukien | Toimintaanne sopiva ajankohta |
| Valvonta | Palvelinta seurataan ympäri vuorokauden joka päivä, ja puututaan asiaan odottamatta yhteydenottoanne | Instanssinne lokien lukeminen |
| FreshRSS | Proaktiivinen seuranta: virheet, hitaus ja levytila havaitaan, ja korjausta suositellaan | Sen asennus, päivitykset ja asetukset, jotka toteutatte itse tai tekoälyavustajanne kanssa |
| Tilit ja syötteet | Niitä kantava palvelin, valvottuna ja varmuuskopioituna | Käyttäjät, tilaukset, laajennukset ja API-salasanat |
| Varmuuskopiot | Joka yö, salattuina ja koneen ulkopuolella säilytettyinä; palautus sisältyy | FreshRSS:n omat viennit sekä palautuspyyntö, kun tarvitsette sitä |
| Siirto | Nykyinen palvelimenne siirretään, veloituksetta | Käyttöönoton ajankohta |
Jos haluatte tiimiemme toimivan itse sovelluksessa, tämä palvelu laskutetaan tuntiveloituksella tai kiinteällä hinnalla, ja arvio annetaan ennen toimenpidettä.
Simafrin Managed VPS -palvelussa tiimimme pitävät FreshRSS-instanssinne palvelimen ajan tasalla, valvovat sitä yötä päivää ja toimivat odottamatta yhteydenottoanne; ne seuraavat myös instanssianne proaktiivisesti ja suosittelevat teille hyödyllisiä korjauksia, jotka toteutatte itse tai tekoälyavustajanne kanssa. Varmuuskopiot salataan joka yö ja säilytetään koneen ulkopuolella, niiden palautus sisältyy, ja nykyisen palvelimenne siirto tehdään veloituksetta.
Kyllä. FreshRSS on AGPL-3.0-lisenssillä: voitte ajaa sitä yrityksessä ilman ostettavaa lisenssiä. Jos muokkaatte sitä, versionne on tarjottava lähdekoodinsa sen verkon kautta käyttäjille. Jäljelle jää sen pyörittävän palvelimen kustannus.
Luokaa compose.yaml, jossa on image freshrss/freshrss, taltiot data ja extensions sekä portti julkaistuna osoitteessa 127.0.0.1, ja ajakaa docker compose up -d. Asettakaa sen jälkeen eteen HTTPS:llä toimiva käänteinen välityspalvelin, avatkaa osoitteenne ja seuratkaa asennusohjelmaa.
Docker-imagessa antakaa muuttujalle CRON_MIN ajominuutit, esimerkiksi 13,43: projekti suosittelee noin kahta ajoa tunnissa. Ilman CRON_MIN-muuttujaa sisäänrakennettu tehtävä pysyy pois käytöstä. Palvelimen ajastettu tehtävä, joka ajaa app/actualize_script.php:n kontin sisällä, tekee saman työn.
SQLite on sisäänrakennettu eikä vaadi valmisteluja; Dockerin README kuvaa sen helpoimmaksi, ja sen suorituskyky on hyvä. Vaatimussivu suosittelee PostgreSQL 10:tä tai uudempaa ja hyväksyy MariaDB 10.6:n ja MySQL 8.0:n. Komennoilla db-backup ja db-restore tietokannan voi vaihtaa myöhemmin.
Ottakaa Todennus-osiossa käyttöön pääsy rajapintaan ja asettakaa sitten profiilissanne API-salasana. Syöttäkää yhteensopivaan sovellukseen instanssinne api/greader.php-osoite, sillä Google Reader -rajapinta on READMEn mukaan paras, tai api/fever.php.
Ei oletuksena: asetukset rajaavat tilit ylläpitäjän tiliin. Muut luodaan kohdassa Ylläpito, Käyttäjien hallinta, tai tilien määrää nostetaan järjestelmän asetuksissa, jolloin rekisteröitymislomake tulee näkyviin.
Kopioikaa taltiot data ja extensions palvelun ollessa pysäytettynä. Ottakaa myös auto_sqlite_export käyttöön ja ajastakaa cli/export-sqlite-auto.php, joka vie jokaisen käyttäjän tietokannan SQLiteen joka yö. PostgreSQL:llä lisätkää pg_dump. Testatkaa palautus säännöllisesti.
Managed VPS kattaa palvelimen: järjestelmän, tietoturvan, valvonnan ja varmuuskopiot. Tiimimme seuraavat myös instanssianne proaktiivisesti ja suosittelevat hyödyllisiä korjauksia, jotka toteutatte itse. Toimenpide sovelluksessa laskutetaan tuntiveloituksella tai kiinteällä hinnalla.
Simafri
Jutellaan hankkeestasi
Kerro meille muutamalla sanalla, mitä tarvitset: vastaamme sinulle nopeasti.
Kiitos! Pyyntösi on lähetetty. Vastaamme sinulle pian.
Suositko sähköpostia? Kirjoita meille osoitteeseen support@simafri.com.