Ubuntu Weekly Recipe

第266回Google Readerの代替サーバーを用意する

既に各所で報道されているように、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の画面
図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 ログイン画面
図2 ログイン画面

フィードは画面右上の操作から「フィードを購読する」を選べば登録できます。Preferencesの「フィード」からカテゴリーを追加すれば、フィードを分類することも可能です。同じく「フィード」にある「OPML」をクリックし、⁠Import my OPML」ボタンの左にある入力ボックスにGoogle Readerからエクスポートしたsubscriptions.xmlを指定してボタンを押せば、Google Readerからの移行は完了です。

図3 OPMLのインポートとエクスポート
図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の画面
図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の初回ログイン時の画面
図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」が表示される
図6 Newsアプリを選択し「有効」をクリックすると、サイドペインに「News」が表示される

使い方

フィードは画面左上の「新規」から登録できます。また左下の歯車アイコンをクリックし、⁠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サービスを使う場合は、このアプリもセットでインストールすると良いでしょう。

Lilina

LilinaはPHPで作られたシンプルなフィードアグリゲーターです。アーカイブファイルをダウンロードして、ウェブサーバーで公開されるディレクトリーのいずれかの場所に展開し、パーミッションを設定するだけでインストール完了です。

初回アクセス時に基本的な設定が行われ、あとはブラウザベースのニュースアグリゲーターとして機能します。ウェブサーバーとPHP 5さえあればどこでも使えるので、追加で余計なパッケージをインストールしたくない場合や、設定の手間を省きたい場合はおすすめです。

おすすめ記事

記事・ニュース一覧