Установка tt-rss на Raspberry Pi 3

08-03-2019 @ 15:56


Я долгое время пользовался Inoreader для чтения кучи разных потоков разных сайтов. Но вчера, неожиданно для меня самого, я не смог добавить новый RSS-фид, в виду появившегося в Inoreader ограничения в 150 записей на бесплатном аккаунте. Взглянув на общее количество подписок несколько подохренел. Цифра показывала аж 276 записей. Справедливости ради, должен отметить, что из них часть была мертвыми, так что по факту я «читал» около 200-210 фидов. Странно что Inoreader продолжал показывать их, несмотря на ограничение.
В общем, поняв что новые фиды я не добавлю, а платить ежемесячно желания не было, решил таки развернуть tt-rss на малине, ибо оная валялась без дела. Об установке, собственно, ниже и напишу.

Использовать будем чистый Raspbian Stretch with desktop, с уже настроенной SSH, т.к. всё взаимодействие будет идти через неё. Можно было бы взять Raspbian Stretch lite, но у меня возникли проблемы с подключением wifi, ибо малина будет подключена к сети по вафле, поэтому взял с десктопом.
Итак, первое что необходимо сделать — обновить систему:

sudo apt update && sudo apt upgrade -y && sudo apt dist-upgrade
sudo apt-get autoremove
sudo apt-get clean
sudo apt-get check

Далее установим apache:

sudo apt-get install apache2

Затем — php и библиотеки:

sudo apt-get install php libapache2-mod-php
sudo apt-get install php7.0-mbstring
sudo apt-get install php7.0-xml
sudo apt-get install php-curl php-pgsql php-intl

Следом закинем на установку Postgres. Я взял версию 9.6, но можно выбрать и более свежую:

sudo apt-get install postgresql-9.6

Установим Git, т.к. дистрибутив tt-rss лежит именно там:

sudo apt install git

Провалимся в apache, где будет лежать сам tt-rss в будущем:

cd /var/www/
sudo chmod -R 777 html
cd html

Теперь скачаем дистрибутив tt-rss:

git clone https://tt-rss.org/git/tt-rss.git tt-rss

Давайте настроим базу и пользователя для работы с tt-rss:

sudo -u postgres psql postgres

Далее введем:

CREATE ROLE ttrssuser LOGIN PASSWORD 'ваш очень сложный пароль';
CREATE DATABASE ttrssdb WITH OWNER = ttrssuser;

Обратите внимание, что точку с запятой в конце строки необходимо ставить, также пароль имеет смысл заключить в одинарные кавычки. Выполняйте команды одну за другой, по очереди.
После выполнения введите \q для выхода из postgres

Для проверки корректности данных введите следующее:

psql -h localhost -d ttrssdb -U ttrssuser -p 5432

и при запросе введите установленный пароль. Если все будет правильно — вы снова попадете в postgres из которого необходимо выйти точно также как и раньше: \q

Идем дальше. В документации к tt-rss рекомендуется включить php opcode кэш. Давайте найдем его среди файлов, чтобы потом добавить в php.ini

sudo find / -name opcache.so

На выходе должно получиться нечто следующее:
/usr/lib/php/20151012/opcache.so

Теперь найдем php.ini:

sudo find / -name php.ini

Вывод команды должен быть похож на это:
/etc/php/7.0/apache2/php.ini

Прежде чем править php.ini сделаем его бэкап на всякий случай:

sudo cp -pv /etc/php/7.0/apache2/php.ini /etc/php/7.0/apache2/php.ini.bak

Теперь начнем редактировать php.ini, добавляя нужные для работы tt-rss расширения. Откроем файл для редактирования:

sudo nano /etc/php/7.0/apache2/php.ini

Ищем секцию ; Dynamic Extensions ; и добавляем в нее следующее:

extension=/usr/lib/php/20151012/pdo_pgsql.so
extension=/usr/lib/php/20151012/pgsql.so

Далее ищем [opcache] секцию и добавляем:

zend_extension=/usr/lib/php/20151012/opcache.so
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1

Сохраним введенные данные и выйдем обратно в командную строку.

Теперь для проверки включенных расширений создадим файл info.php

sudo nano /var/www/html/info.php

в который впишем следующее:

<?php phpinfo(); ?>

Также сохраним и теперь перезапустим apache:

sudo service apache2 restart

Теперь в браузере введем: http://IP-адрес-raspberry-pi/info.php. Должна будет открыться страница с конфигурацией php. Проверьте на странице, что следующие данные идентичны:
Opcode Caching Up and Running
PDO drivers pgsql

Теперь отправимся конфигурировать tt-rss:

cd /var/www/html
chmod 777 tt-rss
cd tt-rss
sudo chmod -R 777 cache/images
sudo chmod -R 777 cache/upload
sudo chmod -R 777 cache/export
sudo chmod -R 777 feed-icons
sudo chmod -R 777 lock

Собственно после этих действий можно отправляться в браузер для установки tt-rss:
http://IP-адрес-raspberry-pi/tt-rss/install/
Не забудьте выбрать Postgre SQL и ввести данные созданные ранее для доступа к базе (ttrssuser, ttrssdb вот это вот всё)

Заключительным шагом будет настройка cron для обновления фидов каждые 30 минут.
Откроем cron:

crontab -e

и введем туда следующее:

*/30 * * * * /usr/bin/php /var/www/html/tt-rss/update.php --feeds --quiet

На этом всё 🙂
P.S. Пользуясь днем публикации данной заметки — поздравляю прекрасную половину человечества с праздником! 🙂