Hostati FreshRSS na Managed VPS-u: vaši RSS feedovi na vašem poslužitelju

Hostati FreshRSS na Managed VPS-u znači da vi i vaš tim čitate svoje RSS feedove sa stroja koji je vaš, a koji naši timovi održavaju ažurnim i nadziru danju i noću. FreshRSS je slobodan softver pod licencom AGPL-3.0. Ovaj vodič prati njegovu službenu dokumentaciju: instalaciju s Docker Composeom, HTTPS, osvježavanje feedova, račune i prijavu, API za mobilne aplikacije, bazu podataka, sigurnosne kopije i ažuriranja.

Simon Vasconcelos Lee Autor: Objavljeno 11. studenoga 2026.Vrijeme čitanja: 13 minuta

Svi vodiči

Najvažnije

  1. Licenca AGPL-3.0 omogućuje slobodno pokretanje FreshRSS-a, u tvrtki kao i drugdje; ako ga izmijenite, izvorni kod svoje inačice nudite onima koji je koriste.
  2. Instalirajte ga s Docker Composeom: jedna slika, port objavljen lokalno i dva volumena, data i extensions, iza obrnutog proxyja s HTTPS-om.
  3. Varijabla CRON_MIN sama osvježava feedove: projekt preporučuje otprilike dva pokretanja na sat.
  4. Registracije su prema zadanim postavkama zatvorene. Za mobilne aplikacije uključite API, a zatim svaki korisnik postavlja API lozinku.
  5. Sigurnosno kopirajte volumen data i, uz PostgreSQL ili MySQL, bazu, a ažurirajte s docker compose pull.

Što radi FreshRSS

FreshRSS je agregator RSS feedova za hostanje na vlastitom poslužitelju, napisan u PHP-u. README ga opisuje kao lagan, jednostavan za rad, moćan i prilagodljiv, preveden na više od dvadeset jezika. Riječ je o višekorisničkoj aplikaciji, s anonimnim načinom čitanja i prilagođenim oznakama.

FreshRSS razvija njegova zajednica na GitHubu, a službeno web-mjesto objavljuje zajednica FreshRSS. Proširenja se nalaze u zasebnom repozitoriju, a dokumentacija pokriva korisnike, administratore i razvojne programere.

Što dopušta licenca AGPL-3.0

FreshRSS je objavljen pod licencom GNU Affero General Public License, inačica 3: njegov manifest composer.json deklarira je kao AGPL-3.0, a README upućuje na tekst licence. Taj tekst potvrđuje neograničeno dopuštenje za pokretanje neizmijenjenog programa. Stoga možete koristiti sliku koju objavljuje projekt za svoju tvrtku i svoj tim, bez kupnje licence.

Članak 13. dodaje uvjet svojstven licenci AGPL: ako program izmijenite, vaša inačica mora svima koji je koriste na daljinu, preko mreže, omogućiti da besplatno dobiju njezin izvorni kod. Proširenje treće strane dodano u volumen extensions podliježe vlastitoj licenci.

Instalacija s Docker Composeom

Projekt svoje službene slike objavljuje na Docker Hubu, pod nazivom freshrss/freshrss, zajedno s primjerom datoteke Compose. Na poslužitelju s instaliranim Dockerom izradite mapu freshrss i u nju stavite ovaj compose.yaml, preuzet iz te datoteke i Docker README-a:

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

Oznaka latest, zadana, prati posljednje izdanje s brojem inačice; edge prati kontinuirano izdanje; oznaka poput 1.30.4 fiksira inačicu, a sufiks -alpine daje isto na osnovi Alpine umjesto Debiana. Odjeljak o ažuriranjima vraća se na taj izbor.

Dovršetak instalacije

Kada je obrnuti proxy postavljen, otvorite svoju HTTPS adresu: čarobnjak za postavljanje traži jezik, provjerava poslužitelj, nudi izbor baze, a zatim izrađuje administratorski račun, s njegovom lozinkom i načinom prijave. SQLite radi bez ikakve pripreme. Instalacija radi i iz naredbenog retka, s cli/do-install.php i cli/create-user.php, pokrenutima preko docker exec --user www-data freshrss.

