Хостване на FreshRSS на Managed VPS: RSS емисиите ви на ваш сървър

Хостването на FreshRSS на Managed VPS означава вие и екипът ви да четете RSS емисиите си от своя собствена машина, която нашите екипи поддържат актуална и наблюдават денем и нощем. FreshRSS е свободен софтуер с лиценз AGPL-3.0. Това ръководство следва официалната му документация: инсталиране с Docker Compose, HTTPS, опресняване на емисиите, акаунти и влизане, API за мобилните приложения, база данни, резервни копия и обновления.

Simon Vasconcelos Lee Автор: Публикувано на 11 ноември 2026 г.Време за четене: 13 минути

Всички ръководства

Накратко

  1. Лицензът AGPL-3.0 позволява свободно да пускате FreshRSS, във фирма и другаде; ако го промените, предлагате изходния код на своята версия на тези, които я използват.
  2. Инсталирайте го с Docker Compose: един образ, порт, публикуван локално, и два тома, data и extensions, зад обратен прокси с HTTPS.
  3. Променливата CRON_MIN опреснява емисиите сама: проектът препоръчва около две изпълнения на час.
  4. Регистрациите са затворени по подразбиране. За мобилните приложения включете API, после всеки потребител задава API парола.
  5. Архивирайте тома data и, с PostgreSQL или MySQL, базата данни, после обновявайте с docker compose pull.

Какво прави FreshRSS

FreshRSS е самостоятелно хостван агрегатор на RSS емисии, написан на PHP. README го описва като лек, лесен за работа, мощен и персонализируем, преведен на повече от двадесет езика. Това е многопотребителско приложение, с режим за анонимно четене и персонализирани етикети.

FreshRSS се разработва от своята общност в GitHub, а официалният му сайт се издава от общността на FreshRSS. Разширенията се намират в отделно хранилище, а документацията обхваща потребителите, администраторите и разработчиците.

Какво позволява лицензът AGPL-3.0

FreshRSS е публикуван с GNU Affero General Public License, версия 3: манифестът му composer.json го декларира като AGPL-3.0, а README води към текста на лиценза. Този текст потвърждава неограничено разрешение да пускате непроменената програма. Можете следователно да използвате образа, публикуван от проекта, за фирмата и екипа си, без да купувате лиценз.

Член 13 добавя условие, присъщо на AGPL: ако променяте програмата, вашата версия трябва да предложи на всеки, който я използва от разстояние, през мрежата, начин да получи безплатно нейния изходен код. Разширение от трета страна, добавено в тома extensions, следва собствения си лиценз.

Инсталиране с Docker Compose

Проектът публикува официалните си образи в Docker Hub, като freshrss/freshrss, заедно с примерен файл Compose. На сървър с инсталиран Docker създайте папка с име freshrss и поставете в нея този compose.yaml, взет от този файл и от Docker README:

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
Терминал, в папката freshrss
docker compose up -d

Етикетът 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 ни опишете как го използвате и ще ви препоръчаме подходящия размер.

HTTPS: обратният прокси

За работна среда Docker README съветва обратен прокси на хост сървъра, който осигурява HTTPS. Първо изберете име на домейн или поддомейн, като rss.example.com, който сочи към сървъра със записи A и AAAA. Проектът препоръчва Traefik и публикува за него пълен файл Compose, със сертификати Let’s Encrypt и пренасочване от HTTP към HTTPS; той дава и примери за Apache, Nginx и Caddy.

С Caddy

Caddy сам получава сертификата и включва HTTPS. Този блок следва примера от документацията за поддомейн, насочен тук към порта, публикуван локално:

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

С Nginx и Certbot

Този блок следва примера за Nginx от Docker README за корена на домейн, сведен до порт 80, за да остави на Certbot да постави HTTPS. Последните два реда предават заглавката Authorization, от която се нуждае API Google Reader:

