- PVSM.RU - https://www.pvsm.ru -
Совсем недавно «корпорация добра» закрыла Google Reader. Тысячи пользователей встали перед выбором читалки RSS лент. Кто то сразу нашел то, что ему по душе, а кто то до сих пор находится в поиске. Но у всех онлайн читалок есть один существенный недостаток — они так же, как и Google Reader могут закрыться в любой момент. Выходом из сложившейся ситуации является установка одной из самых популярных self-hosted читалок — Tiny Tiny RSS (далее tt-rss). Её можно установить на сервер, или домашний компьютер. Но за сервер нужно платить, хоть и небольшие, но деньги, а держать всегда включенный ПК (дабы иметь доступ к читалке отовсюду) проблематично. Однако, если у вас трудится роутер Zyxel Keenetic, то tt-rss можно установить читалку на него!
Для установки необходимо:
Подробнее о прошивках. У роутеров Keeneticесть две серии прошивок V1 и V2 соответственно. Прошивки первой серии примечательны тем, что они позволяет устанавливать пакеты на внешний usb диск/флешку. И реализуется это без прошивки самого роутера! Однако, для второго поколения роутеров Keenetic (Keenetic II/Keenetic Giga II/Keenetic Ultra) прошивка V1 является неофициальной (по ним не осуществляется техническая поддержка). В моем случае имелся роутер Keenetic Giga II, который был прошит прошивкой V1. Прошивку V1 для второго поколения роутеров можно взять тут [2] (ориентироваться по последней дате). Процесс прошивки достаточно прост, для этого в системных настройках роутера нужно зайти в «управление системными файлами» и заменить файл firmware, скачанным файлом прошивки.
Перейдем к следующему этапу — установке необходимых пакетов. Первоначально необходимо установить пакетный менеджер opkg. Я не буду рассматривать этот процесс, т.к. он достаточно подробно описан на сайте [3] автора, который занимается сборкой этих пакетов, за что ему отдельное спасибо.
Итак, после того как установлен opkg, непосредственно переходим к установке необходимых пакетов. Подключаемся к роутеру по ssh и выполняем следующую команду:
opkg install libiconv-full libmysqlclient libncurses libncursesw libopenssl libpcre libreadline libxml2 lighttpd lighttpd-mod-fastcgi mysql-server php5 php5-cgi php5-mod-ctype php5-mod-dom php5-mod-hash php5-mod-iconv php5-mod-json php5-mod-mbstring php5-mod-mysql php5-mod-session uclibcxx mysql-server php5-mod-json php5-mod-mysql php5-mod-mbstring php5-mod-hash php5-mod-ctype php5-mod-iconv php5-mod-dom
Теперь настроим их. Для настройки необходимо редактировать конфигурационные файлы на USB флешке/диске. Это удобно делать с помощью программы WinSCP [4] (в настройках подключения выбрать SCP протокол).
Настроим lighttpd сервер. В файле /media/DISK_A1/system/etc/lighttpd/lighttpd.conf активируем fastcgi модуль, для этого раскомментируем строки:
server.modules = (
"mod_fastcgi"
)
Добавляем index.php к списку имен индексных файлов:
index-file.names = ( "index.html", "default.html", "index.htm", "default.htm", "index.php" )
И добавляем mime тип svg для корректного отображения иконок в интерфейсе tt-rss:
mimetype.assign = (
...
".xml" => "text/xml",
".svg" => "image/svg+xml"
)
Раскомментируем следующие строки:
fastcgi.server = (
".php" => (
"localhost" => (
"min-procs" => 1,
"max-procs" => 1,
"max-load-per-proc" => 4,
"socket" => "/media/DISK_A1/system/tmp/php-fastcgi.socket",
"bin-path" => "/media/DISK_A1/system/usr/bin/php-fcgi"
)
)
)
Убираем ограничение на время исполнения php скриптов, для этого редактируем /media/DISK_A1/system/etc/php.ini Меняем параметр max_execution_time, выставив значение 0.
Настроим автозагрузку http, mysql серверов, и cron-а, который понадобится для автоматического обновления фидов. Это реализуется переименованием скриптов в папке /media/disk_a1/system/etc/init.d/. Для этого выполняем следующие команды:
mv /media/DISK_A1/system/etc/init.d/K02cron /media/DISK_A1/system/etc/init.d/S02cron
mv /media/DISK_A1/system/etc/init.d/K27mysqld /media/DISK_A1/system/etc/init.d/S27mysqld
mv /media/DISK_A1/system/etc/init.d/K50lighttpd /media/DISK_A1/system/etc/init.d/S50lighttpd
Скачиваем тарбол с официального сайта [5]. Загружаем его в папку /media/DISK_A1/system/www/. Это можно сделать например с помощью той же WinSCP. Для распаковки выполняем:
cd /media/DISK_A1/system/www/
tar -xvzf ./Tiny-Tiny-RSS-1.8.tar.gz
rm ./Tiny-Tiny-RSS-1.8.tar.gz
mv /media/DISK_A1/system/www/Tiny-Tiny-RSS-1.8/ /media/DISK_A1/system/www/tt-rss
Перезагружаем роутер для старта всех сервисов. Снова подключаемся к роутеру по ssh. Создадим базу данных с именем mysql (для пользователя с именем root). Выполняем команды:
mysql_install_db --datadir=/media/DISK_A1/system/var/mysql --basedir=/media/DISK_A1/system/usr --force
/media/DISK_A1/system/etc/init.d/S27mysqld restart
Меняем пароль доступа к базе:
/media/DISK_A1/system/usr/bin/mysqladmin -u root password "new-password"
Далее вводим:
mysql -u root -p
По запросу вводим пароль, который установили и вводим следующие команды:
create database ttrss;
use ttrss;
source /media/DISK_A1/system/www/tt-rss/schema/ttrss_schema_mysql.sql;
quit;
Для доступа к mysql базе необходимо добавить правило iptables для разрешения lo интерфейса: iptables -I INPUT -i lo -j ACCEPT. Для автоматического выполнения этой команды при перезагрузке можно добавить эту команду в скрипт автозапуска mysql сервера /media/DISK_A1/system/etc/init.d/S27mysqld:
case "" in
start)
start
iptables -I INPUT -i lo -j ACCEPT
;;
Перезапускаем mysql сервер:
/media/DISK_A1/system/etc/init.d/S27mysqld restart
Открываем в браузере адрес http://192.168.1.1:81/tt-rss/ где открывается установщик tt-rss:

