Ubuntu Weekly Recipe

第393回 FLOSS化されたUbuntu One File Syncサーバーを試す

この記事を読むのに必要な時間:およそ 4 分

8月に以前サービスされていた「Ubuntu One File Sync service」の ソースコードが公開されました(Topicsの8月21日号)⁠今回はそのインストール方法について紹介します。

Ubuntu One File Sync

Ubuntu OneはCanonicalが運営するOpenIDベースのシングルサインオンサービスです(少なくとも今現在は)⁠Ubuntu Phoneのユーザーはアプリをインストールするために,AndroidでいうGoogleアカウント,iPhoneでいうところの Apple IDのようにUbuntu Oneアカウントを作成する必要があります。また,Ubuntuの開発者は基本的にLaunchpadのチケットシステムやコードホスティング,翻訳システムなどを 利用して開発を行いますが,このLaunchpad用のアカウントもUbuntu Oneで作成します。

そんなUbuntu Oneですが,1年ほど前まではオンラインストレージサービス機能も持っていました。というか元々はオンラインストレージサービスとして立ち上がったプロジェクトでした(Topicsの2009年5月15日号)⁠当時はDropboxをはじめとするオンラインストレージサービスが世界的にも認知されるようになっていた時期で, Ubuntuでもストレージサービスを提供することで一般ユーザーも「Ubuntuのアカウント」を取得してもらうような 流れを作ろうという魂胆だったのではないでしょうか※1)⁠

その後は,Ubuntuやファイルブラウザーである「Nautilus」に統合されたクライアントの提供, 7digitalと協力した音楽配信サービスである「Ubuntu One Music Store」⁠ Thunderbirdのアドレス帳やTomboyのメモの同期機能, Ubuntuソフトウェアセンター経由のインストール済みパッケージの保存など, Ubuntuとオンラインストレージサービスを連携させた機能をいくつもリリースしていくことになります。

しかしながらオンラインストレージサービスそのものは,容量の増加と価格の低下が続く DropboxやGoogle,Microsoftといった競合には勝てず,2014年4月にサービスを 終了することとなりました(Topicsの2014年4月4日号)⁠現在は冒頭にもあるように,Launchpadからその機能を引き継いだシングルサインオンサービスに留まっています。

サービス終了時に,オンラインストレージサービス(Ubuntu One File Sync)部分の ソースコードはそのうち公開するということも同時にアナウンスしていました。8月に公開された「Ubuntu Oneのソースコード」はまさにこの部分なのです。

※1
サービス開始当初はLaunchpadの方がOpenID Providerだったので, ⁠Ubuntu Oneを使うためにはLaunchpadにアカウントを作る必要がある」という状態でした。

公開されたソースコードでできること

公開されたUbuntu Oneのソースコードでできることは限られています。⁠インターネット越しの複数のマシン間のファイルの同期」これだけです※2)⁠

Web UIやREST API部分はありませんし,アドレス帳の同期や音楽配信機能もありません。既存のUbuntu Oneクライアントもそのままでは使えません。前者については将来的に公開されるようにも読み取れなくもないですが, いつになるかは未定です。そもそもこのソースコードは公開して終了というタイプなので, 他の誰かがフォークしない限りはメンテナンスされることもありません。

公開されたコードにしても,ファイルはローカルにしか保存できませんし※3)⁠ 依存ライブラリの関係上,サーバーは12.04でしか動きません(14.04ではエラーになります)⁠設定を少し変更すると動かなくなりますし,そもそもREADME.txtの手順だと動きません。

つまりこのコードを使って新しいオンラインストレージサービスを立ち上げるには足りないものが多すぎます。既存のサービスに縛られないオンラインストレージサービスがほしいのであれば, 普通にownCloudあたりを使うのが無難でしょう。

これだけ書いておけばさすがに,⁠Ubuntu Oneのソースコード」に高い期待や幻想を持つこともないでしょう。ここから先は,それでも動かしてみたい人のために,README.txtに従って実際に同期させるところまでを説明します。

※2
あとマルチユーザーに対応しています。
※3
AWS S3用の設定はありますが,どう利用するかは不明です。

サーバー側の準備

