- PVSM.RU - https://www.pvsm.ru -

RSS-агрегатор и RSS-мост на виртуальном сервере

RSS-агрегатор и RSS-мост на виртуальном сервере - 1 [1]

Формат RSS [2] (Really Simple Syndication) хотя и довольно старая технология, но до сих пор очень популярная. Можно сказать, что сейчас она словно переживает второе рождение, особенно в условиях затруднённого доступа ко многим сайтам.

Это действительно самый удобный способ читать весь контент в одном месте, без рекламы и лишних отвлечений. Конечно, есть внешние RSS-агрегаторы и ридеры, но можно выбрать и другой вариант: запустить агрегатор на своём сервере и не зависеть от внешних факторов. Это даёт бóльшую свободу, потому что его функциональность в некоторых случаях даже шире, чем у специализированных сервисов.

▍ Fusion

RSS-агрегатор Fusion [3] специально разработан для установки и работе на своём сервере (VPS [4]).

Автор говорит [5], что пробовал Inoreader и Feedly, но в итоге посчитал лучшим вариантом самостоятельно разместить инстанс Miniflux на домашнем хостинге [4]. Недавно он переехал в другой город и ему пришлось надолго отключить домашний сервер, в итоге он не смог получить доступ к локальному Miniflux. Тогда автор решил разместить свой RSS-агрегатор на крошечном VPS [4] или PaaS. Однако Miniflux требует базы данных PostgreSQL, которая не подойдёт для крошечного VPS [4].

Поэтому он написал Fusion на Golang и SQLite. Он содержит базовые функции, такие как группировка, закладки, поиск, автоматическое чтение фидов, импорт/экспорт OPML-файлов и т. д. Агрегатор использует около 80 МБ памяти и немного CPU.

Как обычно, собираем конфигурацию VPS [4] на странице заказа сервера [6]. Например, на Ubuntu 24.04. В принципе, для такой задачи можно выбрать сервер из набора VPS Старт [7] минимальной конфигурации от 130 рублей в месяц, но нам он нужен для других задач, поэтому остановимся на конфигурации чуть помощнее.

RSS-агрегатор и RSS-мост на виртуальном сервере - 2

Через несколько минут ОС установлена. Получаем IP-адрес и пароль для удалённого доступа по SSH.

RSS-агрегатор и RSS-мост на виртуальном сервере - 3

Вводим информацию в SSH-клиент и подключаемся:

RSS-агрегатор и RSS-мост на виртуальном сервере - 4

Можно установить докер-контейнер:

docker run -it -d -p 8080:8080 -v $(pwd)/fusion:/data 
      -e PASSWORD="123456" 
      rook1e404/fusion

Или скачать готовый бинарник со страницы релизов [8], отредактировать .env и запускать напрямую ./fusion, что лучше для VPS [4] в минимальной конфигурации.

После установки можно подключаться к фронтенду на сервере, введя в браузере адрес http://45.135.164.173:8080 (IP-адрес вашего сервера):

RSS-агрегатор и RSS-мост на виртуальном сервере - 5

▍ RSS-Bridge

Ещё одно полезное приложение — RSS-Bridge [9], которое генерирует RSS-фиды для сайтов и сервисов, официально не имеющих этих фидов. Таким образом, можно читать контент с этих сайтов и сервисов, не посещая их каждый раз, а только если встретится что-то интересное.

Есть несколько способов установки приложения на свой сервер, например, из докер-контейнера:

# Создать контейнер
docker create --name=rss-bridge --publish 3000:80 rssbridge/rss-bridge

# Запуск контейнера
docker start rss-bridge

Потом он доступен на порту 3000, то есть по адресу http://45.135.164.173:3000/.

Для работы требуется PHP 7.4 или выше, а также 100 МБ свободного места.

Нужно заметить, что RSS-Bridge не всегда загружает последний, самый свежий контент. Дело в том, что он создаёт кэшированную версию ленты, чтобы уменьшить трафик и быстрее реагировать на запросы. Кэшированная версия создаётся при первом запросе и выдаётся при всех последующих запросах. При каждом запросе RSS-Bridge проверяет, не истекло ли время ожидания кэша (оно составляет от пяти минут до 24 часов, но есть опция установить его вручную через custom_timeout [10] ). Если таймаут истёк, загружается новое содержимое и обновляется кэшированная версия. Но он обновляет последний контент при более активных запросах этого конкретного фида.

Здесь много полезных инструментов. Например, можно генерировать фиды для публичных телеграм-каналов:

RSS-агрегатор и RSS-мост на виртуальном сервере - 6