Što se tiče resursa, README traži lagan poslužitelj, s Linuxom ili Windowsom, i napominje da FreshRSS radi čak i na Raspberry Pi 1, s vremenom odziva ispod sekunde, uz 150 feedova i 22 000 članaka. Veličina ovisi o broju korisnika, feedova i sačuvanih članaka. Na Managed VPS-u opišite nam svoju upotrebu, a mi vam preporučujemo odgovarajuću veličinu.

HTTPS: obrnuti proxy

Za produkciju Docker README savjetuje obrnuti proxy na poslužitelju domaćinu, koji osigurava HTTPS. Najprije odaberite naziv domene ili poddomenu, poput rss.example.com, koja pokazuje na poslužitelj putem A i AAAA zapisa. Projekt preporučuje Traefik i za njega objavljuje cijelu datoteku Compose, s certifikatima Let’s Encrypt i preusmjeravanjem s HTTP-a na HTTPS; daje i primjere za Apache, Nginx i Caddy.

S Caddyjem

Caddy sam pribavlja certifikat i uključuje HTTPS. Ovaj blok preuzima primjer iz dokumentacije za poddomenu, ovdje usmjeren na lokalno objavljeni port:

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

S Nginxom i Certbotom

Ovaj blok preuzima primjer za Nginx iz Docker README-a za korijen domene, sveden na port 80 kako bi Certbot postavio HTTPS. Posljednja dva retka prosljeđuju zaglavlje Authorization, koje treba API Google Reader:

Blok za 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 zatim postavlja certifikat i brine se za njegovu obnovu:

Terminal
sudo certbot --nginx

Javna adresa: base_url

FreshRSS svoju javnu adresu čuva u base_url, u datoteci data/config.php. Na nju se oslanjaju API i WebSub: provjerite sadrži li vašu adresu u https. Docker README pokazuje gdje se ta datoteka nalazi u volumenu:

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

Osvježavanje feedova: CRON_MIN

FreshRSS nove članke dohvaća svojom skriptom app/actualize_script.php. Docker slika isporučuje planirani zadatak koji je pokreće u minutama navedenima u CRON_MIN. Bez te varijable, ili s praznom vrijednošću, zadatak ostaje isključen i feedovi se više ne osvježavaju sami.

Druga dokumentirana metoda: planirani zadatak na poslužitelju domaćinu, koji poziva skriptu unutar kontejnera. U tom slučaju uklonite CRON_MIN iz compose.yaml, kako biste zadržali samo jednu metodu:

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

Od inačice 1.30.0 FreshRSS prema zadanim postavkama odbija adrese lokalne mreže poput 127.0.0.1, radi zaštite od krivotvorenja zahtjeva na strani poslužitelja. Susjedna usluga koja proizvodi feedove, poput RSS-Bridgea, dopušta se varijablom INTERNAL_HOST_ALLOWLIST, u obliku rss-bridge:80, ili u konfiguraciji sustava. Vrijednost * uklanja svaku provjeru, a dokumentacija je naziva nesigurnom.

Računi i prijava

Tijekom instalacije FreshRSS nudi prijavu putem obrasca, koja zahtijeva JavaScript. To je zadana metoda i odgovara većini instanci. Dokumentacija opisuje i druge:

MetodaŠto radiGdje se podešava
ObrazacKorisničko ime i lozinka svojstveni FreshRSS-uČarobnjak za postavljanje
HTTP autentifikacijaWeb-poslužitelj kontrolira pristup, a novi korisnici nastaju pri prvoj prijaviDatoteka p/i/.htaccess montirana u kontejner, s njezinim .htpasswd
Vanjska autentifikacijaProxy prijavljenog korisnika prosljeđuje u zaglavlju Remote-User ili X-WebAuth-UserTRUSTED_PROXY, koji navodi pouzdane proxyje
OpenID ConnectPrijava ide preko vašeg pružatelja identiteta, s modulom Apachea mod_auth_openidcOIDC_ENABLED i varijable OIDC_*, u Debian slici na x86_64

