Tropic Host

FreshRSS: что это такое и как установить его на VPS

5 мин чтения
Tropic
FreshRSS: что это такое и как установить его на VPS

FreshRSS: собственная лента новостей без алгоритмов

Социальные сети сами решают, какие публикации показать первыми. Поэтому важное обновление проекта легко пропустить, пока его место занимают десятки рекомендаций. FreshRSS работает иначе: вы выбираете источники, а новый контент появляется в одной хронологической ленте.

FreshRSS можно установить на собственный сервер и использовать как единый входящий ящик для блогов, новостных сайтов, обновлений программ, форумов, подкастов и других источников, предоставляющих RSS- или Atom-ленты. В этом руководстве рассмотрим возможности приложения, требования к серверу и установку на VPS с Docker и HTTPS.

FreshRSS за пять шагов

  1. Создать Linux VPS и направить на него поддомен, например rss.example.com.
  2. Установить Docker и Docker Compose.
  3. Запустить FreshRSS вместе с Caddy для автоматического HTTPS.
  4. Открыть поддомен, выбрать SQLite и создать учетную запись.
  5. Импортировать подписки из OPML или добавить сайты вручную.

После этого VPS будет проверять источники по расписанию, даже когда компьютер пользователя выключен.

Что такое FreshRSS?

FreshRSS — бесплатный 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 статей.

Практичные начальные конфигурации:

СценарийCPURAMХранилищеБаза данных
Личная лента1 vCPU1 ГБ10–20 ГБ SSDSQLite
Семья или небольшая команда1–2 vCPU2 ГБ20–40 ГБ SSDSQLite или внешняя база данных
Много пользователей и большой архивОт 2 vCPUОт 4 ГБОт 40 ГБ SSDPostgreSQL или 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-уведомления и классификацию статей через совместимый API LLM. Устанавливайте сторонние дополнения только из доверенных источников.

Обновления, безопасность и резервные копии

Для обновления контейнеров выполните:

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 обеспечивает круглосуточное обновление лент, доступ с телефона и корректную работу WebSub.

Для личной установки обычно достаточно небольшой Linux-конфигурации. На tropic.host можно выделить FreshRSS собственный поддомен, начать с начального тарифа VPS и сохранить сервис независимым от домашнего компьютера. При выборе тарифа стабильность, место для архива и резервные копии важнее большого запаса вычислительной мощности.

Заключение

FreshRSS превращает десятки сайтов в удобную личную ленту без алгоритмического ранжирования. Он поддерживает мобильные клиенты, фильтры, сохраненные запросы, нескольких пользователей, WebSub и расширения, оставаясь достаточно легким для небольшого VPS.

Для начала нужны Docker, домен и SQLite. После установки настройте категории, автоматические обновления, HTTPS и резервные копии. Тогда FreshRSS будет показывать только выбранные источники, а контроль над чтением останется у пользователя.

FAQ

FreshRSS бесплатен?

Да. FreshRSS распространяется по лицензии AGPL-3.0. Платить нужно только за инфраструктуру, если приложение работает на арендованном VPS.

Можно ли использовать FreshRSS без домена?

Да, открыв порт контейнера. Для постоянного использования лучше настроить домен и HTTPS: это упрощает безопасный доступ, синхронизацию с телефоном и работу WebSub.

Сколько RAM нужно FreshRSS?

Для личной ленты разумно начать с 1 ГБ RAM и SQLite. Большой архив, несколько пользователей или дополнительные сервисы потребуют больше памяти.

Можно ли добавить сайт без RSS?

Иногда. FreshRSS поддерживает веб-скрейпинг через XPath, но правила придется настроить вручную. Если макет сайта изменится, источник может потребовать исправления.

Что необходимо резервировать?

В первую очередь сохраните volume freshrss_data: при использовании SQLite в нем находится база данных статей. Также сохраните freshrss_extensions и создавайте дампы внешней базы данных, если она используется.