2018年6月10日日曜日

ownCloud を docker で動かそう

概要

ownCloud は GoogleDrive や Dropbox といったクラウドストレージを簡単に構築できるサービスです
docker のイメージが公開されているのでコマンド一発で構築できます

環境

  • macOS 10.13.5
  • docker 18.03.1-ce

ownCloud を起動

  • docker run -d -p 80:80 owncloud:8.1

これだけで OK です

とりあえず動作確認

localhost にブラウザでアクセスしましょう
管理者用のアカウントを作成します
owncloud1.png

デフォルトでいくつかファイルがあるので不要であれば削除しましょう
あとはアップロードすれば普通に使えます
owncloud2.png

データを永続化する

このままだとコンテナを削除したらアップロードしたファイルがなくなります
テンポラリとして使うのであれば問題ないですが過去にアップロードしたファイルを確認したいときには永続化する必要があります
やり方は簡単で -v オプションでホスト側のストレージをマウントしてあげるだけです

  • docker run -d -p 80:80 -v $(pwd):/var/www/html owncloud:8.1

これでコンテナを削除してもファイルは削除されません
管理者用のユーザ/パスワードも引き継がれるので忘れないようにしましょう

Tips

ファイルを wget する際には以下のコマンドを投げます
セキュリティの観点で直リンクは使えないようになっています

wget \
--header="Host: localhost" \
--header="User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.62 Safari/537.36" \
--header="Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8" \
--header="Accept-Language: ja,en-US;q=0.9,en;q=0.8" \
--header="Cookie: _ga=GA1.2.273664293.1526454426; _gid=GA1.2.285044917.1528161957; ocztnxtfknvn=93abc983e77160bfbd5385e5a084f7b8" \
--header="Connection: keep-alive" \
"http://localhost/index.php/apps/files/ajax/download.php?dir=%2F&files=hoge.txt" \
-O "hoge.txt" -c

このコマンドは chrome の CurlWget という拡張を使って作成しています

最後に

ownCloud の使い方を紹介しました
個人的には別のサーバとファイルを交換するときに役に立つかと思います
自宅に 1 台これがあれば複数のマシンおよびデバイスでファイルのやり取りができるようになるので便利かなと思います

参考サイト

3 件のコメント:

  1. この方法でownCloudを使いたいのですが、 https://hub.docker.com/_/owncloud?tab=tags からは10.0.10
    までしかpullできないようで.....
    10.3はMARIADBを使う方法でないとDockerでは動かせないのでしょうか....

    返信削除
  2. 10.3 からは docker-compose で起動するようです
    https://doc.owncloud.com/server/10.3/admin_manual/installation/docker/
    これまでの 10.0.1 は deprecated になっているので上記が現状の公式手順だと思います

    自分も時間があるときに試してみます

    返信削除
  3. 試してみました
    https://hawksnowlog.blogspot.com/2019/12/getting-started-owncloud-10-3.html
    公式の手順で特に問題なく動作しました
    データベースはデフォルトで MariaDB を使っているようです
    MySQL にデータがある場合はそのパスをマウントすれば使えるとあるのでデータ自体は簡単に引き継げると思います

    返信削除