Dokumentacija upozorava da FreshRSS vjeruje svakoj adresi navedenoj u TRUSTED_PROXY: loše zaštićen proxy omogućio bi napadaču da postavi zaglavlje i dobije administratorski pristup. Ovdje port sluša samo na 127.0.0.1, čime je rezerviran za proxy samog poslužitelja. Dokumentacija odvraća i od svake instance bez autentifikacije čim je poslužitelj dostupan izvan vaše mreže.

Registracije i korisnici

Za instancu koju dijeli više osoba dokumentacija savjetuje da račune otvarate osobama kojima vjerujete i da instancu držite iza proxyja ili vatrozida koji blokira pristup internim rasponima adresa.

Mobilne aplikacije: API-ji Google Reader i Fever

FreshRSS radi u pregledniku, na velikim i malim zaslonima, te u aplikacijama za Android, iOS, Linux, Windows i macOS. Te aplikacije koriste jedan od njegova dva API-ja: Google Reader, koji README ocjenjuje najboljim, i Fever, s ograničenijim funkcijama, manje učinkovit i manje siguran.

  1. Kao administrator, u odjeljku Autentifikacija, uključite opciju koja dopušta pristup API-ju.
  2. Svaki korisnik u svojem profilu postavlja API lozinku. Ona je odvojena od glavne lozinke, daje pristup manjem broju stvari i namijenjena je manje sigurnim situacijama.
  3. U aplikaciji unesite adresu https://rss.example.com/api/greader.php, ili https://rss.example.com/api/fever.php za Fever, s korisničkim imenom i tom API lozinkom.

Za provjeru, poveznica prikazana pokraj API lozinke, u profilu, otvara probnu stranicu: PASS na cjelovitoj provjeri potvrđuje da sve radi. Docker slika već postavlja Apache tako da prihvaća kodirane kose crte, koje trebaju neke aplikacije; s Nginxom ispred zadržite prosljeđivanje zaglavlja Authorization.

README vodi tablicu kompatibilnih aplikacija, s njihovom platformom, API-jem i funkcijama: među ostalima Capy Reader i Readrops na Androidu, FeedFlow na mobitelu i računalu, RSS Guard i NewsFlash na računalu, ReadKit i Reeder Classic na iOS-u i macOS-u.

SQLite, PostgreSQL, MySQL ili MariaDB

FreshRSS ima ugrađen SQLite, koji Docker README opisuje kao najjednostavniju mogućnost, s dobrim performansama. Stranica sa zahtjevima preporučuje PostgreSQL 10 ili noviji, a prihvaća i MariaDB 10.6 te MySQL 8.0 ili noviji. Izbor radite u čarobnjaku za postavljanje.

BazaPostavljanjeSigurnosna kopija
SQLiteNikakvo: jedna datoteka po korisniku, data/users/<user>/db.sqliteVolumen data
PostgreSQLUsluga postgres u istom compose.yamlpg_dump ili cli/db-backup.php
MySQL ili MariaDBVaš poslužitelj baze i njegov naziv hosta u čarobnjakumysqldump ili cli/db-backup.php

Za PostgreSQL u compose.yaml dodajte ovu uslugu, preuzetu iz datoteke projekta docker-compose-db.yml, a volumen db na popis volumena. Lozinka ide u datoteku .env, uz compose.yaml:

compose.yaml, u odjeljku 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'

U čarobnjaku odaberite PostgreSQL i kao host unesite freshrss-db, s korisnikom, lozinkom i bazom freshrss.

Ovaj izbor možete kasnije promijeniti. Dokumentacija opisuje prelazak s jedne baze na drugu, primjerice s MySQL-a na PostgreSQL, ili na noviju glavnu inačicu PostgreSQL-a: cli/db-backup.php kopira bazu svakog korisnika u datoteku SQLite, a zatim je cli/db-restore.php učitava u novu bazu.

Sigurnosne kopije

README navodi da FreshRSS dolazi bez ikakvog jamstva: vaše sigurnosne kopije čuvaju vaše pretplate, vaše članke i vaše postavke. Evo što dokumentacija traži da sigurnosno kopirate:

