nextCloudとcloud9をdockerで導入し、NginXでリバースプロキシをかけてサブディレクトリで切り替える
拙作nextCloudをdockerで導入し、NginXでリバースプロキシをかけてサブディレクトリで動かす とcloud9をdockerで導入し、NginXでリバースプロキシをかけてサブディレクトリで動かす の合体技です。ほんとはこれがやりたかった!
概要
前提
docker
、docker-compose
はインストールされているものとします。- 作業フォルダとファイル構成は以下ファイルツリーの通りです。
docker-compose.yml
、config/nginx.conf
は下記の通りあらかじめ用意しておきます。
workdir │ └ docker-compose.yml │ └─config └─ nginx.conf
version: '2' volumes: nc: db: services: nginx-proxy: container_name: nginx image: nginx prots: - 80:80 volumes: - ./config/nginx.conf:/etc/nginx/conf.d/default.conf links: - c9:c9 - nc:nc c9: container_name: c9 image: sshinya/alpine-cloud9 environment: USERNAME: user # 任意のBASIC認証ユーザ名 PASSWORD: pass # 任意のBASIC認証パスワード 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 # ユーザ名とパスワードは変えましょう - MSYQL_USER=nextcloud #
server { listen 80; server_name _; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; location /nc/ { rewrite /nc/(.*)$ /$1 break; proxy_pass http://nc; } location /core/ { proxy_pass http://nc$request_body; } location /c9/ { rewrite /c9/(.*)$ /$1 break; proxy_pass http://c9:8080; } location ~ /(configs/|static/|vfs/|_ping)(.*)$ { # _pingの後ろに'/'は無いよ! proxy_pass http://c9:8080$request_body; } }
コンテナの作成
cd workdir sudo docker-compose up -d
nginx
コンテナとnc
(nextCloud)コンテナ、nc9
(cloud9)コンテナ、nc_db
(mariadb)コンテナが作成され、バックグラウンドで起動します。
nextCloudサーバの設定
本来ならdocker-compose.yml
ファイルから設定できないとあまり意味がないのですが、今回は解決方法がわからなかったので手動で直しました。😅
きれいな解決方法でないので、うまいやり方がわかり次第、記事を更新します。
# 上記 docker-compose の続きとします sudo docker exec -it nc /bin/bash # 以下は nc コンテナの内部での作業です apt update && apt install vim cp config/config.sample.php config/config.php vi config/config.php
$CONFIG = array( ... // この中に値を追記する // ほかにも変数が登録されているけど、さわらない 'overwritehost' => '<物理サーバIP>', 'overwritewebroot' => '/nc', );
# 手順2 の続き exit
http://<物理サーバIP>/nc/
にアクセスするとnextCloudが、http://<物理サーバIP>/c9/ide.html
にアクセスするとcloud9が起動します。
<物理サーバIP>
は192.168.0.32
など、適宜インストールしたサーバのものと読み替えてください。
おわりに
VPSのWebシェルを利用しているため、コピペが簡単にできず手打ちで記事を書きました。 おそらくtypoのひとつやふたつあると思われますので、動かない等不具合がありましたら、編集リクエストまたはコメントでお知らせください。