LoginSignup
6
9

More than 1 year has passed since last update.

nextCloudをdockerで導入し、NginXでリバースプロキシをかけてサブディレクトリでアクセスする

Last updated at Posted at 2019-04-29

前提

  1. dockerdocker-composeはインストールされているものとします。
  2. 作業フォルダとファイル構成は以下ファイルツリーの通りです。
  3. docker-compose.ymlconfig/nc.confは下記の通りあらかじめ用意しておきます。
ファイルツリー
workdir
├─docker-compose.yml
├─config
│   └─nc.conf
└─data

docker-compose.yml
version: '2'

volumes:
  nc:
  db:

services:
  nginx:
    container_name: nginx
    image: nginx
    ports:
      - 80:80
    volumes:
      - ./config/nc.conf:/etc/nginx/conf.d/default.conf
    links:
      - nc:nc

↓↓↓↓↓↓↓ あなたの記事の内容
  nc:
    container_name: nc
    image: nextcloud
    links:
      - db
    volumes:
      - nc:/var/www/html

  db:
    container_name: nc_db
    image: mariadb
    volumes:
      - db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=root   #
      - MYSQL_PASSWORD=root        # 左記のままでは防御力弱そうなので、
      - MYSQL_DATABASE=nextcloud   # ユーザ名とパスワードは変えましょう
      - MSYQL_USER=nextcloud       #
───────
nc:
  container_name: nc
  image: nextcloud

db:
  container_name: nc_db
  image: mariadb
  volumes:
    - db:/var/lib/mysql
  environment:
    - MYSQL_ROOT_PASSWORD=root   #
    - MYSQL_PASSWORD=root        # 左記のままでは防御力弱そうなので、
    - MYSQL_DATABASE=nextcloud   # ユーザ名とパスワードは変えましょう
    - MYSQL_USER=nextcloud       #
↑↑↑↑↑↑↑ 編集リクエストの内容

config/nc.conf
server {
  listen 80;
  server_name _;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

  location / {
    rewrite /nc/(.*)$ /$1 break;
    proxy_pass http://nc;
  }
}

コンテナの作成

手順1
cd workdir
sudo docker-compose up -d

nginxコンテナとnc(nextCloud)コンテナ、db(mariaDB)コンテナが作成され、バックグラウンドで起動します。

nextCloudサーバの設定

本来ならdocker-compose.ymlファイルから設定できないとあまり意味がないのですが、今回は解決方法がわからなかったので手動で直しました。😅
きれいな解決方法でないので、うまいやり方がわかり次第、記事を更新します。
今回更新した手順は、だいぶきれいだと思います!

手順2
# 上記 docker-compose の続きとします
docker-compose exec nc bash

# 以下は nc コンテナの内部での作業です
# 仮想端末を使っているのなら5行まとめてコピペでOK
cp /usr/src/nextcloud/config/config.sample.php /usr/src/nextcloud/config/config.php 
sed -i -e "s/'dbuser' => ''/'dbuser' => 'nextcloud'/" /usr/src/nextcloud/config/config.php
sed -i -e "s/'dbpassword' => ''/'dbpassword' => 'nextcloud'/" /usr/src/nextcloud/config/config.php 
exit
;

http://<物理サーバIP>/nc/にアクセスするとnextCloudが起動します。
<物理サーバIP>192.168.0.32(docker toolbox for windows の場合は192.168.99.100)など、適宜インストールしたサーバのものと読み替えてください。

初期セットアップ

http://<物理サーバIP>/nc/にアクセスすると、データベースの初期設定を終えるまでは以下の画面が表示されます。
設定内容は、docker-compose.ymlに合わせて入力して下さい。

「ユーザー名」と「データベースのホスト名」に割と引っかけなプレースホルダが表示されていますが、画像の下の説明を見ながら入力して下さい。

image.png

  • ユーザー名:admin (公開サーバの場合は、安全のため別のものにすること)
  • パスワード:admin (公開サーバの場合は、安全のため別のものにすること)
  • データフォルダー:/var/www/html/data (デフォルトのまま)
  • データベースのユーザ名;rootMYSQL_ROOT_PASSWORDで指定したもの。公開サーバの場合は、安全のため別のものにすること)
  • データベースのパスワード:rootMYSQL_PASSWORDで指定したもの。公開サーバの場合は、安全のため別のものにすること)
  • データベース名:nextcloudMYSQL_DATABASEで指定したもの)
  • データベースのホスト名(localhost):db:3306docker-comopse.ymlで指定したものにポート番号を指定する)

おわりに

VPSのWebシェルを利用しているため、コピペが簡単にできず手打ちで記事を書きました。
おそらくtypoのひとつやふたつあると思われますので、動かない等不具合がありましたら、編集リクエストまたはコメントでお知らせください。

2019.12.07 追記:

docker toolbox for Windows 用に手順を変更しました。docker ならどの環境でもいけると思いますが。

6
9
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
9