ownCloud 導入
これまで自宅サーバーを WebDAV で運用していたが,クラウド時代に合わせて,ownCloud を導入してみた。
サーバ設定 (ubuntu 12.04 にインストール)
- apt-line の追加
deb http://download.opensuse.org/repositories/isv:ownCloud:community/xUbuntu_12.04/ /
- keyring の追加
$ wget http://download.opensuse.org/repositories/isv:ownCloud:community/xUbuntu_12.04/Release.key $ sudo apt-key add Release.key
- インストール:データベースはデフォルトで sqlite3 を使うようになっているが,何だか遅いので,使い慣れた postgres を使うことにする
$ sudo aptitude update $ sudo aptitude install postgresql $ sudo aptitude install php5-pgsql $ sudo aptitude install owncloud
- インストールしたバージョン
$ aptitude show owncloud パッケージ: owncloud バージョン: 5.0.11-0
- 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
- /etc/apache2/sites-enabled/ssl-default を編集,オレオレ証明書を設定
SSLCertificateFile /etc/ssl/certs/server.pem SSLCertificateKeyFile /etc/ssl/private/server.key SSLCACertificateFile /etc/ssl/cacert.pem
- /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>
- cron の設定:キューに積まれた job を一定時間毎に実行する必要があるらしい
$ sudo crontab -l # owncloud: execute cron.php every one minute * * * * * php -f /var/www/owncloud/cron.php > /dev/null 2>&1
- データベース作成
$ 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
- /etc/postgresql/9.1/main/postgresql.conf で fsync = off に設定:信頼性より速度優先
fsync = off # turns forced synchronization on or off
$ sudo service postgresql restart
- apache2 リスタート
$ sudo service apache2 restart
- あとは,https://server-address/owncloud にアクセスするとブラウザで設定ができる。
- 「ユーザー名」と「パスワード」を入れて,「詳細設定」をクリック,データベースとして postgres を選択して,データベース情報を入力する。
- 「管理者」メニューから「常に HTTPS を使用する」と「Cron」の設定をする。
- この時点で WebDAV サーバが立ち上がっており,Mac OS X から ⌘-K で マウントすることができる。
https://user_id@host-address/owncloud/remote.php/webdav
クライアントソフト
ownCloud クライアントソフトを導入すると,ローカルの ~/ownCloud フォルダに対して行った変更が,バックグランドで自動的にサーバと同期されるようになる。- web 画面の右上の IDメニューから,「個人」を選択すると,「Get the apps to sync your files」が出るので,そこからクライアントがダウンロードできる。
- 起動するとメニューバーにアイコンが出る。
- 初期設定ファイルは「~/Library/Application Support/ownCloud」に入る。
ファイルの同期
自宅の WebDAV サーバで管理しているデータ量は,ファイル数 262,767(容量 17.2 GB) あった。最初これを全部クライアントソフトで管理しようとしたが,更新検出のための1回のスキャンだけで,ローカルで 〜200 sec,リモートで 〜2,700 sec(45分)かかってしまった。これでは,更新検出のためだけに1日中コンピューターが回り続けることになってしまい実用的ではない。そこで,active に使う 1,709 ファイル(容量 406 MB)を選んで,これをクライアントで管理し,その他はこれまで通り WebDAV で管理することにした。- サーバにユーザーを2つ作る。1つはクライアント同期用,もう1つは WebDav アクセス用。
- サーバの /var/www/owncloud/data/user_id/files にそれぞれデータを持っていく。
- サーバに認識させるために,スキャンする。完了まで 23分かかった。
# cd /var/www/owncloud # php console.php files:scan --all
- クライアントに,同期用のデータと同じものをコピーして持っていって,~/ownCloud に入れる。
- ownCloud client を立ち上げて,必要な情報を入力する。完了すると同期が始まるが,動作が安定するまでは,バックグランドで何しているか分かるように,作業内容をログに書き出す設定にするとよい。
$ /Applications/owncloud/Contents/MacOS/owncloud --logfile /path/to/LOGFILE & $ tail -f /path/to/LOG FILE
- 最初,.scync_journal.db を作るためのスキャンで少し時間がかかるが,それができてしまえば,その後は更新確認のためのスキャンは1回1秒以下で終了するようになった。