Вот некоторые из доступных инструментов:

  • CssSelectorBridge: скрапинг фидов с помощью CSS-селекторов
  • FeedMergeBridge: объединяет несколько фидов в один
  • FeedReducerBridge: очищает фиды от лишнего контента, что немного уменьшает информационный шум
  • FilterBridge: фильтрует фид, добавляя или уменьшая контент по ключевым словам
  • GettrBridge: получает последние посты от указанных пользователей GETTR
  • MastodonBridge: получает статусы из инстанса Mastodon (ActivityPub)
  • RedditBridge: получает посты от указанных пользователей или подреддитов из Reddit
  • RumbleBridge: получает видео от указанных пользователей или каналов
  • SoundcloudBridge: получает музыку от указанных пользователей Soundcloud
  • TelegramBridge: получает посты из публичных каналов, как упомянуто выше
  • ThePirateBayBridge: получает торренты из ThePirateBay по поисковым запросам, пользователям или категориям
  • TikTokBridge: получает посты из TikTok по имени пользователя
  • TwitchBridge: получает видео из каналов Twitch
  • VkBridge: получает посты из VK по имени пользователя или группы
  • XPathBridge: скрапит фиды с помощью выражений XPath
  • YoutubeBridge: получает видео из YouTube по имени пользователя, каналу, плейлисту или поисковому запросу
  • YouTubeCommunityTabBridge: получает посты из сообществ YouTube Community [11]

Как видно, некоторые из этих возможностей недоступны на стандартных внешних RSS-агрегаторах, так что на своём сервере можно получить более широкую функциональность.

В принципе, есть и официальный публичный сервер [12], которым можно пользоваться в отсутствие своего VPS [4]. Есть также список открытых публичных хостов [13].

Собственный инстанс тоже можно оставить открытым для всех или запаролить, изменив настройку в config.ini.php.

▍ RSSHub

RSSHub [14] — опенсорсный, простой в использовании и расширяемый генератор фидов практически из чего угодно. Можно сказать, что это в каком-то смысле альтернатива RSS-Bridge.

Работает с браузерным расширением RSSHub Radar [15] и вспомогательными мобильными приложениями RSSBud [16] (iOS) и RSSAid [17] (Android).

Процесс организован очень просто: заходим на любую страницу, нажимаем на кнопочку расширения — появляется всплывающее окно со ссылкой на RSS-фид:

RSS-агрегатор и RSS-мост на виртуальном сервере - 7

Этот фид можно скопировать, открыть предварительный просмотр в браузере или перенести во внешний/локальный RSS-агрегатор.

RSS-агрегатор и RSS-мост на виртуальном сервере - 8

Поддерживает подписку в один клик на различных платформах, включая Tiny Tiny RSS, Miniflux, FreshRSS, Feedly, Inoreader, Feedbin, The Old Reader, Feeds.Pub и Local Reader.

Какие конкретно ридеры выдавать во всплывающем окне для подписки в один клик, можно установить в настройках расширения:

RSS-агрегатор и RSS-мост на виртуальном сервере - 9

Для использования доступны многочисленные предварительно сконфигурированные «маршруты» (правила для генерации URL для фидов) и публичные инстансы. Расширяемые API и проекты экосистемы поддерживают различные сценарии.

Среди прочего, поддерживается генерация фидов из телеграм-каналов, см. техническое описание соответствующего правила [18].

Согласно документации, маршрут для Telegram имеет вид /telegram/channel/:username/:routeParams?, где username — обязательный параметр, а routeParams — необязательный. Если заменить :username на идентификатор канала awesomeRSSHub, то получим путь /telegram/channel/awesomeRSSHub, затем добавим домен инстанса https://rsshub.app, будет сгенерирован адрес подписки: https://rsshub.app/telegram/channel/awesomeRSSHub.

Затем этот адрес можно добавить rsshub.app/telegram/channel/awesomeRSSHub [19] в любой RSS-ридер.

Кроме того, RSSHub поддерживает множество полезных параметров, таких как фильтрация контента, полнотекстовый вывод и т. д.

И это не единственное социальное медиа, СМИ и приложение в списке поддерживаемых правил, там список очень большой [20]. Из популярных сайтов [21]: AP News, Apple, Docker Hub, Epic Games Store, Fediverse, GitHub, Google, Instagram, JavBus, Lofter, NASA, NGA, pixiv, PlayStation Store, Reuters, RSSHub, Spotify, Telegram, X (Twitter), YouTube и др.

