LoginSignup
3

More than 3 years have passed since last update.

nextCloudとcloud9をdockerで導入し、NginXでリバースプロキシをかけてサブディレクトリで切り替える

Last updated at Posted at 2019-04-29

拙作nextCloudをdockerで導入し、NginXでリバースプロキシをかけてサブディレクトリで動かす
cloud9をdockerで導入し、NginXでリバースプロキシをかけてサブディレクトリで動かす
の合体技です。ほんとはこれがやりたかった!

概要

2019-04-30 045124.jpg

前提

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

docker-compose.yml
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       #

config/nginx.conf
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;
  }
}

コンテナの作成

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

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

nextCloudサーバの設定

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

手順2
# 上記 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.php
$CONFIG = array(
  ...
  // この中に値を追記する
  // ほかにも変数が登録されているけど、さわらない
'overwritehost' => '<物理サーバIP>',
'overwritewebroot' => '/nc',
);
手順3
# 手順2 の続き
exit

http://<物理サーバIP>/nc/にアクセスするとnextCloudが、http://<物理サーバIP>/c9/ide.htmlにアクセスするとcloud9が起動します。
<物理サーバIP>192.168.0.32など、適宜インストールしたサーバのものと読み替えてください。

おわりに

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

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
3