拙作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のひとつやふたつあると思われますので、動かない等不具合がありましたら、編集リクエストまたはコメントでお知らせください。