Хостването на FreshRSS на Managed VPS означава вие и екипът ви да четете RSS емисиите си от своя собствена машина, която нашите екипи поддържат актуална и наблюдават денем и нощем. FreshRSS е свободен софтуер с лиценз AGPL-3.0. Това ръководство следва официалната му документация: инсталиране с Docker Compose, HTTPS, опресняване на емисиите, акаунти и влизане, API за мобилните приложения, база данни, резервни копия и обновления.
Автор: Simon Vasconcelos Lee
Публикувано на 11 ноември 2026 г.Време за четене: 13 минути
data и extensions, зад обратен прокси с HTTPS.CRON_MIN опреснява емисиите сама: проектът препоръчва около две изпълнения на час.data и, с PostgreSQL или MySQL, базата данни, после обновявайте с docker compose pull.FreshRSS е самостоятелно хостван агрегатор на RSS емисии, написан на PHP. README го описва като лек, лесен за работа, мощен и персонализируем, преведен на повече от двадесет езика. Това е многопотребителско приложение, с режим за анонимно четене и персонализирани етикети.
FreshRSS се разработва от своята общност в GitHub, а официалният му сайт се издава от общността на FreshRSS. Разширенията се намират в отделно хранилище, а документацията обхваща потребителите, администраторите и разработчиците.
FreshRSS е публикуван с GNU Affero General Public License, версия 3: манифестът му composer.json го декларира като AGPL-3.0, а README води към текста на лиценза. Този текст потвърждава неограничено разрешение да пускате непроменената програма. Можете следователно да използвате образа, публикуван от проекта, за фирмата и екипа си, без да купувате лиценз.
Член 13 добавя условие, присъщо на AGPL: ако променяте програмата, вашата версия трябва да предложи на всеки, който я използва от разстояние, през мрежата, начин да получи безплатно нейния изходен код. Разширение от трета страна, добавено в тома extensions, следва собствения си лиценз.
Проектът публикува официалните си образи в Docker Hub, като freshrss/freshrss, заедно с примерен файл Compose. На сървър с инсталиран Docker създайте папка с име freshrss и поставете в нея този compose.yaml, взет от този файл и от Docker README:
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 е достъпен само през обратния прокси, поставен на същия сървър. Примерният файл на проекта публикува порт 8080 за локална употреба; адресът 127.0.0.1 го запазва тук за проксито.data пази конфигурацията, акаунтите и, със SQLite, базата данни на всеки потребител. README посочва, че той съдържа всички лични данни. Docker Compose го наименува по папката: freshrss_data.extensions пази разширенията от трети страни, ако добавите такива.TZ получава часовата зона на сървъра, във формата на PHP; по подразбиране е UTC.TRUSTED_PROXY запазва стойността от примерния файл: частните диапазони, от които идват заявките на проксито. Тя решава кой адрес влиза в журналите, този на посетителя или този на проксито.cli/health.php на равни интервали, за да знае Docker дали инстанцията отговаря.Етикетът latest, по подразбиране, следва последната версия с номер; edge следва непрекъснатото издание; етикет като 1.30.4 фиксира версия, а наставката -alpine дава същото върху основа Alpine вместо Debian. Разделът за обновленията се връща към този избор.
След като обратният прокси е на мястото си, отворете своя HTTPS адрес: съветникът за инсталиране пита за езика, проверява сървъра, предлага избор на база данни, после създава администраторския акаунт, с неговата парола и метода за влизане. SQLite работи, без нищо да се подготвя. Инсталирането става и от командния ред, с cli/do-install.php и cli/create-user.php, изпълнени чрез docker exec --user www-data freshrss.
За ресурсите README иска лек сървър, с Linux или Windows, и отбелязва, че FreshRSS работи дори на Raspberry Pi 1, с време за отговор под секунда, при 150 емисии и 22 000 статии. Размерът зависи от броя на потребителите, на емисиите и на пазените статии. На Managed VPS ни опишете как го използвате и ще ви препоръчаме подходящия размер.
За работна среда Docker README съветва обратен прокси на хост сървъра, който осигурява HTTPS. Първо изберете име на домейн или поддомейн, като rss.example.com, който сочи към сървъра със записи A и AAAA. Проектът препоръчва Traefik и публикува за него пълен файл Compose, със сертификати Let’s Encrypt и пренасочване от HTTP към HTTPS; той дава и примери за Apache, Nginx и Caddy.
Caddy сам получава сертификата и включва HTTPS. Този блок следва примера от документацията за поддомейн, насочен тук към порта, публикуван локално:
rss.example.com {
reverse_proxy 127.0.0.1:8080
}
Този блок следва примера за Nginx от Docker README за корена на домейн, сведен до порт 80, за да остави на Certbot да постави HTTPS. Последните два реда предават заглавката Authorization, от която се нуждае 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 поставя сертификата и се грижи да го подновява:
sudo certbot --nginx
FreshRSS пази публичния си адрес в base_url, във файла data/config.php. API и WebSub разчитат на него: проверете, че съдържа вашия https адрес. Docker README показва къде да намерите този файл в тома:
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 изтегля новите статии със своя скрипт app/actualize_script.php. Docker образът съдържа планирана задача, която го пуска в минутите, зададени в CRON_MIN. Без тази променлива или с празна стойност задачата остава изключена и емисиите вече не се опресняват сами.
13,43; */20 също работи.base_url, а съветникът за инсталиране го включва, когато сървърът има такъв.Друг документиран метод: планирана задача на хост сървъра, която извиква скрипта в контейнера. В този случай махнете CRON_MIN от compose.yaml, за да остане един метод:
7,37 * * * * root docker exec --user www-data freshrss php ./app/actualize_script.php > /tmp/FreshRSS.log 2>&1
От версия 1.30.0 FreshRSS отказва по подразбиране адресите от локалната мрежа, като 127.0.0.1, за да се пази от подправяне на заявки от страна на сървъра. Съседна услуга, която създава емисии, като RSS-Bridge, се разрешава чрез променливата INTERNAL_HOST_ALLOWLIST, във вида rss-bridge:80, или в системната конфигурация. Стойността * премахва всякаква проверка, а документацията я определя като несигурна.
При инсталирането FreshRSS предлага влизане с формуляр, което изисква JavaScript. Това е методът по подразбиране и той подхожда на повечето инстанции. Документацията описва и други:
| Метод | Какво прави | Къде се настройва |
|---|---|---|
| Формуляр | Потребителско име и парола, присъщи на FreshRSS | Съветникът за инсталиране |
| HTTP удостоверяване | Уеб сървърът контролира достъпа, а новите потребители се създават при първото си влизане | Файл p/i/.htaccess, монтиран в контейнера, с неговия .htpasswd |
| Външно удостоверяване | Проксито предава влезлия потребител в заглавката Remote-User или X-WebAuth-User | TRUSTED_PROXY, който изброява доверените проксита |
| OpenID Connect | Влизането минава през вашия доставчик на идентичност, с модула на Apache mod_auth_openidc | OIDC_ENABLED и променливите OIDC_*, в образа Debian на x86_64 |
Документацията предупреждава, че FreshRSS се доверява на всеки адрес, изброен в TRUSTED_PROXY: зле защитено прокси би позволило на нападател да зададе заглавката и да получи администраторски достъп. Тук портът слуша само на 127.0.0.1, което го запазва за проксито на самия сървър. Документацията съветва също да избягвате всяка инстанция без удостоверяване, щом сървърът е достъпен извън вашата мрежа.
mailer и smtp в data/config.php: документацията посочва, че изпращането чрез функцията mail на PHP още не се поддържа в официалните Docker образи.За инстанция, споделена от няколко души, документацията съветва да отваряте акаунти за хора, на които имате доверие, и да държите инстанцията зад прокси или защитна стена, която блокира достъпа до вътрешните диапазони от адреси.
FreshRSS работи в браузъра, на големи и на малки екрани, както и в приложения за Android, iOS, Linux, Windows и macOS. Тези приложения използват едно от двете му API: Google Reader, което README оценява като най-доброто, и Fever, с по-ограничени функции, по-малко ефективно и по-малко сигурно.
https://rss.example.com/api/greader.php или https://rss.example.com/api/fever.php за Fever, с потребителското име и тази API парола.За проверка връзката, показана до API паролата, в профила, отваря тестова страница: PASS при пълната проверка потвърждава, че всичко работи. Docker образът вече настройва Apache да приема кодирани наклонени черти, от които някои приложения се нуждаят; с Nginx пред него запазете предаването на заглавката Authorization.
README поддържа таблица на съвместимите приложения, с тяхната платформа, API и функции: Capy Reader и Readrops на Android, FeedFlow на мобилни устройства и компютри, RSS Guard и NewsFlash на компютри, ReadKit и Reeder Classic на iOS и macOS, наред с други.
FreshRSS има вградена SQLite, която Docker README описва като най-лесния вариант, с добра производителност. Страницата с изискванията препоръчва PostgreSQL 10 или по-нова и приема също MariaDB 10.6 и MySQL 8.0 или по-нови. Изборът се прави в съветника за инсталиране.
| База | Настройване | Резервно копие |
|---|---|---|
| SQLite | Никакво: един файл на потребител, data/users/<user>/db.sqlite | Томът data |
| PostgreSQL | Услуга postgres в същия compose.yaml | pg_dump или cli/db-backup.php |
| MySQL или MariaDB | Вашият сървър за бази и името на хоста му в съветника | mysqldump или cli/db-backup.php |
За PostgreSQL добавете тази услуга в compose.yaml, взета от файла docker-compose-db.yml на проекта, и тома db в списъка с томове. Паролата отива във файл .env, до 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'
В съветника изберете PostgreSQL и въведете freshrss-db като хост, с потребителя, паролата и базата freshrss.
Можете да се върнете към този избор и по-късно. Документацията описва преминаването от една база към друга, например от MySQL към PostgreSQL, или към по-нова основна версия на PostgreSQL: cli/db-backup.php копира базата на всеки потребител във файл SQLite, после cli/db-restore.php я зарежда в новата база.
README посочва, че FreshRSS се предоставя без каквато и да е гаранция: вашите резервни копия пазят абонаментите, статиите и настройките ви. Ето какво документацията моли да архивирате:
| Елемент | Какво пази | За архивиране |
|---|---|---|
data/ | Конфигурацията, акаунтите, журналите и, със SQLite, базите данни | Задължително; cache/ може да се пропусне, FreshRSS го изгражда отново |
extensions/ | Разширенията от трети страни | Препоръчително, ако използвате такива |
| Външната база данни | С PostgreSQL, MySQL или MariaDB, данните на потребителите | Задължително, отделно |
Документацията смята за по-сигурно да спирате услугата по време на поддръжката. Docker томовете се копират с временен контейнер, по метода, описан в документацията на 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
От версия 1.29.1 FreshRSS умее сам да експортира базата на всеки потребител във файл SQLite, каквато и база да използвате, и да пази само най-новите. Включете този експорт в data/config.php:
'auto_sqlite_export' => [
'enabled' => true,
'retention' => 7,
],
После планирайте командата на сървъра, тук всяка нощ. Всяко изпълнение записва data/users/<user>/sqlite-backups/<date>.sqlite и изтрива файловете след последните седем:
20 2 * * * root docker exec --user www-data freshrss cli/export-sqlite-auto.php --quiet
С PostgreSQL добавете експорт със собствения инструмент на базата, както в Docker README. Опцията -T премахва терминала, който не е нужен на планирана задача:
docker compose exec -T freshrss-db pg_dump -U freshrss freshrss | gzip -9 > freshrss-postgres-$(date +%F).sql.gz
Експортът OPML, от интерфейса, архивира списъка ви с емисии, без някои настройки, присъщи на FreshRSS, като данните за достъп или правилата за извличане от страници. За пълно копие пазете експортите SQLite: поставени на диска на сървъра, те влизат и в нощните му резервни копия.
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, после проверете, че емисиите и статиите ви са налице.Повтаряйте това упражнение от време на време, върху копие: така проверявате, че резервното копие работи.
Docker README дава две команди, от папката на compose.yaml. Томовете остават на мястото си:
docker compose pull
docker compose up -d
FreshRSS публикува по два канала. Версиите с номер, етикет latest, излизат няколко пъти годишно, без определен календар, а поправките им не се пренасят към по-старите версии. Непрекъснатото издание, етикет edge, получава новите функции и поправки веднага щом бъдат добавени: от версия 1.30.0 проектът го препоръчва за по-бързи поправки на сигурността.
data/, на разширенията и на базата данни преди всяко обновяване.1.29.1 правят този път възможен.За да следите новите версии, проектът публикува Atom емисия на своите версии: абонирайте за нея собствената си инстанция на FreshRSS.
Самостоятелното хостване изисква да поддържате сървъра освен приложението. На Managed VPS нашите екипи поемат сървъра и следят проактивно вашата инстанция; FreshRSS остава ваш софтуер, с неговите настройки и данни.
| Тема | Нашите екипи | Вие |
|---|---|---|
| Сървърът | Обновления на системата и на сигурността, включително намеси на сървъра | Моментът, който пасва на вашата дейност |
| Наблюдението | Сървър, следен денонощно, 7 дни в седмицата, с намеса, без да се чака обаждането ви | Четенето на журналите на вашата инстанция |
| FreshRSS | Проактивно проследяване: грешки, забавяния и дисково пространство се откриват, препоръчва се корекция | Инсталирането, обновяванията и настройките му, които прилагате вие или вашият AI асистент |
| Акаунтите и емисиите | Сървърът, който ги носи, наблюдаван и архивиран | Потребителите, абонаментите, разширенията и API паролите |
| Резервните копия | Всяка нощ, криптирани и пазени извън машината; възстановяването е включено | Експортите, специфични за FreshRSS, и заявката за възстановяване, когато ви потрябва |
| Миграцията | Сегашният ви сървър е мигриран, безплатно | Моментът на превключването |
Ако предпочитате нашите екипи да се намесват в самото приложение, тази услуга се фактурира на час или на фиксирана цена, с оферта, съобщена преди намесата.
С Managed VPS от Simafri нашите екипи поддържат актуален сървъра на вашата инстанция на FreshRSS, наблюдават го денем и нощем и се намесват, без да чакат обаждането ви; те следят проактивно и вашата инстанция и ви препоръчват полезните корекции, които прилагате вие или вашият AI асистент. Резервните копия се криптират всяка нощ и се пазят извън машината, възстановяването им е включено, а миграцията от сегашния ви сървър е безплатна.
Да. FreshRSS е с лиценз AGPL-3.0: можете да го пускате във фирма, без да купувате лиценз. Ако го промените, вашата версия трябва да предложи изходния си код на тези, които я използват през мрежата. Остава цената на сървъра, на който работи.
Създайте compose.yaml с образа freshrss/freshrss, томовете data и extensions и порта, публикуван на 127.0.0.1, после изпълнете docker compose up -d. След това поставете пред него обратен прокси с HTTPS, отворете адреса си и следвайте съветника за инсталиране.
С Docker образа задайте в CRON_MIN минутите на изпълнение, например 13,43: проектът препоръчва около две изпълнения на час. Без CRON_MIN вградената задача остава изключена. Планирана задача на сървъра, която пуска app/actualize_script.php в контейнера, върши същата работа.
SQLite е вградена и не изисква никаква подготовка; Docker README я описва като най-лесната, с добра производителност. Страницата с изискванията препоръчва PostgreSQL 10 или по-нова и приема MariaDB 10.6 и MySQL 8.0. Командите db-backup и db-restore позволяват по-късно да смените базата.
Включете достъпа до API в раздела Удостоверяване, после задайте API парола в профила си. В съвместимо приложение въведете адреса api/greader.php на инстанцията си, като API Google Reader е най-доброто според README, или api/fever.php.
Не по подразбиране: конфигурацията ограничава акаунтите до този на администратора. Създавате останалите в Администрация, Управление на потребителите, или увеличавате броя на акаунтите в системната конфигурация, за да се покаже формулярът за регистрация.
Копирайте томовете data и extensions при спряна услуга. Включете и auto_sqlite_export и планирайте cli/export-sqlite-auto.php, който всяка нощ експортира базата на всеки потребител в SQLite. С PostgreSQL добавете pg_dump. Тествайте редовно възстановяването.
Managed VPS покрива сървъра: система, сигурност, наблюдение и резервни копия. Нашите екипи следят проактивно и вашата инстанция и ви препоръчват полезните корекции, които прилагате вие. Намеса в самото приложение се фактурира на час или на фиксирана цена.
Simafri
Да поговорим за Вашия проект
Кажете ни с няколко думи от какво имате нужда: отговаряме Ви бързо.
Благодарим! Вашето запитване е изпратено. Ще се свържем с вас скоро.
Предпочитате имейл? Пишете ни на support@simafri.com.