ownCloudがDropBoxの代用となるか?

2011.12.08

DropBoxのメリットといえば。。。

  1. 今までファイルをUSBメモリ等に書き込んで他デバイスで閲覧・編集していたがUSBメモリ等の外部媒体が不要になる
  2. メールでは添付できないような大容量のファイルのやり取りを相手と行うための手段
  3. 知り合いとファイルの共有ができる

DropBoxのデメリットといえば。。。

  1. 2GBを超えると有料会員とならなければならない
  2. DropBoxのクラウドサービスに実体ファイルが置かれるので、会社のセキュリティポリシーによっては利用できないケースがある。(あくまでも個人的に利用するもの)
  3. 機密性の高いファイルは恐ろしくて置けない

そこで、社内ネットワーク環境やVPC環境にDropBox的なサービスが構築できればDropBoxのデメリットである2GBの制約や会社のセキュリティポリシー(機密性の高いファイルの取り扱い)をクリアできる可能性がある。そこで実際にownCloudを社内ネットワーク内に構築して、使ってみることにした。

今回はownCloud Version 1.1をセットアップしてみます。(Ubuntu11.04の仮想OSが稼働している前提でownCloudをインストールします)

$ sudo apt-get install ownCloud

上記のコマンドで一発インストールします。(Apache,MySQL,PHP,ownCloud等必要なものがインストールされます)

手順1 上記をインストール後、鍵や証明書を保存しておくディレクトリを任意の場所に作成する

$ sudo mkdir /usr/local/ssl  
$ cd /usr/local/ssl

手順2 「秘密鍵」を生成する

$ sudo openssl genrsa -aes128 -rand /dev/urandom -out owncloud_server.key 2048

手順3 生成した秘密鍵に対応した証明書を発行するための「CSR」を生成する

$ sudo openssl req -new -key owncloud_server.key -out owncloud_server.csr

手順4 秘密鍵とCSR を使って「サーバー証明書」を発行する。証明書の有効期間を5年にしてます。

$ sudo openssl req -in owncloud_server.csr -out owncloud_server.crt -key owncloud_server.key -x509 -days 1827

手順5 秘密鍵のパスフレーズを削除する

ApacheでSSLを使用する場合、Apacheのサービス起動時に秘密鍵のパスフレーズを聞いてきて途中で止まってしまうのを回避するため、秘密鍵であるowncloud _server.keyを復号化して、パスフレーズを入力しなくても秘密鍵を使用できるようにします。(念のためにオリジナルはバックアップをとっておきます。)

$ sudo cp -p owncloud_server.key owncloud_server.key.bk  
$ sudo openssl rsa -in owncloud_server.key -out owncloud_server.key

一応rootユーザ以外が操作できないようにファイルの属性及びオーナーを変更します。

$ sudo chmod 400 owncloud_server.*  
$ sudo chown root:root owncloud_server.*

手順6 WebサーバーでSSL 通信できるように設定します。

(1)OpenSSLをWebサーバーで利用できるようにします。

$ sudo vi /etc/apache2/sites-available/default-ssl

51行目、52行目にあるSSLCertificateFile及びSSLCertificateKeyFileのパスを変更します。

SSLCertificateFile /usr/local/ssl/owncloud_server.crt

SSLCertificateKeyFile /usr/local/ssl/owncloud_server.key


(2)変更したSSL設定ファイルを有効にします。

$ sudo a2ensite default-ssl

(3)Webサーバー用のSSLモジュールを有効にします

$ sudo a2enmod ssl

(4)Webサーバーを再起動してSSLを利用可能な状態にします。

$ sudo /etc/init.d/apache2 restart

WebサーバーでSSLが利用できることを確認してするためにブラウザからhttps://localhost/にアクセスしてみます。

「接続の安全性を確認できません」というメッセージが表示されればOpenSSLが有効になっています。自前で作成したサーバー証明書を受け入れて『危険性を理解した上で接続するには』をクリックして、『例外を追加』をクリックし、『セキュリティ例外を承認』をクリックすることで、https通信での稼働が確認できます。