Блок на 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 поставя сертификата и се грижи да го подновява:

Терминал
sudo certbot --nginx

Публичният адрес: base_url

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
data/config.php
'base_url' => 'https://rss.example.com/',

Опресняване на емисиите: CRON_MIN

FreshRSS изтегля новите статии със своя скрипт app/actualize_script.php. Docker образът съдържа планирана задача, която го пуска в минутите, зададени в CRON_MIN. Без тази променлива или с празна стойност задачата остава изключена и емисиите вече не се опресняват сами.

Друг документиран метод: планирана задача на хост сървъра, която извиква скрипта в контейнера. В този случай махнете CRON_MIN от compose.yaml, за да остане един метод:

/etc/cron.d/FreshRSS
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-UserTRUSTED_PROXY, който изброява доверените проксита
OpenID ConnectВлизането минава през вашия доставчик на идентичност, с модула на Apache mod_auth_openidcOIDC_ENABLED и променливите OIDC_*, в образа Debian на x86_64

Документацията предупреждава, че FreshRSS се доверява на всеки адрес, изброен в TRUSTED_PROXY: зле защитено прокси би позволило на нападател да зададе заглавката и да получи администраторски достъп. Тук портът слуша само на 127.0.0.1, което го запазва за проксито на самия сървър. Документацията съветва също да избягвате всяка инстанция без удостоверяване, щом сървърът е достъпен извън вашата мрежа.

Регистрациите и потребителите

За инстанция, споделена от няколко души, документацията съветва да отваряте акаунти за хора, на които имате доверие, и да държите инстанцията зад прокси или защитна стена, която блокира достъпа до вътрешните диапазони от адреси.

Мобилните приложения: API Google Reader и Fever

FreshRSS работи в браузъра, на големи и на малки екрани, както и в приложения за Android, iOS, Linux, Windows и macOS. Тези приложения използват едно от двете му API: Google Reader, което README оценява като най-доброто, и Fever, с по-ограничени функции, по-малко ефективно и по-малко сигурно.

  1. Като администратор, в раздела Удостоверяване, включете опцията, която разрешава достъпа до API.
  2. Всеки потребител задава API парола в профила си. Тя е отделна от основната парола, дава достъп до по-малко неща и е предвидена за по-малко сигурни ситуации.
  3. В приложението въведете адреса 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, наред с други.

SQLite, PostgreSQL, MySQL или MariaDB

FreshRSS има вградена SQLite, която Docker README описва като най-лесния вариант, с добра производителност. Страницата с изискванията препоръчва PostgreSQL 10 или по-нова и приема също MariaDB 10.6 и MySQL 8.0 или по-нови. Изборът се прави в съветника за инсталиране.

БазаНастройванеРезервно копие
SQLiteНикакво: един файл на потребител, data/users/<user>/db.sqliteТомът data
PostgreSQLУслуга postgres в същия compose.yamlpg_dump или cli/db-backup.php
MySQL или MariaDBВашият сървър за бази и името на хоста му в съветникаmysqldump или cli/db-backup.php

За PostgreSQL добавете тази услуга в compose.yaml, взета от файла docker-compose-db.yml на проекта, и тома db в списъка с томове. Паролата отива във файл .env, до compose.yaml:

compose.yaml, под 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'

В съветника изберете 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:

Терминал, в папката 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

Базите данни, при работеща услуга

От версия 1.29.1 FreshRSS умее сам да експортира базата на всеки потребител във файл SQLite, каквато и база да използвате, и да пази само най-новите. Включете този експорт в data/config.php:

data/config.php
'auto_sqlite_export' => [
    'enabled' => true,
    'retention' => 7,
],

После планирайте командата на сървъра, тук всяка нощ. Всяко изпълнение записва data/users/<user>/sqlite-backups/<date>.sqlite и изтрива файловете след последните седем:

/etc/cron.d/freshrss-export
20 2 * * * root docker exec --user www-data freshrss cli/export-sqlite-auto.php --quiet

