ownCloudとSambaを使ってバックアップを取れるようにしたい。
モチベーション
- ここ数日弟のタブレットが起動しなくなってしまってデータの取り出しに難儀したことからバックアップを簡単に取れる環境を作りたくなった。
- 大量のデータを投げ込みたいので無料のオンラインストレージでは容量不足
- 去年買ってみたサーバー機を有効活用したい
WebDAV、Samba、FTP、P2Pの長所、短所
ものにしたいと思いつつ調べてみると、(ファイルサーバー全体に言えることだがサーバーが起動していなかったら使えないのは欠点)
一般的な使い方 | 長所 | 短所 | |
---|---|---|---|
WebDAV | Webサーバのファイルをhttpだけで直接編集する | HTTP拡張なのでファイアウォールやプロキシに影響されない | 転送速度が遅い、文字化け(対策はあるらしい) |
Samba | Windowsとのファイル共有 | WebDAVと比べて速い | 外部公開は厳しい(sshを使えばok) |
(S)FTP | ウェブサイトへのアップロード、ダウンロード | オンラインでのファイル公開 | 正しくデータを送信したか判定できない、排他制御できない |
P2P | P2Pファイル転送 | WebDAVと比べて速い | BitTorrent Sync: OSSでないSyncthing: まだv0.11 |
どれもメリット・デメリットのバランスを考慮して選択して下さいという感じ。ownCloud(webDAV)が簡単そうだった(何故かややこしくなった...)のでownCloud+Sambaにすることにした。WebDAVはhttpの拡張らしく、説明1や説明2で概要が分かる。
1. ownCloud
WebDAVを使ったファイル共有サービスを作るためのアプリケーション。オープンソースで無料で使えるため、自分用にDropboxのようなサービスを作ることができる。似たようなアプリケーションとしてはpydioというのもあるが設定がややこしいらしい。WebUI欲しさにインストールする。ApacheもMySQLも経験がないのでとりあえず動けばいいという感じに設定しているのでこのままで外部に公開は無理だと思う。
インストール
以下ではAdminマニュアルに従う。
- php関連の必要パッケージをインストールする
日本語環境からsshログインしている関係で毎度localeエラーが出るので、
$ sudo apt-get install language-pack-ja
export LC_ALL=en_US.UTF-8
を.bashrcに追加
/etc/php5/apache2/php.ini
post_max_size = 2G upload_max_filesize = 2G memory_limit = 1G max_file_uploads = 30 date.timezone = Asia/Tokyo
/var/www/owncloud/.htaccess
にも似たような項目があったので設定してみる。
php_value upload_max_filesize 2G php_value post_max_size 2G php_value memory_limit 1G
$ mysql_secure_installation $ mysql -u root -p
最初MySQLサーバーが起動しなかったので、
$ sudo rm /var/lib/mysql/ib_logfile0 $ sudo rm /var/lib/mysql/ib_logfile1 $ sudo /etc/init.d/mysql start
CREATE USER 'myname'@"localhost" IDENTIFIED BY "password"
とした。(参考: startup - mysql server start failed - Ask Ubuntu)
- SSL証明書の作成
基本的に証明書の発行方法に従うが、sudo cd
できないのでsudo bash -c "cd ./httpd; some-command"
とする。
$ sudo bash -c "cd /etc/ssl/private; openssl genrsa -des3 -out server.key 2" $ sudo bash -c "cd /etc/ssl/private; openssl rsa -in server.key -out server.key" $ sudo bash -c "cd /etc/ssl/private; openssl req -new -days 3650 -key server.key -out server.csr" $ sudo bash -c "cd /etc/ssl/private; openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 3650 " $ sudo bash -c "cd /etc/ssl/private; ls"
- Apache(Webサーバー、Nginxが最近流行りらしい):
/etc/apache2/sites-available/default-ssl.conf
... # ServerName YourServerName # ServerAdmin webmaster@localhost DocumentRoot /usr/share/owncloud ... <Directory /usr/share/owncloud> Options Indexes FollowSymLinks AllowOverride ALL Require all granted </Directory> ... SSLCertificateFile /etc/ssl/private/server.crt SSLCertificateKeyFile /etc/ssl/private/server.key ... # Dav Off
???あとから見たけどこのファイルの設定は色々おかしい(/usr/share/owncloudは存在しない)。
- owncloud
- openSUSE Build Serviceを利用するをように書いてあるが、このままだと
https://192.168.0.11
にアクセスするとownCloud Package Removed
と出る。パッケージが管理されていないらしい。 - →OWNCLOUD UBUNTU PACKAGE AFFECTED BY...に従う。(もしかして最初からここのパッケージを使っていれば楽が出来たのでは...?!)
- これでも「データディレクトリに作成、書き込みができません」というエラーが出るのでHow to set/change data directoryに従って、
- openSUSE Build Serviceを利用するをように書いてあるが、このままだと
# フォルダbackupを使うとする: mkdir backup $ sudo chown -R www-data:www-data backup
アカウントを作る際はMySQL/Maria-DBを選択する。
これでひとまず使えるようになった(^^)まだ警告が出るが家庭内なので無視することにする。
dropboxとの連携: http://viva-ubuntu.com/2015/01/dropbox_mount/
dropboxをapi経由で参照しているようだがアクセスに馬鹿みたいに時間がかかるので一応使えるようにしたけれど多分使わない。文字化けしたらhttp://korinaiyatsura.blogspot.jp/2013/11/owncloudzip.html、http://www.atmarkit.co.jp/ait/articles/0110/16/news002.htmlを参照
今後の展望
やはりきちんと設定したサーバーを立てて外部から使えるようにしたい(n回目)がどうやら自分がウェブ管理ができるようになるには道のりが長いらしい。まずは時間を作ってUbuntu Server 実践バイブルを通読する義務がある。