Hostovat FreshRSS na Managed VPS znamená, že vy i váš tým čtete své kanály RSS z vlastního stroje, který naše týmy udržují aktuální a ve dne i v noci hlídají. FreshRSS je svobodný software pod licencí AGPL-3.0. Tento průvodce sleduje jeho oficiální dokumentaci: instalaci pomocí Docker Compose, HTTPS, obnovování kanálů, účty a přihlášení, API pro mobilní aplikace, databázi, zálohy a aktualizace.
Autor: Simon Vasconcelos Lee
Publikováno 11. listopadu 2026Doba čtení: 13 minut
data a extensions, za reverzní proxy s HTTPS.CRON_MIN obnovuje kanály sama: projekt doporučuje přibližně dvě spuštění za hodinu.data a s PostgreSQL nebo MySQL i databázi a aktualizujte pomocí docker compose pull.FreshRSS je agregátor kanálů RSS pro vlastní hosting, napsaný v PHP. Jeho README ho popisuje jako lehký, snadno ovladatelný, výkonný a přizpůsobitelný, přeložený do více než dvaceti jazyků. Je to aplikace pro více uživatelů, s anonymním režimem čtení a vlastními štítky.
FreshRSS vyvíjí jeho komunita na GitHubu a jeho oficiální web vydává komunita FreshRSS. Rozšíření mají samostatný repozitář a dokumentace se věnuje uživatelům, správcům i vývojářům.
FreshRSS je vydáván pod GNU Affero General Public License, verze 3: jeho manifest composer.json ho deklaruje jako AGPL-3.0 a jeho README odkazuje na text licence. Ten stanoví neomezené oprávnění program v nezměněné podobě provozovat. Obraz zveřejněný projektem tedy můžete používat pro svou firmu a svůj tým, aniž byste kupovali licenci.
Článek 13 přidává podmínku specifickou pro AGPL: pokud program upravíte, musí vaše verze všem, kdo ji používají na dálku přes síť, nabídnout možnost získat její zdrojový kód zdarma. Rozšíření třetí strany přidané do svazku extensions se řídí vlastní licencí.
Projekt zveřejňuje své oficiální obrazy na Docker Hubu jako freshrss/freshrss, spolu s ukázkovým souborem Compose. Na serveru s nainstalovaným Dockerem vytvořte složku freshrss a umístěte do ní tento compose.yaml, převzatý z tohoto souboru a z README pro 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 je dostupný jen přes reverzní proxy nasazenou na stejném serveru. Ukázkový soubor projektu publikuje port 8080 pro místní použití; adresa 127.0.0.1 ho zde vyhrazuje proxy.data uchovává konfiguraci, účty a s SQLite i databázi každého uživatele. README upozorňuje, že obsahuje všechna osobní data. Docker Compose ho pojmenuje podle složky: freshrss_data.extensions uchovává rozšíření třetích stran, pokud nějaká přidáte.TZ přebírá časové pásmo serveru ve formátu PHP; výchozí hodnota je UTC.TRUSTED_PROXY zachovává hodnotu z ukázkového souboru: soukromé rozsahy, ze kterých přicházejí požadavky proxy. Rozhoduje o tom, která adresa se dostane do protokolů, zda návštěvníka, nebo proxy.cli/health.php, aby Docker věděl, zda instance odpovídá.Značka latest, výchozí, sleduje poslední verzované vydání; edge sleduje průběžné vydání; značka jako 1.30.4 verzi pevně určí a přípona -alpine dává totéž na základu Alpine místo Debianu. K této volbě se vrací část o aktualizacích.
Jakmile je reverzní proxy nasazená, otevřete svou adresu HTTPS: průvodce instalací se zeptá na jazyk, zkontroluje server, nabídne volbu databáze a pak vytvoří účet správce s heslem a způsobem přihlášení. SQLite funguje bez jakékoli přípravy. Instalace funguje i z příkazového řádku, pomocí cli/do-install.php a cli/create-user.php, spuštěných přes docker exec --user www-data freshrss.
K prostředkům README uvádí, že stačí lehký server s Linuxem nebo Windows, a poznamenává, že FreshRSS běží dokonce i na Raspberry Pi 1, s odezvou pod jednu sekundu, se 150 kanály a 22 000 články. Velikost závisí na počtu uživatelů, kanálů a uchovávaných článků. Na Managed VPS nám popište své využití a doporučíme vám vhodnou velikost.
Pro produkční provoz README pro Docker radí reverzní proxy na hostitelském serveru, která zajistí HTTPS. Nejdřív zvolte doménové jméno nebo subdoménu, například rss.example.com, která na server ukazuje záznamy A a AAAA. Projekt doporučuje Traefik a zveřejňuje pro něj úplný soubor Compose, s certifikáty Let’s Encrypt a přesměrováním z HTTP na HTTPS; uvádí také příklady pro Apache, Nginx a Caddy.
Caddy získá certifikát a zapne HTTPS samo. Tento blok vychází z příkladu dokumentace pro subdoménu, zde nasměrovaného na lokálně publikovaný port:
rss.example.com {
reverse_proxy 127.0.0.1:8080
}
Tento blok vychází z příkladu Nginx v README pro Docker pro kořen domény, zkráceného na port 80, aby HTTPS nasadil Certbot. Poslední dva řádky předávají hlavičku Authorization, kterou potřebuje 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 pak nainstaluje certifikát a postará se o jeho obnovu:
sudo certbot --nginx
FreshRSS uchovává svou veřejnou adresu v base_url, v souboru data/config.php. Opírá se o ni API i WebSub: ověřte, že obsahuje vaši adresu v https. README pro Docker ukazuje, kde tento soubor ve svazku najít:
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 stahuje nové články svým skriptem app/actualize_script.php. Obraz Docker obsahuje naplánovanou úlohu, která ho spouští v minutách uvedených v CRON_MIN. Bez této proměnné nebo s prázdnou hodnotou zůstává úloha vypnutá a kanály se samy neobnovují.
13,43; funguje i */20.base_url, a průvodce instalací ho zapne, když ji server má.Další zdokumentovaný způsob: naplánovaná úloha na hostitelském serveru, která volá skript uvnitř kontejneru. V takovém případě odstraňte CRON_MIN z compose.yaml, abyste měli jediný způsob:
7,37 * * * * root docker exec --user www-data freshrss php ./app/actualize_script.php > /tmp/FreshRSS.log 2>&1
Od verze 1.30.0 FreshRSS ve výchozím nastavení odmítá adresy místní sítě, jako je 127.0.0.1, jako ochranu proti padělání požadavků na straně serveru. Sousední službu, která kanály vytváří, například RSS-Bridge, povolíte proměnnou INTERNAL_HOST_ALLOWLIST ve tvaru rss-bridge:80, nebo v konfiguraci systému. Hodnota * odstraní veškeré kontroly a dokumentace ji označuje za nebezpečnou.
Při instalaci nabízí FreshRSS přihlášení formulářem, které vyžaduje JavaScript. Je to výchozí způsob a vyhovuje většině instancí. Dokumentace popisuje další:
| Způsob | Co dělá | Kde se nastavuje |
|---|---|---|
| Formulář | Uživatelské jméno a heslo vlastní FreshRSS | Průvodce instalací |
| Ověření HTTP | Přístup řídí webový server a noví uživatelé se vytvářejí při prvním přihlášení | Soubor p/i/.htaccess připojený do kontejneru, s jeho .htpasswd |
| Externí ověření | Proxy předává přihlášeného uživatele v hlavičce Remote-User nebo X-WebAuth-User | TRUSTED_PROXY, které uvádí důvěryhodné proxy |
| OpenID Connect | Přihlášení vede přes vašeho poskytovatele identity, pomocí modulu Apache mod_auth_openidc | OIDC_ENABLED a proměnné OIDC_*, v obrazu Debian na x86_64 |
Dokumentace upozorňuje, že FreshRSS důvěřuje každé adrese uvedené v TRUSTED_PROXY: špatně zabezpečená proxy by útočníkovi umožnila hlavičku nastavit a získat přístup správce. Zde port naslouchá jen na 127.0.0.1, čímž ho vyhrazuje proxy na samotném serveru. Dokumentace také nedoporučuje žádnou instanci bez ověřování, jakmile je server dostupný z vnějšku vaší sítě.
mailer a smtp v data/config.php: dokumentace uvádí, že odesílání přes funkci PHP mail zatím uvnitř oficiálních obrazů Docker podporováno není.U instance sdílené více lidmi dokumentace radí otevírat účty lidem, kterým důvěřujete, a ponechat instanci za proxy nebo firewallem, který blokuje přístup k interním rozsahům adres.
FreshRSS funguje v prohlížeči, na velkých i malých obrazovkách, a v aplikacích pro Android, iOS, Linux, Windows a macOS. Tyto aplikace používají jedno z jeho dvou API: Google Reader, které README hodnotí jako nejlepší, a Fever, s omezenějšími funkcemi, méně efektivní a méně bezpečné.
https://rss.example.com/api/greader.php, nebo https://rss.example.com/api/fever.php pro Fever, s uživatelským jménem a tímto heslem k API.Pro ověření otevře odkaz zobrazený vedle hesla k API, v profilu, testovací stránku: PASS u úplné kontroly potvrzuje, že vše funguje. Obraz Docker už nastavuje Apache tak, aby přijímal kódovaná lomítka, která některé aplikace potřebují; s Nginx před ním zachovejte předávání hlavičky Authorization.
README vede tabulku kompatibilních aplikací s jejich platformou, API a funkcemi: mimo jiné Capy Reader a Readrops na Androidu, FeedFlow na mobilu i desktopu, RSS Guard a NewsFlash na desktopu, ReadKit a Reeder Classic na iOS a macOS.
FreshRSS má vestavěnou SQLite, kterou README pro Docker popisuje jako nejjednodušší možnost s dobrým výkonem. Stránka požadavků doporučuje PostgreSQL 10 nebo novější a přijímá také MariaDB 10.6 a MySQL 8.0 nebo novější. Volbu uděláte v průvodci instalací.
| Databáze | Nastavení | Záloha |
|---|---|---|
| SQLite | Žádné: jeden soubor na uživatele, data/users/<user>/db.sqlite | Svazek data |
| PostgreSQL | Služba postgres ve stejném compose.yaml | pg_dump, nebo cli/db-backup.php |
| MySQL nebo MariaDB | Váš databázový server a jeho název hostitele v průvodci | mysqldump, nebo cli/db-backup.php |
Pro PostgreSQL přidejte do compose.yaml tuto službu, převzatou ze souboru projektu docker-compose-db.yml, a do seznamu svazků svazek db. Heslo patří do souboru .env vedle 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'
V průvodci zvolte PostgreSQL a jako hostitele zadejte freshrss-db, s uživatelem, heslem a databází freshrss.
K této volbě se můžete později vrátit. Dokumentace popisuje přechod z jedné databáze na jinou, například z MySQL na PostgreSQL, nebo na novější hlavní verzi PostgreSQL: cli/db-backup.php zkopíruje databázi každého uživatele do souboru SQLite a cli/db-restore.php ji pak nahraje do nové databáze.
README uvádí, že FreshRSS se dodává zcela bez záruky: vaše zálohy uchovávají vaše odběry, články a nastavení. Dokumentace žádá zálohovat toto:
| Položka | Co uchovává | Zálohovat |
|---|---|---|
data/ | Konfiguraci, účty, protokoly a s SQLite i databáze | Povinně; cache/ lze vynechat, FreshRSS ji znovu sestaví |
extensions/ | Rozšíření třetích stran | Doporučeno, pokud nějaká používáte |
| Externí databáze | S PostgreSQL, MySQL nebo MariaDB data uživatelů | Povinně, zvlášť |
Dokumentace považuje za bezpečnější zastavit službu během údržby. Svazky Docker se kopírují pomocí dočasného kontejneru, metodou popsanou v dokumentaci Dockeru:
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 verze 1.29.1 umí FreshRSS sám exportovat databázi každého uživatele do souboru SQLite, ať používáte kteroukoli databázi, a ponechat jen ty nejnovější. Tento export zapněte v data/config.php:
'auto_sqlite_export' => [
'enabled' => true,
'retention' => 7,
],
Pak příkaz naplánujte na serveru, zde každou noc. Každé spuštění zapíše data/users/<user>/sqlite-backups/<date>.sqlite a smaže soubory nad posledních sedm:
20 2 * * * root docker exec --user www-data freshrss cli/export-sqlite-auto.php --quiet
S PostgreSQL přidejte export nástrojem samotné databáze, jako v README pro Docker. Volba -T vypíná terminál, který naplánovaná úloha nepotřebuje:
docker compose exec -T freshrss-db pg_dump -U freshrss freshrss | gzip -9 > freshrss-postgres-$(date +%F).sql.gz
Export OPML z rozhraní zálohuje seznam vašich kanálů, bez některých nastavení specifických pro FreshRSS, jako jsou přístupové údaje nebo pravidla pro čtení stránek. Pro úplnou kopii si uchovávejte exporty SQLite: uložené na disku serveru se dostanou i do jeho nočních záloh.
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 ověřte, že vaše kanály a články jsou na místě.Toto cvičení čas od času zopakujte na kopii: tak ověříte, že záloha funguje.
README pro Docker uvádí dva příkazy, ze složky se souborem compose.yaml. Svazky zůstávají na místě:
docker compose pull
docker compose up -d
FreshRSS vydává ve dvou kanálech. Verzovaná vydání, značka latest, vycházejí několikrát do roka bez pevného kalendáře a jejich opravy se do starších verzí nepřenášejí. Průběžné vydání, značka edge, dostává nové funkce a opravy průběžně: od verze 1.30.0 ho projekt doporučuje kvůli rychlejším bezpečnostním opravám.
data/, rozšíření a databáze.1.29.1.Pro sledování nových vydání zveřejňuje projekt kanál Atom svých verzí: přihlaste k jeho odběru svou vlastní instanci FreshRSS.
Vlastní hosting vyžaduje, abyste kromě aplikace udržovali i server. Na Managed VPS se serveru ujímají naše týmy a vaši instanci proaktivně sledují; FreshRSS zůstává vaším softwarem, s jeho nastavením a daty.
| Téma | Naše týmy | Vy |
|---|---|---|
| Server | Aktualizace systému a zabezpečení, včetně zásahů na serveru | Okamžik, který vyhovuje vašemu provozu |
| Dohled | Server sledovaný 24 hodin denně, 7 dní v týdnu, se zásahem bez čekání na vaše volání | Čtení protokolů vaší instance |
| FreshRSS | Proaktivní sledování: chyby, zpomalení a místo na disku zachycené, doporučená oprava | Jeho instalace, aktualizace a nastavení, které zapracujete vy nebo váš AI asistent |
| Účty a kanály | Server, který je nese, hlídaný a zálohovaný | Uživatelé, odběry, rozšíření a hesla k API |
| Zálohy | Každou noc, šifrované a uchovávané mimo stroj; obnova v ceně | Exporty vlastní FreshRSS a žádost o obnovu, když ji potřebujete |
| Migrace | Váš stávající server přenesen zdarma | Okamžik přepnutí |
Pokud dáváte přednost tomu, aby naše týmy zasáhly přímo v aplikaci, tato služba se účtuje po hodinách nebo paušálem, s cenovou nabídkou sdělenou před zásahem.
S Managed VPS od Simafri udržují naše týmy server vaší instance FreshRSS aktuální, hlídají ho ve dne i v noci a zasahují bez čekání na vaše volání; vaši instanci také proaktivně sledují a doporučí vám užitečné opravy, které zapracujete vy nebo váš AI asistent. Zálohy se každou noc šifrují a uchovávají mimo stroj, jejich obnova je v ceně a migrace vašeho stávajícího serveru je zdarma.
Ano. FreshRSS je pod licencí AGPL-3.0: můžete ho ve firmě provozovat, aniž byste kupovali licenci. Pokud ho upravíte, musí vaše verze nabídnout zdrojový kód těm, kdo ji používají přes síť. Zbývají náklady na server, na kterém běží.
Vytvořte compose.yaml s obrazem freshrss/freshrss, svazky data a extensions a portem publikovaným na 127.0.0.1 a spusťte docker compose up -d. Potom před něj umístěte reverzní proxy s HTTPS, otevřete svou adresu a projděte průvodcem instalací.
S obrazem Docker zadejte do CRON_MIN minuty spuštění, například 13,43: projekt doporučuje přibližně dvě spuštění za hodinu. Bez CRON_MIN zůstává vestavěná úloha vypnutá. Stejnou práci odvede naplánovaná úloha na serveru, která uvnitř kontejneru spouští app/actualize_script.php.
SQLite je vestavěná a nevyžaduje žádnou přípravu; README pro Docker ji popisuje jako nejjednodušší, s dobrým výkonem. Stránka požadavků doporučuje PostgreSQL 10 nebo novější a přijímá MariaDB 10.6 a MySQL 8.0. Příkazy db-backup a db-restore umožňují databázi později změnit.
Zapněte přístup k API v části Ověřování a pak si ve svém profilu nastavte heslo k API. V kompatibilní aplikaci zadejte adresu api/greader.php své instance, protože API Google Reader je podle README nejlepší, nebo api/fever.php.
Ve výchozím nastavení ne: konfigurace omezuje účty na účet správce. Ostatní vytvoříte v části Administrace, Správa uživatelů, nebo v konfiguraci systému zvýšíte počet účtů, aby se zobrazil registrační formulář.
Kopírujte svazky data a extensions při zastavené službě. Zapněte také auto_sqlite_export a naplánujte cli/export-sqlite-auto.php, který každou noc exportuje databázi každého uživatele do SQLite. S PostgreSQL přidejte pg_dump. Obnovu pravidelně zkoušejte.
Managed VPS pokrývá server: systém, zabezpečení, dohled a zálohy. Naše týmy také proaktivně sledují vaši instanci a doporučí vám užitečné opravy, které zapracujete vy. Zásah v samotné aplikaci se účtuje po hodinách nebo paušálem.
Simafri
Promluvme si o vašem záměru
Řekněte nám v pár slovech, co potřebujete: rychle se vám ozveme.
Děkujeme! Vaše zpráva byla odeslána. Brzy se vám ozveme.
Máte raději e-mail? Napište nám na support@simafri.com.