Как стать автором
Обновить
2525.88
RUVDS.com
VDS/VPS-хостинг. Скидка 15% по коду HABR15

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

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров1.9K


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

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

▍ Fusion


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

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

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

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



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



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


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

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

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

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


▍ RSS-Bridge


Ещё одно полезное приложение — RSS-Bridge, которое генерирует 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 ). Если таймаут истёк, загружается новое содержимое и обновляется кэшированная версия. Но он обновляет последний контент при более активных запросах этого конкретного фида.

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



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

  • 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

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

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

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

▍ RSSHub


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

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

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



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



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

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



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

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

Согласно документации, маршрут для 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 в любой RSS-ридер.

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

И это не единственное социальное медиа, СМИ и приложение в списке поддерживаемых правил, там список очень большой. Из популярных сайтов: 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 можно использовать и собственный инстанс на своём сервере. Хотя официальный инстанс достаточно стабилен, разработчики всё-таки призывают пользователей использовать собственные серверы или другие публичные инстансы (свой сервер тоже можно добавить в этот список).

▍ FreshRSS


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

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

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

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

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

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

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

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

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



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

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

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

Telegram-канал со скидками, розыгрышами призов и новостями IT 💻
Теги:
Хабы:
+38
Комментарии4

Публикации

Информация

Сайт
ruvds.com
Дата регистрации
Дата основания
Численность
11–30 человек
Местоположение
Россия
Представитель
ruvds