Raspberry Pi 2 + Docker + ownCloud

http://gihyo.jp/admin/serial/01/ubuntu-recipe/0364

Raspberry Pi 2 にDocker/ownCloud を導入してみました。

OS のダウンロードとmicroSDHC への書き込み

http://www.finnie.org/software/raspberrypi/ からダウンロードします。

$ wget http://www.finnie.org/software/raspberrypi/2015-03-02-ubuntu-trusty.zip
$ unzip 2015-03-02-ubuntu-trusty.zip
$ dd if=2015-03-02-ubuntu-trusty.img of=/dev/sdh bs=1M

microSDHC をマウントします。

$ sudo apt install qemu-user-static
$ cd /media/ubuntu/578bc54c-c04b-4ced-8691-7633c4a841cd
$ sudo cp /usr/bin/qemu-arm-static usr/bin
$ sudo mount -t proc proc proc
$ sudo mount --rbind /dev dev
$ sudo mount --rbind /sys sys
$ sudo mkdir run/resolvconf
$ sudo cat /etc/resolv.conf > run/resolvconf/resolv.conf
$ sudo chroot . /bin/bash

# apt install openssh-server avahi-daemon
# exit

$ sudo rm -rf run/resolvconf
$ sudo umount -l sys
$ sudo umount -l dev
$ sudo umount proc
$ sudo rm usr/bin/qemu-arm-static

ルートパーティションの拡張

Raspberry Pi を起動して、ubuntu/ubuntu でログインします。

$ sudo fdisk /dev/mmcblk0
No. プロンプト 入力 意味
1 Command: d 区画を削除
2 Partition number: 2 第二パーティション
3 Command: n 新しい区画を作成
4 Partition type: p プライマリパーティション
5 Partition number: 2 第二パーティション
6 First sector: (デフォルト) 最初から
7 Last sector: (デフォルト) 残り全部
8 Command: w テーブルを書き込んで終了
$ sudo reboot
$ sudo resize2fs /dev/mmcblk0p2

Docker のインストール

$ sudo mkdir /mnt/docker/tmp /mnt/docker/docker
$ sudo apt install docker.io
$ sudo gpasswd -a ${USER} docker
$ exit
/etc/default/docker.io
DOCKER_OPTS="-g /mnt/docker/docker"
export TMPDIR="/mnt/docker/tmp"
$ sudo restart docker.io

ownCloud のインストール

$ git clone https://github.com/jchaney/owncloud.git
$ cd owncloud
$ sed -i "s,ubuntu:14.04,mazzolino/armhf-ubuntu," Dockerfile
$ sed -i "s,^\(ADD \)\(extensions.sh\) \(extensions.conf\) \(/var/www/owncloud/apps/\),\1\2 \4\n\1\3 \4," Dockerfile
$ sudo mkdir -p /mnt/docker/owncloud
$ sudo chown ${USER}: /mnt/docker/owncloud
$ docker build -t ubuntu/owncloud .

ownCloud の実行

$ docker run -p 80:80 --name nginx -v /mnt/docker/owncloud:/var/www/owncloud/data ubuntu/owncloud

Android 端末からの接続

以下のようにConnectBot のポート転送を設定して、SSH で接続後、ブラウザからlocalhost:10080にアクセスします。

項目
鍵の名前 http
タイプ ローカル
ソースポート 10080
転送先 localhot:80