Гид по технологиям

Установка и настройка FreshRSS на Raspberry Pi

8 min read Инфраструктура Обновлено 13 Dec 2025
FreshRSS на Raspberry Pi — установка и настройка
FreshRSS на Raspberry Pi — установка и настройка

Логотип FreshRSS на сером фоне

Подписываться на новости и контент создателей важно, но не обязательно создавать учётные записи у крупных корпораций. FreshRSS — это самохостящаяся RSS-платформа, которую можно развернуть на Raspberry Pi и использовать через браузер или мобильные клиенты.

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

Почему FreshRSS на Raspberry Pi — хорошая идея

Интерфейс FreshRSS с заполненным списком статей

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

Преимущества:

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

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

Требования и предварительная подготовка

Перед установкой подготовьте следующее:

  • Raspberry Pi с установленной ОС Raspberry Pi OS (или Debian-подобной). Рекомендуется 4 ГБ ОЗУ и священный запас места на SD/SSD.
  • Доступ по SSH к устройству или физическая клавиатура и монитор.
  • Общедоступный домен или DNS-запись для доступа извне (необязательно для локальной сети).
  • Установленные пакеты: Apache или Nginx, PHP (версия 7.4 или выше рекомендуется), unzip, wget, MariaDB/MySQL.
  • Базовые навыки работы с терминалом и редактором nano.

Совет: если у вас ограниченный ресурс записи на SD-карту, используйте внешний SSD или логическую томацию с уменьшением количества записей.

Пошаговая установка FreshRSS

Ниже — подробная последовательность команд и пояснений. Выполняйте их под пользователем с правами sudo.

  1. Подключитесь по SSH к Raspberry Pi:
ssh pi@local.pi.ip.address
  1. Обновите пакеты системы:
sudo apt update
sudo apt upgrade -y
  1. Перейдите в директорию веб-сервера и скачайте архив FreshRSS:
cd /var/www/
sudo wget https://github.com/FreshRSS/FreshRSS/archive/master.zip
  1. Распакуйте архив:
sudo unzip master.zip
  1. Переименуйте или оставьте директорию и передайте права веб-сервису. В примере директорию обозначим как «FreshRSS-master»:
sudo chown -R www-data:www-data FreshRSS-master

Если вы хотите — сразу переименуйте папку в более короткое имя, например freshrss:

sudo mv FreshRSS-master freshrss
sudo chown -R www-data:www-data freshrss
  1. Создайте конфигурацию для Apache. Перейдите в папку конфигураций:
cd /etc/apache2/sites-available/

Создайте файл freshrss.conf:

sudo nano freshrss.conf

Вставьте следующий минимальный VirtualHost (замените your-domain.tld на ваш домен или IP):


    ServerName your-domain.tld
    DocumentRoot /var/www/freshrss/p/
    
        Require all granted
        AllowOverride All
    

Сохраните изменения: Ctrl+O, выход: Ctrl+X.

  1. Включите сайт и перезапустите Apache:
sudo a2ensite freshrss.conf
sudo systemctl reload apache2

Примечание: если используете Nginx, настройте server block и укажите корневую папку проекта. Для Nginx также потребуется настроить PHP-FPM сокет.

  1. Настройка базы данных (MariaDB/MySQL). Откройте MariaDB:
sudo mariadb

Внутри MariaDB выполните команды создания базы и пользователя. Замените password на надёжный пароль:

CREATE DATABASE fresh;
CREATE USER 'fresh'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON fresh.* TO 'fresh'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Если MariaDB не установлена, выполните:

sudo apt install mariadb-server -y
sudo mysql_secure_installation
  1. Завершите веб-инсталляцию. Откройте браузер и перейдите на ваш домен или IP. Установщик проверит окружение и попросит ввести параметры базы: тип MySQL, host localhost, имя базы fresh, пользователь fresh и пароль, который вы указали.

  2. Создайте администратора приложения и завершите установку. После успешной установки войдите в FreshRSS под указанным логином.

Типичные проблемы при установке и их решения

  • Ошибка прав доступа 403: Проверьте права на директорию и наличие AllowOverride All в конфигурации Apache.
  • Ошибка отсутствия расширения PHP: установите необходимые модули php, например php-mysql, php-xml, php-curl, php-gd, php-mbstring.
  • Неправильный путь DocumentRoot: убедитесь, что путь указывает на папку p внутри распакованного FreshRSS.