まずサーバー側はUbuntu 12.04 LTSが必要になります。12.04さえあれば,あとは必要なものはパッケージングシステム経由か, LaunchpadのBazaarから取得します。特別なハードウェアも必要ありませんし, そこまでスペックが高いマシンである必要もありません。適当なマシンにKVMなりLXCなりで適当な仮想環境を構築して, その中にインストールすれば良いでしょう。

まず最初にSSL接続のための秘密鍵(privkey.pem)と証明書(cacert.pem)を作成します。このうち証明書の「Common Name」はクライアントからアクセスする時のホスト名と 一致している必要があります。とりあえずのテスト用であれば,サーバーのIPアドレスでも良いでしょう。

$ openssl genrsa -out privkey.pem
$ openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095
(中略)
Common Name (e.g. server FQDN or YOUR name) []:10.0.3.19
(後略)

次に必要なパッケージをインストールします。Ubuntu Oneは一度性能の問題でCouchDBからPostgreSQLに移行しています。よってPostgreSQLとPythonの各種モジュールのパッケージが必要になります。

$ sudo apt-get install bzr make python-transaction protobuf-compiler \
    python-setuptools gcc python-dev python-twisted-web postgresql-9.1 \
    python-yaml python-psycopg2 postgresql-contrib supervisor \
    postgresql-plpython-9.1 python-django python-boto squid \
    python-protobuf python-psutil python-testresources \
    python-tz python-bson python-iso8601 python-openid

あとはUbuntu Oneのソースコードを取得します。

$ bzr branch lp:filesync-server
$ cd filesync-server

設定ファイル(configs/development.yaml)に先ほど作成した秘密鍵と 公開鍵を記述します。

secret:
    api_server_crt: |
        -----BEGIN CERTIFICATE-----
        (privkey.pemの内容を記述)
        -----END CERTIFICATE-----
    api_server_key: |
        -----BEGIN RSA PRIVATE KEY-----
        (cacert.pemの内容を記述)
        -----END RSA PRIVATE KEY-----
    api_server_crt_chain:

privkey.pemのファイル自体は不要になりますので,削除しても問題ありません。ただしcacert.pemを作り直す場合は必要になります。cacert.pemの方は,後ほどクライアント側で使います。とはいえどちらも,development.yamlの内容から復元できますので,ファイルとしては 削除しても差し支えないでしょう。

あとは次のコマンドで必要なライブラリのダウンロードとデータベースの構築, サーバーの起動を行います。

$ make start-oauth
Checking out external source dependencies...
build/link-external-sourcecode \
                -p ../sourcedeps/sourcecode/ \
                -t /home/ubuntu/filesync-server/.sourcecode \
                -c build/config-manager.txt
                    configglue: checked out    r1 of lp:~configglue/configglue/trunk
(中略)
filesync: started
ssl-proxy: started
DJANGO_SETTINGS_MODULE=backends.django_settings python dev-scripts/load_sample_data.py
python -c 'from config import config; print >> file("tmp/filesyncserver.port", "w"), config.api_server.tcp_port; print >> file("tmp/filesyncserver.port.ssl", "w"), config.ssl_proxy.port; print >> file("tmp/filesyncserver-status.port", "w"), config.api_server.status_port'

最終的に上記のように「python -c」のメッセージが表示されたら起動完了です。twistdプロセスが21101番ポートで待ち受けることになります。外部からこのポートが見えるようにしておいてください。

ちなみにこれらのサーバーのログはtmp/filesync-server.logに保存されます。起動しておくとひたすらログが増えていくので注意してください。

最後に新規アカウントを作成します。

$ dev-scripts/user-mgr.py create testuser John Doe jdoe@gmail.com testpass

createの後ろは「アカウント名」⁠フルネーム」⁠メールアドレス」⁠パスワード」になります。createの代わりにshowを渡せばユーザーリストを取得できますし,updateやdeleteコマンドもあります。

著者プロフィール

柴田充也(しばたみつや)

Ubuntu Japanese Team Member株式会社 創夢所属。数年前にLaunchpad上でStellariumの翻訳をしたことがきっかけで,Ubuntuの翻訳にも関わるようになりました。

コメント

コメントの記入