Наверное уже около года пользуюсь для чтения RSS-лент этим отличным скриптом. В этой заметке коротко об Tiny Tiny RSS и его настройке.

Предыстория

Почему-то формат RSS для некоторых потерял актуальность. Например Google закрыл свой сервис Google Reader, где можно было собирать и читать нужные RSS ленты. Нечто подобное было у Яндекс, называлось оно «Подписки», сейчас оно переехало и находится в «Моих новостях». Честно говоря не знаю, что поменялось, я это уже не застал.

Я пользовался подписками от Яндекс года 2-3, было удобно, но работал сервис крайне нестабильно. То и дело что-то там у них не обновлялось и приходилось заходить проверять свои новости позднее. В конце концов мне это сильно надоело и я стал искать замену.

Снова общественный сервис онлайн мне не хотелось. Все же опыт двух гигантов — Google и Яндекс, подсказывал, что подобная замена может быть недолговечной и нестабильной. Специализированную программу для RSS, даже если «portable» тоже было не охота — не удобно. Лучше что-то своё онлайн.

Ок. Можно было изобрести совсем свой «велосипед», в конце концов собирать информацию с потоков RSS – это сравнительно простая задача. Но нашёлся вариант лучше и проще (в смысле, что ничего делать не надо) — Tiny Tiny RSS.

Что это?

Tiny Tiny RSS — это сайтовый движок, что-то вроде портала, сделанный по типу тех же «общественных» RSS-читалок. Но это именно ваше! Как и любой другой сайт этот необходимо запустить у себя на хостинге. Он использует PHP и базу MySQL. Написан довольно модно, с использованием AJAX.

Tiny Tiny RSS

В код я вообще не лез, надобности ни разу не было, поэтому особенностей, что и как там написано и работает — не знаю. Внешне Tiny Tiny RSS работает крайне стабильно и быстро! Места на диске в настоящее время он у меня занимает 10-15Мб, база в запакованном виде (бэкап), всего 5Мб. Но это у меня еще довольно много накопилось непрочитанных сообщений, так то база по началу вообще маленькая.

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

Установка

Подробно всё расписывать смысла не вижу. Ещё раз повторюсь, что Tiny Tiny RSS — это просто сайт. Соответственно выделяем у себя на хостинге под него ещё одно место, создаем ещё одну базу и вперёд… Отдельный домен под него регистрировать не нужно, можно просто создать домен третьего уровня к вашему, что-нибудь типа rss.d1mon.com.

На официальном сайте можно найти всякого рода полезную информацию по использованию и настройке Tiny Tiny RSS, к сожалению, не на русском языке. Сам скрипт можно скачать на GitHub, вот прямая ссылка на новейшую версию.

Итак, скачиваем архив с новейшей версией, распаковываем у себя на хостинге. Далее необходимо произвести установку, для этого заходим ваш_сайт/install/ (например, rss.d1mon.com/install/). В процессе установки сообщаем информацию для доступа к базе, а также по основному пользователю — администратору. Пароль обязательно меняйте на свой, сразу или при первой авторизации! Мастер установки создаёт в каталоге с сайтом файл config.php. После всех действий на него лучше выставить ограниченные права 440.

Ну и всё, можно заходить на свой новый сайт, добавлять разделы, ленты и т.д. Желающие могут покопаться в настройках, поменять внешний вид и т.д.

Чтобы ленты RSS обновлялись требуется запускать периодически специальный скрипт. Тут расписано несколько вариантов, как это можно сделать. Если ваш хостинг — это виртуальный сервер, то самое правильное запускать демон. Сделать это можно следующим образом. Информация отсюда. Проверенно на Debian 7.

Создаем файл /etc/init.d/ttrss с содержимым:

#!/bin/sh
### BEGIN INIT INFO
# Provides:          ttrss
# Required-Start:    $syslog $remote_fs $network
# Required-Stop:     $syslog $remote_fs $network
# Should-Start:      
# Should-Stop:       
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start the TinyTinyRSS updates daemon.
# Description:       Start the TinyTinyRSS updates daemon.
### END INIT INFO

PATH=/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/var/www/rss.d1mon.com/update_daemon2.php
NAME=ttrss
DESC="TinyTinyRSS update daemon"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
USER=www-data
GROUP=www-data

test -x $DAEMON || exit 0

set -e

. /lib/lsb/init-functions

case "$1" in
    start)
        log_daemon_msg "Starting $DESC" $NAME
        if ! start-stop-daemon --start --oknodo --quiet --background --make-pidfile \
            --chuid $USER:$GROUP --pidfile $PIDFILE --exec $DAEMON
        then
            log_end_msg 1
        else
            log_end_msg 0
        fi
        ;;
    stop)
        log_daemon_msg "Stopping $DESC" $NAME
        if start-stop-daemon --stop --retry 30 --oknodo --quiet \
            --pidfile $PIDFILE --exec $DAEMON
        then
            rm -f $PIDFILE
            log_end_msg 0
        else
            log_end_msg 1
        fi
        ;;
    restart|reload|force-reload)
	check_syntax
        $0 stop
        $0 start
        ;;
    status)
        status_of_proc -p "$PIDFILE" "$DAEMON" ttrss && exit 0 || exit $?
        ;;
    *)
        echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload|status}" >&2
        exit 1
        ;;
esac

exit 0

Здесь обязательно надо отредактировать строчку, указав свой правильный путь до файла обновления:

DAEMON=/var/www/rss.d1mon.com/update_daemon2.php

На файл /etc/init.d/ttrss нужно установить права, чтобы его можно было запускать, например, 755. Теперь необходимо выполнить:

insserv ttrss

Теоретически, эта команда приводит к действиям, после которых демон должен стартовать автоматически при старте сервера. У меня этого почему-то не происходит.

Команды для ручного запуска, остановки и рестарта демона:

/etc/init.d/ttrss start
/etc/init.d/ttrss stop
/etc/init.d/ttrss restart

Чтобы запускалось автоматом я добавил в файл /etc/crontab строчку:

@reboot sleep 60 && /etc/init.d/ttrss start

После редактирования crontab выполняем:

crontab -u root /etc/crontab

Добавленная в crontab строка запускает демон Tiny Tiny RSS спустя 60 секунд после загрузки сервера.

Мобильно

Читать RSS-ленты в Tiny Tiny RSS можно где и чем угодно, используя любой веб-браузер. Это, конечно же, большое преимущество. Однако, есть даже более интересный вариант, если речь идет об смартфоне или планшете. Дело в том, что Tiny Tiny RSS имеет свой API. Соответственно уже существуют специализированные мобильные приложения для iOS и Android, которые умеют работать с этим API.

Для iPad мне больше других понравилась программа tiny Reader:

tiny Reader

Для доступа к API в настройках tiny Reader нужно указывать адрес сервера в виде http://rss.d1mon.com/, плюс свои логин и пароль. В настройках самого Tiny Tiny RSS нужно не забыть включить API, иначе приложение не сможет подключиться.