С PostgreSQL добавете експорт със собствения инструмент на базата, както в Docker README. Опцията -T премахва терминала, който не е нужен на планирана задача:

Терминал, в папката freshrss
docker compose exec -T freshrss-db pg_dump -U freshrss freshrss | gzip -9 > freshrss-postgres-$(date +%F).sql.gz

Експортът OPML, от интерфейса, архивира списъка ви с емисии, без някои настройки, присъщи на FreshRSS, като данните за достъп или правилата за извличане от страници. За пълно копие пазете експортите SQLite: поставени на диска на сървъра, те влизат и в нощните му резервни копия.

Възстановяване

  1. Спрете FreshRSS с docker compose stop freshrss.
  2. Заредете архива обратно в томовете: docker run --rm --volumes-from freshrss -v "$PWD":/backup ubuntu tar -xzf /backup/freshrss-YYYY-MM-DD.tgz -C /var/www/FreshRSS.
  3. С външна база я възстановете от нейния експорт или от файловете SQLite с cli/db-restore.php --delete-backup --force-overwrite.
  4. Стартирайте отново с docker compose start freshrss, после проверете, че емисиите и статиите ви са налице.

Повтаряйте това упражнение от време на време, върху копие: така проверявате, че резервното копие работи.

Обновленията

Docker README дава две команди, от папката на compose.yaml. Томовете остават на мястото си:

Терминал
docker compose pull
docker compose up -d

FreshRSS публикува по два канала. Версиите с номер, етикет latest, излизат няколко пъти годишно, без определен календар, а поправките им не се пренасят към по-старите версии. Непрекъснатото издание, етикет edge, получава новите функции и поправки веднага щом бъдат добавени: от версия 1.30.0 проектът го препоръчва за по-бързи поправки на сигурността.

За да следите новите версии, проектът публикува Atom емисия на своите версии: абонирайте за нея собствената си инстанция на FreshRSS.

Кой какво прави на Managed VPS

Самостоятелното хостване изисква да поддържате сървъра освен приложението. На Managed VPS нашите екипи поемат сървъра и следят проактивно вашата инстанция; FreshRSS остава ваш софтуер, с неговите настройки и данни.

ТемаНашите екипиВие
СървърътОбновления на системата и на сигурността, включително намеси на сървъраМоментът, който пасва на вашата дейност
НаблюдениетоСървър, следен денонощно, 7 дни в седмицата, с намеса, без да се чака обаждането виЧетенето на журналите на вашата инстанция
FreshRSSПроактивно проследяване: грешки, забавяния и дисково пространство се откриват, препоръчва се корекцияИнсталирането, обновяванията и настройките му, които прилагате вие или вашият AI асистент
Акаунтите и емисиитеСървърът, който ги носи, наблюдаван и архивиранПотребителите, абонаментите, разширенията и API паролите
Резервните копияВсяка нощ, криптирани и пазени извън машината; възстановяването е включеноЕкспортите, специфични за FreshRSS, и заявката за възстановяване, когато ви потрябва
МиграциятаСегашният ви сървър е мигриран, безплатноМоментът на превключването

Ако предпочитате нашите екипи да се намесват в самото приложение, тази услуга се фактурира на час или на фиксирана цена, с оферта, съобщена преди намесата.

FreshRSS, на сървър, поддържан вместо вас

С Managed VPS от Simafri нашите екипи поддържат актуален сървъра на вашата инстанция на FreshRSS, наблюдават го денем и нощем и се намесват, без да чакат обаждането ви; те следят проактивно и вашата инстанция и ви препоръчват полезните корекции, които прилагате вие или вашият AI асистент. Резервните копия се криптират всяка нощ и се пазят извън машината, възстановяването им е включено, а миграцията от сегашния ви сървър е безплатна.

Разгледайте Managed VPS

Често задавани въпроси