初回のアクセスの際には下記の画面が表示されますので、必要な項目を入力して最後にsaveをクリックします。force sslにはチェックをつけます。

saveが完了すると下記画面に遷移しますので、First Run Wizardで登録したユーザ/パスワードでログインします。

次にWEBDAVで利用できるようにします。

アクセス用のURLは、わかりにくいですが、よくみるとサイトの最下部に記載されています。webdavs://192.168.xx.xx/owncloud/webdav/owncloud.phpとなっていますが、Nautilusでアクセスする場合は、davs://192.168.xx.xx/owncloud/webdav/owncloud.phpとして入力します。

ownCloudのデフォルトは、2MB以上のファイルをアップロードすることが出来なくなっているので、/etc/php5/apache2/にある「php.ini」というファイルの中に下記のような記述があるので、この数値を書き換えれば変更できます。

upload_max_filesize = 2M ←デフォルト値なので必要に応じて各自変更してください。

post_max_size= 8M ←デフォルト値デフォルト値なので必要に応じて各自変更してください。

viで「upload」とか「post」で文字検索をかければすぐ見つかります。変更後はApacheを再起動しないと反映されませんので下記コマンドで再起動をします。

$ sudo service apache2 restart

Nautilusで適当な場所を開き、Ctrlキー+Lキーで「場所」欄にフルパスを入力できる形にして下記の行を入力します。(192.168.xx.xxの部分は必要に応じてセットアップ中のサーバのIPアドレスに置き換えて下さい。)

davs://192.168.xx.xx/owncloud/webdav/owncloud.php

最初にアクセスする際に、ユーザ名とパスワードをきかれますので https://192.168.xx.xx/owncloud/にアクセスしてログインできるユーザ名/パスワードを入力して下さい。(「期限なしで記憶する」にチェックを入れておくと、次回のマウント時に省略できるので便利ですね)

ブラウザ経由でのファイル一覧

Nautilusでアクセスした時にファイル一覧(ちゃんと同期がとれていますね。)

上記で日本語ファイル名が化けるようであれば以下の設定をやってみると解決するかもしれません。

2バイト文字対応のため、mod-encodingをインストール

$ sudo apt-get install libapache2-mod-encoding

mod-encoding の設定

$ cd /etc/apache2/mods-available/
$ sudo vi encoding.conf ←新規ファイルを作成する

開いたファイルに以下を記述

<IfModule mod_encoding.c>
    EncodingEngine    on
    NormalizeUsername on
    SetServerEncoding     UTF-8
    DefaultClientEncoding JA-AUTO-SJIS-MS SJIS
    AddClientEncoding "cadaver/" EUC-JP
</IfModule>

モジュールの有効化

$ sudo a2enmod dav
$ sudo a2enmod dav_fs ←既に有効とのメッセージが出ました。
$ sudo a2enmod encoding

WebDAV用ディレクトリの作成

$ sudo mkdir /var/www-ssl
$ sudo mkdir /var/www-ssl/dav

WebDAV用ディレクトリに書き込めるようにapacheユーザー権限に変更する。(ユーザー名は /etc/apache2/envvars に記述されています)

$ sudo chown -R www-data:www-data /var/www-ssl/dav
$ sudo chmod 755 /var/www-ssl/dav

SSL設定ファイルをWebDAV用に修正する。 httpd-ssl.confファイルのひな形を解凍して/etc/apache2/sites-available/の下にコピーします。

$ cd /usr/share/doc/apache2.2-common/examples/apache2/extra/
$ sudo gunzip –d httpd-ssl.conf.gz
$ sudo cp httpd-ssl.conf /etc/apache2/sites-available/
$ cd /etc/apache2/sites-available/
$ sudo vi httpd-ssl.conf

#DocumentRoot "/usr/share/apache2/default-site/htdocs"
DocumentRoot "/var/www-ssl" ←修正

</VirtualHost>の前ぐらいに以下を追加(クライアント認証設定です。)

<Location /dav>
    Dav on
    SSLVerifyClient require
    SSLVerifyDepth 1
</Location>

Apacheの再起動

$ sudo /etc/init.d/apache2 restart

今回はownCloudのインストール及び稼働確認までとなります。