Raspberry PiにDocker ComposeでownCloudを導入する
raspbian+nginxで動かしているサーバーにownCloudを導入したのでその備忘録です。nginxは仮想環境ではなくraspbian上で直接動いている前提です。
Dockerのインストール
Raspberry Pi財団の公式ブログに書いてある通りです。dockerグループにユーザーを追加することでsudoなしで使えるようになります。
curl -sSL https://get.docker.com | sh sudo usermod -aG docker pi
Docker Composeのインストール
cd ~ git clone https://github.com/docker/compose.git cd compose docker build -t docker-compose:armhf -f Dockerfile.armhf . docker run --rm --entrypoint="script/build/linux-entrypoint" -v $(pwd)/dist:/code/dist -v $(pwd)/.git:/code/.git "docker-compose:armhf" sudo cp dist/docker-compose-Linux-armv7l /usr/local/bin/docker-compose
ちゃんと導入できているか確認
docker-compose --version
docker-compose.ymlを書く
cd ~ mkdir owncloud cd owncloud vim docker-compose.yml
docker-compose.ymlの中身はこんな感じです。mysqlのofficialのdockerイメージはarmに対応していないみたいなのでraspi向けに用意してくれているものを使います。mysqlのデータベース名等は適宜設定して下さい。後のownCloudの初期設定で使います。
version: '3.1' services: owncloud: image: owncloud:10.0.8 restart: always depends_on: - db ports: - 10080:80 volumes: - owncloud-data:/var/www/html db: image: hypriot/rpi-mysql restart: always environment: MYSQL_DATABASE: データベース名 MYSQL_USER: ユーザ名 MYSQL_PASSWORD: ユーザーのパスワード MYSQL_ROOT_PASSWORD: rootのパスワード volumes: - mysql-data:/var/lib/mysql volumes: mysql-data: owncloud-data:
コンテナを起動します。restart: alwaysにしているのでマシンを再起動しても勝手にコンテナも再起動します。
docker-compose up -d
nginxの設定
cd /etc/nginx/sites-available vim cloud.example.com.conf
cloud.example.com.confの中身はこんな感じです。Let's EncryptでSSL対応した話(raspbian+nginx)でワイルドカード証明書を既に発行してあります。ラズパイのローカルIPは適宜設定して下さい。
server { listen 443; server_name cloud.example.com; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $remote_addr; client_max_body_size 10g; proxy_connect_timeout 75s; ssl on; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; location / { proxy_pass http://192.168.0.100:10080/; } }
sites-enabledにシンボリックリンクを貼ってnginxを再起動します。
cd ../sites-enabled sudo ln -s /etc/nginx/sites-available/cloud.example.com.conf cloud.example.com.conf sudo nginx -t sudo nginx -s reload
ownCloudの初期設定
cloud.example.comにアクセスすると初期設定画面が出てくるはずですこのときラズパイのローカルIP:10080にアクセスしても同じ画面が出てきますが、設定に問題が起きるので必ずドメイン名でアクセスして下さい。docker-compose.ymlで設定したデータベース名等を設定します。データベースの接続先には「db」を設定します。
各種設定
ownCloudの各種設定はコンテナ内の/var/www/html/config/config.phpを編集します。
以上です。