サーバー上でDropboxライクなオンラインストレージサービスを立ち上げるためのソフトウェアとしては「ownCloud」が人気です。今回はそのownCloudとは別の案として、マルチユーザー関連の機能が充実した「Pydio」を紹介します。
Pydioとは
DropboxやGoogleドライブのようなオンラインストレージサービスを利用していると、最初に遭遇する不満が「容量問題」でしょう。無料枠は軽く使う分にはそれなりの容量ではあるものの、いろいろな用途に使い出すと途端に足りなくなります。有料枠を使うことである程度増やすことはできますが、それでもどこかに上限が存在します[1] 。いわゆる「容量無制限」は他にさまざまな条件を課すことでようやく実現できるサービスなのです。
他にもサービスの継続性、速度、各種ログや統計の取得、プライバシーの保護やセキュリティのリスクなどを考えると、冗長性や可用性を下げてでも自前でストレージサービスを運用したいという要望もあるはずです。そんな事情もあってか、自前のオンラインストレージサービスを構築できる「ownCloud 」は個人用途でもビジネス用途でも人気を博しています。
そしてそのownCloudと並んで最近人気が出てきているのが、今回紹介する「Pydio 」です[2] 。ウェブブラウザから操作できるオンラインストレージサービスを構築でき、AGPLv3ライセンスのコミュニティエディションがあること、Android/iOS用のアプリがあること、プラグインで機能を拡張できることなど、ほぼownCloudと同じような機能を備えています。名前に「Py」がついていますが、ownCloudと同じくPHP製のソフトウェアです。人によっては重要なことなのでもう一度述べておきますが、PHP製のソフトウェアです。Python製ではありません [3] 。
ownCloudと異なる点として、Pydioには「ワークスペース」という機能があります。ownCloudは原則としてユーザー毎にフォルダーが割り当てられます。他のユーザーとフォルダーを共有する場合はサブフォルダーに対して他のユーザーにアクセス権を与えることで実現しているのです。
Pydioの「ワークスペース」は個々のユーザーの割り当て領域とは独立した領域として作成されます。このワークスペースに複数のユーザーを参加させることで、作業スペースの共有を実現しています。ワークスペースはローカルファイルシステムだけでなく、Amazon S3やSamba、SFTP経由でアクセスする 領域にも作成できます。ユーザーの個人領域とは別に、ワークスペース毎にリソースの制限をかけることも可能です。
Pydioのインストール
では、さっそくPydioをインストールしましょう。Pydioを動作するために最低限必要なものはウェブサーバーとPHPです。つまりほとんどすべてのLinuxシステムでPydioを動かせます。今回はUbuntu 14.04 LTS上で構築していますが、PydioにはRHEL/CentOSやDebian用のパッケージリポジトリが用意されていますし、ソースアーカイブからインストールすることも可能です。
PydioにはFLOSSなライセンスのコミュニティ版と有償のエンタープライズ版が存在します。今回はコミュニティ版の6.2.1をインストールする方法を紹介しましょう。
Pydioの公式サイトからたどれるドキュメントは原則としてエンタープライズ版に言及しています。エンタープライズ版ではまずAPIキーを入手し、それを元にソースアーカイブをダウンロードしたりリポジトリを登録しているようです。
コミュニティ版のインストールを含む管理者向けのガイドを読みたい場合は、PydioのDOCSページから「Administration Guide 」をまず開いてください。そしてその下のほうにある「COMMUNITY ADMIN GUIDE 」のリンクをたどると、コミュニティ版の情報にたどり着けます。
コミュニティ版のインストール方法として、SourceForgeからソースアーカイブをダウンロード する方法と パッケージリポジトリを追加する方法の2種類が存在します。今回は、より簡単な後者の方法でインストールします。
$ sudo apt-get install apt-transport-https
$ wget -qO - https://download.pydio.com/pub/linux/debian/key/pubkey | sudo apt-key add -
$ echo "deb https://download.pydio.com/pub/linux/debian/ jessie main" | sudo tee /etc/apt/sources.list.d/pydio.list
$ sudo apt-get update
$ sudo apt-get install pydio
リポジトリのスイートが「jessie」になっていますが、Ubuntuであってもインストール可能です。pydioパッケージをインストールしようとすると約145個のパッケージがインストールされます。これはpydioの各プラグインが個別にパッケージ化されていることと、Apache2やPHP、データベース関連のモジュールをたくさんインストールするためです。他にもApache2やClamAV、画像処理関連のライブラリも一緒にインストールします。
Pydioの初期設定
pydioパッケージをインストールしたら、「 http://サーバーのアドレス/pydio/」にアクセスしましょう。最初にシステムの診断結果が表示されます。
図1 システムの診断結果
ERRORは修正が必要です。WARNINGは必要に応じて修正してください。上図の場合、MCrypt関連のエラーが出ています。これは、PHPのMCryptモジュールが有効化されていないことが原因です。php-mcryptパッケージはpydioインストール時に一緒にインストールされているはずなので、次のコマンドで有効化しましょう。
$ sudo php5enmod mcrypt
さらにWARNINGとして、Pydioの動作効率をあげるために、「 PHP Output Buffer」を無効化することを推奨しています。無効化する場合は、/etc/php5/apache2/php.iniの「output_buffering = 4096」を「output_buffering = Off」に変更してください[4] 。UbuntuのApache2パッケージの場合、「 Server charset encoding」のWARNINGも出るはずです。これは/etc/apache2/envvarsにおいて「LANG = C」としているためで、正しく動作させるためにUTF-8を含むロケールを設定することを推奨しています。システム標準のロケールを使うのであれば、/etc/apache2/envvarsにある 「 . /etc/default/locale」を有効化しておいてください。
また、PHPのファイルのアップロードサイズの上限が2MBなのはいろいろと不便なので、上限を増やしておきましょう。/etc/php5/apache2/php.iniで、以下のそれぞれの行を 適当なサイズに設定してください。ここでは100MBにしています。
upload_max_filesize = 100M
post_max_size = 100M
最後にログディレクトリをwww-dataでも書き込めるようにした上で、Aapache2を再起動します。
$ sudo chown -R www-data: /var/log/pydio
$ sudo service apache2 restart
その後、初期設定画面をリロードしてERRORやWARNINGが一通り消えていることを確認してください。ちなみに今回は暗号化は使わないため、SSL関連の警告は無視しています。問題なさそうなら「CLICK HERE TO CONTINUE TO PYDIO」をクリックして、次に進みましょう。
「Main options」では管理者のアカウント名とパスワードを設定します。
図2 管理者のアカウント名とパスワードの設定
次の「Database Connexion」ではユーザーアカウントや各種設定の保存先を指定します。ユーザーがアップロードするファイルの保存先とは関係ありません。保存先としてsqlite3やMySQLといったデータベースを指定できます。sqlite3を使う場合は、sqlite3パッケージをインストールしてください。データベースファイルは、既定の設定だと「/var/lib/pydio/data/plugins/conf.sql/pydio.db」となります。
図3 設定データベースの指定
MySQLを利用する場合はmysql-serverパッケージをインストールした上で、データベースを作成する必要があります。:
$ sudo apt-get install mysql-server
(DBのルートパスワードを設定)
$ mysql -u root -p
(上記で設定したルートパスワードを入力)
mysql> create database pydio;
Query OK, 1 row affected (0.00 sec)
mysql> grant all on pydio.* to 'pydiouser'@'localhost' identified by 'password';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> exit;
Bye
ここで「pydio」がデータベース名、「 pydiouser」がユーザー名、「 password」がパスワードになります。いずれも任意の値を指定できますので、環境に合わせて変更しておきましょう。データベースを作成したら、設定画面にデータベース名、ユーザー名、パスワードを入力した上で、「 User MYSQL」を「Yes」にし「Test Connection」ボタンを押します。「 Connexion established!」が表示されれば問題ありません。
「Advanced Options」ではその他の設定を行います。日本語ファイル名を扱いたい場合は、「 Default encoding」を「ja_JP.UTF-8」にしておきましょう。
図4 Default encodingを設定しておく
最後に「Install Pydio」を押すことで、これまでの設定が反映されます。しばらくお待ちください。「 http://サーバーのアドレス/pydio/index.php」に、ページ遷移すれば設定完了です。ただ、このページは見た目空白のページなので、改めて「http://サーバーのアドレス/pydio/」に移動してください。
図5 Pydioのログイン画面
Pydioの基本的な使い方
Pydioの基本的な使い方を紹介します。まずは、ログイン名とパスワードに管理者のアカウント名とパスワードを入力します。すると「Default Files」と「My Files」という2つのワークスペースが表示されるはずです。
図6 2つのワークスペース
このうち後者の「My Files」がユーザーの領域です。こちらをクリックして、ファイル一覧を表示しましょう。ファイル一覧画面では、右上の「アップロード」ボタンを押すか、ブラウザへのドラッグアンドドロップで ファイルをアップロードできます。ここでアップロードしたファイルは、「 /var/lib/pydio/data/personal/アカウント名/」に保存されます。
図7 画像のアップロード
図8 テキストファイルの編集
拡張子が「.txt」のファイルや画像ファイルなどは、そのままでもプレビュー表示したり、ファイルそのものを編集できます。さらにプラグインの設定を行えば、LibreOfficeのドキュメントやPDFについてもプレビュー表示できるようになります。
まずはLibreOfficeのプレビュー設定を有効化しましょう。右上のアカウント名から 「 設定」を選択し、「 Feature Plugins→Editors」とたどっていきます。そこにある「Open Document Viewer」が無効化されているため、ダブルクリックで設定画面に移り、これを有効化しましょう。
図9 Open Document Viewerプラグイン
あとは適当なLibreOfficeドキュメントをアップロードし[5] 、「 preview」ボタンを押せば、そのドキュメントがブラウザ内部に表示されます。残念ながら表示されるだけで、編集はできません。
[5] アップロード時に「Request Entity Too Large」と表示される場合、アップロードサイズの上限を変更する必要があります。「 Pydioの初期設定」で紹介した「upload_max_filesize」の変更を行った上で、設定の「Application Core→Uploaders Options」にて「FILE SIZE」を「0」に 変更してください。「 保存」ボタンを押せば自動的に最大値に調整されます。なお、Nginxのプロキシーなどを介している場合、そちらのファイルアップロードの 上限も変更されている必要があります。
図10 ownCloudのサンプルドキュメントをアップロードした例
PDFを表示する場合は、まずプラグインのインストールが必要です。
$ sudo apt-get install pydio-plugin-editor.pdfjs
$ sudo ln -s /usr/share/pydio/plugins/editor.pdfjs/pdfjs{,web}
$ sudo service apache2 reload
pydio-plugin-editor.pdfjsは、Firefoxでも使われているPDF.js を利用したプラグインです。PDF.js本体はlibjs-pdfパッケージを利用しています。上記の2番目のコマンドは、このPDF.jsを参照するパスがpdfjsプラグインでは間違っている問題に対する回避策です。インストールが完了したら、LibreOfficeの時と同様にプラグインリストから PDF Viewerプラグインを有効化しましょう。適当なPDFをアップロードし表示できることを確認してください。
図11 PDFのプレビュー
ちなみにUbuntu 14.04 LTSのlibjs-pdfパッケージはPDF.jsのバージョンが0.8.37ととても古く、うまく表示できないPDFが多いかもしれません。libjs-pdfパッケージの問題なので、手動で最新のPDF.jsをインストールするか、より新しいUbuntuのリリースを利用すれば解決する可能性は高いです。
他にもGitを用いたファイルのバージョニング、LDAPサポート、2要素認証、Etherpad機能、全文検索システム といった様々なプラグインが存在しますので、最初のうちは「設定」の内容をいろいろと見て回ると良いでしょう。
ワークスペースやロールの追加
最初にも説明したとおりPydioでは「ワークスペース」という形で、複数のユーザーの共有領域を作成できます。そこで、実際にワークスペースを作ってみましょう。設定画面の「Workspacs」には作成済みのワークスペースが 表示されています。ここで「New Workspace」をクリックすると、ワークスペースの作成ダイアログが開きます。
「WORKSPACE LABEL」はその名のとおりワークスペースの名前です。好きな名前をつけてください。重要なのは「ACCESS DRIVER」のほうで、こちらはワークスペースをどこにどのように作るかを設定します。ローカルのストレージに作成するのであれば「File System (Standard)」を選択しましょう。
図12 File System (Standard)の設定
PATHにはワークスペースを作成するパスを指定します。ルートディレクトリからの絶対パスですので、www-dataユーザーがアクセスできる場所であれば、システム上の任意の場所に作成可能です。特殊な変数として「AJXP_DATA_PATH」はPydioのデータディレクトリ(/var/lib/pydio/data) 、「 AJAXP_USER」は現在のユーザーアカウント名を意味します。つまりユーザー毎につくられる「My Files」ワークスペースのパスは「AJXP_DATA_PATH/personal/AJAXP_USER」になります。これを踏まえて、新しく作るワークスペースのパスを設定しましょう。
ワークスペースを作成すると、設定画面に移行します。とりあえず今は下のほうにある「DEFAULT RIGHTS」を「Read and Write」に変更して「保存」します。それにより、すべてのユーザーがこの新しいワークスペースに読み書きできます。
図13 ワークスペースリストに新しいワークスペースが追加される
特定のユーザーのみアクセスさせたい場合は「DEFAULT RIGHTS」は空のままにしておきましょう。さらに設定の「People」でユーザーを選択し、「 ACL」タブからチェックボックスでアクセス権を操作できます。
図14 個々のワークグループに対するアクセス権の操作
Pydioでは「Role」と呼ばれるグループも作成できます。設定の「Roles」から新しいRoleを作成した上で、「 People」から参加させたいユーザーの「Account Info」タブにある「USER ROLES」で作成したRoleを選択するだけです。Roleの設定画面のACLタブでは、ユーザーの時と同様にワークスペースに対するアクセス権を設定できます。
デスクトップやスマートフォンのクライアント
最後にPydioの専用クライアントについて紹介しておきましょう。
まずデスクトップ向けとして、「 PydioSync 」と呼ばれるクライアントが存在します。存在はしますが「アルファ状態」ということもあって、ほとんどまともに動きません。試したい場合はサイトで配布しているバイナリアーカイブではなく、GitHubの コード を使って トライアンドエラーで試したほうが良いでしょう。ちなみにGUIがQt5で、バックエンドがPythonでできているようです。
モバイル向けとしては、Pydioはレスポンシブなデザインになっているので、AndroidのChromeブラウザでもそれなりに閲覧できました。ファイルのダウンロードやアップロード、リンクの共有ぐらいであれば標準ブラウザだけでも問題なさそうです。
図15 初回アクセス時にアプリについての案内がある。ブラウザで使うなら一番下を選択(左) 図16 Ubuntu Phoneから閲覧したPydio(右)
図17 プレビューの状態もデスクトップと同じ
ただ本格的に同期させたいとなると、Androidアプリ なりiOSアプリ なりを使ったほうがいいでしょう。モバイルアプリの個々の機能の詳細については、pydioサイトの説明 を参照してください。残念ながらUbuntu Phone向けの公式アプリはまだ存在しませんでした。