osclassをリバースプロキシでSSL化した環境で動かす

先日、クライマーがセッション仲間募集する用のマッチングサイトをつくろうと思いOsclassをdockerでインストールした。で、SSL化をletsencrypt-nginx-proxy-companionでしたのだけど、そのままだとOsclassが生成するリンク先がhttpになってしまいCSSやらがうまくよ見込めなかったのでその対処メモ。

 

基本は以下のものを使用。

https://hub.docker.com/r/bitnami/osclass/

GitHubにもあるのでクローンした方が楽。

https://github.com/bitnami/bitnami-docker-osclass

version: '2'
services:
mariadb:
image: 'bitnami/mariadb:latest'
environment:
- MARIADB_USER=bn_osclass
- MARIADB_DATABASE=bitnami_osclass
- ALLOW_EMPTY_PASSWORD=yes
volumes:
- 'mariadb_data:/bitnami'
networks:
- default

osclass:
image: 'bitnami/osclass:latest'
environment:
- MARIADB_HOST=mariadb
- MARIADB_PORT_NUMBER=3306
- OSCLASS_HOST=boltomo.bouldering-climbing.kyoto
- OSCLASS_DATABASE_USER=bn_osclass
- OSCLASS_DATABASE_NAME=bitnami_osclass
- OSCLASS_USERNAME=huga
- OSCLASS_PASSWORD=hoge
- ALLOW_EMPTY_PASSWORD=yes
- VIRTUAL_HOST=boltomo.bouldering-climbing.kyoto
- LETSENCRYPT_HOST=boltomo.bouldering-climbing.kyoto
- LETSENCRYPT_EMAIL=hoge@fuga.com
labels:
kompose.service.type: nodeport
ports:
- '80' #443は削除
depends_on:
- mariadb
volumes:
- 'osclass_data:/bitnami'
networks:
- default
- mydcproxy_default

volumes:
mariadb_data:
driver: local
osclass_data:
driver: local



networks:
mydcproxy_default:
external: true

 

VIRTUAL_HOST=boltomo.bouldering-climbing.kyoto – LETSENCRYPT_HOST=boltomo.bouldering-climbing.kyoto – LETSENCRYPT_EMAIL=hoge@fuga.com

letsencrypt-nginx-proxy-companion用の設定。

リバースプロキシはいろいろな所から呼ばれるので別のdocker-composeになっていてそのネットワーク名がmydcproxy_defaultとしているので外部ネットワークとして
networks: – default – mydcproxy_defaultとかnetworks: mydcproxy_default: external: trueとかを指定している。

(参考)
http://tech.quartetcom.co.jp/2017/04/11/multiple-ssl-apps-on-one-docker-host/

 

青字の- OSCLASS_USERNAME=huga – OSCLASS_PASSWORD=hoge は実際には設定していないけどコピペしてデフォルトID/Passで走らせることがないようにhttps://hub.docker.com/r/bitnami/osclass/みて追記。(動かしていないのでコケるかもしれない)

で、本題のそのまま動かすとOsclassの動くコンテナはリバースプロキシの後ろでhttpで動いており、生成されるリンク先がhttpになってしまう。

一応、以下のように設定ファイルを直接変更して動いた。

docker exec -it boltomo_osclass_1 /bin/bash

cd /opt/bitnami/osclass/
sed -e ‘s/http/https/g’ config.php

define(‘WEB_PATH’, ‘https://boltomo.bouldering-climbing.kyoto/’);

 

dockerfile作って自動化した方がいいけど、Osclassの使い勝手が要件に対して微妙だったのでこれ以上の作業はせずに修了。

X-Forwarded-Protoとかは試していないけどもっとおしゃれな解決法はあるかもしれない。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です