Găzduirea FreshRSS pe un Managed VPS înseamnă că dumneavoastră și echipa dumneavoastră citiți fluxurile RSS de pe o mașină a dumneavoastră, pe care echipele noastre o țin la zi și o supraveghează zi și noapte. FreshRSS este un software liber sub licență AGPL-3.0. Acest ghid urmează documentația sa oficială: instalarea cu Docker Compose, HTTPS, actualizarea fluxurilor, conturile și conectarea, API-ul pentru aplicațiile mobile, baza de date, backupurile și actualizările.
Autor: Simon Vasconcelos Lee
Publicat la 11 noiembrie 2026Timp de citire: 13 minute
data și extensions, în spatele unui proxy invers în HTTPS.CRON_MIN actualizează singură fluxurile: proiectul recomandă aproximativ două rulări pe oră.data și, cu PostgreSQL sau MySQL, baza de date, apoi actualizați cu docker compose pull.FreshRSS este un agregator de fluxuri RSS scris în PHP, conceput pentru găzduirea pe propriul server. README-ul său îl descrie ca ușor, simplu de folosit, puternic și personalizabil, tradus în peste douăzeci de limbi. Este o aplicație multiutilizator, cu un mod de citire anonimă și etichete personalizate.
FreshRSS este dezvoltat de comunitatea sa pe GitHub, iar site-ul său oficial este publicat de comunitatea FreshRSS. Extensiile se află într-un depozit separat, iar documentația se adresează utilizatorilor, administratorilor și dezvoltatorilor.
FreshRSS este publicat sub GNU Affero General Public License, versiunea 3: manifestul său composer.json o declară ca AGPL-3.0, iar README-ul trimite la textul licenței. Acest text afirmă o permisiune nelimitată de a rula programul nemodificat. Puteți deci folosi imaginea publicată de proiect pentru firma și echipa dumneavoastră, fără nicio licență de cumpărat.
Articolul 13 adaugă o condiție specifică AGPL: dacă modificați programul, versiunea dumneavoastră trebuie să ofere tuturor celor care o folosesc de la distanță, prin rețea, posibilitatea de a obține gratuit codul sursă. O extensie terță adăugată în volumul extensions urmează propria sa licență.
Proiectul își publică imaginile oficiale pe Docker Hub, sub numele freshrss/freshrss, împreună cu un exemplu de fișier Compose. Pe un server unde Docker este instalat, creați un director numit freshrss și puneți în el acest compose.yaml, preluat din acel fișier și din README-ul Docker:
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 este accesibil doar prin proxy-ul invers, instalat pe același server. Fișierul exemplu al proiectului publică portul 8080 pentru o utilizare locală; adresa 127.0.0.1 îl rezervă aici proxy-ului.data păstrează configurația, conturile și, cu SQLite, baza de date a fiecărui utilizator. README-ul subliniază că el conține toate datele personale. Docker Compose îl numește după director: freshrss_data.extensions păstrează extensiile terțe, dacă adăugați unele.TZ primește fusul orar al serverului, în format PHP; implicit este UTC.TRUSTED_PROXY păstrează valoarea din fișierul exemplu: intervalele private din care vin cererile proxy-ului. Ea decide ce adresă apare în jurnale, a vizitatorului sau a proxy-ului.cli/health.php la intervale regulate, ca Docker să știe dacă instanța răspunde.Eticheta latest, cea implicită, urmărește ultima versiune numerotată; edge urmărește versiunea continuă (rolling release); o etichetă precum 1.30.4 fixează o versiune, iar sufixul -alpine oferă același lucru pe o bază Alpine în loc de Debian. Secțiunea despre actualizări revine asupra acestei alegeri.
Odată ce proxy-ul invers este instalat, deschideți adresa dumneavoastră HTTPS: asistentul de instalare cere limba, verifică serverul, propune alegerea bazei de date, apoi creează contul de administrator, cu parola lui și metoda de conectare. SQLite funcționează fără nicio pregătire. Instalarea merge și în linie de comandă, cu cli/do-install.php și cli/create-user.php, rulate prin docker exec --user www-data freshrss.
În privința resurselor, README-ul cere un server modest, sub Linux sau Windows, și notează că FreshRSS rulează chiar și pe un Raspberry Pi 1, cu timpi de răspuns sub o secundă, cu 150 de fluxuri și 22.000 de articole. Dimensiunea depinde de numărul de utilizatori, de fluxuri și de articolele păstrate. Pe un Managed VPS, descrieți-ne utilizarea dumneavoastră și vă recomandăm dimensiunea potrivită.
Pentru producție, README-ul Docker sfătuiește un proxy invers pe serverul gazdă, care asigură HTTPS. Alegeți mai întâi un nume de domeniu sau un subdomeniu, precum rss.example.com, care indică spre server prin înregistrări A și AAAA. Proiectul recomandă Traefik și publică pentru el un fișier Compose complet, cu certificate Let’s Encrypt și redirecționarea din HTTP spre HTTPS; dă și exemple pentru Apache, Nginx și Caddy.
Caddy obține certificatul și activează singur HTTPS. Acest bloc preia exemplul din documentație pentru un subdomeniu, îndreptat aici spre portul publicat local:
rss.example.com {
reverse_proxy 127.0.0.1:8080
}
Acest bloc preia exemplul Nginx din README-ul Docker pentru rădăcina unui domeniu, redus la portul 80, pentru a lăsa Certbot să instaleze HTTPS. Ultimele două linii transmit antetul Authorization, de care are nevoie API-ul 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 instalează apoi certificatul și se ocupă de reînnoirea lui:
sudo certbot --nginx
FreshRSS își păstrează adresa publică în base_url, în fișierul data/config.php. API-ul și WebSub se sprijină pe ea: verificați că ea conține adresa dumneavoastră în https. README-ul Docker arată unde găsiți acest fișier în volum:
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 preia articolele noi cu scriptul său app/actualize_script.php. Imaginea Docker include o sarcină programată care îl rulează la minutele indicate în CRON_MIN. Fără această variabilă sau cu o valoare goală, sarcina rămâne oprită, iar fluxurile nu se mai actualizează singure.
13,43; merge și */20.base_url, iar asistentul de instalare îl activează când serverul are una.O altă metodă documentată: o sarcină programată pe serverul gazdă, care apelează scriptul în container. În acest caz, eliminați CRON_MIN din compose.yaml, pentru a păstra o singură metodă:
7,37 * * * * root docker exec --user www-data freshrss php ./app/actualize_script.php > /tmp/FreshRSS.log 2>&1
Începând cu versiunea 1.30.0, FreshRSS refuză implicit adresele din rețeaua locală, precum 127.0.0.1, ca protecție împotriva falsificării cererilor de pe server (SSRF). Un serviciu vecin care produce fluxuri, precum RSS-Bridge, se autorizează prin variabila INTERNAL_HOST_ALLOWLIST, în forma rss-bridge:80, sau în configurația sistemului. Valoarea * elimină orice verificare, iar documentația o consideră nesigură.
La instalare, FreshRSS propune conectarea prin formular, care cere JavaScript. Este metoda implicită și se potrivește majorității instanțelor. Documentația le descrie și pe celelalte:
| Metodă | Ce face | Unde se setează |
|---|---|---|
| Formular | Un nume de utilizator și o parolă proprii FreshRSS | Asistentul de instalare |
| Autentificare HTTP | Serverul web controlează accesul, iar utilizatorii noi sunt creați la prima lor conectare | Un fișier p/i/.htaccess montat în container, cu fișierul său .htpasswd |
| Autentificare externă | Proxy-ul transmite utilizatorul conectat în antetul Remote-User sau X-WebAuth-User | TRUSTED_PROXY, care enumeră proxy-urile de încredere |
| OpenID Connect | Conectarea trece prin furnizorul dumneavoastră de identitate, cu modulul Apache mod_auth_openidc | OIDC_ENABLED și variabilele OIDC_*, în imaginea Debian pe x86_64 |
Documentația avertizează că FreshRSS are încredere în orice adresă enumerată în TRUSTED_PROXY: un proxy prost securizat i-ar permite unui atacator să seteze antetul și să obțină acces de administrator. Aici, portul ascultă doar pe 127.0.0.1, ceea ce îl rezervă proxy-ului serverului. Documentația descurajează și orice instanță fără autentificare, de îndată ce serverul este accesibil din afara rețelei dumneavoastră.
mailer și smtp în data/config.php: documentația precizează că trimiterea prin funcția PHP mail nu este încă suportată în imaginile Docker oficiale.Pentru o instanță partajată de mai multe persoane, documentația sfătuiește să deschideți conturi persoanelor în care aveți încredere și să păstrați instanța în spatele unui proxy sau al unui firewall care blochează accesul la intervalele de adrese interne.
FreshRSS funcționează în browser, pe ecrane mari ca și pe cele mici, și în aplicații pentru Android, iOS, Linux, Windows și macOS. Aceste aplicații folosesc unul dintre cele două API-uri ale sale: Google Reader, pe care README-ul îl consideră cel mai bun, și Fever, cu funcții mai limitate, mai puțin eficient și mai puțin sigur.
https://rss.example.com/api/greader.php sau https://rss.example.com/api/fever.php pentru Fever, cu numele de utilizator și această parolă API.Pentru verificare, linkul afișat lângă parola API, în profil, deschide o pagină de test: PASS la verificarea completă confirmă că totul funcționează. Imaginea Docker configurează deja Apache să accepte barele oblice codificate, de care au nevoie unele aplicații; cu Nginx în față, păstrați transmiterea antetului Authorization.
README-ul ține un tabel al aplicațiilor compatibile, cu platforma, API-ul și funcțiile lor: Capy Reader și Readrops pe Android, FeedFlow pe mobil și desktop, RSS Guard și NewsFlash pe desktop, ReadKit și Reeder Classic pe iOS și macOS, printre altele.
FreshRSS integrează SQLite, pe care README-ul Docker îl descrie ca opțiunea cea mai simplă, cu performanțe bune. Pagina de cerințe recomandă PostgreSQL 10 sau o versiune mai nouă și acceptă și MariaDB 10.6 și MySQL 8.0 sau mai nou. Alegerea se face în asistentul de instalare.
| Baza | Configurare | Backup |
|---|---|---|
| SQLite | Niciuna: un fișier pentru fiecare utilizator, data/users/<user>/db.sqlite | Volumul data |
| PostgreSQL | Un serviciu postgres în același compose.yaml | pg_dump sau cli/db-backup.php |
| MySQL sau MariaDB | Serverul dumneavoastră de bază de date și numele lui de gazdă în asistent | mysqldump sau cli/db-backup.php |
Pentru PostgreSQL, adăugați acest serviciu în compose.yaml, preluat din fișierul docker-compose-db.yml al proiectului, și volumul db în lista volumelor. Parola se pune într-un fișier .env, lângă 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'
În asistent, alegeți PostgreSQL și introduceți freshrss-db ca gazdă, cu utilizatorul, parola și baza freshrss.
Puteți reveni ulterior asupra acestei alegeri. Documentația descrie trecerea de la o bază la alta, de la MySQL la PostgreSQL de exemplu, sau la o versiune majoră mai nouă de PostgreSQL: cli/db-backup.php copiază baza fiecărui utilizator într-un fișier SQLite, apoi cli/db-restore.php o încarcă în noua bază.
README-ul precizează că FreshRSS este furnizat fără nicio garanție: backupurile dumneavoastră păstrează abonamentele, articolele și setările. Iată ce cere documentația să salvați:
| Element | Ce păstrează | Backup |
|---|---|---|
data/ | Configurația, conturile, jurnalele și, cu SQLite, bazele de date | Obligatoriu; cache/ poate fi omis, FreshRSS îl reconstruiește |
extensions/ | Extensiile terțe | Recomandat, dacă le folosiți |
| Baza de date externă | Cu PostgreSQL, MySQL sau MariaDB, datele utilizatorilor | Obligatoriu, separat |
Documentația consideră mai sigur să opriți serviciul în timpul operațiunilor de întreținere. Volumele Docker se copiază cu un container temporar, metoda descrisă în documentația Docker:
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
Începând cu versiunea 1.29.1, FreshRSS știe să exporte singur baza fiecărui utilizator într-un fișier SQLite, oricare ar fi baza folosită, și să le păstreze doar pe cele mai recente. Activați acest export în data/config.php:
'auto_sqlite_export' => [
'enabled' => true,
'retention' => 7,
],
Programați apoi comanda pe server, aici în fiecare noapte. Fiecare rulare scrie data/users/<user>/sqlite-backups/<date>.sqlite și șterge fișierele care depășesc ultimele șapte:
20 2 * * * root docker exec --user www-data freshrss cli/export-sqlite-auto.php --quiet
Cu PostgreSQL, adăugați un export cu instrumentul propriu al bazei, ca în README-ul Docker. Opțiunea -T renunță la terminal, de care o sarcină programată nu are nevoie:
docker compose exec -T freshrss-db pg_dump -U freshrss freshrss | gzip -9 > freshrss-postgres-$(date +%F).sql.gz
Exportul OPML, din interfață, salvează lista fluxurilor dumneavoastră, fără unele setări proprii FreshRSS, precum datele de acces sau regulile de extragere din pagini. Pentru o copie completă, păstrați exporturile SQLite: puse pe discul serverului, ele intră și în backupurile sale de noapte.
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, apoi verificați că fluxurile și articolele dumneavoastră sunt la locul lor.Repetați acest exercițiu din când în când, pe o copie: așa verificați că un backup funcționează.
README-ul Docker dă două comenzi, din directorul fișierului compose.yaml. Volumele rămân pe loc:
docker compose pull
docker compose up -d
FreshRSS publică pe două canale. Versiunile numerotate, eticheta latest, apar de câteva ori pe an, fără un calendar fix, iar corecturile lor nu sunt aduse în versiunile mai vechi. Versiunea continuă, eticheta edge, primește funcțiile noi și corecturile pe măsură ce apar: începând cu versiunea 1.30.0, proiectul o recomandă pentru corecturi de securitate mai rapide.
data/, al extensiilor și al bazei înaintea fiecărei actualizări.1.29.1 fac posibil acest parcurs.Pentru a urmări versiunile noi, proiectul publică un flux Atom al versiunilor sale: abonați la el propria instanță FreshRSS.
Găzduirea pe propriul server cere să țineți serverul pe lângă aplicație. Pe un Managed VPS, echipele noastre preiau serverul și vă urmăresc proactiv instanța; FreshRSS rămâne software-ul dumneavoastră, cu setările și datele sale.
| Subiect | Echipele noastre | Dumneavoastră |
|---|---|---|
| Serverul | Actualizări de sistem și de securitate, intervenții pe server incluse | Momentul potrivit activității dumneavoastră |
| Monitorizarea | Server urmărit 24 de ore din 24, 7 zile din 7, cu intervenție fără a vă aștepta apelul | Citirea jurnalelor instanței dumneavoastră |
| FreshRSS | Urmărire proactivă: erori, încetiniri și spațiu pe disc depistate, corectură recomandată | Instalarea, actualizările și setările sale, pe care le aplicați dumneavoastră sau asistentul dumneavoastră AI |
| Conturile și fluxurile | Serverul care le poartă, supravegheat și salvat | Utilizatorii, abonamentele, extensiile și parolele API |
| Backupurile | În fiecare noapte, criptate și păstrate în afara mașinii; restaurare inclusă | Exporturile proprii FreshRSS și cererea de restaurare, când aveți nevoie de ea |
| Migrarea | Serverul dumneavoastră actual migrat, gratuit | Momentul trecerii |
Dacă preferați ca echipele noastre să intervină în aplicația însăși, această prestație se facturează la oră sau la preț fix, cu o ofertă comunicată înainte de intervenție.
Cu un Managed VPS Simafri, echipele noastre țin la zi serverul instanței dumneavoastră FreshRSS, îl monitorizează zi și noapte și intervin fără a vă aștepta apelul; ele vă urmăresc proactiv și instanța și vă recomandă corecturile utile, pe care le aplicați dumneavoastră sau asistentul dumneavoastră AI. Backupurile sunt criptate în fiecare noapte și păstrate în afara mașinii, restaurarea lor este inclusă, iar migrarea serverului actual este gratuită.
Da. FreshRSS este sub licență AGPL-3.0: îl puteți rula în firmă fără nicio licență de cumpărat. Dacă îl modificați, versiunea dumneavoastră trebuie să ofere codul sursă celor care o folosesc prin rețea. Rămâne costul serverului pe care rulează.
Creați un compose.yaml cu imaginea freshrss/freshrss, volumele data și extensions și portul publicat pe 127.0.0.1, apoi rulați docker compose up -d. Puneți apoi în față un proxy invers în HTTPS, deschideți adresa dumneavoastră și urmați asistentul de instalare.
Cu imaginea Docker, dați variabilei CRON_MIN minutele de rulare, de exemplu 13,43: proiectul recomandă aproximativ două rulări pe oră. Fără CRON_MIN, sarcina integrată rămâne oprită. O sarcină programată pe server care rulează app/actualize_script.php în container face aceeași treabă.
SQLite este integrat și nu cere nicio pregătire; README-ul Docker îl descrie ca cel mai simplu, cu performanțe bune. Pagina de cerințe recomandă PostgreSQL 10 sau mai nou și acceptă MariaDB 10.6 și MySQL 8.0. Comenzile db-backup și db-restore permit schimbarea bazei mai târziu.
Activați accesul prin API în secțiunea Autentificare, apoi setați o parolă API în profilul dumneavoastră. Într-o aplicație compatibilă, introduceți adresa api/greader.php a instanței dumneavoastră, API-ul Google Reader fiind cel mai bun potrivit README-ului, sau api/fever.php.
Nu implicit: configurația limitează conturile la cel al administratorului. Le creați pe celelalte în Administrare, Gestionarea utilizatorilor, sau măriți numărul de conturi în configurația sistemului, pentru a afișa formularul de înregistrare.
Copiați volumele data și extensions cu serviciul oprit. Activați și auto_sqlite_export și programați cli/export-sqlite-auto.php, care exportă în fiecare noapte baza fiecărui utilizator în SQLite. Cu PostgreSQL, adăugați un pg_dump. Testați regulat restaurarea.
Un Managed VPS acoperă serverul: sistemul, securitatea, monitorizarea și backupurile. Echipele noastre vă urmăresc proactiv și instanța și vă recomandă corecturile utile, pe care le aplicați dumneavoastră. O intervenție în aplicație se facturează la oră sau la preț fix.
Simafri
Să discutăm despre site-ul dumneavoastră
Povestiți-ne despre proiectul dumneavoastră în câteva cuvinte: vă vom răspunde rapid.
Mulțumim! Cererea dumneavoastră a fost trimisă. Vă vom răspunde în curând.
Preferați e-mailul? Scrieți-ne la support@simafri.com.