既に各所で報道されているように、Google Readerのサービスが今年の7月に終了する予定です。そこで今回は、Ubuntu ServerでGoogle Readerのようなサービスを提供する方法を紹介します。
Google Reader
Google Readerはウェブベースのフィードアグリゲーターです。ローカルクライアントのフィードアグリゲーターと比較すると、次の特徴を持っています。
ウェブブラウザーさえあればどこからでもアクセスできる
クライアントを起動しなくても定期的に記事を取得してくれる
取得した記事を保存しておいてくれる
複数のデバイス間で簡単に既読やタグ、マークなどの状態を共有できる
このため家のPCや出先のスマートフォンから同じデータを、更新による負荷を気にすることなくアクセスできるアプリケーションとなっていました。
Google Readerのサービスが終了する場合、Feedlyといった同等の機能を持った代替サービスに移行すればそれほど問題はおきないでしょう。
しかし、オンラインサービスというのはいつかは終了するもの。Googleサービスは比較的データのエクスポート手段の提供に積極的なことに加えて、Google ReaderのAPIの存在が他のサービスへのスムーズな移行を実現しています。しかし、今後もそのような手段が存在するとは限りません。
もし、Google Readerと同等のサービスを自分で実現する手段を用意しておいて、状況によって既存のオンラインサービスと併用することができれば、今後サービスが終了した場合も安心ではないでしょうか[1] 。
そこで今回は、Google Readerからエクスポートしたデータを使える、2つのサーバーアプリケーションを紹介します。
Google Readerからエクスポートする
Google Readerのデータをエクスポートするには、Readerのページ右上にある歯車アイコンから、「 リーダーの設定」の「インポート/エクスポート」を選択します。「 Download your data through Takeout」をクリックすればGoogle Takeout経由でデータをエクスポートできます。
データの中身はただのJSON/XMLファイルです。このうちsubscriptions.xmlが登録したフィードリストになります。なお同じディレクトリに入っているstareed.jsonは、スターをつけた記事の一覧です。
残念ながらラベルや既読情報などはこの方法では移行できません。そのようなデータも移行したい場合は、非公式に解析が行われているGoogle Reader API を参考に、自分で取得するしかないでしょう。
Tiny Tiny RSS
Tiny Tiny RSS はPHPで作られたウェブベースのニュースアグリゲーターです。ウェブブラウザーで操作でき、キーボードショートカットも充実していること、ラベルやスターに対応しているために記事の管理が楽なこと、Android用のクライアントも開発されていることなどから、既存のソフトウェアの中ではもっともGoogle Readerに近い感覚で使えるアグリゲーターでしょう。
JSON APIが提供されていて、Lifereaなどのローカルアグリゲーターも対応していることも特徴です。
図1 Tiny Tiny RSSの画面
インストール方法
Ubuntu 12.10以降であればtt-rssという名前でパッケージが提供されているため、Ubuntu上でも簡単にインストールできます。ただ、今回はUbuntu 12.04 LTS上で運用したいので、ソースコードからインストールする手順を紹介しましょう。
最低限必要なのは、ウェブサーバーとRDMSです。ここではそれぞれApache2とPostgreSQLを使います。もしプラグインを使う場合は、さらに他のパッケージも必要になるかもしれません。その場合は、tt-rssパッケージの依存関係 を参考に、必要そうなパッケージを追加でインストールしてください。
$ sudo apt-get install apache2 postgresql php5 php5-cli php5-pgsql wget ca-certificates
$ mkdir src
$ cd src
$ wget https://github.com/gothfox/Tiny-Tiny-RSS/archive/1.7.4.tar.gz
$ tar xzvf 1.7.4.tar.gz
$ sudo mv Tiny-Tiny-RSS-1.7.4/ /var/www/tt-rss
$ sudo chown -R www-data. /var/www/tt-rss
次に設定ファイルのテンプレートをコピーして、実際に設定を行います。DB_USERやDB_NAME、DB_PASSは後述のデータベースの作成でも使用しますので、適宜自分の環境にあわせて読み替えてください。
$ sudo -u www-data cp -a /var/www/tt-rss/config.php{-dist,}
$ sudo -u www-data editor /var/www/tt-rss/config.php
define('DB_USER', "ttrss");
define('DB_NAME', "ttrss");
define('DB_PASS', "ttrss");
define('DB_PORT', '5432'); // when neeeded, PG-only
define('SELF_URL_PATH', 'http://localhost/tt-rss/');
$ sudo chmod 600 /var/www/tt-rss/config.php
今回はPostgreSQLを使うことにしたので、postgresのコマンドでユーザーとデータベースを作成します。MySQLやMariaDBを使う場合は、それにあわせて変更してください。
# データベースのユーザーの作成(権限はすべてnと回答します)
$ sudo -u postgres createuser --pwprompt ttrss
Enter password for new role:
Enter it again:
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n
$ sudo -u postgres createdb --owner=ttrss ttrss
$ psql --host=localhost --username=ttrss --password \
--file=/var/www/tt-rss/schema/ttrss_schema_pgsql.sql ttrss
$ sudo service apache2 restart
使い方
ここまでできたら、「 http://localhost/tt-rss/」にアクセスすると、ログイン画面が表示されるはずです。最初は管理者でログインする必要があるので、「 ID:admin、パスワード:password」でログインしてください。画面右上の操作から「Preferences」を選択すると、一般ユーザーを作成できます。
図2 ログイン画面
フィードは画面右上の操作から「フィードを購読する」を選べば登録できます。Preferencesの「フィード」からカテゴリーを追加すれば、フィードを分類することも可能です。同じく「フィード」にある「OPML」をクリックし、「 Import my OPML」ボタンの左にある入力ボックスにGoogle Readerからエクスポートしたsubscriptions.xmlを指定してボタンを押せば、Google Readerからの移行は完了です。
図3 OPMLのインポートとエクスポート
操作の「Keyboard shortcuts help」を選択するか、「 Ctrl-/」を入力すると、キーボードショートカット一覧が表示されます。大抵の操作はキーボードだけで簡潔するので、早い段階で習得しておくと便利でしょう。
自動アップデート
このままではフィードの自動アップデートは行われません。自動的に更新を行いたい場合は、更新用のデーモンを起動する必要があります 。
$ sudo editor /etc/init/ttrss.conf
このファイルに次の内容を記述します。update_daemon2.phpのパスはインストールした場所にあわせて変更してください。
# tt-rss - Update daemon for tt-rss
#
description "tt-rss updater"
start on runlevel [2345]
stop on runlevel [!2345]
respawn
respawn limit 10 60
umask 022
pre-start script
test -x /var/www/tt-rss/update_daemon2.php || { stop; exit 0; }
end script
setuid www-data
setgid www-data
exec php /var/www/tt-rss/update_daemon2.php
最後にこのサービスを起動します。
$ sudo start ttrss
# ttrssがstart/runningになっていたら起動している状態です。
$ sudo status ttrss
他のクライアントとの連携
Tiny Tiny RSS自身が取得したフィードを配信できますので、これを使えば好みのフィードアグリゲーターでTiny Tiny RSSに登録したフィード一覧を閲覧できます。ただしこの方法は既読状態やスターなどのメタ情報を共有できないので注意してください。
Tiny Tiny RSSのフィードは各カテゴリーやラベルの右上にあるオレンジのフィードアイコンをクリックすることでURLを取得できます。
前述したとおり、LifereaはTiny Tiny RSSのAPIに対応しています。Lifereaを使う場合はフィードを使うよりも、API経由のアクセスの方が便利でしょう。Tiny Tiny RSSの設定画面から「Enable external API」を「はい」にした上で、「 購読」の「新しい場所」から「Tiny Tiny RSS」を選択し、Tiny Tiny RSSでアカウントとアドレス情報を入力してください。ただし、Tiny Tiny RSSの1.6以上を使う場合は、API変更の都合上Lifereaも1.8.12以降に更新する必要があります 。
Android用に公式クライアントも存在します 。また、digestプラグインを有効にすると 、タブレットから直接アクセスした場合も使いやすくなるようです。
ownCloud
ownCloud はPHP/WebDAVで作成されたFLOSSのクラウドストレージサーバーです。Ubuntu上でもDropboxのようなサービスが立ち上げられるということで、Recipeの第231回 でもその機能や使い方を紹介しました。
そんなownCloudも、3月14日に新しいメジャーアップデートであるownCloud 5をリリースしています 。インターフェースの刷新、削除されたファイルの復旧機能のサポート、アップロードされたファイルのウィルススキャンのサポートなど新機能の追加に加えて、各種機能の改善がはかられた注目のリリースです。
ownCloud 5では既存のファイル共有サービスだけでなく、Google Readerの代替として「Newsアプリ 」の対応が進んでいます。
ownCloudは「アプリ」という形で、ownCloudインターフェース上の機能を拡張できる仕組みを持っています。Newsアプリはその名のとおりownCloud上でニュースフィードを表示するための、フィードアグリゲーターです。ウェブブラウザー上での記事の表示やキーボードショートカット、スター付けなどに対応しており、とても軽快に動作します。
図4 ownCloud Newsの画面
インストール方法
ownCloud自身のインストール方法は第231回でも紹介しましたが、5系ではリポジトリのURLが変わっているため、再度パッケージをインストールする方法を説明します[2] 。
$ sudo apt-get install wget git
# リポジトリの鍵のインストール
$ wget -q http://download.opensuse.org/repositories/isv:ownCloud:community/xUbuntu_12.04/Release.key \
-O- | sudo apt-key add -
# リポジトリの追加
$ echo 'deb http://download.opensuse.org/repositories/isv:ownCloud:community/xUbuntu_12.04/ /' \
| sudo tee /etc/apt/sources.list.d/owncloud.list
$ sudo apt-get update
# パッケージのインストール
$ sudo apt-get install owncloud php5-curl
これで「http://localhost/owncloud」にアクセスすると、ownCloudにログインできるようになります。
図5 ownCloudの初回ログイン時の画面
ちなみに、Ubuntu ServerにはownCloudをインストールするCharm が用意されています。現在は4系のみの対応ですが、そのうちJujuを使ってもっと簡単にownCloud 5をインストールできるようになるでしょう。
NewsアプリはownCloud 5.0のアーカイブには含まれず、ownCloudの開発ブランチからとってくる必要があります。
# Newsアプリの取得
cd /var/www/
sudo git clone https://github.com/owncloud/apps.git
sudo chown www-data. apps
# Newsアプリをアプリフォルダーから見えるようにする
sudo ln -s /var/www/apps/news /var/www/owncloud/apps/
これで、ownCloudを再読み込みし設定からアプリ一覧を表示すれば、「 News」アプリが表示されるはずです。
2013年3月27日追記:
Newsアプリはアプリリポジトリから単独のリポジトリに移動しました。新規にクローンしたり、appsフォルダーをpullする場合は、次のようにnewsリポジトリをクローンするようにしてください。
# AppFramework、Newsアプリの取得
cd /var/www/
sudo git clone https://github.com/owncloud/appframework.git
sudo git clone https://github.com/owncloud/news.git
sudo chown www-data. appframework news
# AppFramework、Newsアプリをアプリフォルダーから見えるようにする
sudo ln -s /var/www/appframework /var/www/owncloud/apps/
sudo ln -s /var/www/news /var/www/owncloud/apps/
# ownCloudの設定画面から、AppFrameworkとNewsアプリを有効化する
図6 Newsアプリを選択し「有効」をクリックすると、サイドペインに「News」が表示される
[2] Ubuntu 12.10以降であれば公式リポジトリのパッケージを使ってownCloud 4系をインストールできるのですが、今回紹介するNewsアプリはownCloud 5以降のみの対応となっています。
使い方
フィードは画面左上の「新規」から登録できます。また左下の歯車アイコンをクリックし、「 OPMLをインポート」を選択した上で、Google Readerからエクスポートしたsubscriptions.xmlを指定してすればGoogle Readerからの移行は完了です。
キーボードショートカットについては、「 jk」で上下に移動はできるくらいで、他のキーについては現在実装中です 。また、独自にフィードを配信する方法や、APIとして外部に公開する方法も今のところありません。
その他のソフトウェア
NewsBlur
NewsBlur はオンラインのニュースリーダーサービスです。ウェブブラウザーだけでなく、Android/iOS用のアプリも公開されています。無料アカウントの場合は登録できるフィード数が(原稿執筆時点で)12個までなど、使用に制約がありますが、有料アカウントになると制約がなくなり、シロのご飯が豪華になります。
さらにこのサービスのソースコードは、MITライセンスで公開されています 。このため自分のサーバーに、同じ機能を実装することができます。
インストールするには、Django、Celery、RabbitMQ、MongoDB、PostgreSQLなどかなり多くのサービスをインストールし適切に設定する必要があります。ドキュメントではFabricを使ったデプロイ方法が説明されていますが、この手順で行うとシステムの/etc/hostsをはじめとした設定を上書きしたり、実行ユーザーのシェルをzshに変更したりするため、試してみたい場合は仮想環境などで行うようにしてください[3] 。
Ubuntu上でももっと簡単にインストールできるように、Charmを書いてくれる人を募集中です 。またUbuntu 12.10以降であれば、NewsBlur用クライアントである「unity-webapps-newsblur」パッケージが公式リポジトリに存在しますので本家のNewsBlurサービスを使う場合は、このアプリもセットでインストールすると良いでしょう。
[3] 個人的な設定もFabricスクリプトに含まれているようです。コミットログを見ると、このあたりの設定をクリーンアップ中のようなので、もう少し待てばもっと簡単にデプロイできるようになるかもしれません。
Lilina
Lilina はPHPで作られたシンプルなフィードアグリゲーターです。アーカイブファイルをダウンロードして、ウェブサーバーで公開されるディレクトリーのいずれかの場所に展開し、パーミッションを設定するだけでインストール完了です。
初回アクセス時に基本的な設定が行われ、あとはブラウザベースのニュースアグリゲーターとして機能します。ウェブサーバーとPHP 5さえあればどこでも使えるので、追加で余計なパッケージをインストールしたくない場合や、設定の手間を省きたい場合はおすすめです。
「Ubuntu Server実践バイブル」
サーバー管理者向けに、Ubuntu Serverを題材にした本格的な指南書である、「 Ubuntu Server実践バイブル 」が今週19日に発売されました。
著者は、Ubuntuの日本のミラーリポジトリの管理者であり、Ubuntu Weekly Topicsで注釈に定評のある執筆者としてもお馴染みの吉田さんです。400ページをかけて基礎の部分からきちっと説明した大作ですので、ぜひお近くの書店やAmazonでお買い求めください。