Команды для установки PHP модулей (Debian/Ubuntu):

sudo apt install php php-cli libapache2-mod-php php-mysql php-xml php-curl php-gd php-mbstring unzip -y
sudo systemctl restart apache2

Настройка получения полнотекстовых статей

Конфигурация базы данных в FreshRSS

Некоторые сайты отдают только краткие версии статей в RSS. FreshRSS умеет вытягивать полнотекст при помощи CSS-селектора, который описывает контейнер с содержимым статьи.

Как найти селектор статьи:

  1. Откройте любую статью в браузере.
  2. Правый клик по тексту статьи -> Инспектировать элемент.
  3. Наводите курсор вверх по дереву DOM, пока не выделится весь блок статьи.
  4. Правый клик по нужному элементу -> Copy -> Copy selector.

Например, для makeuseof.com селектор может выглядеть так: #article-body

В FreshRSS: откройте настройки фида, кликните шестерёнку рядом с подпиской -> Advanced -> поле Article CSS selector on original website и вставьте селектор. Нажмите Submit и затем Reload.

Поиск CSS-селектора статьи в браузере

Это универсальный подход, но у некоторых сайтов структура сложная, и селектор нужно корректировать.

Автоматическое обновление лент: cron и альтернативы

По умолчанию FreshRSS обновляет ленты вручную при нажатии Refresh. На Raspberry Pi удобнее поставить планировщик.

  1. Откройте crontab для root или для www-data. Часто используют crontab root:
sudo crontab -e

Добавьте задачу, например обновление каждые 15 минут:

*/15 * * * * php -f /var/www/freshrss/app/actualize_script.php

Сохраните и выйдите.

Альтернатива: systemd-timer. Для большей гибкости и логирования можно создать systemd сервис + timer, который будет запускать скрипт php и хранить логи в journalctl.

Пример unit файла:

[Unit]
Description=Actualize FreshRSS feeds

[Service]
Type=oneshot
ExecStart=/usr/bin/php -f /var/www/freshrss/app/actualize_script.php

[Install]
WantedBy=multi-user.target

И соответствующий timer с интервалом.

Безопасность: HTTPS и Certbot

Доступ по HTTP небезопасен. Для лёгкой настройки HTTPS используйте Certbot и Let’s Encrypt.

Установите Certbot и плагин для Apache:

sudo apt install certbot python3-certbot-apache -y
sudo certbot --apache

Введите ваш email, согласитесь с условиями и выберите домен. Certbot автоматически создаст и подключит сертификат. Certbot также может настроить автоматическое продление.

Важно: если ваш Raspberry Pi доступен только в локальной сети, можно использовать самоподписанный сертификат или внутренний CA для домашней сети.

Резервное копирование и восстановление

Рекомендуется делать регулярные бэкапы базы данных и папки конфигурации FreshRSS.

Пример сценария бэкапа:

# резервная копия базы
mysqldump -u root -p fresh > /home/pi/backups/fresh_$(date +%F_%T).sql
# резервная копия файлов
tar -czf /home/pi/backups/freshrss_www_$(date +%F_%T).tar.gz /var/www/freshrss

Храните копии на внешнем носителе или в зашифрованном облачном хранилище. Для восстановления — восстановите дамп и распакуйте файлы в /var/www/freshrss и восстановите права:

sudo chown -R www-data:www-data /var/www/freshrss

Тестирование и критерии приёмки

Критерии приёмки:

  • Веб-интерфейс FreshRSS доступен по HTTPS и логин успешен.
  • База данных подключена и записи создаются при добавлении подписки.
  • Автообновление лент работает по расписанию.
  • Полнотекстовая выгрузка статей корректна для как минимум 5 тестовых сайтов.
  • Бэкап и восстановление проверены на тестовой машине.

Тестовые сценарии:

  • Добавить RSS-ленту и подтвердить, что новые элементы появляются.
  • Настроить CSS-селектор и проверить, что статьи загружаются целиком.
  • Отключить сеть и убедиться, что приложение реагирует корректно на ошибки.

Чек-листы по ролям

Администратор:

  • Установить и обновить систему и PHP-модули.
  • Настроить веб-сервер и SSL.
  • Создать бэкап-план и проверить восстановление.
  • Настроить автоматическое обновление лент.

Пользователь:

  • Создать учётную запись в FreshRSS.
  • Добавить категории и подписки.
  • Настроить клиентские приложения (только если нужно).