Безплатен ли е FreshRSS за фирма?

Да. FreshRSS е с лиценз AGPL-3.0: можете да го пускате във фирма, без да купувате лиценз. Ако го промените, вашата версия трябва да предложи изходния си код на тези, които я използват през мрежата. Остава цената на сървъра, на който работи.

Как се инсталира FreshRSS с Docker Compose?

Създайте compose.yaml с образа freshrss/freshrss, томовете data и extensions и порта, публикуван на 127.0.0.1, после изпълнете docker compose up -d. След това поставете пред него обратен прокси с HTTPS, отворете адреса си и следвайте съветника за инсталиране.

Как се опресняват автоматично емисиите във FreshRSS?

С Docker образа задайте в CRON_MIN минутите на изпълнение, например 13,43: проектът препоръчва около две изпълнения на час. Без CRON_MIN вградената задача остава изключена. Планирана задача на сървъра, която пуска app/actualize_script.php в контейнера, върши същата работа.

Каква база данни да избера за FreshRSS?

SQLite е вградена и не изисква никаква подготовка; Docker README я описва като най-лесната, с добра производителност. Страницата с изискванията препоръчва PostgreSQL 10 или по-нова и приема MariaDB 10.6 и MySQL 8.0. Командите db-backup и db-restore позволяват по-късно да смените базата.

Как се чете FreshRSS на мобилно устройство?

Включете достъпа до API в раздела Удостоверяване, после задайте API парола в профила си. В съвместимо приложение въведете адреса api/greader.php на инстанцията си, като API Google Reader е най-доброто според README, или api/fever.php.

Отворени ли са регистрациите във FreshRSS?

Не по подразбиране: конфигурацията ограничава акаунтите до този на администратора. Създавате останалите в Администрация, Управление на потребителите, или увеличавате броя на акаунтите в системната конфигурация, за да се покаже формулярът за регистрация.

Как се архивира FreshRSS?

Копирайте томовете data и extensions при спряна услуга. Включете и auto_sqlite_export и планирайте cli/export-sqlite-auto.php, който всяка нощ експортира базата на всеки потребител в SQLite. С PostgreSQL добавете pg_dump. Тествайте редовно възстановяването.

Покрива ли Managed VPS FreshRSS?

Managed VPS покрива сървъра: система, сигурност, наблюдение и резервни копия. Нашите екипи следят проактивно и вашата инстанция и ви препоръчват полезните корекции, които прилагате вие. Намеса в самото приложение се фактурира на час или на фиксирана цена.

Източници и официална документация

Свързани ръководства

Разлика между управляван и неуправляван VPS: кой какво правиРазликата между управляван и неуправляван VPS се свежда до един въпрос: кой се грижи за сървъра, след като той вече работи. Думата „управляван“ обаче няма официално определение и от един хостинг доставчик до друг обхваща всичко от простото инсталиране на системата до цялостното стопанисване на сървъра. Това ръководство показва кой какво прави, ред по ред, заедно с междинното ниво на експертното съдействие, и дава въпросите, които премахват двусмислието, преди да подпишете.Резервни копия на VPS: какво да проверите, преди да подпишетеПочти всяко предложение за VPS обявява „включени резервни копия“. Зад тези думи може да стои копие всяка нощ, пазено извън машината и възстановявано от експерти, или моментна снимка, поставена на същия диск като сървъра. Това ръководство дава въпросите, които правят разликата, какво означава всеки отговор и как да проверите, че едно резервно копие наистина се възстановява.Колко RAM е нужна за VPS: правилото, според всяка употребаПаметта (RAM) е ресурсът, който най-често определя размера на един VPS: тя свършва първа, а когато свърши, сървърът не се забавя, а спира услуги. Това ръководство дава правилото за изчисление, колко консумира всеки компонент на едно приложение, типични профили и начина да измерите сървър, който вече работи.
Свържете се с нас