ElementŠto čuvaZa sigurnosno kopiranje
data/Konfiguraciju, račune, zapisnike i, uz SQLite, bazeObavezno; cache/ se može izostaviti, FreshRSS ga ponovno izrađuje
extensions/Proširenja trećih stranaPreporučeno, ako ih koristite
Vanjska bazaUz PostgreSQL, MySQL ili MariaDB, podatke korisnikaObavezno, zasebno

Volumeni, uz zaustavljenu uslugu

Dokumentacija smatra sigurnijim zaustaviti uslugu tijekom radova na održavanju. Docker volumeni kopiraju se privremenim kontejnerom, metodom opisanom u dokumentaciji Dockera:

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

Baze, dok usluga radi

Od inačice 1.29.1 FreshRSS sam zna izvesti bazu svakog korisnika u datoteku SQLite, bez obzira na to koju bazu koristite, i zadržati samo najnovije izvoze. Uključite taj izvoz u data/config.php:

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

Zatim naredbu planirajte na poslužitelju, ovdje svake noći. Svako pokretanje upisuje data/users/<user>/sqlite-backups/<date>.sqlite i briše datoteke starije od posljednjih sedam:

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

Uz PostgreSQL dodajte izvoz vlastitim alatom baze, kao u Docker README-u. Opcija -T izostavlja terminal, koji planiranom zadatku ne treba:

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

Izvoz OPML, iz sučelja, sigurnosno kopira popis vaših feedova, bez nekih postavki svojstvenih FreshRSS-u, poput pristupnih podataka ili pravila za čitanje stranica. Za potpunu kopiju zadržite izvoze SQLite: postavljeni na disk poslužitelja, ulaze i u njegove noćne sigurnosne kopije.

Vraćanje

  1. Zaustavite FreshRSS s docker compose stop freshrss.
  2. Ponovno učitajte arhivu u volumene: docker run --rm --volumes-from freshrss -v "$PWD":/backup ubuntu tar -xzf /backup/freshrss-YYYY-MM-DD.tgz -C /var/www/FreshRSS.
  3. Uz vanjsku bazu vratite je iz njezina izvoza ili iz datoteka SQLite s cli/db-restore.php --delete-backup --force-overwrite.
  4. Ponovno ga pokrenite s docker compose start freshrss, a zatim provjerite jesu li vaši feedovi i članci na mjestu.

Tu vježbu povremeno ponovite, na kopiji: tako provjeravate da sigurnosna kopija radi.

Ažuriranja

Docker README daje dvije naredbe, iz mape s datotekom compose.yaml. Volumeni ostaju na mjestu:

Terminal
docker compose pull
docker compose up -d

FreshRSS objavljuje na dva kanala. Izdanja s brojem inačice, oznaka latest, izlaze nekoliko puta godišnje, bez utvrđenog kalendara, a njihovi se ispravci ne prenose na starije inačice. Kontinuirano izdanje, oznaka edge, dobiva nove funkcije i ispravke čim stignu: od inačice 1.30.0 projekt ga preporučuje radi bržih sigurnosnih zakrpa.

Da biste pratili nova izdanja, projekt objavljuje Atom feed svojih inačica: pretplatite na njega svoju instancu FreshRSS-a.

Tko što radi na Managed VPS-u

Hostanje na vlastitom poslužitelju traži da uz aplikaciju održavate i poslužitelj. Na Managed VPS-u naši timovi preuzimaju poslužitelj i proaktivno prate vašu instancu; FreshRSS ostaje vaš softver, sa svojim postavkama i podacima.

TemaNaši timoviVi
PoslužiteljAžuriranja sustava i sigurnosti, uključujući intervencije na poslužiteljuTrenutak koji odgovara vašem poslovanju
NadzorPoslužitelj pod nadzorom 24 sata dnevno, 7 dana u tjednu, s intervencijom bez čekanja vašeg pozivaČitanje zapisnika vaše instance
FreshRSSProaktivno praćenje: uočene pogreške, usporavanja i prostor na disku, preporučen ispravakNjegova instalacija, ažuriranja i postavke, koje primjenjujete vi ili vaš AI asistent
Računi i feedoviPoslužitelj koji ih nosi, nadziran i sigurnosno kopiranKorisnici, pretplate, proširenja i API lozinke
Sigurnosne kopijeSvake noći, šifrirane i čuvane izvan stroja; vraćanje uključenoIzvozi specifični za FreshRSS i zahtjev za vraćanje, kada vam zatreba
MigracijaVaš trenutačni poslužitelj migriran, besplatnoTrenutak prelaska