Вместо упомянутого rsshub.app [22] можно использовать и собственный инстанс на своём сервере. Хотя официальный инстанс достаточно стабилен, разработчики всё-таки призывают пользователей использовать собственные серверы или другие публичные инстансы [23] (свой сервер тоже можно добавить в этот список).

▍ FreshRSS

Наконец, последний полезный инструмент, который можно упомянуть в этом списке. Он специально предназначен для установки на своём сервере [24] — это агрегатор FreshRSS [25].

Инструмент заявляется как «легковесный, простой в работе, мощный и настраиваемый».

Это многопользовательское приложение с режимом анонимного чтения. Поддерживаются пользовательские теги. Имеется API для (мобильных) клиентов и интерфейс командной строки [26].

Благодаря стандарту WebSub [27] этот агрегатор умеет получать мгновенные пуш-уведомления из совместимых источников, таких как Friendica, WordPress, Blogger, Medium и т. д.

Инструмент поддерживает базовый веб-скрапинг, основанный на XPath [28], для сайтов, не предоставляющих RSS/Atom-ленту. Также поддерживаются документы в формате JSON.

FreshRSS также предлагает возможность повторного распространения избранных статей в форматах HTML, RSS и OPML.

Поддерживаются различные способы входа в систему [29]: через веб (включая анонимную опцию), HTTP-аутентификацию (совместимую с делегированием прокси), OpenID Connect.

Наконец, FreshRSS поддерживает расширения для дополнительной настройки.

Демо-версию сервера можно посмотреть здесь [30].

RSS-агрегатор и RSS-мост на виртуальном сервере - 10

Инструкцию по установке на свой сервер см. здесь [24].

К серверу FreshRSS можно получать доступ из различных мобильных и нативных приложений под Linux, Android, iOS, Windows и macOS.

Подводя итог, можно повторить, что RSS сейчас живее всех живых и переживает вторую молодость. И многие RSS-агрегаторы можно установить на собственном сервере, сделать публичными или использовать в личных целях.

Автор: ru_vds

Источник [31]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/news/393162

Ссылки в тексте:

[1] Image: https://habr.com/ru/companies/ruvds/articles/833322/

[2] RSS: https://en.wikipedia.org/wiki/RSS

[3] Fusion: https://github.com/0x2E/fusion

[4] VPS: https://www.reg.ru/?rlink=reflink-717

[5] говорит: https://news.ycombinator.com/item?id=40522244

[6] странице заказа сервера: https://ruvds.com/ru-rub

[7] VPS Старт: https://ruvds.com/vps_start/

[8] релизов: https://github.com/0x2E/fusion/releases/tag/v0.8.3

[9] RSS-Bridge: https://github.com/RSS-Bridge/rss-bridge

[10] custom_timeout: https://rss-bridge.github.io/rss-bridge/For_Hosts/Custom_Configuration.html#customtimeout

[11] YouTube Community: https://support.google.com/youtube/answer/9409631?hl=en

[12] официальный публичный сервер: https://rss-bridge.org/bridge01/

[13] публичных хостов: https://rss-bridge.github.io/rss-bridge/General/Public_Hosts.html

[14] RSSHub: https://github.com/DIYgod/RSSHub

[15] RSSHub Radar: https://github.com/DIYgod/RSSHub-Radar

[16] RSSBud: https://github.com/Cay-Zhang/RSSBud

[17] RSSAid: https://github.com/LeetaoGoooo/RSSAid

[18] соответствующего правила: https://docs.rsshub.app/routes/social-media#telegram

[19] rsshub.app/telegram/channel/awesomeRSSHub: https://rsshub.app/telegram/channel/awesomeRSSHub

[20] список очень большой: https://docs.rsshub.app/routes/social-media

[21] популярных сайтов: https://docs.rsshub.app/routes/popular

[22] rsshub.app: https://rsshub.app

[23] другие публичные инстансы: https://docs.rsshub.app/guide/instances

[24] предназначен для установки на своём сервере: https://github.com/FreshRSS/FreshRSS#installation

[25] FreshRSS: https://freshrss.org/

[26] интерфейс командной строки: https://github.com/FreshRSS/FreshRSS/blob/edge/cli/README.md

[27] WebSub: https://freshrss.github.io/FreshRSS/en/users/WebSub.html

[28] XPath: https://www.w3.org/TR/xpath-10/

[29] входа в систему: https://freshrss.github.io/FreshRSS/en/admins/09_AccessControl.html

[30] здесь: https://demo.freshrss.org/

[31] Источник: https://habr.com/ru/companies/ruvds/articles/833322/?utm_source=habrahabr&utm_medium=rss&utm_campaign=833322