前提
docker
、docker-compose
はインストールされているものとします。- 作業フォルダとファイル構成は以下ファイルツリーの通りです。
docker-compose.yml
、config/nc.conf
は下記の通りあらかじめ用意しておきます。
workdir ├─docker-compose.yml ├─config │ └─nc.conf └─data
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 #
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; } }
コンテナの作成
cd workdir sudo docker-compose up -d
nginx
コンテナとnc
(nextCloud)コンテナ、db
(mariaDB)コンテナが作成され、バックグラウンドで起動します。
nextCloudサーバの設定
本来ならdocker-compose.yml
ファイルから設定できないとあまり意味がないのですが、今回は解決方法がわからなかったので手動で直しました。😅
きれいな解決方法でないので、うまいやり方がわかり次第、記事を更新します。
今回更新した手順は、だいぶきれいだと思います!
# 上記 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
に合わせて入力して下さい。
「ユーザー名」と「データベースのホスト名」に割と引っかけなプレースホルダが表示されていますが、画像の下の説明を見ながら入力して下さい。
- ユーザー名:admin (公開サーバの場合は、安全のため別のものにすること)
- パスワード:admin (公開サーバの場合は、安全のため別のものにすること)
- データフォルダー:/var/www/html/data (デフォルトのまま)
- データベースのユーザ名;
root
(MYSQL_ROOT_PASSWORD
で指定したもの。公開サーバの場合は、安全のため別のものにすること) - データベースのパスワード:
root
(MYSQL_PASSWORD
で指定したもの。公開サーバの場合は、安全のため別のものにすること) - データベース名:
nextcloud
(MYSQL_DATABASE
で指定したもの) - データベースのホスト名(localhost):
db:3306
(docker-comopse.yml
で指定したものにポート番号を指定する)
おわりに
VPSのWebシェルを利用しているため、コピペが簡単にできず手打ちで記事を書きました。 おそらくtypoのひとつやふたつあると思われますので、動かない等不具合がありましたら、編集リクエストまたはコメントでお知らせください。
2019.12.07 追記:
docker toolbox for Windows 用に手順を変更しました。docker ならどの環境でもいけると思いますが。