Ako želite da naši timovi interveniraju u samoj aplikaciji, ta se usluga naplaćuje po satu ili paušalno, uz procjenu koja vam se priopćuje prije intervencije.

FreshRSS, na poslužitelju koji vodimo za vas

Uz Simafri Managed VPS naši timovi održavaju poslužitelj vaše instance FreshRSS-a ažurnim, nadziru ga danju i noću i interveniraju bez čekanja vašeg poziva; uz to proaktivno prate vašu instancu i preporučuju vam korisne ispravke, koje primjenjujete vi ili vaš AI asistent. Sigurnosne kopije svake se noći šifriraju i čuvaju izvan stroja, njihovo vraćanje je uključeno, a migracija vašeg trenutačnog poslužitelja je besplatna.

Otkrijte Managed VPS

Česta pitanja

Je li FreshRSS besplatan za tvrtke?

Da. FreshRSS je pod licencom AGPL-3.0: možete ga pokretati u tvrtki bez kupnje licence. Ako ga izmijenite, vaša inačica mora ponuditi izvorni kod onima koji je koriste preko mreže. Ostaje trošak poslužitelja na kojem radi.

Kako instalirati FreshRSS s Docker Composeom?

Izradite compose.yaml sa slikom freshrss/freshrss, volumenima data i extensions i portom objavljenim na 127.0.0.1, a zatim pokrenite docker compose up -d. Nakon toga ispred postavite obrnuti proxy s HTTPS-om, otvorite svoju adresu i slijedite čarobnjak za postavljanje.

Kako automatski osvježavati feedove u FreshRSS-u?

Uz Docker sliku u CRON_MIN upišite minute pokretanja, primjerice 13,43: projekt preporučuje otprilike dva pokretanja na sat. Bez CRON_MIN ugrađeni zadatak ostaje isključen. Isti posao obavlja planirani zadatak na poslužitelju koji pokreće app/actualize_script.php unutar kontejnera.

Koju bazu odabrati za FreshRSS?

SQLite je ugrađen i ne traži nikakvu pripremu; Docker README opisuje ga kao najjednostavniji, s dobrim performansama. Stranica sa zahtjevima preporučuje PostgreSQL 10 ili noviji, a prihvaća MariaDB 10.6 i MySQL 8.0. Naredbe db-backup i db-restore omogućuju kasniju promjenu baze.

Kako čitati FreshRSS na mobitelu?

Uključite pristup API-ju u odjeljku Autentifikacija, a zatim u svojem profilu postavite API lozinku. U kompatibilnoj aplikaciji unesite adresu api/greader.php svoje instance, jer je API Google Reader prema README-u najbolji, ili api/fever.php.

Jesu li registracije na FreshRSS-u otvorene?

Prema zadanim postavkama nisu: konfiguracija ograničava račune na administratorov. Ostale izrađujete u izborniku Administracija, Upravljanje korisnicima, ili u konfiguraciji sustava povećate broj računa kako bi se prikazao obrazac za registraciju.

Kako sigurnosno kopirati FreshRSS?

Kopirajte volumene data i extensions uz zaustavljenu uslugu. Uključite i auto_sqlite_export te planirajte cli/export-sqlite-auto.php, koji svake noći bazu svakog korisnika izvozi u SQLite. Uz PostgreSQL dodajte pg_dump. Redovito testirajte vraćanje.

Pokriva li Managed VPS FreshRSS?

Managed VPS pokriva poslužitelj: sustav, sigurnost, nadzor i sigurnosne kopije. Naši timovi proaktivno prate i vašu instancu te vam preporučuju korisne ispravke, koje primjenjujete vi. Intervencija u aplikaciji naplaćuje se po satu ili paušalno.

Izvori i službena dokumentacija

Kontaktirajte nas