※ タイトルにはそれなりの誇張が含まれています。
ここ 2, 3 日前から、微妙に作業してボチボチ作ってたんですが、この度、
Docker Container に h2o 経由で reverse proxy しつつ Let's Encrypt を使って TLS 化も行なう
と言うシロモノを、今日の朝頃に Github に公開致しました。
それがこちらになります:
なお、使い方に関しては、ザックリと README.md
に書いたんですが、そこから引用すると、おおよその使い方はこんな感じになります:
# clone this repository $ git clone https://github.com/nyarla/h2o-proxy-letsencrypt.git $ cd h2o-proxy-letsencrypt # build container (replace your EMAIL address for letsencrypt account) $ make EMAIL=account@example.com AGREEMENT=yes build # run container or enter the built container (for debug) $ make run $ make debug # stop h2o-proxy-letsencrypt container $ make stop # run any container for you'd like to proxies by h2o-proxy-letsencrypt # for example (witn golang) # golang server code $ cat main.go package main import ( "net/http" ) func main() { http.Handle(`/`, http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { w.Header().Set(`Content-Type`, `text/plain; charset=utf-8`) w.WriteHeader(http.StatusOK) w.Write([]byte("hello, world!\n")) })) http.ListenAndServe(`:9000`, nil) } # you should replace your own $DOMAIN. $ sudo docker run -e VIRTUAL_HOST=$DOMAIN -e VIRTUAL_PORT=9000 -d -v `pwd`:/data/:ro --name golang-example -p 9000 golang:1.5 go-wrapper run run /data/main.go
まあ、Makefile
で指定している細かい docker
の引数とかについては、ソースを見た方が早いと思われます:
https://github.com/nyarla/h2o-proxy-letsencrypt/blob/master/Makefileh2o-proxy-letsencrypt/Makefile at master · nyarla/h2o-proxy-letsencrypt
ちなみに今回僕が作ったシロモノ、別に僕が全部フルスクラッチで作ったワケでもなく、ベースのアイディアというか、元の実装として、 id:zchee さんが作られた、
と言う、
Docker containers に対し、 h2o で動的にリバースプロキシする
というツールを 非常に参考 にして作られました。なお上記の h2o-proxy
は、
を参考にして作られているようです。
そしてさらに言うと、元々の h2o-proxy-letsencrypt
は id:zchee さんの公開されている Docker image である、
https://hub.docker.com/r/zchee/h2o-proxy/zchee/h2o-proxy (Docker Hub)
を元に作ってたんですが、途中で、
なんか Let's Encrypt の云々も コンテナ 内に綴じ込んで、色々と自動化したいぞい!
という、我欲が出てですね、最終的には、
Let's Encrypt が公開している Docker image をベースに、 zchee/docker-h2o と zchee/h2o-proxy 相当のコトをしつつ + α する
という、車輪の再開発を含む実装となりました。
まあ、とは言え設定ファイルとか一部のファイルはまるっとコピp……じゃない、MIT-license の元に再利用させて頂いているので、まあ半分ぐらい (かな?) は大本の h2o-proxy
や docker-h2o
からの派生コードですけども。はい。
というコトで今日の朝公開したブツについては以上です。
まー多分、ドキュメントに過不足が有るだろうし、また一部のコードとかもあんまりイケてないっぽい感じがする部分も有り、Proof of Concept で止まってる感も有り、って感じで、その辺りについて実際に作り込む前に力尽きたので、誰か fork するなりして自由に改造してやってください。
なお、本日紹介した、
は、 MIT-license で提供しておりますので、ライセンス周りも (多分) 安心して使えるかと思います。
というコトで今回は以上です、はい。