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.
Autor: Simon Vasconcelos Lee
Objavljeno 11. studenoga 2026.Vrijeme čitanja: 13 minuta
data i extensions, iza obrnutog proxyja s HTTPS-om.CRON_MIN sama osvježava feedove: projekt preporučuje otprilike dva pokretanja na sat.data i, uz PostgreSQL ili MySQL, bazu, a ažurirajte s docker compose pull.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.
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.
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:
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 dostupan samo preko obrnutog proxyja, postavljenog na istom poslužitelju. Primjer datoteke projekta objavljuje port 8080 za lokalnu upotrebu; adresa 127.0.0.1 ovdje ga rezervira za proxy.data čuva konfiguraciju, račune i, uz SQLite, bazu svakog korisnika. README ističe da sadrži sve osobne podatke. Docker Compose naziva ga prema mapi: freshrss_data.extensions čuva proširenja trećih strana, ako ih dodate.TZ prima vremensku zonu poslužitelja, u formatu PHP-a; zadana je vrijednost UTC.TRUSTED_PROXY zadržava vrijednost iz primjera datoteke: privatne raspone iz kojih dolaze zahtjevi proxyja. O njoj ovisi koja adresa ulazi u zapisnike, posjetiteljeva ili proxyjeva.cli/health.php, kako bi Docker znao odgovara li instanca.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.
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.
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.
Caddy sam pribavlja certifikat i uključuje HTTPS. Ovaj blok preuzima primjer iz dokumentacije za poddomenu, ovdje usmjeren na lokalno objavljeni port:
rss.example.com {
reverse_proxy 127.0.0.1:8080
}
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:
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:
sudo certbot --nginx
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:
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 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.
13,43; radi i */20.base_url, a čarobnjak za postavljanje uključuje ga kada je poslužitelj ima.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:
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.
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 radi | Gdje se podešava |
|---|---|---|
| Obrazac | Korisničko ime i lozinka svojstveni FreshRSS-u | Čarobnjak za postavljanje |
| HTTP autentifikacija | Web-poslužitelj kontrolira pristup, a novi korisnici nastaju pri prvoj prijavi | Datoteka p/i/.htaccess montirana u kontejner, s njezinim .htpasswd |
| Vanjska autentifikacija | Proxy prijavljenog korisnika prosljeđuje u zaglavlju Remote-User ili X-WebAuth-User | TRUSTED_PROXY, koji navodi pouzdane proxyje |
| OpenID Connect | Prijava ide preko vašeg pružatelja identiteta, s modulom Apachea mod_auth_openidc | OIDC_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.
mailer i smtp u data/config.php: dokumentacija navodi da slanje preko PHP funkcije mail unutar službenih Docker slika još nije podržano.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.
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.
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.
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.
| Baza | Postavljanje | Sigurnosna kopija |
|---|---|---|
| SQLite | Nikakvo: jedna datoteka po korisniku, data/users/<user>/db.sqlite | Volumen data |
| PostgreSQL | Usluga postgres u istom compose.yaml | pg_dump ili cli/db-backup.php |
| MySQL ili MariaDB | Vaš poslužitelj baze i njegov naziv hosta u čarobnjaku | mysqldump 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:
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'
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.
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 čuva | Za sigurnosno kopiranje |
|---|---|---|
data/ | Konfiguraciju, račune, zapisnike i, uz SQLite, baze | Obavezno; cache/ se može izostaviti, FreshRSS ga ponovno izrađuje |
extensions/ | Proširenja trećih strana | Preporučeno, ako ih koristite |
| Vanjska baza | Uz PostgreSQL, MySQL ili MariaDB, podatke korisnika | Obavezno, zasebno |
Dokumentacija smatra sigurnijim zaustaviti uslugu tijekom radova na održavanju. Docker volumeni kopiraju se privremenim kontejnerom, metodom opisanom u dokumentaciji Dockera:
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 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:
'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:
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:
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.
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, 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.
Docker README daje dvije naredbe, iz mape s datotekom compose.yaml. Volumeni ostaju na mjestu:
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.
data/, proširenja i baze.1.29.1 omogućuju taj put.Da biste pratili nova izdanja, projekt objavljuje Atom feed svojih inačica: pretplatite na njega svoju instancu FreshRSS-a.
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.
| Tema | Naši timovi | Vi |
|---|---|---|
| Poslužitelj | Ažuriranja sustava i sigurnosti, uključujući intervencije na poslužitelju | Trenutak koji odgovara vašem poslovanju |
| Nadzor | Poslužitelj pod nadzorom 24 sata dnevno, 7 dana u tjednu, s intervencijom bez čekanja vašeg poziva | Čitanje zapisnika vaše instance |
| FreshRSS | Proaktivno praćenje: uočene pogreške, usporavanja i prostor na disku, preporučen ispravak | Njegova instalacija, ažuriranja i postavke, koje primjenjujete vi ili vaš AI asistent |
| Računi i feedovi | Poslužitelj koji ih nosi, nadziran i sigurnosno kopiran | Korisnici, pretplate, proširenja i API lozinke |
| Sigurnosne kopije | Svake noći, šifrirane i čuvane izvan stroja; vraćanje uključeno | Izvozi specifični za FreshRSS i zahtjev za vraćanje, kada vam zatreba |
| Migracija | Vaš trenutačni poslužitelj migriran, besplatno | Trenutak 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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Simafri
Porazgovarajmo o Vašem projektu
Recite nam u nekoliko riječi što trebate: javljamo Vam se brzo.
Hvala! Vaš upit je poslan. Javit ćemo vam se uskoro.
Više volite e-mail? Pišite nam na support@simafri.com.