В преддверии 1 июля, дня когда произойдёт отключение самой удобной, на мой взгляд, читалки rss-фидов, я озадачился выбором альтернативы. И учитывая привычку Google отключать сервисы, которые казалось бы пользуются успехом, мой выбор лежал скорее в стороне относительно независимых решений. Доверить хранение кучи своих фидов кому-либо кроме гугла я уже не хотел, мало ли что придёт в голову какому-нибудь эффективному интернет-менеджеру. Кроме того, мне очень хотелось ещё и помочь друзьям, которые тоже пользовались google reader и так же как я настороженно ждут его конца. Не буду останавливаться на вариантах, которые возникли передо мной — об этом уже достаточно написано другими.
Мой выбор пал на Tiny Tiny RSS — tt-rss.org/redmine/projects/tt-rss/wiki.
Как написано на сайте tt-rss,
Tiny Tiny RSS — это аггрегатор и читалка RSS/Atom фидов с открытым исходным кодом, созданный чтоб позволить вам читать новости из любого места с ощущением максимально близким к реальному приложению на компьютере
. Из чего следует, что для неё характерны несколько требований — наличие либо
Итак, у меня был дополнительный публичный IPv4 адрес, сервер с Proxmox и некоторое количество свободного времени.
Первым делом я создал контейнер OpenVZ из готового шаблона Debian используя веб-интерфейс Proxmox. Нажимаем «Create CT», выбираем ноду, номер будущей виртуальной машины, её hostname, пул ресурсов и пароль рута, далее выбираем шаблон, в моём случае это — debian-6.0-standard_6.0-6_amd64.tar.gz, жмём «далее», выделяем ресурсы для контейнера, в моём случае это 512 оперативки, 512 swap, 1 процессор и 8Гб места (с этим проблем быть в дальнейшем не должно — размер образа диска меняется очень просто и быстро).
В свойствах контейнера, во вкладке «Network» меняем venet-у, виртуальному сетевому устройству ip-адрес на наш публичный или, если это необходимо, т.е. нам нужен отдельный MAC-адрес — создаём veth, виртуальное Ethernet-устройство. В моём случае — вполне хватит одного мака.
Всё тоже самое можно сделать и из консоли, используя vzctl, руки и
Дальше удобнее делать из консоли Proxmox-хоста.
Входим в консоль виртуальной машины — vzctl enter CTID
, где CTID — номер нашего контейнера.
Настраиваем вход в машину по ssh, желательно по ключам, а не с паролем — на этом так же не буду останавливаться, тема исчерпанная в целом.
Отключаемся и уже заходим в машину как в отдельный хост. Поднимаем файрвол, дающий возможность захода на машину по ssh, http, https (на будущее) и возможность update-демону tt-rss обновлять фиды без ограничений.
Я не знаток iptables, но на основе разных статей сделал нижеследующий скрипт для запуска:
#!/bin/sh
#/etc/init.d/fw
case "$1" in
start)
echo "Starting iptables"
# Flushing all rules
iptables -F
# Setting default filter policy
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#ssh
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
# Allow unlimited traffic on loopback
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
#Allow outbound DNS
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --sport 53 -j ACCEPT
#ping from
iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
#http,https
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --sport 80 --dport 1024:65535 -j ACCEPT
iptables -A INPUT -p tcp --sport 443 --dport 1024:65535 -j ACCEPT
#logging
iptables -N LOGGING
iptables -A INPUT -j LOGGING
iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables Packet Dropped: " --log-level 7
iptables -A LOGGING -j DROP
# make sure nothing comes or goes out of this box
iptables -A INPUT -j DROP
iptables -A OUTPUT -j DROP
;;
stop)
echo "Stopping iptables"
Для автозапуска при старте системы — update-rc.d fw defaults
В силу того, что Tiny Tiny RSS в данный момент лежит в unstable-репозиториях debian, нам надо добавить deb http://ftp.debian.org/debian unstable main contrib
в /etc/apt/sources.list и создать /etc/apt/apt.conf с содержимым APT::Default-Release "stable";
, дабы приоритет был всё же у stable-репозиториев.
Затем обновляем debian — aptitude update
, затем aptitude upgrade
.
В качестве веб-сервера будет lighttpd, в качестве базы данных — mysql. aptitude install lighttpd mysql-server php5-mysql
. В теории при установке tt-rss будут подтянуты зависимости, но в моём случае там тянулся ненужный мне apache2.
Затем aptitude install tt-rss
и следуем указаниям установщика.
Редактируем /etc/tt-rss/config.php, где в данном случае достаточно поменять SELF_URL_PATH на адрес сервера или имя, если у вас есть свой домен. Запускаем /etc/init.d/tt-rss start
и можем заходить по адресу адрес сервера/tt-rss/ для дальнейшей конфигурации.
В wiki tt-rss рекомендуется поставить акселератор php — php-apc или иной подобный, делается это весьма просто, однако, если честно огромной разницы я не заметил. Возможно потому, что сделал это почти сразу.
Заведя пользователя или, в моём случае, нескольких, можно импортировать фиды из Google Reader-а.
Экспорт с помощью google takeout подробно описан во многих статьях, например mydebianblog.blogspot.ru/2013/03/google-reader.html
И кстати, импортировать полученные shared.json и starred.json из гуглоридера поможет gritttt-rss (http://gritttt-rss.nicolashoening.de/).
Так же стоит отметить наличие вполне рабочих и удобных клиентов для tt-rss в Android Market, один из которых вполне бесплатен. Для работы клиента надо включить в настройках пользователя tt-rss внешний API.
На полное раскрытие темы не претендую, просто делюсь опытом. Буду рад, если будут уточнения, комментарии и критика.
Автор: bmar