Заполняем поля как на скриншоте. Жмем test confiduration. Если всё в порядке появятся такие сообщения:

Смело жмем Initialize database. И затем Save configuration.
Поробуем открыть адрес http://192.168.1.1:81/tt-rss/. Ругается что нельзя запускать от рута. Других пользователей в роутере нет, поэтому отключим эту проверку, и разрешим запуск от имени root. Для этого отредактируем /media/DISK_A1/system/www/tt-rss/include/sanity_check.php. В строке if (function_exists('posix_getuid') && posix_getuid() == 0) { устанавливаем posix_getuid() == -1.
Обновляем страничку в браузере, вводим логин admin, пароль password. Всё, можно пользоваться!
Для обновления фидов добавляем в cron задание, открываем файл /media/DISK_A1/system/etc/crontabs/root и добавляем
*/30 * * * * /media/DISK_A1/system/usr/bin/php-cgi /media/DISK_A1/system/www/tt-rss/update.php --feeds --quiet
Это команда обновляет фиды каждые 30 минут.
Для доступа к читалке извне необходимо раскомментировать правило iptables в скрипте автозапуска http сервера /media/DISK_A1/system/etc/init.d/S50lighttpd:
iptables -A INPUT -p tcp --dport $PORT_F -j ACCEPT
В работе tt-rss на роутере обнаружился досадный баг, который заключается в том, что фиды в кодировке win-1251 не хотят обрабатываться. Для решения этой проблемы можно использовать следующие костыли. В файле /media/DISK_A1/system/www/tt-rss/include/rssfuncs.php перед
if (!$rss) {
$rss = new FeedParser($feed_data);
$rss->init();
}
добавить (спасибо за совет Star Per с форума [6]):
if (stripos($feed_data, 'encoding="windows-1251"'))
{
$feed_data = str_ireplace(
'encoding="windows-1251"',
'encoding="utf-8"',
iconv(
'CP1251',
'UTF-8',
$feed_data
)
);
}
Таким образом мы получили rss читалку, которая в один прекрасный момент не окажется закрытой по той или иной причине. Кроме того эта читалка работает в многопользовательском режиме, ей можно поделится со своими друзьями.
Не забудьте сменить дефолтный логин в читалке! Приятного чтения.
Автор: RIG
Источник [7]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/router/38255
Ссылки в тексте:
[1] VDS: https://www.reg.ru/?rlink=reflink-717
[2] тут: http://l10n.ndl.ru/firmwares/KII_Series/
[3] сайте: http://keenetic.zyxmon.org/wiki/doku.php/wiki:ustanovka_paketov#ustanovka_sistemy_opkg
[4] WinSCP: http://winscp.net/eng/docs/lang:ru
[5] сайта: http://tt-rss.org/redmine/projects/tt-rss/wiki
[6] форума: http://forum.zyxmon.org/
[7] Источник: http://habrahabr.ru/post/185876/
Нажмите здесь для печати.