« 2013年9月 | トップページ | 2013年11月 »

2013年10月

2013年10月 1日 (火)

ownCloud 導入

これまで自宅サーバーを WebDAV で運用していたが,クラウド時代に合わせて,ownCloud を導入してみた。

 

サーバ設定 (ubuntu 12.04 にインストール)

  1. apt-line の追加
    deb http://download.opensuse.org/repositories/isv:ownCloud:community/xUbuntu_12.04/ /
    
  2. keyring の追加
    $ wget http://download.opensuse.org/repositories/isv:ownCloud:community/xUbuntu_12.04/Release.key
    $ sudo apt-key add Release.key
    
  3. インストール:データベースはデフォルトで sqlite3 を使うようになっているが,何だか遅いので,使い慣れた postgres を使うことにする
    $ sudo aptitude update
    $ sudo aptitude install postgresql
    $ sudo aptitude install php5-pgsql
    $ sudo aptitude install owncloud 
    
  4. インストールしたバージョン
    $ aptitude show owncloud
    パッケージ: owncloud
    バージョン: 5.0.11-0
    
  5. ssl 設定
    $ sudo a2enmod
     :
    Which module(s) do you want to enable (wildcards ok)? 
    ssl
    
    $ sudo a2ensite
    Your choices are: default default-ssl
    Which site(s) do you want to enable (wildcards ok)?
    default-ssl
    
  6. /etc/apache2/sites-enabled/ssl-default を編集,オレオレ証明書を設定
    SSLCertificateFile    /etc/ssl/certs/server.pem
    SSLCertificateKeyFile /etc/ssl/private/server.key
    SSLCACertificateFile  /etc/ssl/cacert.pem
    
  7. /etc/apache2/conf.d/owncloud.conf でアクセス制限
    <Directory /var/www/owncloud/>
      Order deny,allow
      deny from all
      allow from 192.168.1.0/24
      allow from xxx
    </Directory>
    
  8. cron の設定:キューに積まれた job を一定時間毎に実行する必要があるらしい
    $ sudo crontab -l
    # owncloud: execute cron.php every one minute
    *          *  *   *   *   php -f /var/www/owncloud/cron.php > /dev/null 2>&1
    
  9. データベース作成
    $ sudo -i
    # su - postgres
    $ psql 
    postgres=# CREATE USER username WITH PASSWORD 'password';
    postgres=# CREATE DATABASE owncloud TEMPLATE template0 ENCODING 'UNICODE';
    postgres=# ALTER DATABASE owncloud OWNER TO username;
    postgres=# GRANT ALL PRIVILEGES ON DATABASE owncloud TO username;
    postgres=# \q
    
  10. /etc/postgresql/9.1/main/postgresql.conf で fsync = off に設定:信頼性より速度優先
    fsync = off     # turns forced synchronization on or off
    
    $ sudo service postgresql restart
    
  11. apache2 リスタート
    $ sudo service apache2 restart
    
  12. あとは,https://server-address/owncloud にアクセスするとブラウザで設定ができる。
    • 「ユーザー名」と「パスワード」を入れて,「詳細設定」をクリック,データベースとして postgres を選択して,データベース情報を入力する。
    • 「管理者」メニューから「常に HTTPS を使用する」と「Cron」の設定をする。
  13. この時点で WebDAV サーバが立ち上がっており,Mac OS X から ⌘-K で マウントすることができる。
    https://user_id@host-address/owncloud/remote.php/webdav
    

クライアントソフト

ownCloud クライアントソフトを導入すると,ローカルの ~/ownCloud フォルダに対して行った変更が,バックグランドで自動的にサーバと同期されるようになる。
  1. web 画面の右上の IDメニューから,「個人」を選択すると,「Get the apps to sync your files」が出るので,そこからクライアントがダウンロードできる。
  2. 起動するとメニューバーにアイコンが出る。
  3. 初期設定ファイルは「~/Library/Application Support/ownCloud」に入る。

ファイルの同期

自宅の WebDAV サーバで管理しているデータ量は,ファイル数 262,767(容量 17.2 GB) あった。最初これを全部クライアントソフトで管理しようとしたが,更新検出のための1回のスキャンだけで,ローカルで 〜200 sec,リモートで 〜2,700 sec(45分)かかってしまった。これでは,更新検出のためだけに1日中コンピューターが回り続けることになってしまい実用的ではない。そこで,active に使う 1,709 ファイル(容量 406 MB)を選んで,これをクライアントで管理し,その他はこれまで通り WebDAV で管理することにした。
  1. サーバにユーザーを2つ作る。1つはクライアント同期用,もう1つは WebDav アクセス用。
  2. サーバの /var/www/owncloud/data/user_id/files にそれぞれデータを持っていく。
  3. サーバに認識させるために,スキャンする。完了まで 23分かかった。
    # cd /var/www/owncloud
    # php console.php files:scan --all
    
  4. クライアントに,同期用のデータと同じものをコピーして持っていって,~/ownCloud に入れる。
  5. ownCloud client を立ち上げて,必要な情報を入力する。完了すると同期が始まるが,動作が安定するまでは,バックグランドで何しているか分かるように,作業内容をログに書き出す設定にするとよい。
    $ /Applications/owncloud/Contents/MacOS/owncloud --logfile /path/to/LOGFILE &
    $ tail -f /path/to/LOG FILE
    
  6. 最初,.scync_journal.db を作るためのスキャンで少し時間がかかるが,それができてしまえば,その後は更新確認のためのスキャンは1回1秒以下で終了するようになった。

使用感

Mac OS X では,マウントした WebDAV 内のファイルを直接編集できるのだが,編集後の保存に結構時間がかかるので,動作がもっさりしていた。ownCloud のクライアントを使うと,保存は一瞬で,あとはバックグランドでサーバと同期してくれるので,もっさりが解消された。

« 2013年9月 | トップページ | 2013年11月 »