FreshRSS: власна стрічка новин без алгоритмів
Соціальні мережі вирішують, які публікації показати першими. Через це важливе оновлення проєкту легко пропустити, тоді як його місце займають десятки рекомендацій. FreshRSS працює інакше: ви самі обираєте джерела, а новий контент з'являється в одній хронологічній стрічці.
FreshRSS можна встановити на власному сервері та використовувати як єдину вхідну скриньку для блогів, новинних сайтів, оновлень програм, форумів, подкастів та інших джерел із RSS або Atom-стрічками. У цьому посібнику розглянемо можливості застосунку, вимоги до сервера та встановлення на VPS із Docker і HTTPS.
FreshRSS у п'ятьох кроках
- Створіть Linux VPS і спрямуйте на нього піддомен, наприклад
rss.example.com. - Встановіть Docker і Docker Compose.
- Запустіть FreshRSS разом із Caddy для автоматичного HTTPS.
- Відкрийте піддомен, виберіть SQLite і створіть обліковий запис.
- Імпортуйте підписки з OPML або додайте сайти вручну.
Після цього VPS перевірятиме джерела за розкладом, навіть коли комп'ютер користувача вимкнено.
Що таке FreshRSS?
FreshRSS — безкоштовний self-hosted агрегатор RSS і Atom. Self-hosted означає, що застосунок і база даних працюють на сервері під вашим контролем, а не в інфраструктурі хмарного сервісу.
RSS-стрічка — спеціальний файл, який сайт оновлює щоразу після публікації нового контенту. FreshRSS регулярно отримує ці файли з вибраних джерел і об'єднує записи в одному інтерфейсі. Непрочитані статті, обране та історія читання синхронізуються між пристроями.
Основна ідея проста: користувач сам вирішує, за ким стежити та в якому порядку переглядати публікації. FreshRSS не ранжує записи за залученням і не вставляє рекомендований контент між підписками.
Можливості FreshRSS
| Можливість | Для чого використовується |
|---|---|
| Категорії, статуси та обране | Розділення робочих, технічних і особистих джерел |
| Пошук, фільтри та збережені запити | Показ публікацій лише на вибрану тему |
| Імпорт і експорт OPML | Швидке перенесення списку підписок |
| Google Reader API і Fever API | Підключення сумісних мобільних і настільних застосунків |
| WebSub | Миттєве отримання записів після публікації з підтримуваних джерел |
| Кілька користувачів | Окремі облікові записи для родини або команди |
| Теми та розширення | Зміна інтерфейсу й додавання функцій |
| XPath і JSON Feed | Підписка на деякі джерела без стандартної RSS або Atom-стрічки |
Збережений запит можна перетворити на окрему стрічку за темою, наприклад лише з публікаціями про безпеку або оновленнями конкретного продукту. Результат можна відкривати у FreshRSS або публікувати як HTML чи RSS; для списків стрічок також доступний OPML.
WebSub дає змогу сумісному сайту повідомити FreshRSS про новий запис, замість очікування наступної планової перевірки. Для цього екземпляр FreshRSS має бути доступним з інтернету за дійсною публічною адресою.
FreshRSS особливо корисний розробникам і системним адміністраторам: блоги проєктів, релізи, звіти про інциденти та публікації з безпеки можна зібрати в одній стрічці. Для щоденного читання він замінює десятки відкритих вкладок і синхронізує точний статус прочитання на всіх пристроях.
Системні вимоги FreshRSS
FreshRSS потребує небагато ресурсів. Він підтримує SQLite, PostgreSQL, MariaDB і MySQL, а ручне встановлення потребує вебсервера та PHP 8.1 або новішої версії. В офіційному описі навіть наведено тест на Raspberry Pi 1 зі 150 стрічками та 22 000 статей.
Практичні стартові конфігурації:
| Сценарій | CPU | RAM | Сховище | База даних |
|---|---|---|---|---|
| Особиста стрічка | 1 vCPU | 1 GB | 10–20 GB SSD | SQLite |
| Родина або невелика команда | 1–2 vCPU | 2 GB | 20–40 GB SSD | SQLite або зовнішня база |
| Багато користувачів і великий архів | Від 2 vCPU | Від 4 GB | Від 40 GB SSD | PostgreSQL або MariaDB |
Це орієнтири, а не суворі мінімуми. Споживання сховища залежить від кількості джерел, частоти публікацій і тривалості зберігання історії. VPS зручніший за домашній комп'ютер, коли потрібні цілодобові оновлення, зовнішній доступ, мобільна синхронізація та WebSub.
Як встановити FreshRSS на VPS за допомогою Docker
У наведеній конфігурації FreshRSS працює за Caddy. Caddy приймає зовнішні запити й автоматично отримує TLS-сертифікат.
Потрібні Linux VPS, Docker із командою docker compose, піддомен із записом A на IP-адресу сервера та відкриті порти 80 і 443.
Крок 1. Створіть каталог
sudo mkdir -p /opt/freshrss
sudo chown "$USER":"$USER" /opt/freshrss
cd /opt/freshrssКрок 2. Створіть compose.yaml
services:
freshrss:
image: freshrss/freshrss:latest
container_name: freshrss
restart: unless-stopped
logging:
options:
max-size: 10m
environment:
TZ: Etc/UTC
CRON_MIN: '3,33'
FRESHRSS_ENV: production
TRUSTED_PROXY: 172.16.0.0/12
volumes:
- freshrss_data:/var/www/FreshRSS/data
- freshrss_extensions:/var/www/FreshRSS/extensions
caddy:
image: caddy:2
container_name: freshrss-caddy
restart: unless-stopped
depends_on:
- freshrss
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- caddy_data:/data
- caddy_config:/config
volumes:
freshrss_data:
freshrss_extensions:
caddy_data:
caddy_config:CRON_MIN: '3,33' запускає перевірку стрічок на 3-й і 33-й хвилині кожної години. FreshRSS не оновлює окрему стрічку частіше ніж приблизно раз на 20 хвилин, тому запуск завдання частіше зазвичай непотрібний.
Крок 3. Створіть Caddyfile
rss.example.com {
reverse_proxy freshrss:80
}Замініть домен на власний. Після поширення DNS-запису та відкриття портів Caddy автоматично отримає й продовжить сертифікат.
Крок 4. Запустіть FreshRSS
docker compose up -d
docker compose psПереглянути журнали можна так:
docker compose logs -f --tail=100Відкрийте https://rss.example.com. Майстер встановлення перевірить середовище, запропонує вибрати базу даних і створить першого користувача. SQLite — найпростіший вибір для особистого сервера, оскільки не потребує окремого контейнера бази даних.
Початкове налаштування
FreshRSS часто може знайти RSS або Atom-стрічку за звичайною адресою сайту. Якщо автоматичне визначення не спрацювало, введіть пряму URL-адресу стрічки. Підписки з Feedly, Inoreader та інших читачів зручно переносити через OPML.
Одразу розподіліть джерела за категоріями, наприклад «обов'язково прочитати», «робота», «безпека», «довгі матеріали» та «фонове читання». Новинні сайти з великим потоком не повинні витісняти справді важливі оновлення з основної стрічки.
Щоб підключити застосунок, увімкніть API в налаштуваннях автентифікації та задайте окремий API-пароль у профілі. Адреса Google Reader API виглядає так:
https://rss.example.com/api/greader.phpКраще не використовувати один пароль для основного облікового запису й API.
Як не потонути в непрочитаних статтях
FreshRSS стає найкориснішим після невеликого налаштування:
- залиште в основній стрічці лише важливі джерела;
- використовуйте фільтри, щоб автоматично позначати непотрібні розділи прочитаними;
- зберігайте пошукові запити для продуктів, авторів і тем;
- періодично переглядайте статистику та видаляйте джерела, які створюють лише шум.
Розширення можуть додати оцінку часу читання, підсвічування слів, проксі зображень, вбудовування YouTube, webhook-сповіщення та класифікацію статей через сумісний LLM API. Встановлюйте сторонні додатки лише з надійних джерел.
Оновлення, безпека та резервні копії
Щоб оновити контейнери, виконайте:
cd /opt/freshrss
docker compose pull
docker compose up -dПеред великим оновленням створіть резервну копію. Volume freshrss_data містить налаштування користувачів і, за використання SQLite, базу статей. Якщо використовуєте додатки, також збережіть freshrss_extensions. PostgreSQL, MariaDB і MySQL потребують окремого дампу бази даних.
Мінімальні заходи безпеки:
- використовуйте HTTPS;
- після створення потрібних облікових записів вимкніть відкриту реєстрацію;
- не вмикайте анонімний доступ без потреби;
- використовуйте окремий API-пароль;
- регулярно оновлюйте FreshRSS і його розширення;
- зберігайте резервну копію за межами VPS.
Експорт OPML не замінює повну резервну копію, але дає змогу швидко відновити список підписок у будь-якому сумісному RSS-читачі.
FreshRSS на VPS від tropic.host
FreshRSS — хороший перший self-hosted сервіс: він потребує небагато ресурсів, працює в Docker і стає корисним одразу після імпорту підписок. Публічний VPS забезпечує оновлення стрічок 24/7, доступ із телефона та коректну роботу WebSub.
Для особистої інсталяції зазвичай достатньо невеликої Linux-конфігурації. На tropic.host можна призначити FreshRSS власний піддомен, почати з VPS початкового рівня і не залежати від домашнього комп'ютера. Під час вибору тарифу стабільність, місце для архіву та резервні копії важливіші за великий запас обчислювальної потужності.
Висновок
FreshRSS перетворює десятки сайтів на керовану персональну стрічку без алгоритмічного ранжування. Він підтримує мобільні клієнти, фільтри, збережені запити, кількох користувачів, WebSub і розширення, залишаючись достатньо легким для невеликого VPS.
Для початку потрібні Docker, домен і SQLite. Після встановлення налаштуйте категорії, автоматичні оновлення, HTTPS і резервні копії. Тоді FreshRSS показуватиме лише вибрані вами джерела, а контроль над читанням залишиться у ваших руках.
Поширені запитання
FreshRSS безкоштовний?
Так. FreshRSS поширюється за ліцензією AGPL-3.0. Платити потрібно лише за інфраструктуру, якщо застосунок працює на орендованому VPS.
Чи можна використовувати FreshRSS без домену?
Так, відкривши порт контейнера. Для постійного використання краще налаштувати домен і HTTPS, оскільки це спрощує безпечний доступ, мобільну синхронізацію та WebSub.
Скільки RAM потрібно FreshRSS?
Для особистої стрічки розумно почати з 1 GB RAM і SQLite. Великий архів, кілька користувачів або додаткові сервіси потребуватимуть більше пам'яті.
Чи можна додати сайт без RSS?
Іноді. FreshRSS підтримує вебскрапінг через XPath, але правила потрібно налаштовувати вручну. Якщо макет сайту зміниться, джерело доведеться виправити.
Що потрібно резервувати?
Передусім створіть копію volume freshrss_data: за використання SQLite він містить базу статей. Також збережіть freshrss_extensions і створіть дампи зовнішніх баз даних.
