ownCloudのインストール

そろそろ12月も下旬、進捗どうですか。

それはさておき、DropBoxとかと近い使い方ができて、自鯖で動かせるownCloudをFreeBSDにインストールしてみたので、それについて。

ownCloudのサーバーですが、Linuxの主要ディストリビューションの他、phpで書かれたスクリプト群なので解凍して即WWWサーバーに食わせられる圧縮書庫も配布されています。まあいずれを使う場合にも導入については公式ドキュメントを見るのがよいでしょう。

適当に解凍(し、.htaccessが有効でない状態やそもそもLinux/Apacheじゃない場合はマニュアルに従って設定を修正)すれば、パーミッションさえ合っていればとりあえず動くでしょう(この文を見てインストール作業にとりかかる前にこの記事を全文読むことをおすすめしますが)。

さて、遭遇した事象について。基本的にとりあえず現状(クライアント:v1.5.0、サーバー:6.0.0a(stable))についてです。

まず、No uploads possible – Insufficient storage · Issue #5163 · owncloud/core · GitHubにかかれているのでじきに修正が来そうな気がしますが、途中でディスク容量がNaNとか-1になり、クオータの計算ができなくなってアップロードができなくなるバグについて。現状ではこのバグを踏むことになるので、ユーザーのクオータはUnlimitedに設定しましょう。こうするとバグを回避できるようです。

また、MySQLに色々保存するような構成にするとなぜかエラーが色々でました。SQLiteを使用するとかなり現象したので、そちらの方がよさそうです。

あとは、ひとつのディレクトリ(フォルダ)に1000とか馬鹿みたいに大量のファイルがある環境では重くなるようです。これもownCloud Forums • View topic – Uploading very slowなどに掲載されていますからそのうち修正されるでしょうか。現状ではそういうディレクトリを共有するのはやめたほうがよさそうです。

また、このソフトウェア、特に日本語のウェブページだと、「VPSなどで使用する場合も、暗号化プラグインを有効にすることで解読されません!」的な説明がよくあるのですが、それは誤りとするほうが現実に近いでしょう。ストレージに保存する際にサーバサイド暗号化にするプラグインは確かにありますし有効化していますが、

  • 暗号化に使用する鍵は、ユーザーがログインした際にサーバーのセッション変数に保存される。セッション変数はphp.iniのsession.save_pathの設定のディレクトリに保存されるため、ユーザーがログイン中、あるいはログイン後にログアウトボタンを押さずに去った場合は鍵がサーバー上に残る
  • 画像表示用のキャッシュなどは平文で保存される
  • そもそもサーバー上で暗号化/復号化するので、原理的にはサーバーに侵入された場合を想定した場合を考慮すれば安全とはいえない。サーバーに侵入されないなら、おそらくそもそも安全である(もちろん両者の差はあります)

など、SparkleShareなどに見られるクライアントサイド暗号化とは性質を異にするものです。公式のドキュメンテーションの当該項目にも、これは外部ストレージを使用するプラグインを使用する場合の安全を保つためのものであり、サーバーそのものが信用できない場合の安全を保護するものではないことが書かれています。もちろん、VPSで普通に使う場合でも暗号化したほうが解読はめんどくさくなるでしょうし、セッション変数の保存先をRAMディスクに設定すれば侵入の状況によっては更に難しくなるのもまた事実でしょう。

色々書きましたが、こうやって色々なブログに書かれている記事を読みながら自分でどうにかできる人で、通常のファイルを気軽に複数端末で共有、あるいはバックアップしたい人にはよい選択肢と言えるでしょう。一方で、パスワードや秘密鍵の管理など、高いセキュリティが求められる用途には向きませんし、そうでなくともトラブルが起こった時に自分でどうにかすることができないのであればおとなしく著名なサービスを使ったほうが無難でしょう。このソフトウェアについては、今後に期待したいと考えています。

また、インストールですが、パッケージで入れるのが簡単でしょう。もっとも、FreeBSD上のApache 2.4で走るphpプログラムの権限変更(suphp)(以前の記事)で書いたように多目的のサーバーにインストールするためsuphpでユーザー権限を分離したい場合はmod_phpが使えませんから、php.iniでアップロードやPOSTの容量を修正したり、session fixation対策を行ったりといった作業は必要になるでしょう。自宅にVMがあり仮想マシンが自由に使える場合ならいいのですが、VPSで使いたい場合は色々ごちゃごちゃはいったVPSの余った容量を使用する形式でしょうから、suphpを使うのが安全と言えるでしょう。

高いセキュリティが要求される場合については、どれがいい、と書くことは難しいですが、ownCloudは向かないように思います。SparkleShareなどのようにクライアントサイドで暗号化されるアプライアンスと比べるとどうしてもセキュリティ的に劣ると言わざるを得ないでしょう。これについては各自で見つける必要がありましょう。suggestionがあればコメント欄にお書きください。

あとは悩ましいとすれば、クライアントのソフトウェアはUIを見る限り複数アカウントを一つの端末(と端末上でのアカウント)で使用することをサポートしていないように見える点でしょうか。もっとも、sftpを外部ストレージとして使用できるようですので、例えば「VPSストレージをメインとするが、信頼性が低めなものの大容量な自宅鯖もマウントする」ことも可能かと思われます。未検証ではありますが。

初期設定で全て同期し始めるのは問題ではありますが、それを一旦中止して望むディレクトリのみ改めて特定の子ディレクトリのみ共有設定することはできますから、Windows 7/8(.1)タブレットやUMPCなど、ストレージ容量が限られた端末からも必要なファイルを共有することは可能でしょう。

長々と書きましたが、なんだかんだと最後まで読んでしまったあなたはこれを導入できるでしょうから試してみてもいいのではないでしょうか。