読者です 読者をやめる 読者になる 読者になる

tak0kadaの何でもノート

発声練習、生存確認用。

医学関連は 医学ノート

ownCloudインストールメモ

ownCloudとSambaを使ってバックアップを取れるようにしたい。

モチベーション

  • ここ数日弟のタブレットが起動しなくなってしまってデータの取り出しに難儀したことからバックアップを簡単に取れる環境を作りたくなった。
  • 大量のデータを投げ込みたいので無料のオンラインストレージでは容量不足
  • 去年買ってみたサーバー機を有効活用したい

WebDAVSambaFTPP2Pの長所、短所

  • (家庭内で)バックアップ用ファイルサーバーとして使う
  • 転送速度
  • 同時アクセスを制限できる(排他制御というらしい、これがいらないならrsyncとかscpでいいと思う。)
  • 設定、保守が簡単

ものにしたいと思いつつ調べてみると、(ファイルサーバー全体に言えることだがサーバーが起動していなかったら使えないのは欠点)

一般的な使い方 長所 短所
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欲しさにインストールする。ApacheMySQLも経験がないのでとりあえず動けばいいという感じに設定しているのでこのままで外部に公開は無理だと思う。

インストール

以下では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)

基本的に証明書の発行方法に従うが、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に従って、
# フォルダbackupを使うとする: mkdir backup
$ sudo chown -R www-data:www-data backup

アカウントを作る際はMySQL/Maria-DBを選択する。

これでひとまず使えるようになった(^^)まだ警告が出るが家庭内なので無視することにする。

今後の展望

やはりきちんと設定したサーバーを立てて外部から使えるようにしたい(n回目)がどうやら自分がウェブ管理ができるようになるには道のりが長いらしい。まずは時間を作ってUbuntu Server 実践バイブルを通読する義務がある。