Hostovat FreshRSS na Managed VPS: vaše kanály RSS na vašem serveru

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.

Simon Vasconcelos Lee Autor: Publikováno 11. listopadu 2026Doba čtení: 13 minut

Všichni průvodci

To nejdůležitější

  1. Licence AGPL-3.0 dovoluje FreshRSS volně provozovat, ve firmě i jinde; pokud ho upravíte, nabídnete zdrojový kód své verze těm, kdo ji používají.
  2. Nainstalujte ho pomocí Docker Compose: jeden obraz, lokálně publikovaný port a dva svazky, data a extensions, za reverzní proxy s HTTPS.
  3. Proměnná CRON_MIN obnovuje kanály sama: projekt doporučuje přibližně dvě spuštění za hodinu.
  4. Registrace jsou ve výchozím nastavení uzavřené. Pro mobilní aplikace zapněte API a každý uživatel si pak nastaví heslo k API.
  5. Zálohujte svazek data a s PostgreSQL nebo MySQL i databázi a aktualizujte pomocí docker compose pull.

Co FreshRSS umí

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.

Co dovoluje licence AGPL-3.0

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í.

Instalace pomocí Docker Compose

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:

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
Terminál, ve složce freshrss
docker compose up -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.

Dokončení instalace

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.

HTTPS: reverzní proxy

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.

S 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:

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

S Nginx a Certbotem

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:

Blok 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 pak nainstaluje certifikát a postará se o jeho obnovu:

Terminál
sudo certbot --nginx

Veřejná adresa: base_url

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:

Terminál
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/',

Obnovování kanálů: CRON_MIN

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í.

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:

/etc/cron.d/FreshRSS
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.

Účty a přihlášení

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ůsobCo děláKde se nastavuje
FormulářUživatelské jméno a heslo vlastní FreshRSSPrůvodce instalací
Ověření HTTPPří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-UserTRUSTED_PROXY, které uvádí důvěryhodné proxy
OpenID ConnectPřihlášení vede přes vašeho poskytovatele identity, pomocí modulu Apache mod_auth_openidcOIDC_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ě.

Registrace a uživatelé

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.

Mobilní aplikace: API Google Reader a Fever

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é.

  1. Jako správce v části Ověřování zapněte volbu, která povoluje přístup k API.
  2. Každý uživatel si ve svém profilu nastaví heslo k API. Je oddělené od hlavního hesla, dává přístup k menšímu okruhu věcí a je určené pro méně bezpečné situace.
  3. V aplikaci zadejte adresu 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.

SQLite, PostgreSQL, MySQL, nebo MariaDB

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ázeNastaveníZáloha
SQLiteŽádné: jeden soubor na uživatele, data/users/<user>/db.sqliteSvazek data
PostgreSQLSlužba postgres ve stejném compose.yamlpg_dump, nebo cli/db-backup.php
MySQL nebo MariaDBVáš databázový server a jeho název hostitele v průvodcimysqldump, 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:

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

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.

Zálohy

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žkaCo uchováváZálohovat
data/Konfiguraci, účty, protokoly a s SQLite i databázePovinně; cache/ lze vynechat, FreshRSS ji znovu sestaví
extensions/Rozšíření třetích stranDoporučeno, pokud nějaká používáte
Externí databázeS PostgreSQL, MySQL nebo MariaDB data uživatelůPovinně, zvlášť

Svazky při zastavené službě

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:

Terminál, ve složce 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

Databáze za běhu služby

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:

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:

/etc/cron.d/freshrss-export
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:

Terminál, ve složce freshrss
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.

Obnova

  1. Zastavte FreshRSS pomocí docker compose stop freshrss.
  2. Nahrajte archiv zpět do svazků: docker run --rm --volumes-from freshrss -v "$PWD":/backup ubuntu tar -xzf /backup/freshrss-YYYY-MM-DD.tgz -C /var/www/FreshRSS.
  3. S externí databází ji obnovte z jejího exportu, nebo ze souborů SQLite pomocí cli/db-restore.php --delete-backup --force-overwrite.
  4. Spusťte znovu pomocí 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.

Aktualizace

README pro Docker uvádí dva příkazy, ze složky se souborem compose.yaml. Svazky zůstávají na místě:

Terminál
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.

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.

Kdo co dělá na Managed VPS

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émaNaše týmyVy
ServerAktualizace systému a zabezpečení, včetně zásahů na serveruOkamžik, který vyhovuje vašemu provozu
DohledServer sledovaný 24 hodin denně, 7 dní v týdnu, se zásahem bez čekání na vaše voláníČtení protokolů vaší instance
FreshRSSProaktivní sledování: chyby, zpomalení a místo na disku zachycené, doporučená opravaJeho instalace, aktualizace a nastavení, které zapracujete vy nebo váš AI asistent
Účty a kanályServer, který je nese, hlídaný a zálohovanýUživatelé, odběry, rozšíření a hesla k API
ZálohyKaždou noc, šifrované a uchovávané mimo stroj; obnova v ceněExporty vlastní FreshRSS a žádost o obnovu, když ji potřebujete
MigraceVáš stávající server přenesen zdarmaOkamž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.

FreshRSS na serveru, o který se staráme za vás

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.

Objevit Managed VPS

Časté otázky

Je FreshRSS pro firmu 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ěží.

Jak nainstalovat FreshRSS pomocí Docker Compose?

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í.

Jak ve FreshRSS automaticky obnovovat kanály?

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.

Jakou databázi pro FreshRSS zvolit?

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.

Jak číst FreshRSS v mobilu?

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.

Jsou ve FreshRSS otevřené registrace?

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ář.

Jak zálohovat FreshRSS?

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.

Pokrývá Managed VPS i FreshRSS?

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.

Zdroje a oficiální dokumentace

Kontaktujte nás