Разработчик/отладчик:

  • Проверить логи Apache и PHP при ошибках.
  • Использовать инструменты инспекции для определения CSS-селекторов.
  • Предложить оптимизации по кэшированию и уменьшению нагрузки.

Когда FreshRSS может не подойти: примеры и ограничения

  • Сайты с динамически загружаемым контентом через JavaScript могут отдавать пустые или урезанные RSS-ленты.
  • Платные стены со сложной авторизацией и проверками ботов могут блокировать попытки полнотекстового извлечения.
  • Если требуется масштаб на тысячи подписок и сотни пользователей, Raspberry Pi может стать узким местом — нужна более мощная инфраструктура.

Альтернативы:

  • Коммерческие агрегаторы и облачные сервисы.
  • Сервисы на основе Docker-контейнеров для простого развертывания на сервере.

Дополнительные рекомендации по безопасности и приватности

  • Ограничьте доступ к панели администратора по IP, если это возможно.
  • Используйте сложные пароли и двухфакторную аутентификацию для учётных записей доступа к серверу.
  • Скрывайте метаданные сервера через механизмы веб-сервера.

Риски и mitigations:

  • Эксплуатация открытого порта 80/443: настраивайте брандмауэр и мониторинг.
  • Уязвимости PHP/Apache: регулярно обновляйте пакеты.

Миграция и совместимость

Если у вас уже есть существующие подписки в другом агрегаторе, экспортируйте их в формате OPML и импортируйте в FreshRSS через меню импорта. Это стандартный способ миграции подписок между читателями.

Совместимость:

  • FreshRSS поддерживает стандартные протоколы — вы можете подключаться через приложения, использующие Feedly API совместимые клиенты, или через встроенные мобильные приложения.

Короткий план восстановления после инцидента

  1. Отсоединить устройство от сети, если подозрение на взлом.
  2. Восстановить последнюю чистую резервную копию базы и файлов.
  3. Проверить журналы аудита и установить обновления безопасности.
  4. Сменить пароли и пересоздать сертификаты при подозрении на компрометацию.

Краткое руководство по производительности

  • Ограничьте частоту обновления для большого количества подписок.
  • Используйте кеширование на уровне PHP и веб-сервера.
  • Разгрузите базу данных, если количество записей растёт слишком быстро: храните старые элементы вне базы или архивируйте.

Пример использования: добавить подписку MUO

  1. Нажмите + рядом с управлением подписками.
  2. Создайте категорию или используйте существующую.
  3. Вставьте URL подписки, например https://www.makeuseof.com/feed/. Если не знаете адрес, пробуйте /feed, /rss или /rss.xml.
  4. Если требуется — найдите CSS-селектор статьи, вставьте в Advanced и перезапустите загрузку.

Добавление RSS MUO в FreshRSS

Заключение

FreshRSS на Raspberry Pi — надёжный и приватный способ собрать все свои ленты в одном месте. С правильной настройкой вы получите полнотекстовые статьи, безопасный доступ по HTTPS, автоматические обновления и простую систему резервного копирования.

Важно: тестируйте настройки на небольшом наборе подписок перед массовым переносом, чтобы подобрать оптимальные селекторы и частоту обновления.

Краткое резюме и шаги дальше:

  • Установите FreshRSS по инструкции выше.
  • Настройте базу данных и права доступа.
  • Настройте SSL через Certbot.
  • Настройте cron или systemd-timer для автоматического обновления.
  • Настройте резервное копирование и протестируйте восстановление.

Если вы хотите, я могу подготовить готовые systemd unit-файлы, шаблон crontab или чек-лист для миграции с другого агрегатора.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Поделиться принтером между Windows, Mac и Linux
Networking

Поделиться принтером между Windows, Mac и Linux

Клиппинг звука: причины и как исправить в DAW
Аудио

Клиппинг звука: причины и как исправить в DAW

Как исправить Bellsouth email в Outlook
Почта

Как исправить Bellsouth email в Outlook

Dev Drive в Windows 11: настройка и советы
Разработка

Dev Drive в Windows 11: настройка и советы

Синхронизировать f.lux с Philips Hue
Умный дом

Синхронизировать f.lux с Philips Hue

Ошибка 500 в Google Drive — как исправить
Поддержка

Ошибка 500 в Google Drive — как исправить